Consumer Goods Industry Signals
Companies that manufacture and distribute products purchased by individuals for personal or household use, spanning food, personal care, apparel, and more.
This is a Naftiko Signals aggregate read of the Consumer Goods industry — mined from public workforce signals (job postings, press releases, newsroom content) across 83 companies and matched against Naftiko’s curated vocabulary of services, tools, concepts, and standards across the 44 Naftiko signal groups.
Across 83 companies in Consumer Goods we detected 2108 areas, 378 services, 231 tools, and 219 standards — producing an aggregate signal score of 21350.
How to read this page: Impact Report is the narrative read-out for the industry. Companies lists the 83 organizations included in the aggregate. Capabilities are Naftiko agent workflows common to Consumer Goods — 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.
Consumer Goods Industry Technology Investment Report
| Prepared by Naftiko | May 2026 |
Executive Summary
The Consumer Goods industry, spanning manufacturers and distributors of food, personal care, apparel, and household products sold to individual consumers, is represented in this analysis by 24 companies. Across 11 scoring layers, the sector’s strongest investment signals cluster in Productivity (Services), Retrieval & Grounding (Data), and Efficiency & Specialization (Operations) — all three of which measure foundational operational depth rather than frontier AI capability. Johnson & Johnson leads the industry across nearly every scoring area, posting a Cloud score of 114, an AI score of 71, and an Automation score of 70 that collectively establish it as the sector’s clear technology investment front-runner.
The most consequential gap across Consumer Goods is the chasm between the industry’s strong data infrastructure and its underdeveloped AI customization layer. With Data scores reaching 131 at the top and Domain Specialization topping out at 2, firms have built substantial data estates without converting them into proprietary model behavior tuned for brand, consumer, or category intelligence. LVMH (AI: 57, Cloud: 85, Data: 117) and Kimberly-Clark (Cloud: 96, Data: 89) are the two firms that most closely trail Johnson & Johnson across multiple dimensions, while brands like Kraft Heinz, Coca-Cola, and Kellanova sit materially behind on nearly every layer — creating a widening capability gap that will increasingly affect competitive positioning in product innovation, supply chain responsiveness, and consumer engagement.
Layer 1: Foundational Layer
The Foundational Layer captures how Consumer Goods organizations invest in core capabilities spanning artificial intelligence, cloud infrastructure, open-source adoption, programming languages, and code practice.
Artificial Intelligence — Top Company: Johnson & Johnson (71)
Johnson & Johnson leads AI adoption across the 24-company Consumer Goods sector with a score of 71, followed by LVMH at 57 and Kimberly-Clark at 51. The gap between the top three and the broader field — Colgate Palmolive at 45, Nike and Reckitt Benckiser at 36, and Coca-Cola at just 19 — signals a bifurcating industry where a small group of firms have made deliberate AI infrastructure commitments while the majority have not. All 23 companies sampled deploy MailChimp, Salesforce, GitHub, Datadog, and ServiceNow, confirming that baseline enterprise SaaS is universal; what differentiates the leaders is the depth of AI-specific tooling layered on top of that common stack. The presence of Semantic Kernel, TensorFlow, and ClickHouse across the sector’s collective toolchain suggests that AI-adjacent engineering capability has begun to diffuse, even among lagging firms.
Cloud — Top Company: Johnson & Johnson (114)
Johnson & Johnson’s Cloud score of 114 is the highest recorded for any single company in this layer, followed by Hasbro at 107 and Kimberly-Clark and Nike both at 96. The spread from leader to laggard is wide — Coca-Cola (40), Kellanova (41), and Kraft Heinz (42) score less than 40% of Johnson & Johnson’s mark, indicating fundamentally different cloud architecture strategies. The universal services stack (MailChimp, ServiceNow, GitHub, Datadog, Salesforce across all 23 firms) and universal toolchain (Terraform, PowerShell, Pandas, NumPy) confirm that cloud tooling has been democratized across the sector, but depth of cloud-native practice — multi-region deployment, serverless adoption, cloud-native AI service consumption — is where the leaders have invested and the laggards have not.
Open-Source — Top Company: Johnson & Johnson (42)
Johnson & Johnson leads Open-Source at 42, ahead of LVMH (39), Nike (36), and Hasbro (34). Open-source depth across the sector includes Terraform, TensorFlow, React Native, Pandas, NumPy, and Elasticsearch — a rich ML engineering stack that is deployed at near-universal coverage across the 23 measured companies. Procter & Gamble’s low open-source score (18) and Kraft Heinz’s score (15) at the bottom suggest that some legacy Consumer Goods firms have maintained more conservative, proprietary software postures. Open-source depth at the top of the Consumer Goods field is comparable to or ahead of technology sector norms, which is a genuine asset as the sector shifts toward AI-powered product development.
Languages — Top Company: Johnson & Johnson (45)
Johnson & Johnson leads Languages at 45, closely followed by LVMH at 43 and Kimberly-Clark at 36. The near-universal languages stack across Consumer Goods includes TypeScript, R, and Scala alongside Python data tooling, reflecting polyglot engineering cultures that can support ML, data engineering, and modern frontend development simultaneously. The R and statistical language presence is notable for this sector — it signals that data science practice in Consumer Goods has deep roots in statistical analysis (market mix modeling, demand forecasting, consumer panel analytics) that are now being augmented by deep learning and generative AI tooling. Firms with strong R and Python codebases have a shorter path to production ML than those still relying on point-and-click analytics tools.
Code — Top Company: Johnson & Johnson (41)
Johnson & Johnson leads Code practice at 41, ahead of Hasbro (32) and LVMH (32). Both Terraform and PowerShell are present across virtually all 23 companies, reflecting infrastructure-as-code and scripting practice that is broadly established. The near-universal deployment of Bitbucket, GitHub, and SharePoint signals that version control and collaborative knowledge management are table stakes for the sector. The concentration of Code scores at the bottom of the distribution — Procter & Gamble (18) and Kellanova (19) — suggests that for some legacy food and consumer packaged goods firms, engineering discipline remains organizational pockets rather than enterprise-wide practice.
Layer 2: Retrieval & Grounding
Retrieval & Grounding captures how Consumer Goods organizations structure their data estate to support vector search, retrieval-augmented generation, prompt engineering, and grounded inference.
Data — Top Company: Johnson & Johnson (131)
Johnson & Johnson leads Data adoption with a score of 131, the highest single-area score in the Foundational and Retrieval layers combined, followed closely by LVMH at 117 and Unilever at 91. The breadth of the sector’s data toolchain is impressive: Terraform, Pandas, NumPy, Elasticsearch, TensorFlow, ClickHouse, and Semantic Kernel are deployed across 23 of the 24 measured companies — a level of uniformity that suggests data engineering has become a commodity skill set for Consumer Goods firms. Nestlé (48) and Kraft Heinz (49) at the bottom of the Data rankings reveal the ongoing challenge for large legacy food companies: decades of fragmented ERP systems, channel-specific data silos, and merger-legacy data models create structural impediments to the unified data estates that AI retrieval systems require. Johnson & Johnson’s lead here is likely driven by its healthcare-adjacent data governance disciplines and its decade-long investment in commercial analytics platforms.
Databases — Top Company: Hasbro (31)
Hasbro edges to the top of the Databases ranking at 31, ahead of 3M (30), Johnson & Johnson (30), and LVMH (30) — a rare area where Johnson & Johnson does not lead. The tight cluster at the top suggests multiple firms have made equivalent database investments. Elasticsearch and ClickHouse in the toolchain indicate that both search-optimized and analytics-optimized database patterns have been adopted at scale. The weakness at the bottom — Nestlé (12) and Coca-Cola (12) — reflects the persistent challenge that large, multi-geography beverage and food firms face in consolidating their database estates across disparate national and regional systems.
Virtualization — Top Company: Johnson & Johnson (22)
Johnson & Johnson leads Virtualization at 22, ahead of Hasbro (21) and Nike (17). Virtualization scores in this range suggest that containerized and virtualized infrastructure has progressed beyond basic VM deployment but has not yet reached full Kubernetes-native architectures at the top firms. For AI inference workloads that benefit from containerized, auto-scaling deployment, virtualization depth is a direct enabler — firms with higher virtualization scores can spin up and tear down model serving infrastructure more efficiently, reducing both cost and time-to-deployment for new AI applications.
Specifications — Top Company: Hasbro (13)
Hasbro and Johnson & Johnson both score 13 in Specifications, ahead of Nike (11) and LVMH (10). Formal API specification practice is more developed in Consumer Goods than in Construction, likely because consumer goods companies manage complex multi-channel commerce integrations — e-commerce APIs, retailer EDI connections, loyalty program interfaces — that require contract-first design. TypeScript’s presence across the toolchain reinforces a culture of type safety and interface definition. The Coca-Cola (3) and Mars (3) scores at the bottom indicate that some firms still rely on undocumented, point-to-point integrations that constrain AI system composability.
Context Engineering — (Collective signals only)
Context Engineering does not yet surface individual company rankings in Consumer Goods, indicating that systematic context architecture practice — designing prompt structures, managing conversation state, and engineering contextual grounding pipelines — has not emerged as a distinct discipline across the sector. Given the enormous potential for context-aware AI applications in Consumer Goods (personalized product recommendations grounded in purchase history, brand-voice-consistent AI content generation, retail-channel-aware pricing intelligence), the absence of visible context engineering investment is a latent opportunity rather than a structural constraint.
Layer 3: Customization & Adaptation
Customization & Adaptation measures investment in fine-tuning, model versioning, multimodal infrastructure, and domain-specific adaptation that would allow firms to develop proprietary AI behavior for consumer goods product development, marketing, and supply chain.
Data Pipelines — Top Company: Nike (13)
Nike leads Data Pipelines with a score of 13, followed by Johnson & Johnson (12) and Adidas (10) and LVMH (10). Nike’s leadership here is consistent with its established position as one of the most technically advanced Consumer Goods firms — it has long operated as a DTC data company selling physical products, and its data pipeline investments reflect the streaming architectures required for real-time personalization at scale. The Terraform and Pandas toolchain confirms infrastructure-as-code pipeline management, and the presence of ClickHouse signals adoption of high-throughput analytics databases suited to pipeline output ingestion. Firms at the bottom — Procter & Gamble (3) and Kellanova (3) — have the furthest to go before they can feed fine-tuned AI models with the production-quality data pipelines those models require.
Model Registry & Versioning — Top Company: Lego (19)
Lego leads Model Registry & Versioning at 19, tied with Johnson & Johnson (19) and LVMH (19). Lego’s co-leadership here is noteworthy — it signals that this toy and entertainment company has invested in MLOps governance infrastructure at a level that matches sector leader Johnson & Johnson, a reflection of Lego’s aggressive digital transformation program. Semantic Kernel and TensorFlow in the toolchain indicate that model serving frameworks have been adopted alongside version control infrastructure. Both Kraft Heinz (4) and Coca-Cola (4) at the bottom are at risk of model management debt: as their AI programs scale, the absence of systematic versioning and artifact management will create deployment instability and compliance exposure.
Multimodal Infrastructure — Top Company: Johnson & Johnson (19)
Johnson & Johnson leads Multimodal Infrastructure at 19, ahead of LVMH (17) and Lego (15). Consumer Goods is a naturally multimodal domain — product photography, packaging design, video advertising, nutritional label imagery, and social content all require AI systems capable of processing visual and textual inputs simultaneously. Adobe Creative Suite and Photoshop are universally deployed across 23 firms, establishing a baseline visual content production infrastructure that multimodal AI can extend. Johnson & Johnson’s healthcare-adjacent investments in medical imagery AI likely contribute to its multimodal lead, while LVMH’s luxury brand creative demands drive its investment in high-quality visual AI infrastructure.
Domain Specialization — Top Company: Reckitt Benckiser (2)
Domain Specialization tops out at just 2 across the entire Consumer Goods sector, with Reckitt Benckiser, Adidas, Kimberly-Clark, Unilever, Hasbro, Johnson & Johnson, and LVMH all sharing the maximum score. The uniformly low ceiling confirms a sector-wide failure to invest in proprietary, domain-adapted AI models tuned for consumer behavior prediction, brand voice synthesis, product formulation optimization, or category demand forecasting. Consumer Goods is one of the most data-rich sectors in the global economy — purchase transaction data, consumer panel data, brand equity metrics, and social listening signals are collected at massive scale — yet none of that proprietary data advantage has been converted into domain-specialized AI capability. The first firms to close this gap will gain persistent advantages in consumer intelligence that general-purpose LLMs cannot replicate.
Layer 4: Efficiency & Specialization
Efficiency & Specialization captures investment in automation, containerized workloads, platform engineering, and operational tooling that enable AI systems to run reliably and cost-effectively at scale.
Automation — Top Company: Johnson & Johnson (70)
Johnson & Johnson leads Automation with a score of 70, followed by LVMH (51) and Reckitt Benckiser (49) and 3M (48). The bottom of the distribution — Coca-Cola (27) and L’Oréal (26) — reveals meaningful divergence in operational technology sophistication. Terraform and PowerShell are universally deployed as automation primitives, but automation depth at this score level reflects investment in higher-order automation: workflow orchestration (Apache Airflow, ServiceNow), infrastructure lifecycle management, and CI/CD pipeline maturity. Johnson & Johnson’s automation lead directly benefits its AI program: automated testing, model deployment pipelines, and infrastructure provisioning are the unglamorous but essential infrastructure of reliable AI production.
Containers — Top Company: Johnson & Johnson (34)
Johnson & Johnson leads Containers at 34, ahead of LVMH (28) and Lego (26). Container adoption in Consumer Goods extends well beyond development convenience — it is a direct enabler of cost-efficient AI inference scaling, particularly for firms running multiple concurrent AI models across product categories, geographies, and retail channels. Mattel (8) and Kellanova (9) at the bottom of the distribution represent legacy systems contexts where containerization has not yet been prioritized, creating deployment flexibility limitations that will impede their AI scaling programs.
Platform — Top Company: Johnson & Johnson (41)
Johnson & Johnson leads Platform adoption at 41, ahead of Reckitt Benckiser (37) and Kimberly-Clark (37). The near-universal deployment of ServiceNow, Datadog, Salesforce, and New Relic across 23 firms reflects a sector that has standardized on enterprise platform tooling. Platform depth at Johnson & Johnson’s level enables internal developer portal capabilities, self-service AI experimentation environments, and shared model serving infrastructure — capabilities that compress the time between AI concept and production deployment for engineering teams across business units.
Operations — Top Company: Johnson & Johnson (77)
Johnson & Johnson leads Operations at 77, its highest single score across the Efficiency & Specialization layer, followed by LVMH (61). The sector-wide operations toolchain includes Datadog, New Relic, Prometheus, and ServiceNow at near-universal deployment, establishing a mature observability and incident management foundation. Operations depth at 77 signals that Johnson & Johnson has invested in advanced operational practices — chaos engineering, reliability SLOs, and operational runbook automation — that create stable production environments for AI system deployment. The concentration of operations investment at the top of the leaderboard, with Coca-Cola (22) and Kellanova (26) materially behind, suggests that lagging firms may face operational stability challenges as they scale their first production AI workloads.
Layer 5: Productivity
Productivity captures how Consumer Goods organizations leverage AI-adjacent tooling — including coding assistants, copilots, and SaaS platforms — to accelerate engineering and business output.
Software As A Service (SaaS) — Top Company: Henkel (2)
Henkel leads SaaS Productivity at a score of 2, tied with Johnson & Johnson — the lowest meaningful scores across any area in the entire dataset. The near-zero scores confirm that AI-native SaaS tools, such as coding assistants, AI-powered document analysis, and intelligent creative workflow platforms, have not yet been adopted at scale across Consumer Goods. The universal base SaaS estate (MailChimp, Salesforce, LinkedIn, Microsoft Office, Adobe Creative Suite) is well established, but these are conventional productivity tools rather than AI-augmented productivity platforms. Consumer Goods firms that integrate AI coding assistants into their engineering organizations and AI creative assistants into their marketing teams will realize compounding productivity gains well ahead of peers who delay these relatively low-cost investments.
Code — Top Company: Johnson & Johnson (41)
Johnson & Johnson leads Code Productivity at 41, followed by Hasbro (32) and LVMH (32). The gap between leaders and laggards in Code — Procter & Gamble at 18 and Kellanova at 19 — is particularly consequential for AI program execution: firms with low code practice maturity will struggle to build, test, and deploy AI-adjacent software at the cadence that competitive AI programs require. The universal GitHub, Bitbucket, and Terraform presence confirms version control and infrastructure automation are established, but the differential scores reflect whether engineering culture has embraced full CI/CD, automated quality gates, and developer experience investment.
Services — Top Company: Johnson & Johnson (278)
Johnson & Johnson posts a Services Productivity score of 278, the highest raw score in this layer, ahead of LVMH (262) and a long tail of firms stretching down to Coca-Cola and Kellanova at 160 and below. The Services score reflects the aggregate breadth of the enterprise service portfolio — MailChimp, ServiceNow, Datadog, Salesforce, LinkedIn, Microsoft 365, Adobe, Instagram, Facebook, Google Analytics, and Adobe Analytics deployed across virtually all 23 firms. This breadth creates an enormous integration surface for AI-powered productivity tooling: copilots that read CRM data, AI assistants that summarize ServiceNow tickets, or creative AI tools that generate social content informed by Adobe Analytics engagement signals are all technically feasible given the existing service estate.
Layer 6: Integration & Interoperability
Integration & Interoperability captures how Consumer Goods organizations connect AI systems to enterprise data sources, event streams, retailer networks, and open standards.
API — Top Company: Johnson & Johnson (25)
Johnson & Johnson leads API adoption at 25, ahead of Hasbro (22) and the mid-field cluster. Consumer Goods firms manage complex multi-party API ecosystems: retailer portals, distributor integrations, e-commerce platform APIs, loyalty program interfaces, and ingredient supplier data feeds all require formally managed API surfaces. Salesforce and ServiceNow in the services stack serve as de facto API middleware for many of these integrations. Hasbro’s strong API score (22) relative to its size reflects its investment in digital licensing and DTC commerce connectivity — an API-driven business model that requires stronger interface discipline than traditional wholesale-only distribution.
Integrations — Top Company: Johnson & Johnson (37)
Johnson & Johnson leads Integrations at 37, ahead of Kimberly-Clark (30) and the field. The breadth of the Consumer Goods integration estate spans CRM, marketing automation, analytics, social listening, and supply chain management — a multi-system fabric that requires robust integration tooling to maintain coherence. Kimberly-Clark’s second-place position reflects its investment in connecting manufacturing operations, retailer analytics portals, and consumer insights platforms into a unified data architecture. Firms at the bottom of the Integrations ranking will struggle to operationalize AI that needs to span functional boundaries, as fragmented integrations create data handoff failures that corrupt AI inputs.
Event-Driven — Top Company: Hasbro (22)
Hasbro leads Event-Driven adoption at 22, ahead of Johnson & Johnson (16) in a notable reversal of the typical sector ordering. Event-driven architecture in Consumer Goods enables real-time AI applications: product launch surge detection, social sentiment monitoring, supply chain disruption alerts, and direct-to-consumer behavior triggers all benefit from event-driven event processing. Hasbro’s lead suggests investment in real-time commerce and consumer event streams, possibly driven by its entertainment and licensing businesses where product demand can spike sharply on media release events. Consumer Goods firms that have not invested in event-driven foundations will find their AI systems operating on stale data — a fundamental limitation for applications where speed of insight translates directly to revenue.
Patterns — Top Company: LVMH (18)
LVMH leads Patterns at 18, narrowly ahead of Kimberly-Clark (17) and in this dimension edging past Johnson & Johnson (16). LVMH’s leadership in architectural patterns reflects the luxury group’s investment in resilient, globally distributed commerce infrastructure — a business that must maintain 99.9%+ uptime across multi-brand, multi-region e-commerce while sustaining brand-exclusive experiences that prohibit generic platform fallbacks. TypeScript and Angular in the toolchain reinforce LVMH’s investment in well-structured, typed frontend architectures. Pattern maturity at this level provides the reliability scaffolding that AI systems — which introduce new failure modes through model latency, hallucination, and context window limits — need to operate safely in production.
Specifications — Top Company: Hasbro (13)
Hasbro and Johnson & Johnson both lead Specifications at 13. The Consumer Goods sector’s higher Specifications scores compared to Construction reflect the multi-channel commerce architecture that consumer goods firms must maintain — OpenAPI specifications for retailer integrations, commerce platform APIs, and consumer loyalty systems are structural requirements for operating in modern retail. Nike (11), LVMH (10), and Kimberly-Clark (9) round out a respectable middle tier. At the bottom, Coca-Cola (3) and Mars (3) suggest that some of the sector’s largest legacy brands still rely on underdocumented integration estates that will constrain AI agent development.
Apache — Top Company: Hasbro (8)
Hasbro and Nike tie for the Apache ecosystem leadership at 8, confirming that open-source data infrastructure is distributed across the sector rather than concentrated at the largest companies. Apache Spark, Apache Airflow, and Apache Ant are the primary representations of the Apache ecosystem in Consumer Goods toolchains. Hasbro and Nike’s co-leadership in Apache adoption, combined with their strong positions in Data Pipelines, Event-Driven, and Specifications, paints a portrait of digitally native companies that have invested more deliberately in open-source data infrastructure than some of their larger but more legacy-constrained peers.
CNCF — Top Company: LVMH (34)
LVMH leads CNCF adoption at 34, closely trailed by Johnson & Johnson (33) and a competitive mid-field. CNCF tooling — Kubernetes, Prometheus, Envoy, Argo — provides the portable, cloud-native substrate on which AI inference services can be deployed, monitored, and scaled. LVMH’s leadership here is consistent with its aggressive digital transformation program across its 70+ luxury brands and reflects an architectural philosophy of infrastructure independence from any single cloud provider. Consumer Goods firms at the bottom of CNCF adoption will face higher vendor lock-in risk as AI model serving infrastructure consolidates around cloud-native Kubernetes patterns.
Layer 7: Statefulness
Statefulness captures how Consumer Goods organizations manage persistent state across AI systems, including observability, governance, security, and data lifecycle management.
Observability — Top Company: Johnson & Johnson (38)
Johnson & Johnson leads Observability at 38, ahead of Adidas (34) in a notable second-place performance for the sportswear brand. The sector’s universal deployment of Datadog and New Relic establishes a baseline observability floor — every company in the sector has instrumented its infrastructure with commercial observability platforms. Johnson & Johnson’s lead reflects investment in more granular, cross-system tracing that spans clinical, commercial, and operational workloads. Adidas’s strong second-place position is consistent with its digital-first positioning and its investment in real-time performance monitoring for e-commerce and direct-to-consumer channels.
Governance — Top Company: Johnson & Johnson (38)
Johnson & Johnson leads Governance at 38, ahead of Kimberly-Clark (30). Consumer Goods governance depth in this range covers data stewardship, access control, policy enforcement, and audit trail management — capabilities that Johnson & Johnson’s healthcare-adjacent operations have honed through years of pharmaceutical data governance requirements. Kimberly-Clark’s second-place position reflects its investment in data governance frameworks driven by consumer product safety compliance and retailer data sharing programs. Governance depth is a direct readiness indicator for responsible AI deployment: firms with mature governance infrastructure will extend it to AI-specific controls faster and with less organizational friction than those building governance capability from scratch.
Security — Top Company: Johnson & Johnson (74)
Johnson & Johnson leads Security at 74, followed by LVMH (61) — both posting the highest Security scores in this industry. Johnson & Johnson’s healthcare adjacency drives elevated security investment: consumer health data, pharmaceutical formulation data, and clinical trial information are subject to HIPAA and FDA security requirements that far exceed standard Consumer Goods expectations. LVMH’s 61 score reflects the luxury group’s persistent exposure to counterfeit supply chain threats and its investment in digital authentication infrastructure to protect brand integrity. For AI systems processing consumer data, transaction records, and proprietary formulation databases, Security scores at this level provide meaningful protection coverage — but both firms should explicitly extend their security frameworks to cover AI model supply chain risks.
Data — Top Company: Johnson & Johnson (131)
The Data scoring area reappears in the Statefulness layer with Johnson & Johnson at 131. In a statefulness context, data depth enables AI systems to maintain rich session context, longitudinal consumer engagement histories, and cross-channel behavioral profiles — all of which power the personalization capabilities that define Consumer Goods competitive differentiation at the consumer touchpoint. Nestlé (48) and Kraft Heinz (49) at the bottom represent the most significant statefulness risk: without deep data estates, AI systems at these firms will operate on thin context windows that constrain application sophistication.
Layer 8: Measurement & Accountability
Measurement & Accountability captures how Consumer Goods organizations quantify AI system performance, developer productivity, and business returns.
Testing & Quality — Top Company: Johnson & Johnson (16)
Johnson & Johnson leads Testing & Quality at 16, followed by Lego (12). Lego’s second-place position is consistent with its engineering-first digital transformation culture and its investment in software quality practices that underpin its digital product and licensing businesses. Testing depth at 16 is modest in absolute terms — it reflects testing infrastructure that covers critical paths but not comprehensive automated quality assurance across all AI-adjacent systems. Consumer Goods firms deploying AI in product safety contexts (ingredient verification, allergen detection, label compliance) face regulatory consequences for testing failures that make this area a non-negotiable investment priority.
Observability — Top Company: Johnson & Johnson (38)
As in the Statefulness layer, Datadog and New Relic universally deployed across 23 firms establish a consistent observability baseline. In the Measurement context, this infrastructure directly enables AI performance monitoring — tracking model accuracy, inference latency, and recommendation acceptance rates across the consumer goods portfolio. The gap between Johnson & Johnson’s leadership score and the field (Adidas at 34, mid-field at 20-25) indicates that depth of observability instrumentation — rather than presence of observability tooling — is the differentiating factor.
Developer Experience — Top Company: LVMH (23)
LVMH edges to the top of Developer Experience at 23, one point ahead of Johnson & Johnson (22). Developer Experience covers internal tooling quality, API documentation, onboarding programs, and developer portal investments. LVMH’s lead in this dimension reflects its investment in engineering enablement across its multi-brand technology organization — building shared platforms, internal SDKs, and self-service tooling that reduce friction for engineers working across its diverse brand portfolio. Consumer Goods firms with high developer experience scores attract and retain the AI engineering talent whose scarcity is the single most important constraint on the pace of AI program execution.
ROI & Business Metrics — Top Company: Johnson & Johnson (54)
Johnson & Johnson and LVMH tie for the ROI & Business Metrics leadership at 54. Consumer Goods is a sector where commercial performance metrics are intensely measured — market share, brand equity, promotional ROI, and category revenue are tracked at weekly cadence. The Salesforce, Adobe Analytics, Google Analytics, and ServiceNow platforms deployed universally across the sector provide the commercial metrics infrastructure needed to attribute AI interventions to business outcomes. Both Johnson & Johnson and LVMH operate commercial analytics programs sophisticated enough to close the loop between AI-generated recommendations and measured revenue impact — a capability most firms at the bottom of the distribution (Coca-Cola at 30, Kellanova at 31) have not yet built.
Layer 9: Governance & Risk
Governance & Risk captures how Consumer Goods organizations manage regulatory compliance, AI review processes, security posture, and data privacy in the context of AI deployment.
Regulatory Posture — Top Company: 3M (10)
3M and Johnson & Johnson both score 10 in Regulatory Posture, leading a sector where formal engagement with AI-specific regulatory frameworks is early-stage. 3M’s leadership here is consistent with its industrial and healthcare product portfolio, which is subject to EPA, FDA, and EU REACH chemical regulations — a compliance infrastructure that can be extended to AI regulatory frameworks faster than pure consumer brands. The EU AI Act’s provisions affecting consumer-facing AI systems (product recommendations, pricing algorithms, hiring tools) will require Consumer Goods firms to build formal AI regulatory compliance programs — a capability that currently scores in single digits across the entire sector.
AI Review & Approval — Top Company: Johnson & Johnson (16)
Johnson & Johnson leads AI Review & Approval at 16, ahead of 3M (13). The pharmaceutical and consumer health context drives Johnson & Johnson’s lead: internal model risk assessment frameworks developed for clinical AI applications translate directly to commercial AI review processes. 3M’s regulatory-heavy industrial portfolio similarly drives systematic review culture. The rest of the sector — with scores ranging from 5 to 12 — has not yet built formal AI approval workflows, which represents meaningful deployment risk as AI systems begin influencing advertising claims, product formulations, and consumer pricing.
Security — Top Company: Johnson & Johnson (74)
Johnson & Johnson leads Security at 74, followed by LVMH (61). As noted in the Statefulness layer, healthcare regulatory requirements drive elevated security investment at Johnson & Johnson. In the Governance context, this security depth translates to stronger controls over AI training data custody, model access governance, and output audit trails. Consumer Goods AI systems that process consumer health claims, children’s product formulations, or dietary supplement data will face heightened scrutiny from FTC, FDA, and equivalent EU bodies — firms that have invested in security infrastructure for regulated data are better positioned to demonstrate AI compliance.
Governance — Top Company: Johnson & Johnson (38)
Johnson & Johnson leads Governance at 38, followed by Kimberly-Clark (30). Governance depth in the sector broadly covers data stewardship and policy enforcement, but AI-specific governance — model cards, responsible AI principles, algorithmic impact assessments — remains nascent at even the leading firms. The sector’s universal SharePoint and Confluence deployments provide documentation infrastructure, but content governance and AI model governance are distinct disciplines. Procter & Gamble’s governance score (15) at the lower end is notable given the company’s scale and its history of sophisticated consumer data programs — suggesting governance investment has not kept pace with data collection capability.
Privacy & Data Rights — Top Company: Lego (5)
Lego leads Privacy & Data Rights at 5, tied with Colgate Palmolive — a striking finding given Lego’s core consumer base of children, where COPPA and EU children’s privacy regulations impose the strictest privacy obligations in the Consumer Goods sector. Lego’s leadership here reflects its deliberate investment in privacy engineering ahead of regulatory enforcement, including data minimization, parental consent workflows, and purpose-limitation controls. The low absolute ceiling (5) across the entire sector is a systemic risk: Consumer Goods firms are among the world’s largest collectors of consumer behavioral data, yet their privacy engineering infrastructure scores indicate that most have not built the technical controls that emerging privacy regulations will require.
Layer 10: Economics & Sustainability
Economics & Sustainability captures how Consumer Goods organizations manage AI cost structures, provider relationships, technology partnerships, talent strategy, and data center sustainability.
AI FinOps — Top Company: Reckitt Benckiser (7)
Reckitt Benckiser leads AI FinOps at 7, tied with Adidas — the highest scores in this area across the Consumer Goods sector. Both companies operate under demanding cost discipline cultures: Reckitt through its health and hygiene brand portfolio optimization, and Adidas through margin management in a highly competitive sportswear market. The low absolute ceiling (7) confirms that AI-specific financial operations — cost attribution per AI workload, chargeback for model inference, cost optimization for embedding generation — are not yet formally operational at any Consumer Goods firm. As AI workloads scale and cloud AI service costs grow, firms that have not established FinOps disciplines will face opaque cost structures that undermine AI program ROI.
Provider Strategy — Top Company: Johnson & Johnson (17)
Johnson & Johnson leads Provider Strategy at 17, followed by LVMH (15). Both firms operate with deliberately diversified provider portfolios — AWS, Microsoft Azure, Google Cloud, and OpenAI alongside specialized providers — that reflect sophisticated vendor risk management. Provider strategy at 17 indicates that Johnson & Johnson has moved beyond opportunistic multi-cloud to deliberate architectural guidance governing which provider hosts which workload category. The rest of the sector clusters between 5 and 12, indicating a sector where cloud strategy is largely dictated by historical licensing relationships rather than AI capability roadmap alignment.
Partnerships & Ecosystem — Top Company: LVMH (24)
LVMH edges to the top of Partnerships & Ecosystem at 24, ahead of Lego (20). LVMH’s leadership reflects its active partnership strategy with luxury technology platforms, digital authentication providers, and generative AI creative tools — partnerships that are essential for a company competing on brand exclusivity in an age when AI can democratize creative production. Lego’s second-place position reflects its co-creation ecosystem with the global Lego developer community and its partnerships with digital entertainment platforms. Consumer Goods partnerships at this score level are beginning to extend from traditional vendor relationships to co-development arrangements — a transition that will accelerate as AI capability becomes a competitive differentiator in brand building.
Talent & Organizational Design — Top Company: LVMH (17)
LVMH leads Talent & Organizational Design at 17, ahead of Hasbro (14). LVMH’s leadership reflects its investment in AI center of excellence structures across its brand portfolio and its deliberate talent acquisition strategy for AI engineers who can work at the intersection of luxury brand identity and generative AI capability. Hasbro’s second-place position reflects its investment in digital production talent as it has transitioned from a pure toy company to an entertainment and licensing company. Consumer Goods firms at the bottom of talent investment — Procter & Gamble (5), Nestlé (5), and Kellanova (3) — face organizational readiness gaps that could prevent them from executing AI programs even when technical infrastructure is available.
Data Centers — (No ranked signals)
Data Centers does not surface individual company rankings across Consumer Goods, confirming that the sector universally consumes AI compute through cloud provider relationships rather than building owned GPU infrastructure. This is appropriate given the sector’s scale and the current economics of AI compute provisioning — but firms should monitor carbon reporting requirements for Scope 3 AI compute emissions as ESG regulatory expectations evolve.
Layer 11: Storytelling & Entertainment & Theater
Storytelling & Entertainment & Theater captures how Consumer Goods organizations communicate AI vision, align stakeholder expectations, standardize knowledge practices, and experiment with novel approaches.
Alignment — Top Company: Johnson & Johnson (27)
Johnson & Johnson leads Alignment at 27, ahead of Adidas (25). Alignment in this layer measures how effectively an organization’s AI communications connect executive vision to engineering execution and consumer-facing outcomes. Adidas’s strong second-place Alignment score reflects its high-profile commitment to AI-powered product design, personalized consumer experiences, and supply chain sustainability — communications programs that have earned external credibility and internal employee alignment. Consumer Goods brands that frame AI transformation around consumer benefit and brand purpose narratives, rather than technology-first messaging, will secure broader internal and external buy-in for their AI programs.
Standardization — Top Company: Johnson & Johnson (12)
Johnson & Johnson leads Standardization at 12, followed by LVMH (11). Standardization covers the development of reusable AI frameworks, playbooks, model templates, and internal platforms that prevent fragmented, project-by-project AI approaches from proliferating across business units. Johnson & Johnson’s lead here reflects its investment in enterprise AI platforms that centralize model development, data access, and deployment workflows. For Consumer Goods firms with multiple brands, categories, and geographies, standardization multiplies the value of each AI investment by making it replicable across the portfolio.
Mergers & Acquisitions — Top Company: Johnson & Johnson (25)
Johnson & Johnson leads M&A Signals at 25, ahead of Reckitt Benckiser (22). Johnson & Johnson’s M&A score reflects both its historical pattern of healthcare technology acquisitions and its recent strategic investments in digital health and AI-powered diagnostics platforms. Reckitt’s strong second-place position reflects its portfolio optimization strategy — divesting non-core businesses while acquiring digital-native health and hygiene brands. Consumer Goods firms that build M&A capability to identify, assess, and integrate AI-enabled technology companies will outpace organic-only AI development programs.
Experimentation & Prototyping — (No ranked signals)
Experimentation & Prototyping does not yet surface individual company rankings across Consumer Goods, indicating that structured AI experimentation programs — model sandboxes, innovation labs with defined throughput metrics, venture-style pilots — are not yet visible in the sector’s investment signals. Given Consumer Goods firms’ access to massive consumer datasets, retail channel partnerships, and brand experimentation budgets, the absence of formal AI experimentation infrastructure represents one of the sector’s most accessible and highest-return investment opportunities.
Industry Strategic Assessment
Consumer Goods enters 2026 with a mature operational foundation — Johnson & Johnson’s Cloud score of 114, LVMH’s Data score of 117, and sector-wide Services Productivity scores in the 160-278 range confirm that enterprise infrastructure is well established across the leading firms. The sector has also achieved broad toolchain standardization: Terraform, Pandas, NumPy, TensorFlow, Datadog, Salesforce, and GitHub are deployed at near-universal coverage across 23 of 24 measured companies, creating a common technical substrate from which AI programs can be launched. The core strength of Consumer Goods is its data depth and brand portfolio breadth — assets that are uniquely valuable as AI programs demand both rich training signals and diverse application surfaces.
The most urgent strategic gaps are concentrated in the upper layers of the AI maturity stack. Domain Specialization scores of 2 across the entire sector confirm that no Consumer Goods firm has meaningfully invested in proprietary, brand- or category-trained AI models despite controlling some of the world’s richest consumer behavior datasets. AI FinOps scores of 7 at the ceiling indicate that cost management frameworks for scaled AI workloads do not yet exist. Privacy & Data Rights scores topping out at 5 represent a regulatory time bomb as consumer privacy enforcement accelerates globally. And Experimentation & Prototyping producing no ranked signals across 24 companies reveals a systemic deficit in structured AI innovation practice. Firms that address these gaps — Domain Specialization, FinOps, Privacy Engineering, and Experimentation Infrastructure — will compound their advantages in consumer intelligence, product development velocity, and brand AI differentiation faster than peers.
Johnson & Johnson and LVMH are the two companies whose investment posture most clearly positions them to lead the sector’s AI transition: Johnson & Johnson through its breadth of operational leadership (Cloud, AI, Data, Automation, Security, Governance, ROI Metrics), and LVMH through its distinctive strengths in CNCF adoption, Event-Driven architecture, Developer Experience, Alignment, and Partnerships — a profile that suggests a company optimizing for AI agility rather than raw scale. Naftiko’s design partnership model is built for Consumer Goods organizations at this exact juncture: firms that have built the operational foundation and now need the product strategy, AI design architecture, and implementation scaffolding to convert that foundation into proprietary consumer intelligence products.
This report was prepared by Naftiko using proprietary signal analysis across job posting, technology adoption, and public investment data. Scores reflect aggregate depth signals and are not financial forecasts.
Companies — Total:83
- 3MA diversified global manufacturing and technology company producing thousands of products across safety, industrial, transportation,...
- AdidasA German multinational corporation designing and manufacturing athletic shoes, apparel, and accessories. One of the...
- AltriaFortune 1000 company Altria. Public API documentation has not yet been catalogued in the API...
- Anheuser-BuschAn American brewing company and subsidiary of AB InBev producing iconic beer brands including Budweiser,...
- AptarGroupAptarGroup is a global supplier of consumer-product dispensing, sealing, and active packaging solutions serving the...
- Archer Daniels MidlandArcher Daniels Midland (ADM) is a Fortune 100 global leader in agricultural processing and food...
- Brown-FormanBrown-Forman Corporation is one of the largest American-owned spirits and wine companies in the world,...
- BungeA global agribusiness and food company connecting farmers to consumers by sourcing, processing, and supplying...
- Cal-Maine FoodsCal-Maine Foods, Inc. is the largest producer and distributor of fresh shell eggs in the...
- CaleresCaleres is an American footwear company headquartered in Clayton, Missouri, established in 1878 (rebranded from...
- Campbell SoupCampbell Soup Company (now rebranded as The Campbell's Company) is a manufacturer and marketer of...
- Central Garden and PetCentral Garden and Pet is a major US corporation and Fortune 1000 company. The Central...
- Chefs' WarehouseThe Chefs' Warehouse is a premier distributor of specialty food products to high-end independent restaurants,...
- Church and DwightChurch & Dwight Co., Inc. is a Fortune 500 American consumer packaged goods (CPG) company...
- CloroxAn American multinational consumer goods company manufacturing cleaning, household, and personal care products. Known for...
- Coca-ColaThe world's largest beverage company producing and distributing over 200 brands of drinks globally. Known...
- Colgate PalmoliveA global consumer products company specializing in oral care, personal care, and home care products....
- Columbia SportswearColumbia Sportswear is a global designer, marketer, and distributor of outdoor, active, and everyday lifestyle...
- Conagra BrandsConagra Brands is a leading North American branded consumer packaged goods (CPG) food company headquartered...
- ConAgra FoodsConAgra Foods, Inc. was the prior corporate name of Conagra Brands. In 2015 the company...
- Constellation BrandsConstellation Brands is a Fortune 500 producer and marketer of beer, wine, and spirits brands...
- CotyCoty Inc. is one of the world's largest beauty companies with an iconic portfolio of...
- CrocsCrocs, Inc. is a global designer, manufacturer, and retailer of casual footwear known for its...
- Darling IngredientsDarling Ingredients is a global developer and producer of sustainable natural ingredients from edible and...
- Deckers OutdoorProfile for Deckers Outdoor in the API Evangelist network. Fortune F1000 (rank 989).
- EcolabEcolab is a Fortune 500 global leader in water, hygiene, and infection prevention solutions and...
- Energizer HoldingsEnergizer Holdings is a major US corporation and Fortune 1000 company. The Energizer Holdings API...
- Estee LauderEstée Lauder Companies is a global manufacturer and marketer of skincare, makeup, fragrance, and hair...
- Flowers FoodsFlowers Foods is one of the largest producers and marketers of packaged bakery foods in...
- General MillsA leading global food company manufacturing and marketing branded consumer foods including cereals, snacks, baking...
- H.B. Fuller CompanyH.B. Fuller Company is a major US corporation and Fortune 1000 company. The H.B. Fuller...
- HanesbrandsHanesbrands is a global consumer apparel company designing, manufacturing, and selling everyday basic apparel under...
- HasbroA global toy, game, and entertainment company behind iconic brands including Monopoly, Transformers, My Little...
- HeinekenA Dutch multinational brewing company and one of the world's largest beer producers. Operates over...
- HenkelA German multinational company operating in adhesives, beauty care, and laundry and home care markets....
- HersheyHersheyland is home to our favorite dessert recipes, the latest candy innovations and endless sweet...
- Hormel FoodsHormel Foods Corporation is a global branded food company with over $12 billion in annual...
- IngredionIngredion partners with food and beverage manufacturers to deliver innovative clean label, sugar reduction, plant-based...
- International Flavors & FragrancesInternational Flavors & Fragrances (IFF) is a global creator of flavors, fragrances, and ingredients for...
- Johnson & JohnsonA global healthcare company operating in pharmaceuticals, medical devices, and consumer health products. One of...
- KellanovaA global snacking, international cereal, and noodle company spun off from Kellogg Company. Produces popular...
- Keurig Dr PepperKeurig Dr Pepper is a leading North American beverage company formed by the 2018 merger...
- Kimberly-ClarkA global consumer goods company producing essential hygiene and personal care products. Maker of well-known...
- KirbyFor over a century, Kirby has set the standard in high-performance home cleaning. From powerful...
- Kraft HeinzOne of the largest food and beverage companies in the world co-headquartered in Chicago and...
- Land O'LakesLand O'Lakes is a member-owned agricultural cooperative providing food, agriculture, and animal nutrition products to...
- LegoA Danish toy company and the world's largest manufacturer of interlocking plastic building bricks. Extends...
- L'OréalThe world's largest cosmetics and beauty company producing skincare, makeup, haircare, and fragrance products. Operates...
- Lululemon AthleticaLululemon Athletica is a designer, distributor, and retailer of technical athletic apparel, footwear, and accessories...
- LVMHThe world's largest luxury goods conglomerate headquartered in Paris, operating over 75 prestigious brands. Portfolio...
- MarsOne of the world's largest privately held companies producing confectionery, pet food, and food products....
- MattelA global toy and entertainment company behind iconic brands including Barbie, Hot Wheels, Fisher-Price, and...
- McCormickMcCormick spices and products have been kitchen must-haves since 1889. Learn about seasoning and cuisine...
- Molson Coors BeverageMolson Coors Beverage Company is one of the world's largest brewers, with a portfolio of...
- Mondelez InternationalA global snacking company and one of the world's largest producers of chocolate, biscuits, and...
- Monster BeverageMonster Beverage Corporation is a marketer and distributor of energy drinks and alternative beverages, offering...
- NestléThe world's largest food and beverage company by revenue, operating in nearly every country with...
- Newell BrandsNewell Brands is a Fortune 500 global consumer goods company with a strong portfolio of...
- NikeThe world's largest athletic footwear and apparel company designing products for sports, fitness, and lifestyle....
- PepsiCoA global food and beverage company with a portfolio spanning snacks, drinks, and nutrition products....
- Performance Food GroupPerformance Food Group is one of the largest foodservice distributors in North America, marketing and...
- Philip MorrisPhilip Morris International is a leading international tobacco company offering smoke-free products and combustible tobacco...
- Post HoldingsPost Holdings is a consumer packaged goods holding company with businesses in center-of-the-store, refrigerated, foodservice,...
- PPG IndustriesPPG Industries is a Fortune 500 global supplier of paints, coatings, and specialty materials serving...
- Procter & GambleOne of the world's largest consumer goods companies producing household, health, and personal care products....
- Reckitt BenckiserA British multinational consumer goods company focused on health, hygiene, and nutrition products. Produces well-known...
- RPM InternationalRPM International Inc. is a multinational specialty coatings and sealants company headquartered in Medina, Ohio,...
- Scotts Miracle GroThe Scotts Miracle-Gro Company is the world's largest marketer of branded consumer lawn and garden...
- SeaboardSeaboard Corporation is a diverse global agribusiness and transportation company involved in pork, commodity merchandising,...
- Sealed AirSealed Air is a global packaging company that creates innovative packaging solutions and automation systems...
- Sherwin-WilliamsThe Sherwin-Williams Company is a global leader in the paint and coatings industry, offering products...
- Silgan HoldingsSilgan Holdings Inc. is a leading global sustainable packaging provider for consumer goods products. The...
- Skechers U.S.A.Skechers U.S.A. is an American lifestyle and performance footwear company (Fortune 500) that designs, develops,...
- Spectrum BrandsFortune 1000 company Spectrum Brands. Public API documentation has not yet been catalogued in the...
- Tempur Sealy InternationalTempur Sealy International is one of the world's largest bedding providers, developing, manufacturing, marketing, and...
- Topgolf Callaway BrandsTopgolf Callaway Brands is a global golf and entertainment company that designs, manufactures, and sells...
- TreeHouse FoodsTreeHouse Foods is one of the largest manufacturers of private label packaged foods and beverages...
- Tyson FoodsTyson Foods is one of the world's largest food companies and a Fortune 100 company,...
- Under ArmourAn American sportswear company manufacturing performance athletic apparel, footwear, and accessories. Founded on moisture-wicking fabric...
- UnileverA British-Dutch multinational consumer goods company with a portfolio spanning food, personal care, and household...
- United Natural Foods (UNFI)United Natural Foods, Inc. (UNFI) is the largest publicly traded wholesale distributor of health and...
- VF CorporationVF Corporation is a global apparel and footwear company headquartered in Denver, Colorado. VF owns...
- Vista OutdoorProfile for Vista Outdoor in the API Evangelist network. Fortune F1000 (rank 976).
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.
When Workday detects a role change, syncs the updated job profile to Microsoft Identity Manager, updates ServiceNow group memberships, and notifies the employee in Microsoft Teams.
naftiko: '0.5'
info:
label: Identity and Access Provisioning
description: When Workday detects a role change, syncs the updated job profile to Microsoft Identity Manager, updates ServiceNow group memberships, and notifies the employee in Microsoft Teams.
tags:
- iam
- identity
- workday
- microsoft-identity-manager
- servicenow
- microsoft-teams
- security
capability:
exposes:
- type: mcp
namespace: iam-provisioning
port: 8080
tools:
- name: sync-role-change
description: Given a Workday employee ID and new role, update Microsoft Identity Manager, adjust ServiceNow group access, and notify the employee in Teams.
inputParameters:
- name: employee_id
in: body
type: string
description: The Workday employee ID.
- name: new_role
in: body
type: string
description: The new job role or title as defined in Workday.
- name: effective_date
in: body
type: string
description: Effective date of the role change in YYYY-MM-DD format.
steps:
- name: get-employee
type: call
call: workday.get-worker
with:
worker_id: '{{employee_id}}'
- name: update-mim
type: call
call: mim.update-person
with:
upn: '{{get-employee.work_email}}'
job_title: '{{new_role}}'
department: '{{get-employee.department}}'
effective_date: '{{effective_date}}'
- name: update-snow-group
type: call
call: servicenow.update-group-membership
with:
user_email: '{{get-employee.work_email}}'
role: '{{new_role}}'
- name: notify-employee
type: call
call: msteams.send-message
with:
recipient_upn: '{{get-employee.work_email}}'
text: 'Your system access has been updated for your new role: {{new_role}} (effective {{effective_date}}). Contact IT if you need additional access.'
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: mim
baseUri: https://3m-mim.internal/identitymanagement/api/v1
authentication:
type: bearer
token: $secrets.mim_token
resources:
- name: persons
path: /persons/{{upn}}
inputParameters:
- name: upn
in: path
operations:
- name: update-person
method: PATCH
- type: http
namespace: servicenow
baseUri: https://3m.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: group-members
path: /table/sys_user_grmember
operations:
- name: update-group-membership
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
Reconciles inventory cycle count discrepancies by comparing SAP book quantities against physical counts, logging adjustments, and alerting the warehouse manager in Teams.
naftiko: '0.5'
info:
label: Inventory Cycle Count Reconciliation
description: Reconciles inventory cycle count discrepancies by comparing SAP book quantities against physical counts, logging adjustments, and alerting the warehouse manager in Teams.
tags:
- inventory
- warehouse
- sap
- sap-s4hana
- microsoft-teams
- manufacturing
capability:
exposes:
- type: mcp
namespace: inventory-management
port: 8080
tools:
- name: reconcile-cycle-count
description: Given a plant, storage location, and count results, compare against SAP, post adjustments, and notify warehouse manager.
inputParameters:
- name: plant_code
in: body
type: string
description: The 3M plant code.
- name: storage_location
in: body
type: string
description: SAP storage location.
- name: material_number
in: body
type: string
description: Material number counted.
- name: physical_count
in: body
type: string
description: Physical count quantity.
steps:
- name: get-book-quantity
type: call
call: sap.get-stock
with:
material: '{{material_number}}'
plant: '{{plant_code}}'
storage_location: '{{storage_location}}'
- name: post-adjustment
type: call
call: sap.post-inventory-adjustment
with:
material: '{{material_number}}'
plant: '{{plant_code}}'
storage_location: '{{storage_location}}'
book_qty: '{{get-book-quantity.available_qty}}'
physical_qty: '{{physical_count}}'
- name: notify-warehouse
type: call
call: msteams.post-channel-message
with:
team_id: $secrets.warehouse_team_id
channel_id: $secrets.warehouse_channel_id
text: 'Cycle Count: {{material_number}} at {{plant_code}}/{{storage_location}} | Book: {{get-book-quantity.available_qty}} | Physical: {{physical_count}} | Adjustment: {{post-adjustment.document_number}}'
consumes:
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/MM_MATERIAL_STOCK_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: stock
path: /A_MaterialStock(Material='{{material}}',Plant='{{plant}}',StorageLocation='{{storage_location}}')
inputParameters:
- name: material
in: path
- name: plant
in: path
- name: storage_location
in: path
operations:
- name: get-stock
method: GET
- name: adjustments
path: /InventoryAdjustment
operations:
- name: post-inventory-adjustment
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 a vendor performance scorecard by pulling delivery and quality metrics from SAP, computing scores in Snowflake, and publishing results to a Power BI dashboard and the procurement Teams channel.
naftiko: '0.5'
info:
label: Vendor Scorecard Generation
description: Generates a vendor performance scorecard by pulling delivery and quality metrics from SAP, computing scores in Snowflake, and publishing results to a Power BI dashboard and the procurement Teams channel.
tags:
- procurement
- vendor-management
- sap
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: vendor-performance
port: 8080
tools:
- name: generate-vendor-scorecard
description: Given a vendor number and period, pull SAP metrics, compute scores, refresh Power BI, and notify procurement.
inputParameters:
- name: vendor_number
in: body
type: string
description: The SAP vendor number.
- name: period
in: body
type: string
description: Evaluation period (e.g., 2026-Q1).
steps:
- name: get-vendor-metrics
type: call
call: sap.get-vendor-evaluation
with:
vendor: '{{vendor_number}}'
period: '{{period}}'
- name: compute-scorecard
type: call
call: snowflake.run-query
with:
statement: CALL PROCUREMENT.COMPUTE_VENDOR_SCORECARD('{{vendor_number}}', '{{period}}')
warehouse: PROCUREMENT_WH
- name: refresh-dashboard
type: call
call: powerbi.trigger-refresh
with:
group_id: $secrets.procurement_pbi_group
dataset_id: $secrets.vendor_scorecard_dataset
- name: notify-procurement
type: call
call: msteams.post-channel-message
with:
team_id: $secrets.procurement_team_id
channel_id: $secrets.procurement_channel_id
text: Vendor scorecard for {{vendor_number}} ({{period}}) published. Dashboard refreshed.
consumes:
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/MM_VENDOR_EVAL_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: vendor-evaluations
path: /VendorEvaluation(Vendor='{{vendor}}',Period='{{period}}')
inputParameters:
- name: vendor
in: path
- name: period
in: path
operations:
- name: get-vendor-evaluation
method: GET
- type: http
namespace: snowflake
baseUri: https://3m.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: dataset-refresh
path: /groups/{{group_id}}/datasets/{{dataset_id}}/refreshes
inputParameters:
- name: group_id
in: path
- name: dataset_id
in: path
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: 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
Queries SAP S/4HANA for current raw material inventory levels by plant and storage location, returning available stock, reserved quantities, and reorder point status.
naftiko: '0.5'
info:
label: Raw Material Inventory Lookup
description: Queries SAP S/4HANA for current raw material inventory levels by plant and storage location, returning available stock, reserved quantities, and reorder point status.
tags:
- inventory
- manufacturing
- sap
- sap-s4hana
- supply-chain
- materials
capability:
exposes:
- type: mcp
namespace: inventory
port: 8080
tools:
- name: get-raw-material-stock
description: Look up raw material inventory in SAP S/4HANA by material number and plant. Returns available stock, reserved quantity, and reorder point.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number for the raw material.
- name: plant_code
in: body
type: string
description: The 3M plant code.
call: sap.get-material-stock
with:
material_number: '{{material_number}}'
plant: '{{plant_code}}'
outputParameters:
- name: available_qty
type: string
mapping: $.d.AvailableQuantity
- name: reserved_qty
type: string
mapping: $.d.ReservedQuantity
- name: reorder_point
type: string
mapping: $.d.ReorderPoint
- name: unit_of_measure
type: string
mapping: $.d.BaseUnitOfMeasure
consumes:
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/MM_MATERIAL_STOCK_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
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
outputRawFormat: json
When a manufacturing line goes down, creates a SAP Plant Maintenance work order, opens a ServiceNow incident, and alerts the plant operations team in Microsoft Teams with downtime details.
naftiko: '0.5'
info:
label: Manufacturing Line Downtime Alert
description: When a manufacturing line goes down, creates a SAP Plant Maintenance work order, opens a ServiceNow incident, and alerts the plant operations team in Microsoft Teams with downtime details.
tags:
- manufacturing
- downtime
- sap
- servicenow
- microsoft-teams
- maintenance
capability:
exposes:
- type: mcp
namespace: plant-operations
port: 8080
tools:
- name: report-line-downtime
description: Given a production line ID and downtime reason, create a SAP PM work order, open a ServiceNow incident, and notify the plant operations team in Teams.
inputParameters:
- name: line_id
in: body
type: string
description: The manufacturing line identifier.
- name: plant_code
in: body
type: string
description: The 3M plant code.
- name: downtime_reason
in: body
type: string
description: Reason for the production line downtime.
- name: estimated_duration_hours
in: body
type: string
description: Estimated downtime duration in hours.
steps:
- name: create-pm-order
type: call
call: sap.create-maintenance-order
with:
plant: '{{plant_code}}'
equipment: '{{line_id}}'
order_type: PM02
short_text: 'Line Down: {{line_id}} — {{downtime_reason}}'
priority: '1'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Production Line Down: {{line_id}} at {{plant_code}}'
description: '{{downtime_reason}} | Est. Duration: {{estimated_duration_hours}}h | SAP Order: {{create-pm-order.order_number}}'
urgency: '1'
category: manufacturing
- name: notify-operations
type: call
call: msteams.post-channel-message
with:
team_id: $secrets.plant_ops_team_id
channel_id: $secrets.plant_ops_channel_id
text: 'ALERT: Line {{line_id}} DOWN at {{plant_code}} | Reason: {{downtime_reason}} | Est: {{estimated_duration_hours}}h | SAP: {{create-pm-order.order_number}} | SNOW: {{create-incident.number}}'
consumes:
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/PM_ORDER_CREATE_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: maintenance-orders
path: /MaintenanceOrder
operations:
- name: create-maintenance-order
method: POST
- type: http
namespace: servicenow
baseUri: https://3m.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/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Detects material cost variances in SAP cost accounting, logs an investigation task in Jira, and alerts the plant controller and finance team in Microsoft Teams.
naftiko: '0.5'
info:
label: Material Cost Variance Alert
description: Detects material cost variances in SAP cost accounting, logs an investigation task in Jira, and alerts the plant controller and finance team in Microsoft Teams.
tags:
- finance
- cost-accounting
- sap
- jira
- microsoft-teams
- manufacturing
capability:
exposes:
- type: mcp
namespace: cost-management
port: 8080
tools:
- name: alert-cost-variance
description: Given a material, plant, and variance details, retrieve SAP cost data, create Jira investigation, and alert finance.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number.
- name: plant_code
in: body
type: string
description: The 3M plant code.
- name: variance_amount
in: body
type: string
description: Cost variance amount in USD.
- name: variance_type
in: body
type: string
description: Type of variance (e.g., purchase_price, production_quantity, usage).
steps:
- name: get-cost-data
type: call
call: sap.get-material-cost
with:
material: '{{material_number}}'
plant: '{{plant_code}}'
- name: create-investigation
type: call
call: jira.create-issue
with:
project_key: FIN
issuetype: Task
summary: 'Cost Variance: {{material_number}} at {{plant_code}} (${{variance_amount}})'
description: 'Variance type: {{variance_type}} | Amount: ${{variance_amount}} | Standard cost: {{get-cost-data.standard_cost}} | Actual cost: {{get-cost-data.actual_cost}}'
- name: notify-finance
type: call
call: msteams.post-channel-message
with:
team_id: $secrets.finance_team_id
channel_id: $secrets.cost_alerts_channel_id
text: 'Cost Variance Alert: {{material_number}} at {{plant_code}} | Type: {{variance_type}} | Amount: ${{variance_amount}} | Jira: {{create-investigation.key}}'
consumes:
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/CO_MATERIAL_COST_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: material-costs
path: /MaterialCostEstimate(Material='{{material}}',Plant='{{plant}}')
inputParameters:
- name: material
in: path
- name: plant
in: path
operations:
- name: get-material-cost
method: GET
- type: http
namespace: jira
baseUri: https://3m.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
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 an invoice from SAP Ariba, validates vendor data against SAP S/4HANA master records, posts the accounting document, and notifies the AP team in Microsoft Teams.
naftiko: '0.5'
info:
label: Invoice Processing and AP Automation
description: Receives an invoice from SAP Ariba, validates vendor data against SAP S/4HANA master records, posts the accounting document, and notifies the AP team in Microsoft Teams.
tags:
- finance
- accounts-payable
- sap-ariba
- sap
- invoice-processing
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: accounts-payable
port: 8080
tools:
- name: process-invoice
description: Given an Ariba invoice ID, validate the vendor in SAP, post the AP document, and notify the AP team in Teams.
inputParameters:
- name: invoice_id
in: body
type: string
description: The SAP Ariba invoice identifier.
- name: vendor_id
in: body
type: string
description: The SAP vendor master ID.
steps:
- name: get-invoice
type: call
call: ariba.get-invoice
with:
invoice_id: '{{invoice_id}}'
- name: validate-vendor
type: call
call: sap.get-vendor
with:
vendor_id: '{{vendor_id}}'
- name: post-ap-document
type: call
call: sap.post-invoice
with:
vendor_id: '{{vendor_id}}'
amount: '{{get-invoice.total_amount}}'
currency: '{{get-invoice.currency}}'
invoice_date: '{{get-invoice.invoice_date}}'
reference: '{{invoice_id}}'
- name: notify-ap-team
type: call
call: msteams.send-message
with:
recipient_upn: ap-team@3m.com
text: 'Invoice Posted: {{invoice_id}} | Vendor: {{validate-vendor.name}} | Amount: {{get-invoice.total_amount}} {{get-invoice.currency}} | SAP Doc: {{post-ap-document.document_number}}'
consumes:
- type: http
namespace: ariba
baseUri: https://openapi.ariba.com/api/invoice/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
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/API_VENDOR_0001
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: vendors
path: /A_Supplier('{{vendor_id}}')
inputParameters:
- name: vendor_id
in: path
operations:
- name: get-vendor
method: GET
- name: invoice-documents
path: /A_SupplierInvoice
operations:
- name: post-invoice
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 current status, quantities, and scheduling details of a SAP production order for manufacturing floor visibility.
naftiko: '0.5'
info:
label: Production Order Status Lookup
description: Retrieves the current status, quantities, and scheduling details of a SAP production order for manufacturing floor visibility.
tags:
- manufacturing
- production
- sap
- sap-s4hana
- erp
- scheduling
capability:
exposes:
- type: mcp
namespace: production
port: 8080
tools:
- name: get-production-order
description: Look up a SAP production order by number. Returns status, planned and actual quantities, start and finish dates.
inputParameters:
- name: order_number
in: body
type: string
description: The SAP production order number.
call: sap.get-prod-order
with:
order_number: '{{order_number}}'
outputParameters:
- name: status
type: string
mapping: $.d.OrderStatus
- name: planned_qty
type: string
mapping: $.d.TotalPlannedQty
- name: actual_qty
type: string
mapping: $.d.ActualQuantityDelivered
- name: start_date
type: string
mapping: $.d.BasicStartDate
- name: finish_date
type: string
mapping: $.d.BasicEndDate
consumes:
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/PP_PRODUCTION_ORDER_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-prod-order
method: GET
outputRawFormat: json
When a qualifying LinkedIn signal occurs, enriches the Salesforce contact record with current profile data, syncs to HubSpot, and alerts the owning sales rep in Microsoft Teams.
naftiko: '0.5'
info:
label: Sales Lead Enrichment
description: When a qualifying LinkedIn signal occurs, enriches the Salesforce contact record with current profile data, syncs to HubSpot, and alerts the owning sales rep in Microsoft Teams.
tags:
- sales
- crm
- salesforce
- hubspot
- linkedin
- microsoft-teams
- lead-management
capability:
exposes:
- type: mcp
namespace: sales-intelligence
port: 8080
tools:
- name: enrich-lead-from-linkedin
description: Given a LinkedIn member URN and Salesforce contact ID, enrich the Salesforce record, sync to HubSpot, and notify the owning rep in Microsoft Teams.
inputParameters:
- name: linkedin_member_urn
in: body
type: string
description: The LinkedIn member URN for the contact.
- name: salesforce_contact_id
in: body
type: string
description: The Salesforce contact record ID to enrich.
- name: signal_type
in: body
type: string
description: The LinkedIn signal type (e.g., job_change, content_share, profile_view).
- name: rep_upn
in: body
type: string
description: The Microsoft UPN of the owning sales rep.
steps:
- name: get-linkedin-profile
type: call
call: linkedin.get-profile
with:
member_urn: '{{linkedin_member_urn}}'
- name: update-salesforce
type: call
call: salesforce.update-contact
with:
contact_id: '{{salesforce_contact_id}}'
title: '{{get-linkedin-profile.headline}}'
company: '{{get-linkedin-profile.current_company}}'
linkedin_url: '{{get-linkedin-profile.profile_url}}'
- name: sync-hubspot
type: call
call: hubspot.update-contact
with:
email: '{{update-salesforce.email}}'
jobtitle: '{{get-linkedin-profile.headline}}'
company: '{{get-linkedin-profile.current_company}}'
hs_lead_status: OPEN_DEAL
- name: alert-rep
type: call
call: msteams.send-message
with:
recipient_upn: '{{rep_upn}}'
text: 'Warm Lead Signal: {{get-linkedin-profile.first_name}} {{get-linkedin-profile.last_name}} | Signal: {{signal_type}} | Title: {{get-linkedin-profile.headline}} | Company: {{get-linkedin-profile.current_company}} | Salesforce updated.'
consumes:
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: profiles
path: /people/{{member_urn}}
inputParameters:
- name: member_urn
in: path
operations:
- name: get-profile
method: GET
- type: http
namespace: salesforce
baseUri: https://3m.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: contacts
path: /sobjects/Contact/{{contact_id}}
inputParameters:
- name: contact_id
in: path
operations:
- name: update-contact
method: PATCH
- 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}}
inputParameters:
- name: email
in: path
operations:
- name: update-contact
method: PATCH
- 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
Posts a goods receipt in SAP against a purchase order, triggers a three-way match check, and notifies accounts payable in Microsoft Teams if discrepancies are found.
naftiko: '0.5'
info:
label: SAP Goods Receipt Processing
description: Posts a goods receipt in SAP against a purchase order, triggers a three-way match check, and notifies accounts payable in Microsoft Teams if discrepancies are found.
tags:
- supply-chain
- procurement
- sap
- sap-s4hana
- microsoft-teams
- accounts-payable
capability:
exposes:
- type: mcp
namespace: goods-receipt
port: 8080
tools:
- name: process-goods-receipt
description: Given a PO number, material, and received quantity, post goods receipt in SAP and notify AP of any discrepancies.
inputParameters:
- name: po_number
in: body
type: string
description: The SAP purchase order number.
- name: material_number
in: body
type: string
description: The material number received.
- name: received_quantity
in: body
type: string
description: Quantity actually received.
- name: storage_location
in: body
type: string
description: Storage location for the received goods.
steps:
- name: post-goods-receipt
type: call
call: sap.post-gr
with:
po_number: '{{po_number}}'
material: '{{material_number}}'
quantity: '{{received_quantity}}'
storage_location: '{{storage_location}}'
- name: check-three-way-match
type: call
call: sap.check-invoice-match
with:
po_number: '{{po_number}}'
gr_document: '{{post-goods-receipt.document_number}}'
- name: notify-ap
type: call
call: msteams.post-channel-message
with:
team_id: $secrets.ap_team_id
channel_id: $secrets.ap_channel_id
text: 'Goods Receipt posted: PO {{po_number}} | Material: {{material_number}} | Qty: {{received_quantity}} | GR Doc: {{post-goods-receipt.document_number}} | Match Status: {{check-three-way-match.match_status}}'
consumes:
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/MM_GOODS_RECEIPT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: goods-receipts
path: /GoodsReceipt
operations:
- name: post-gr
method: POST
- name: invoice-match
path: /ThreeWayMatch(PO='{{po_number}}',GR='{{gr_document}}')
inputParameters:
- name: po_number
in: path
- name: gr_document
in: path
operations:
- name: check-invoice-match
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
Triggers SAP S/4HANA period-close tasks, pulls consolidated financials into Oracle Hyperion for intercompany elimination, and refreshes the Power BI executive financial dashboard.
naftiko: '0.5'
info:
label: Financial Consolidation and Close
description: Triggers SAP S/4HANA period-close tasks, pulls consolidated financials into Oracle Hyperion for intercompany elimination, and refreshes the Power BI executive financial dashboard.
tags:
- finance
- financial-close
- sap
- oracle-hyperion
- power-bi
- reporting
capability:
exposes:
- type: mcp
namespace: finance-close
port: 8080
tools:
- name: run-period-close
description: Trigger SAP period-close postings for a company code and fiscal period, sync results to Oracle Hyperion, and refresh the Power BI financial dashboard.
inputParameters:
- name: company_code
in: body
type: string
description: SAP company code (e.g., 1000 for 3M US).
- name: fiscal_year
in: body
type: string
description: Four-digit fiscal year (e.g., 2025).
- name: fiscal_period
in: body
type: string
description: Two-digit fiscal period (e.g., 03 for March).
steps:
- name: trigger-close
type: call
call: sap.run-period-close
with:
company_code: '{{company_code}}'
fiscal_year: '{{fiscal_year}}'
fiscal_period: '{{fiscal_period}}'
- name: sync-hyperion
type: call
call: oracle-hyperion.load-data
with:
application: 3M_CONSOL
period: '{{fiscal_year}}.{{fiscal_period}}'
scenario: Actuals
- name: refresh-dashboard
type: call
call: powerbi.refresh-dataset
with:
dataset_name: executive-financial-{{fiscal_year}}-{{fiscal_period}}
consumes:
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/FAC_CLOSE_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: period-close
path: /PeriodClose
operations:
- name: run-period-close
method: POST
- type: http
namespace: oracle-hyperion
baseUri: https://3m-hyperion.oracle.com/HyperionPlanning/rest/v3
authentication:
type: basic
username: $secrets.hyperion_user
password: $secrets.hyperion_password
resources:
- name: data-loads
path: /applications/{{application}}/dataLoads
inputParameters:
- name: application
in: path
operations:
- name: load-data
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_name}}/refreshes
inputParameters:
- name: dataset_name
in: path
operations:
- name: refresh-dataset
method: POST
Reconciles travel expenses by pulling reports from SAP Concur, matching against SAP FI postings, and creating a ServiceNow ticket for any discrepancies found.
naftiko: '0.5'
info:
label: Travel Expense Reconciliation
description: Reconciles travel expenses by pulling reports from SAP Concur, matching against SAP FI postings, and creating a ServiceNow ticket for any discrepancies found.
tags:
- finance
- travel
- sap-concur
- sap
- servicenow
- expense-management
capability:
exposes:
- type: mcp
namespace: travel-finance
port: 8080
tools:
- name: reconcile-travel-expenses
description: Given an employee ID and period, pull Concur reports, match against SAP postings, and flag discrepancies.
inputParameters:
- name: employee_id
in: body
type: string
description: The employee ID in Concur.
- name: period
in: body
type: string
description: The reconciliation period (e.g., 2026-03).
steps:
- name: get-concur-reports
type: call
call: concur.get-expense-reports
with:
employee_id: '{{employee_id}}'
period: '{{period}}'
- name: get-sap-postings
type: call
call: sap.get-travel-postings
with:
employee_id: '{{employee_id}}'
period: '{{period}}'
- name: create-discrepancy-ticket
type: call
call: servicenow.create-case
with:
short_description: 'Travel expense discrepancy: {{employee_id}} ({{period}})'
description: 'Concur total: {{get-concur-reports.total_amount}} | SAP total: {{get-sap-postings.total_amount}} | Reports: {{get-concur-reports.report_count}}'
category: finance
consumes:
- type: http
namespace: concur
baseUri: https://us.api.concursolutions.com/api/v3.0
authentication:
type: bearer
token: $secrets.concur_token
resources:
- name: expense-reports
path: /expense/reports
inputParameters:
- name: employee_id
in: query
- name: period
in: query
operations:
- name: get-expense-reports
method: GET
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/FI_TRAVEL_EXPENSE_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: travel-postings
path: /TravelExpensePosting
inputParameters:
- name: employee_id
in: query
- name: period
in: query
operations:
- name: get-travel-postings
method: GET
- type: http
namespace: servicenow
baseUri: https://3m.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
When a new API is published to Kong Gateway, registers it in Confluence as documentation, creates a Datadog API monitor, and notifies the API governance team in Microsoft Teams.
naftiko: '0.5'
info:
label: API Lifecycle Management
description: When a new API is published to Kong Gateway, registers it in Confluence as documentation, creates a Datadog API monitor, and notifies the API governance team in Microsoft Teams.
tags:
- api-management
- kong
- confluence
- datadog
- microsoft-teams
- governance
capability:
exposes:
- type: mcp
namespace: api-governance
port: 8080
tools:
- name: register-new-api
description: Given a Kong service name and API metadata, create a Confluence doc page, add a Datadog availability monitor, and notify the API governance team in Teams.
inputParameters:
- name: kong_service_name
in: body
type: string
description: The Kong Gateway service name.
- name: api_title
in: body
type: string
description: Human-readable API title.
- name: api_owner_team
in: body
type: string
description: Team email owning this API.
- name: confluence_space_key
in: body
type: string
description: Confluence space key to publish docs to.
steps:
- name: create-doc-page
type: call
call: confluence.create-page
with:
space_key: '{{confluence_space_key}}'
title: 'API: {{api_title}}'
body: 'Kong service: {{kong_service_name}} | Owner: {{api_owner_team}}'
- name: create-monitor
type: call
call: datadog.create-monitor
with:
name: 'API Availability: {{api_title}}'
type: api
message: API {{api_title}} ({{kong_service_name}}) is unavailable. Notify {{api_owner_team}}
- name: notify-governance
type: call
call: msteams.send-message
with:
recipient_upn: api-governance@3m.com
text: 'New API Registered: {{api_title}} | Kong: {{kong_service_name}} | Owner: {{api_owner_team}} | Docs: {{create-doc-page.url}} | Monitor: {{create-monitor.id}}'
consumes:
- type: http
namespace: confluence
baseUri: https://3m.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_token
resources:
- name: pages
path: /content
operations:
- name: create-page
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: monitors
path: /monitor
operations:
- name: create-monitor
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
Verifies nightly Commvault and Veritas NetBackup job results, logs failures to Datadog, and opens a ServiceNow incident for any backup that did not complete successfully.
naftiko: '0.5'
info:
label: Backup and Recovery Verification
description: Verifies nightly Commvault and Veritas NetBackup job results, logs failures to Datadog, and opens a ServiceNow incident for any backup that did not complete successfully.
tags:
- backup
- recovery
- commvault
- servicenow
- datadog
- infrastructure
capability:
exposes:
- type: mcp
namespace: backup-ops
port: 8080
tools:
- name: verify-backup-job
description: Given a Commvault job ID, check its completion status, log to Datadog, and open a ServiceNow incident if the backup failed.
inputParameters:
- name: job_id
in: body
type: string
description: The Commvault backup job ID.
- name: backup_set_name
in: body
type: string
description: Name of the backup set or client.
- name: environment
in: body
type: string
description: Environment the backup covers (prod, dr, staging).
steps:
- name: get-job-status
type: call
call: commvault.get-job
with:
job_id: '{{job_id}}'
- name: log-result
type: call
call: datadog.create-event
with:
title: 'Backup Job {{job_id}}: {{get-job-status.status}}'
text: 'BackupSet: {{backup_set_name}} | Env: {{environment}} | Size: {{get-job-status.size_gb}}GB | Duration: {{get-job-status.duration_minutes}}min'
alert_type: info
tags: backup:{{backup_set_name}},env:{{environment}}
- name: open-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Backup failure: {{backup_set_name}} ({{environment}})'
description: 'Commvault job {{job_id}} failed for {{backup_set_name}} in {{environment}}. Status: {{get-job-status.status}}. Datadog: {{log-result.url}}'
category: backup_failure
urgency: '2'
consumes:
- type: http
namespace: commvault
baseUri: https://3m-commvault.internal/commandcenter/api
authentication:
type: bearer
token: $secrets.commvault_token
resources:
- name: jobs
path: /Job/{{job_id}}
inputParameters:
- name: job_id
in: path
operations:
- name: get-job
method: GET
- 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: servicenow
baseUri: https://3m.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
Provisions IT equipment for a new hire by creating a ServiceNow request, linking the Workday employee record, and notifying the hiring manager and IT support in Teams.
naftiko: '0.5'
info:
label: New Hire Equipment Provisioning
description: Provisions IT equipment for a new hire by creating a ServiceNow request, linking the Workday employee record, and notifying the hiring manager and IT support in Teams.
tags:
- hr
- it-service
- servicenow
- workday
- microsoft-teams
- onboarding
capability:
exposes:
- type: mcp
namespace: hr-it-provisioning
port: 8080
tools:
- name: provision-new-hire-equipment
description: Given an employee ID, role, and start date, create equipment request in ServiceNow, verify Workday record, and notify stakeholders.
inputParameters:
- name: employee_id
in: body
type: string
description: The Workday employee ID.
- name: role
in: body
type: string
description: The new hire's role/job title.
- name: start_date
in: body
type: string
description: Employee start date.
- name: manager_upn
in: body
type: string
description: UPN of the hiring manager.
steps:
- name: get-employee
type: call
call: workday.get-worker
with:
employee_id: '{{employee_id}}'
- name: create-equipment-request
type: call
call: servicenow.create-request
with:
short_description: 'Equipment provisioning: {{get-employee.full_name}} ({{role}})'
description: 'New hire starting {{start_date}}. Role: {{role}}. Manager: {{manager_upn}}'
category: hardware
requested_for: '{{employee_id}}'
- name: notify-manager
type: call
call: msteams.send-chat
with:
recipient_upn: '{{manager_upn}}'
text: 'Equipment request created for {{get-employee.full_name}} ({{role}}), starting {{start_date}}. ServiceNow: {{create-equipment-request.number}}'
consumes:
- type: http
namespace: workday
baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/3m
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: servicenow
baseUri: https://3m.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: requests
path: /table/sc_request
operations:
- name: create-request
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: chats
path: /users/{{recipient_upn}}/chats
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-chat
method: POST
Triggers a demand forecast model run in Snowflake, pushes forecast data back to SAP APO, and publishes updated forecast charts to the supply planning Teams channel.
naftiko: '0.5'
info:
label: Demand Forecast Refresh
description: Triggers a demand forecast model run in Snowflake, pushes forecast data back to SAP APO, and publishes updated forecast charts to the supply planning Teams channel.
tags:
- supply-chain
- forecasting
- snowflake
- sap
- microsoft-teams
- planning
capability:
exposes:
- type: mcp
namespace: demand-planning
port: 8080
tools:
- name: refresh-demand-forecast
description: Given a product family and horizon, run forecast model, update SAP APO, and notify supply planning.
inputParameters:
- name: product_family
in: body
type: string
description: The product family code for forecasting.
- name: forecast_horizon_months
in: body
type: string
description: Number of months to forecast ahead.
steps:
- name: run-forecast-model
type: call
call: snowflake.run-query
with:
statement: CALL SUPPLY_CHAIN.RUN_DEMAND_FORECAST('{{product_family}}', {{forecast_horizon_months}})
warehouse: PLANNING_WH
- name: push-to-sap
type: call
call: sap.update-forecast
with:
product_family: '{{product_family}}'
forecast_data: '{{run-forecast-model.result}}'
- name: notify-planning
type: call
call: msteams.post-channel-message
with:
team_id: $secrets.supply_planning_team_id
channel_id: $secrets.planning_channel_id
text: Demand forecast refreshed for {{product_family}} ({{forecast_horizon_months}}M horizon). SAP APO updated.
consumes:
- type: http
namespace: snowflake
baseUri: https://3m.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: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/APO_FORECAST_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: forecasts
path: /ForecastData
operations:
- name: update-forecast
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
Reviews a customer credit limit by pulling AR aging from SAP, checking Salesforce account health, and routing the approval decision to the credit manager in Teams.
naftiko: '0.5'
info:
label: Customer Credit Limit Review
description: Reviews a customer credit limit by pulling AR aging from SAP, checking Salesforce account health, and routing the approval decision to the credit manager in Teams.
tags:
- finance
- credit-management
- sap
- salesforce
- microsoft-teams
- accounts-receivable
capability:
exposes:
- type: mcp
namespace: credit-management
port: 8080
tools:
- name: review-credit-limit
description: Given a customer number and requested limit, pull AR data, check CRM health, and route for approval.
inputParameters:
- name: customer_number
in: body
type: string
description: The SAP customer account number.
- name: requested_limit
in: body
type: string
description: Requested credit limit in USD.
- name: salesforce_account_id
in: body
type: string
description: Salesforce account ID.
- name: credit_manager_upn
in: body
type: string
description: UPN of the credit manager.
steps:
- name: get-ar-aging
type: call
call: sap.get-ar-aging
with:
customer: '{{customer_number}}'
- name: get-account-health
type: call
call: salesforce.get-account
with:
account_id: '{{salesforce_account_id}}'
- name: route-approval
type: call
call: msteams.send-chat
with:
recipient_upn: '{{credit_manager_upn}}'
text: 'Credit Limit Review: Customer {{customer_number}} | Requested: ${{requested_limit}} | Current AR: ${{get-ar-aging.total_outstanding}} | Overdue: ${{get-ar-aging.overdue_amount}} | CRM Revenue: ${{get-account-health.annual_revenue}}'
consumes:
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/FI_AR_AGING_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: ar-aging
path: /CustomerAging(Customer='{{customer}}')
inputParameters:
- name: customer
in: path
operations:
- name: get-ar-aging
method: GET
- type: http
namespace: salesforce
baseUri: https://3m.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: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: chats
path: /users/{{recipient_upn}}/chats
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-chat
method: POST
Queries Datadog for the current health status of a monitored service, returning monitor state, last triggered time, and alert details.
naftiko: '0.5'
info:
label: Datadog Service Health Check
description: Queries Datadog for the current health status of a monitored service, returning monitor state, last triggered time, and alert details.
tags:
- monitoring
- datadog
- observability
- infrastructure
capability:
exposes:
- type: mcp
namespace: observability
port: 8080
tools:
- name: get-monitor-status
description: Check the status of a Datadog monitor by monitor ID. Returns overall state, last triggered timestamp, and message.
inputParameters:
- name: monitor_id
in: body
type: string
description: The Datadog monitor ID.
call: datadog.get-monitor
with:
monitor_id: '{{monitor_id}}'
outputParameters:
- name: overall_state
type: string
mapping: $.overall_state
- name: name
type: string
mapping: $.name
- name: last_triggered
type: string
mapping: $.overall_state_modified
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: monitors
path: /monitor/{{monitor_id}}
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
Looks up a SAP S/4HANA purchase order by number and returns header status, vendor, total value, and open line items. Used by procurement and finance teams to check PO health without logging into SAP.
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 open line items. Used by procurement and finance teams to check PO health without logging into SAP.
tags:
- procurement
- erp
- sap
- sap-s4hana
- purchase-order
- finance
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 header status, vendor name, total value, currency, 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: currency
type: string
mapping: $.d.TransactionCurrency
- name: delivery_date
type: string
mapping: $.d.DeliveryDate
consumes:
- type: http
namespace: sap
baseUri: https://3m-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
outputRawFormat: xml
When AWS or Azure cost anomaly detection fires, annotates in Datadog, opens a ServiceNow cost-management ticket, and posts a summary to the FinOps Microsoft Teams channel.
naftiko: '0.5'
info:
label: Cloud Cost Anomaly Response
description: When AWS or Azure cost anomaly detection fires, annotates in Datadog, opens a ServiceNow cost-management ticket, and posts a summary to the FinOps Microsoft Teams channel.
tags:
- finops
- cloud-cost
- aws
- azure
- datadog
- servicenow
- microsoft-teams
- cost-management
capability:
exposes:
- type: mcp
namespace: finops
port: 8080
tools:
- name: handle-cost-anomaly
description: Given a cloud cost anomaly event (AWS or Azure), create a Datadog annotation, open a ServiceNow cost-management ticket, and alert the FinOps team in Microsoft Teams.
inputParameters:
- name: cloud_provider
in: body
type: string
description: Cloud provider where the anomaly was detected (aws or azure).
- name: anomaly_id
in: body
type: string
description: The anomaly identifier from the cloud provider.
- name: service_name
in: body
type: string
description: The cloud service or resource group with the anomaly.
- name: estimated_overage_usd
in: body
type: number
description: Estimated cost overage in USD.
- name: business_unit
in: body
type: string
description: The 3M business unit responsible for the spend.
steps:
- name: annotate-datadog
type: call
call: datadog.create-event
with:
title: '{{cloud_provider}} Cost Anomaly: {{service_name}}'
text: 'Anomaly {{anomaly_id}} — estimated overage: ${{estimated_overage_usd}} — BU: {{business_unit}}'
alert_type: warning
tags: cloud_provider:{{cloud_provider}},business_unit:{{business_unit}}
- name: open-ticket
type: call
call: servicenow.create-task
with:
short_description: 'Cloud Cost Anomaly: {{cloud_provider}} {{service_name}} — ${{estimated_overage_usd}} overage'
description: 'Anomaly {{anomaly_id}} on {{service_name}} ({{cloud_provider}}). BU: {{business_unit}}. Datadog event: {{annotate-datadog.id}}'
category: cloud_cost
assigned_group: FinOps
- name: notify-finops
type: call
call: msteams.send-message
with:
recipient_upn: finops-alerts@3m.com
text: 'Cost Anomaly: {{cloud_provider}} | Service: {{service_name}} | Overage: ${{estimated_overage_usd}} | BU: {{business_unit}} | Ticket: {{open-ticket.number}} | Datadog: {{annotate-datadog.url}}'
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
operations:
- name: create-event
method: POST
- type: http
namespace: servicenow
baseUri: https://3m.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: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
When a new engineer is added to GitHub org, provisions Jira and Confluence access, opens a ServiceNow onboarding ticket, and sends a welcome message with resource links via Microsoft Teams.
naftiko: '0.5'
info:
label: Developer Onboarding
description: When a new engineer is added to GitHub org, provisions Jira and Confluence access, opens a ServiceNow onboarding ticket, and sends a welcome message with resource links via Microsoft Teams.
tags:
- developer-experience
- onboarding
- github
- jira
- confluence
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: dev-onboarding
port: 8080
tools:
- name: onboard-developer
description: Given a GitHub username and Workday employee ID, provision Jira/Confluence, create a ServiceNow onboarding task, and send Teams welcome message.
inputParameters:
- name: github_username
in: body
type: string
description: The new developer's GitHub username.
- name: employee_id
in: body
type: string
description: The Workday employee ID.
- name: team_name
in: body
type: string
description: The engineering team the developer is joining.
steps:
- name: get-employee
type: call
call: workday.get-worker
with:
worker_id: '{{employee_id}}'
- name: add-to-jira
type: call
call: jira.add-user-to-project
with:
username: '{{get-employee.work_email}}'
project_key: '{{team_name}}'
role: Developer
- name: open-onboarding-task
type: call
call: servicenow.create-task
with:
short_description: 'Developer onboarding: {{get-employee.full_name}} — {{team_name}}'
category: dev_onboarding
assigned_group: DevOps_Platform
- name: send-welcome
type: call
call: msteams.send-message
with:
recipient_upn: '{{get-employee.work_email}}'
text: 'Welcome to 3M Engineering, {{get-employee.first_name}}! GitHub: {{github_username}} | Team: {{team_name}} | Jira access provisioned | Onboarding ticket: {{open-onboarding-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: workers
path: /workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: jira
baseUri: https://3m.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_token
resources:
- name: project-roles
path: /project/{{project_key}}/role
inputParameters:
- name: project_key
in: path
operations:
- name: add-user-to-project
method: POST
- type: http
namespace: servicenow
baseUri: https://3m.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: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Creates a patent filing tracking entry in Jira, uploads invention disclosure documents to SharePoint, and notifies the IP legal team in Microsoft Teams.
naftiko: '0.5'
info:
label: Patent Filing Tracker
description: Creates a patent filing tracking entry in Jira, uploads invention disclosure documents to SharePoint, and notifies the IP legal team in Microsoft Teams.
tags:
- intellectual-property
- legal
- jira
- sharepoint
- microsoft-teams
- research
capability:
exposes:
- type: mcp
namespace: ip-management
port: 8080
tools:
- name: track-patent-filing
description: Given invention details, create a Jira tracker, upload documents to SharePoint, and notify IP legal.
inputParameters:
- name: invention_title
in: body
type: string
description: Title of the invention.
- name: inventor_names
in: body
type: string
description: Comma-separated list of inventor names.
- name: technology_area
in: body
type: string
description: Technology domain (e.g., adhesives, abrasives, healthcare).
steps:
- name: create-patent-ticket
type: call
call: jira.create-issue
with:
project_key: IP
issuetype: Epic
summary: 'Patent Filing: {{invention_title}}'
description: 'Inventors: {{inventor_names}} | Technology: {{technology_area}}'
- name: create-document-folder
type: call
call: sharepoint.create-folder
with:
site_id: $secrets.ip_site_id
parent_path: /Patents/{{technology_area}}
folder_name: '{{create-patent-ticket.key}}-{{invention_title}}'
- name: notify-ip-legal
type: call
call: msteams.post-channel-message
with:
team_id: $secrets.ip_legal_team_id
channel_id: $secrets.ip_legal_channel_id
text: 'New patent filing initiated: {{invention_title}} | Inventors: {{inventor_names}} | Tech: {{technology_area}} | Jira: {{create-patent-ticket.key}}'
consumes:
- type: http
namespace: jira
baseUri: https://3m.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: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: folders
path: /{{site_id}}/drive/root:{{parent_path}}/{{folder_name}}
inputParameters:
- name: site_id
in: path
- name: parent_path
in: path
- name: folder_name
in: path
operations:
- name: create-folder
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/{{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 GitHub Dependabot or SonarQube alert fires, enriches the finding with Datadog service context, opens a Jira security ticket, and routes a ServiceNow change request for high-severity vulnerabilities.
naftiko: '0.5'
info:
label: Security Vulnerability Triage
description: When a GitHub Dependabot or SonarQube alert fires, enriches the finding with Datadog service context, opens a Jira security ticket, and routes a ServiceNow change request for high-severity vulnerabilities.
tags:
- security
- devsecops
- github
- datadog
- jira
- servicenow
- vulnerability-management
capability:
exposes:
- type: mcp
namespace: security-ops
port: 8080
tools:
- name: triage-vulnerability
description: Given a GitHub vulnerability alert (Dependabot or SonarQube), fetch Datadog service metadata, open a Jira security ticket, and for CVSS >= 7.0 also open a ServiceNow change request.
inputParameters:
- name: repository
in: body
type: string
description: The GitHub repository in owner/repo format.
- name: alert_number
in: body
type: string
description: The GitHub Dependabot or code scanning alert number.
- name: cve_id
in: body
type: string
description: The CVE identifier (e.g., CVE-2024-12345).
- name: cvss_score
in: body
type: number
description: The CVSS score of the vulnerability (0.0–10.0).
- name: affected_package
in: body
type: string
description: The name of the affected library or package.
- name: service_name
in: body
type: string
description: The Datadog service name associated with this repository.
steps:
- name: get-service-context
type: call
call: datadog.get-service
with:
service_name: '{{service_name}}'
- name: create-jira-ticket
type: call
call: jira.create-issue
with:
project_key: SEC
issuetype: Security Vulnerability
summary: '[{{cve_id}}] {{affected_package}} in {{repository}} — CVSS {{cvss_score}}'
description: 'CVE: {{cve_id}}
Repo: {{repository}}
Alert: {{alert_number}}
Package: {{affected_package}}
CVSS: {{cvss_score}}
Service owner: {{get-service-context.team}}'
priority: High
- name: open-change-request
type: call
call: servicenow.create-change-request
with:
short_description: 'Security patch: {{cve_id}} in {{affected_package}} ({{repository}})'
description: 'High-severity vulnerability {{cve_id}} (CVSS {{cvss_score}}) found in {{affected_package}}. Jira: {{create-jira-ticket.key}}. Service: {{service_name}} owned by {{get-service-context.team}}.'
category: security_patch
risk: moderate
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: services
path: /services/definitions/{{service_name}}
inputParameters:
- name: service_name
in: path
operations:
- name: get-service
method: GET
- type: http
namespace: jira
baseUri: https://3m.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: servicenow
baseUri: https://3m.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
When a SAP master data record is created or changed, routes the record for approval via ServiceNow, and notifies the responsible data steward in Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Master Data Governance Alert
description: When a SAP master data record is created or changed, routes the record for approval via ServiceNow, and notifies the responsible data steward in Microsoft Teams.
tags:
- master-data
- sap
- data-governance
- servicenow
- microsoft-teams
- erp
capability:
exposes:
- type: mcp
namespace: mdg
port: 8080
tools:
- name: route-master-data-approval
description: Given a SAP master data record type, ID, and change type, create a ServiceNow approval task and notify the data steward in Teams.
inputParameters:
- name: record_type
in: body
type: string
description: Master data type (material, vendor, customer).
- name: record_id
in: body
type: string
description: The SAP master data record ID.
- name: change_type
in: body
type: string
description: Change type (create, update, block, delete).
- name: data_steward_upn
in: body
type: string
description: Microsoft UPN of the responsible data steward.
steps:
- name: create-approval-task
type: call
call: servicenow-mdg.create-task
with:
short_description: 'MDG approval: {{change_type}} {{record_type}} {{record_id}}'
description: 'Record: {{record_id}} ({{record_type}}) | Change: {{change_type}}'
category: master_data_governance
assigned_to: '{{data_steward_upn}}'
- name: notify-steward
type: call
call: msteams-mdg.send-message
with:
recipient_upn: '{{data_steward_upn}}'
text: 'MDG Review Required: {{change_type}} on {{record_type}} {{record_id}} | ServiceNow: {{create-approval-task.number}}'
consumes:
- type: http
namespace: servicenow-mdg
baseUri: https://3m.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-mdg
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
Submits a SQL query to 3M's Snowflake data warehouse and returns the result set for ad-hoc analytics and data exploration.
naftiko: '0.5'
info:
label: Snowflake Query Execution
description: Submits a SQL query to 3M's Snowflake data warehouse and returns the result set for ad-hoc analytics and data exploration.
tags:
- analytics
- snowflake
- data-warehouse
- sql
capability:
exposes:
- type: mcp
namespace: data-analytics
port: 8080
tools:
- name: run-query
description: Execute a SQL query against the 3M Snowflake data warehouse. Returns the result set as JSON rows.
inputParameters:
- name: sql_statement
in: body
type: string
description: The SQL query to execute.
- name: warehouse
in: body
type: string
description: The Snowflake warehouse to use (e.g., ANALYTICS_WH).
call: snowflake.submit-query
with:
statement: '{{sql_statement}}'
warehouse: '{{warehouse}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://3m.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: submit-query
method: POST
Captures R&D experiment results by logging data in Snowflake, updating the Jira research ticket, and archiving the experiment report in SharePoint for knowledge retention.
naftiko: '0.5'
info:
label: R&D Experiment Log Capture
description: Captures R&D experiment results by logging data in Snowflake, updating the Jira research ticket, and archiving the experiment report in SharePoint for knowledge retention.
tags:
- research
- innovation
- snowflake
- jira
- sharepoint
- data-science
capability:
exposes:
- type: mcp
namespace: rd-experiments
port: 8080
tools:
- name: log-experiment
description: Given experiment details, log results in Snowflake, update Jira, and archive report in SharePoint.
inputParameters:
- name: experiment_id
in: body
type: string
description: Unique experiment identifier.
- name: jira_key
in: body
type: string
description: The Jira R&D issue key.
- name: result_summary
in: body
type: string
description: Summary of experiment results.
- name: technology_area
in: body
type: string
description: Technology area (e.g., adhesives, abrasives, films).
steps:
- name: log-to-snowflake
type: call
call: snowflake.run-query
with:
statement: INSERT INTO RD.EXPERIMENT_LOG VALUES ('{{experiment_id}}', '{{jira_key}}', '{{result_summary}}', '{{technology_area}}', CURRENT_TIMESTAMP())
warehouse: RD_WH
- name: update-jira
type: call
call: jira.add-comment
with:
issue_key: '{{jira_key}}'
body: 'Experiment {{experiment_id}} completed. Results: {{result_summary}}'
- name: archive-report
type: call
call: sharepoint.upload-file
with:
site_id: $secrets.rd_site_id
folder_path: /Experiments/{{technology_area}}
file_name: '{{experiment_id}}-report.json'
content: '{{result_summary}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://3m.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://3m.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_token
resources:
- name: comments
path: /issue/{{issue_key}}/comment
inputParameters:
- name: issue_key
in: path
operations:
- name: add-comment
method: POST
- 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}}/{{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
Monitors Informatica IICS job completions and logs failures to Datadog, opens a Jira data incident, and notifies the ETL team in Microsoft Teams.
naftiko: '0.5'
info:
label: Informatica Data Integration Failure
description: Monitors Informatica IICS job completions and logs failures to Datadog, opens a Jira data incident, and notifies the ETL team in Microsoft Teams.
tags:
- data-integration
- informatica
- datadog
- jira
- microsoft-teams
- etl
capability:
exposes:
- type: mcp
namespace: etl-ops
port: 8080
tools:
- name: handle-informatica-failure
description: Given an Informatica job name, source, and target, log the failure to Datadog, open a Jira incident, and notify the ETL team in Teams.
inputParameters:
- name: job_name
in: body
type: string
description: The Informatica mapping or workflow job name.
- name: source_system
in: body
type: string
description: Source system (e.g., SAP, Oracle, Salesforce).
- name: target_system
in: body
type: string
description: Target system (e.g., Snowflake, Oracle DW).
- name: error_message
in: body
type: string
description: Error message from the failed job.
steps:
- name: log-datadog
type: call
call: datadog-etl.create-event
with:
title: 'Informatica Failure: {{job_name}}'
text: 'Source: {{source_system}} → Target: {{target_system}} | Error: {{error_message}}'
alert_type: error
tags: etl:informatica,source:{{source_system}},target:{{target_system}}
- name: open-jira
type: call
call: jira-etl.create-issue
with:
project_key: DATA
issuetype: Incident
summary: 'Informatica failure: {{job_name}} ({{source_system}} → {{target_system}})'
description: 'Job: {{job_name}}
Source: {{source_system}}
Target: {{target_system}}
Error: {{error_message}}
Datadog: {{log-datadog.url}}'
- name: notify-team
type: call
call: msteams-etl.send-message
with:
recipient_upn: etl-team@3m.com
text: 'Informatica Failure: {{job_name}} | {{source_system}} → {{target_system}} | Jira: {{open-jira.key}}'
consumes:
- type: http
namespace: datadog-etl
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: jira-etl
baseUri: https://3m.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-etl
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 Jira change ticket is approved, creates a ServiceNow change request, updates the linked Confluence runbook, and notifies the change advisory board in Microsoft Teams.
naftiko: '0.5'
info:
label: IT Change Management Workflow
description: When a Jira change ticket is approved, creates a ServiceNow change request, updates the linked Confluence runbook, and notifies the change advisory board in Microsoft Teams.
tags:
- itsm
- change-management
- servicenow
- jira
- confluence
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: it-change
port: 8080
tools:
- name: submit-change-request
description: Given an approved Jira change ticket, open a ServiceNow change request, link the Confluence runbook, and notify the CAB channel in Teams.
inputParameters:
- name: jira_issue_key
in: body
type: string
description: The approved Jira change ticket key (e.g., CHG-1234).
- name: confluence_page_id
in: body
type: string
description: The Confluence runbook page ID to attach.
- name: scheduled_start
in: body
type: string
description: Planned change start time in ISO 8601 format.
steps:
- name: get-jira-issue
type: call
call: jira.get-issue
with:
issue_key: '{{jira_issue_key}}'
- name: get-runbook
type: call
call: confluence.get-page
with:
page_id: '{{confluence_page_id}}'
- name: create-change
type: call
call: servicenow.create-change-request
with:
short_description: '{{get-jira-issue.summary}}'
description: '{{get-jira-issue.description}}
Runbook: {{get-runbook.url}}'
start_date: '{{scheduled_start}}'
category: infrastructure
- name: notify-cab
type: call
call: msteams.send-message
with:
recipient_upn: cab-board@3m.com
text: 'Change Submitted: {{get-jira-issue.summary}} | Jira: {{jira_issue_key}} | ServiceNow: {{create-change.number}} | Start: {{scheduled_start}} | Runbook: {{get-runbook.url}}'
consumes:
- type: http
namespace: jira
baseUri: https://3m.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_token
resources:
- name: issues
path: /issue/{{issue_key}}
inputParameters:
- name: issue_key
in: path
operations:
- name: get-issue
method: GET
- type: http
namespace: confluence
baseUri: https://3m.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_token
resources:
- name: pages
path: /content/{{page_id}}
inputParameters:
- name: page_id
in: path
operations:
- name: get-page
method: GET
- type: http
namespace: servicenow
baseUri: https://3m.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.msgraph_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Retrieves a document from SharePoint, sends it to Claude via the Anthropic API for summarization, saves the result back to SharePoint, and notifies the requester in Microsoft Teams.
naftiko: '0.5'
info:
label: AI-Assisted Document Summarization
description: Retrieves a document from SharePoint, sends it to Claude via the Anthropic API for summarization, saves the result back to SharePoint, and notifies the requester in Microsoft Teams.
tags:
- ai
- anthropic
- document-management
- sharepoint
- microsoft-teams
- productivity
capability:
exposes:
- type: mcp
namespace: ai-productivity
port: 8080
tools:
- name: summarize-document
description: Given a SharePoint document path and requester UPN, fetch the document, summarize via Claude, save the summary, and notify the requester in Teams.
inputParameters:
- name: sharepoint_site_id
in: body
type: string
description: SharePoint site ID containing the document.
- name: document_path
in: body
type: string
description: Path to the document within the SharePoint drive.
- name: requester_upn
in: body
type: string
description: Microsoft UPN of the person requesting the summary.
steps:
- name: get-document
type: call
call: sharepoint-ai.get-file
with:
site_id: '{{sharepoint_site_id}}'
file_path: '{{document_path}}'
- name: summarize
type: call
call: anthropic-ai.create-message
with:
model: claude-sonnet-4-6
max_tokens: '1024'
system: You are a concise business document summarizer for 3M executives.
user_message: 'Summarize this document:
{{get-document.content}}'
- name: save-summary
type: call
call: sharepoint-ai.create-file
with:
site_id: '{{sharepoint_site_id}}'
file_path: Summaries/{{document_path}}.summary.md
content: '{{summarize.content}}'
- name: notify-requester
type: call
call: msteams-ai.send-message
with:
recipient_upn: '{{requester_upn}}'
text: 'Your document summary is ready: {{save-summary.url}}'
consumes:
- type: http
namespace: sharepoint-ai
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}}:/content
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: get-file
method: GET
- name: create-file
method: PUT
- type: http
namespace: anthropic-ai
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-ai
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 ServiceNow incident record by number, returning priority, state, assigned group, and resolution notes for IT support teams.
naftiko: '0.5'
info:
label: ServiceNow Incident Lookup
description: Retrieves a ServiceNow incident record by number, returning priority, state, assigned group, and resolution notes for IT support teams.
tags:
- it-service
- servicenow
- incident
- support
capability:
exposes:
- type: mcp
namespace: itsm
port: 8080
tools:
- name: get-incident
description: Look up a ServiceNow incident by number. Returns priority, state, assignment group, and short description.
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: priority
type: string
mapping: $.result.priority
- name: state
type: string
mapping: $.result.state
- name: assigned_to
type: string
mapping: $.result.assigned_to.display_value
- name: short_description
type: string
mapping: $.result.short_description
consumes:
- type: http
namespace: servicenow
baseUri: https://3m.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
value: number={{incident_number}}
operations:
- name: get-incident
method: GET
Onboards contractors for plant access by verifying training records in ServiceNow, creating a Workday contingent worker record, and issuing a badge request through Microsoft Power Automate.
naftiko: '0.5'
info:
label: Contractor Safety Onboarding
description: Onboards contractors for plant access by verifying training records in ServiceNow, creating a Workday contingent worker record, and issuing a badge request through Microsoft Power Automate.
tags:
- safety
- contractor
- servicenow
- workday
- microsoft-power-automate
- onboarding
capability:
exposes:
- type: mcp
namespace: contractor-safety
port: 8080
tools:
- name: onboard-contractor
description: Given contractor details, verify safety training, create worker record, and issue badge request.
inputParameters:
- name: contractor_name
in: body
type: string
description: Full name of the contractor.
- name: company_name
in: body
type: string
description: Contractor's employer company.
- name: plant_code
in: body
type: string
description: 3M plant code for access.
- name: start_date
in: body
type: string
description: Contract start date.
- name: training_cert_id
in: body
type: string
description: Safety training certification ID.
steps:
- name: verify-training
type: call
call: servicenow.verify-training-cert
with:
cert_id: '{{training_cert_id}}'
contractor_name: '{{contractor_name}}'
- name: create-worker-record
type: call
call: workday.create-contingent-worker
with:
name: '{{contractor_name}}'
company: '{{company_name}}'
location: '{{plant_code}}'
start_date: '{{start_date}}'
- name: request-badge
type: call
call: power-automate.trigger-flow
with:
flow_id: $secrets.badge_request_flow_id
contractor_name: '{{contractor_name}}'
plant: '{{plant_code}}'
worker_id: '{{create-worker-record.worker_id}}'
training_status: '{{verify-training.status}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://3m.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: training-certs
path: /table/sn_ehs_training_cert
inputParameters:
- name: cert_id
in: query
- name: contractor_name
in: query
operations:
- name: verify-training-cert
method: GET
- type: http
namespace: workday
baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/3m
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: contingent-workers
path: /contingentWorkers
operations:
- name: create-contingent-worker
method: POST
- type: http
namespace: power-automate
baseUri: https://prod-00.westus.logic.azure.com/workflows
authentication:
type: bearer
token: $secrets.power_automate_token
resources:
- name: flows
path: /{{flow_id}}/triggers/manual/paths/invoke
inputParameters:
- name: flow_id
in: path
operations:
- name: trigger-flow
method: POST
When Palo Alto Networks fires a threat alert, correlates with Datadog network metrics, opens a ServiceNow security incident, and notifies the security operations center in Microsoft Teams.
naftiko: '0.5'
info:
label: Network Security Event Triage
description: When Palo Alto Networks fires a threat alert, correlates with Datadog network metrics, opens a ServiceNow security incident, and notifies the security operations center in Microsoft Teams.
tags:
- security
- network
- palo-alto-networks
- datadog
- servicenow
- microsoft-teams
- soc
capability:
exposes:
- type: mcp
namespace: network-security
port: 8080
tools:
- name: triage-network-threat
description: Given a Palo Alto threat alert ID and source IP, correlate with Datadog, open a ServiceNow security incident, and alert the SOC in Teams.
inputParameters:
- name: threat_id
in: body
type: string
description: The Palo Alto Networks threat alert ID.
- name: source_ip
in: body
type: string
description: Source IP address of the threat.
- name: threat_severity
in: body
type: string
description: Threat severity level (critical, high, medium, low).
- name: affected_host
in: body
type: string
description: Hostname or resource affected by the threat.
steps:
- name: log-datadog-event
type: call
call: datadog.create-event
with:
title: 'Network Threat: {{threat_id}} from {{source_ip}}'
text: 'Severity: {{threat_severity}} | Host: {{affected_host}}'
alert_type: error
tags: security:network,severity:{{threat_severity}}
- name: create-security-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Network Threat ({{threat_severity}}): {{threat_id}} — {{source_ip}}'
description: 'Palo Alto alert {{threat_id}} | Source: {{source_ip}} | Host: {{affected_host}} | Datadog: {{log-datadog-event.url}}'
category: security
urgency: '1'
impact: '1'
- name: alert-soc
type: call
call: msteams.send-message
with:
recipient_upn: soc-team@3m.com
text: 'Network Threat: {{threat_id}} | Severity: {{threat_severity}} | Source IP: {{source_ip}} | Host: {{affected_host}} | ServiceNow: {{create-security-incident.number}}'
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
operations:
- name: create-event
method: POST
- type: http
namespace: servicenow
baseUri: https://3m.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
Runs Terraform to provision AWS or Azure infrastructure, registers the new resources in Datadog for monitoring, and posts a provisioning summary to the DevOps Microsoft Teams channel.
naftiko: '0.5'
info:
label: Infrastructure Provisioning Pipeline
description: Runs Terraform to provision AWS or Azure infrastructure, registers the new resources in Datadog for monitoring, and posts a provisioning summary to the DevOps Microsoft Teams channel.
tags:
- devops
- infrastructure
- terraform
- aws
- azure
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: infra-provisioning
port: 8080
tools:
- name: provision-infrastructure
description: Trigger a Terraform infrastructure provisioning run for AWS or Azure, register resulting resources in Datadog, and notify the DevOps team in Teams.
inputParameters:
- name: workspace_name
in: body
type: string
description: The Terraform Cloud workspace name to trigger.
- name: cloud_provider
in: body
type: string
description: 'Target cloud provider: aws or azure.'
- name: environment
in: body
type: string
description: 'Target environment: dev, staging, or prod.'
steps:
- name: trigger-terraform
type: call
call: terraform.create-run
with:
workspace: '{{workspace_name}}'
message: Provisioning {{environment}} on {{cloud_provider}}
- name: register-monitor
type: call
call: datadog.create-monitor
with:
name: '{{workspace_name}} — {{environment}} health'
type: service check
message: Infrastructure {{workspace_name}} on {{cloud_provider}} in {{environment}} is unhealthy.
- name: notify-devops
type: call
call: msteams.send-message
with:
recipient_upn: devops-team@3m.com
text: 'Infrastructure Provisioned: {{workspace_name}} | Cloud: {{cloud_provider}} | Env: {{environment}} | Terraform Run: {{trigger-terraform.run_id}} | Datadog Monitor: {{register-monitor.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: 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
operations:
- name: create-monitor
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
Aggregates campaign performance data from Adobe Analytics and HubSpot, updates Salesforce campaign records with current metrics, and posts a digest to the marketing Microsoft Teams channel.
naftiko: '0.5'
info:
label: Marketing Campaign Performance Digest
description: Aggregates campaign performance data from Adobe Analytics and HubSpot, updates Salesforce campaign records with current metrics, and posts a digest to the marketing Microsoft Teams channel.
tags:
- marketing
- analytics
- adobe-analytics
- hubspot
- salesforce
- microsoft-teams
- campaign-management
capability:
exposes:
- type: mcp
namespace: marketing
port: 8080
tools:
- name: digest-campaign-performance
description: Given a campaign ID, fetch Adobe Analytics web metrics and HubSpot email metrics, update the Salesforce campaign record, and post a summary to Teams.
inputParameters:
- name: campaign_id
in: body
type: string
description: The campaign identifier (shared across Adobe Analytics, HubSpot, and Salesforce).
- name: date_range
in: body
type: string
description: Date range for the report in YYYY-MM-DD/YYYY-MM-DD format.
- name: salesforce_campaign_id
in: body
type: string
description: The Salesforce campaign record ID.
steps:
- name: get-web-metrics
type: call
call: adobe-analytics.get-campaign-metrics
with:
campaign_id: '{{campaign_id}}'
date_range: '{{date_range}}'
- name: get-email-metrics
type: call
call: hubspot.get-campaign-stats
with:
campaign_id: '{{campaign_id}}'
- name: update-salesforce-campaign
type: call
call: salesforce.update-campaign
with:
campaign_id: '{{salesforce_campaign_id}}'
impressions: '{{get-web-metrics.impressions}}'
clicks: '{{get-web-metrics.clicks}}'
email_opens: '{{get-email-metrics.opens}}'
email_clicks: '{{get-email-metrics.clicks}}'
- name: post-digest
type: call
call: msteams.send-message
with:
recipient_upn: marketing-team@3m.com
text: 'Campaign {{campaign_id}} digest ({{date_range}}): Impressions: {{get-web-metrics.impressions}} | Web Clicks: {{get-web-metrics.clicks}} | Email Opens: {{get-email-metrics.opens}} | Email Clicks: {{get-email-metrics.clicks}} | Salesforce updated.'
consumes:
- type: http
namespace: adobe-analytics
baseUri: https://analytics.adobe.io/api/{{company_id}}/reports
authentication:
type: bearer
token: $secrets.adobe_analytics_token
resources:
- name: campaign-reports
path: /campaigns/{{campaign_id}}
inputParameters:
- name: campaign_id
in: path
- name: date_range
in: query
operations:
- name: get-campaign-metrics
method: GET
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com/marketing/v3
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: campaigns
path: /campaigns/{{campaign_id}}/stats
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-campaign-stats
method: GET
- type: http
namespace: salesforce
baseUri: https://3m.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: campaigns
path: /sobjects/Campaign/{{campaign_id}}
inputParameters:
- name: campaign_id
in: path
operations:
- name: update-campaign
method: PATCH
- 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
Creates an inter-plant stock transfer in SAP, logs the shipment in Oracle TMS, and notifies the receiving plant warehouse team in Microsoft Teams.
naftiko: '0.5'
info:
label: Warehouse Transfer Order Creation
description: Creates an inter-plant stock transfer in SAP, logs the shipment in Oracle TMS, and notifies the receiving plant warehouse team in Microsoft Teams.
tags:
- supply-chain
- logistics
- sap
- oracle
- microsoft-teams
- warehouse
capability:
exposes:
- type: mcp
namespace: warehouse-ops
port: 8080
tools:
- name: create-transfer-order
description: Given source and destination plants, material, and quantity, create a SAP stock transfer, log the shipment, and notify receiving warehouse.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number to transfer.
- name: source_plant
in: body
type: string
description: The originating 3M plant code.
- name: destination_plant
in: body
type: string
description: The receiving 3M plant code.
- name: quantity
in: body
type: string
description: Quantity to transfer.
steps:
- name: create-sto
type: call
call: sap.create-stock-transfer
with:
material: '{{material_number}}'
supplying_plant: '{{source_plant}}'
receiving_plant: '{{destination_plant}}'
quantity: '{{quantity}}'
- name: log-shipment
type: call
call: oracle-tms.create-shipment
with:
origin: '{{source_plant}}'
destination: '{{destination_plant}}'
reference: '{{create-sto.transfer_order_number}}'
weight: '{{quantity}}'
- name: notify-receiving
type: call
call: msteams.post-channel-message
with:
team_id: $secrets.warehouse_team_id
channel_id: $secrets.warehouse_channel_id
text: 'Inbound Transfer: {{material_number}} x{{quantity}} from {{source_plant}} | SAP STO: {{create-sto.transfer_order_number}} | Shipment: {{log-shipment.shipment_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/MM_STOCK_TRANSFER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: stock-transfers
path: /StockTransferOrder
operations:
- name: create-stock-transfer
method: POST
- type: http
namespace: oracle-tms
baseUri: https://3m-ebs.oracle.com/fscmRestApi/resources/v1
authentication:
type: basic
username: $secrets.oracle_ebs_user
password: $secrets.oracle_ebs_password
resources:
- name: shipments
path: /shipments
operations:
- name: create-shipment
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
Deploys a trained ML model by registering it in Azure Machine Learning, creating a Jira deployment ticket, updating the model registry in Snowflake, and notifying the data science team in Teams.
naftiko: '0.5'
info:
label: Machine Learning Model Deployment
description: Deploys a trained ML model by registering it in Azure Machine Learning, creating a Jira deployment ticket, updating the model registry in Snowflake, and notifying the data science team in Teams.
tags:
- data-science
- machine-learning
- azure-machine-learning
- jira
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ml-ops
port: 8080
tools:
- name: deploy-model
description: Given a model name, version, and endpoint, register in Azure ML, create Jira ticket, update registry, and notify data science.
inputParameters:
- name: model_name
in: body
type: string
description: Name of the ML model.
- name: model_version
in: body
type: string
description: Model version to deploy.
- name: endpoint_name
in: body
type: string
description: Azure ML endpoint name.
- name: use_case
in: body
type: string
description: Business use case (e.g., demand_forecast, defect_detection, predictive_maintenance).
steps:
- name: register-model
type: call
call: azureml.register-model
with:
model_name: '{{model_name}}'
model_version: '{{model_version}}'
endpoint: '{{endpoint_name}}'
- name: create-deployment-ticket
type: call
call: jira.create-issue
with:
project_key: MLOPS
issuetype: Task
summary: 'Model Deployment: {{model_name}} v{{model_version}} to {{endpoint_name}}'
description: 'Use case: {{use_case}} | Azure ML endpoint: {{endpoint_name}} | Registration: {{register-model.model_id}}'
- name: update-registry
type: call
call: snowflake.run-query
with:
statement: INSERT INTO MLOPS.MODEL_REGISTRY VALUES ('{{model_name}}', '{{model_version}}', '{{endpoint_name}}', '{{use_case}}', CURRENT_TIMESTAMP())
warehouse: MLOPS_WH
- name: notify-data-science
type: call
call: msteams.post-channel-message
with:
team_id: $secrets.datascience_team_id
channel_id: $secrets.datascience_channel_id
text: 'Model Deployed: {{model_name}} v{{model_version}} to {{endpoint_name}} | Use case: {{use_case}} | Jira: {{create-deployment-ticket.key}}'
consumes:
- type: http
namespace: azureml
baseUri: https://3m-ml.api.azureml.ms
authentication:
type: bearer
token: $secrets.azureml_token
resources:
- name: models
path: /models/{{model_name}}/versions/{{model_version}}/deploy
inputParameters:
- name: model_name
in: path
- name: model_version
in: path
operations:
- name: register-model
method: POST
- type: http
namespace: jira
baseUri: https://3m.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: snowflake
baseUri: https://3m.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: 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
Pulls a supplier profile from SAP Ariba, enriches it with ZoomInfo firmographic data, scores risk, and creates a ServiceNow vendor risk review task for the procurement team.
naftiko: '0.5'
info:
label: Supplier Risk Assessment
description: Pulls a supplier profile from SAP Ariba, enriches it with ZoomInfo firmographic data, scores risk, and creates a ServiceNow vendor risk review task for the procurement team.
tags:
- procurement
- vendor-risk
- sap-ariba
- zoominfo
- servicenow
- supply-chain
capability:
exposes:
- type: mcp
namespace: vendor-risk
port: 8080
tools:
- name: assess-supplier-risk
description: Given an Ariba supplier ID and company name, enrich with ZoomInfo data, compute a risk tier, and open a ServiceNow vendor risk task.
inputParameters:
- name: ariba_supplier_id
in: body
type: string
description: The SAP Ariba supplier ID.
- name: company_name
in: body
type: string
description: Legal company name for ZoomInfo enrichment.
steps:
- name: get-supplier
type: call
call: ariba.get-supplier
with:
supplier_id: '{{ariba_supplier_id}}'
- name: enrich-firmographics
type: call
call: zoominfo.get-company
with:
company_name: '{{company_name}}'
- name: create-risk-task
type: call
call: servicenow.create-task
with:
short_description: 'Vendor risk review: {{company_name}}'
description: 'Supplier: {{ariba_supplier_id}} | Revenue: {{enrich-firmographics.revenue}} | Employees: {{enrich-firmographics.employee_count}} | Country: {{get-supplier.country}} | Status: {{get-supplier.qualification_status}}'
category: vendor_risk
assigned_group: Procurement_Risk
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: zoominfo
baseUri: https://api.zoominfo.com/search
authentication:
type: bearer
token: $secrets.zoominfo_token
resources:
- name: companies
path: /company
inputParameters:
- name: company_name
in: query
operations:
- name: get-company
method: GET
- type: http
namespace: servicenow
baseUri: https://3m.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
Collects energy consumption data from SAP Plant Maintenance, calculates KPIs in Snowflake, and publishes a summary report to a Power BI dataset and the sustainability Teams channel.
naftiko: '0.5'
info:
label: Plant Energy Consumption Report
description: Collects energy consumption data from SAP Plant Maintenance, calculates KPIs in Snowflake, and publishes a summary report to a Power BI dataset and the sustainability Teams channel.
tags:
- sustainability
- energy
- sap
- snowflake
- power-bi
- microsoft-teams
- manufacturing
capability:
exposes:
- type: mcp
namespace: sustainability
port: 8080
tools:
- name: generate-energy-report
description: Given a plant code and reporting period, collect energy data, compute KPIs, refresh Power BI, and notify sustainability team.
inputParameters:
- name: plant_code
in: body
type: string
description: The 3M plant code.
- name: period
in: body
type: string
description: Reporting period (e.g., 2026-Q1).
steps:
- name: get-energy-data
type: call
call: sap.get-energy-readings
with:
plant: '{{plant_code}}'
period: '{{period}}'
- name: compute-kpis
type: call
call: snowflake.run-query
with:
statement: CALL SUSTAINABILITY.COMPUTE_ENERGY_KPIS('{{plant_code}}', '{{period}}')
warehouse: SUSTAINABILITY_WH
- name: refresh-powerbi
type: call
call: powerbi.trigger-refresh
with:
group_id: $secrets.sustainability_pbi_group
dataset_id: $secrets.energy_dataset_id
- name: notify-sustainability
type: call
call: msteams.post-channel-message
with:
team_id: $secrets.sustainability_team_id
channel_id: $secrets.sustainability_channel_id
text: Energy report for {{plant_code}} ({{period}}) published. Power BI dashboard refreshed.
consumes:
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/PM_MEASUREMENT_DOC_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: energy-readings
path: /MeasurementDocument
inputParameters:
- name: plant
in: query
- name: period
in: query
operations:
- name: get-energy-readings
method: GET
- type: http
namespace: snowflake
baseUri: https://3m.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: dataset-refresh
path: /groups/{{group_id}}/datasets/{{dataset_id}}/refreshes
inputParameters:
- name: group_id
in: path
- name: dataset_id
in: path
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: 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
Updates controlled documents for ISO compliance by versioning in SharePoint, creating a Jira review task, and notifying the document control team in Microsoft Teams.
naftiko: '0.5'
info:
label: ISO Document Control Update
description: Updates controlled documents for ISO compliance by versioning in SharePoint, creating a Jira review task, and notifying the document control team in Microsoft Teams.
tags:
- compliance
- iso
- sharepoint
- jira
- microsoft-teams
- quality
- document-control
capability:
exposes:
- type: mcp
namespace: document-control
port: 8080
tools:
- name: update-controlled-document
description: Given a document ID, new version, and change summary, version in SharePoint, create review task, and notify.
inputParameters:
- name: document_id
in: body
type: string
description: SharePoint document ID.
- name: document_title
in: body
type: string
description: Title of the controlled document.
- name: new_version
in: body
type: string
description: New document version number.
- name: change_summary
in: body
type: string
description: Summary of changes in this version.
steps:
- name: upload-new-version
type: call
call: sharepoint.upload-file
with:
site_id: $secrets.qms_site_id
folder_path: /ControlledDocs
file_name: '{{document_id}}-v{{new_version}}.pdf'
content: '{{change_summary}}'
- name: create-review-task
type: call
call: jira.create-issue
with:
project_key: QMS
issuetype: Task
summary: 'Doc Review: {{document_title}} v{{new_version}}'
description: 'Document: {{document_id}} | Version: {{new_version}} | Changes: {{change_summary}}'
- name: notify-doc-control
type: call
call: msteams.post-channel-message
with:
team_id: $secrets.quality_team_id
channel_id: $secrets.doc_control_channel_id
text: 'Document Updated: {{document_title}} v{{new_version}} | Changes: {{change_summary}} | Review: {{create-review-task.key}}'
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:{{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
- type: http
namespace: jira
baseUri: https://3m.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
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 shipping labels by retrieving order details from SAP, creating a shipment in Oracle TMS, and posting the tracking information to the Salesforce opportunity record.
naftiko: '0.5'
info:
label: Shipping Label Generation
description: Generates shipping labels by retrieving order details from SAP, creating a shipment in Oracle TMS, and posting the tracking information to the Salesforce opportunity record.
tags:
- logistics
- shipping
- sap
- oracle
- salesforce
- supply-chain
capability:
exposes:
- type: mcp
namespace: shipping
port: 8080
tools:
- name: generate-shipping-label
description: Given an order number, create shipment, generate label, and update Salesforce with tracking.
inputParameters:
- name: order_number
in: body
type: string
description: The SAP sales order number.
- name: salesforce_opportunity_id
in: body
type: string
description: Linked Salesforce opportunity ID.
steps:
- name: get-order-details
type: call
call: sap.get-delivery
with:
order_number: '{{order_number}}'
- name: create-shipment
type: call
call: oracle-tms.create-shipment
with:
origin: '{{get-order-details.shipping_plant}}'
destination: '{{get-order-details.ship_to_address}}'
weight: '{{get-order-details.total_weight}}'
reference: '{{order_number}}'
- name: update-salesforce
type: call
call: salesforce.update-opportunity
with:
opportunity_id: '{{salesforce_opportunity_id}}'
tracking_number: '{{create-shipment.tracking_number}}'
ship_date: '{{create-shipment.ship_date}}'
consumes:
- type: http
namespace: sap
baseUri: https://3m-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('{{order_number}}')
inputParameters:
- name: order_number
in: path
operations:
- name: get-delivery
method: GET
- type: http
namespace: oracle-tms
baseUri: https://3m-ebs.oracle.com/fscmRestApi/resources/v1
authentication:
type: basic
username: $secrets.oracle_ebs_user
password: $secrets.oracle_ebs_password
resources:
- name: shipments
path: /shipments
operations:
- name: create-shipment
method: POST
- type: http
namespace: salesforce
baseUri: https://3m.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: update-opportunity
method: PATCH
When Workday creates a new job requisition, schedules interviews via Microsoft Teams, creates a shared Confluence evaluation page, and notifies the hiring panel.
naftiko: '0.5'
info:
label: Candidate Interview Pipeline
description: When Workday creates a new job requisition, schedules interviews via Microsoft Teams, creates a shared Confluence evaluation page, and notifies the hiring panel.
tags:
- hr
- recruiting
- workday
- microsoft-teams
- confluence
- hiring
capability:
exposes:
- type: mcp
namespace: talent-acquisition
port: 8080
tools:
- name: schedule-interview-panel
description: Given a Workday requisition ID and candidate name, create Teams meeting invites for the panel and a Confluence evaluation scorecard page.
inputParameters:
- name: requisition_id
in: body
type: string
description: The Workday job requisition ID.
- name: candidate_name
in: body
type: string
description: Full name of the candidate.
- name: interview_date
in: body
type: string
description: Interview date in YYYY-MM-DD format.
- name: panel_upns
in: body
type: string
description: Comma-separated list of interviewer Microsoft UPNs.
steps:
- name: get-requisition
type: call
call: workday.get-job-requisition
with:
requisition_id: '{{requisition_id}}'
- name: create-teams-meeting
type: call
call: msteams.create-meeting
with:
subject: 'Interview: {{candidate_name}} — {{get-requisition.job_title}}'
start_datetime: '{{interview_date}}T09:00:00'
attendees: '{{panel_upns}}'
- name: create-scorecard
type: call
call: confluence.create-page
with:
space_key: HR
title: 'Interview Scorecard: {{candidate_name}} — {{get-requisition.job_title}}'
body: 'Requisition: {{requisition_id}} | Role: {{get-requisition.job_title}} | Date: {{interview_date}} | Meeting: {{create-teams-meeting.join_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: job-requisitions
path: /jobRequisitions/{{requisition_id}}
inputParameters:
- name: requisition_id
in: path
operations:
- name: get-job-requisition
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: meetings
path: /me/onlineMeetings
operations:
- name: create-meeting
method: POST
- type: http
namespace: confluence
baseUri: https://3m.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_token
resources:
- name: pages
path: /content
operations:
- name: create-page
method: POST
On a protected-branch GitHub Actions pipeline failure, creates a New Relic deployment marker, opens a Jira bug, and alerts the engineering team in Microsoft Teams with full log context.
naftiko: '0.5'
info:
label: CI/CD Pipeline Failure Triage
description: On a protected-branch GitHub Actions pipeline failure, creates a New Relic deployment marker, opens a Jira bug, and alerts the engineering team in Microsoft Teams with full log context.
tags:
- devops
- ci-cd
- github
- github-actions
- jira
- new-relic
- microsoft-teams
- engineering
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: handle-pipeline-failure
description: Given a GitHub Actions pipeline failure event, create a New Relic deployment marker, open a Jira bug, and alert the engineering channel in Microsoft Teams.
inputParameters:
- name: pipeline_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 where the pipeline failed.
- name: failed_job_name
in: body
type: string
description: Name of the failing job in the pipeline.
- name: commit_sha
in: body
type: string
description: The commit SHA that triggered the pipeline.
- name: log_url
in: body
type: string
description: URL to the failed pipeline run logs.
steps:
- name: create-marker
type: call
call: newrelic.create-deployment-marker
with:
entity_name: '{{repository}}'
version: '{{commit_sha}}'
description: 'Pipeline failure on {{branch}} — job: {{failed_job_name}}'
- name: create-bug
type: call
call: jira.create-issue
with:
project_key: ENG
issuetype: Bug
summary: '[CI Failure] {{repository}} / {{branch}} — {{failed_job_name}}'
description: 'Pipeline: {{pipeline_id}}
Repo: {{repository}}
Branch: {{branch}}
Commit: {{commit_sha}}
Log: {{log_url}}
New Relic marker: {{create-marker.id}}'
- name: alert-engineering
type: call
call: msteams.send-message
with:
recipient_upn: engineering-alerts@3m.com
text: 'Pipeline Failure: {{repository}} | Branch: {{branch}} | Job: {{failed_job_name}} | Jira: {{create-bug.key}} | Log: {{log_url}}'
consumes:
- type: http
namespace: newrelic
baseUri: https://api.newrelic.com/v2
authentication:
type: apikey
key: X-Api-Key
value: $secrets.newrelic_api_key
placement: header
resources:
- name: deployments
path: /applications/{{entity_name}}/deployments.json
inputParameters:
- name: entity_name
in: path
operations:
- name: create-deployment-marker
method: POST
- type: http
namespace: jira
baseUri: https://3m.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
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
Initiates a product specification change by creating a SAP engineering change order, opening a Jira review task, and notifying the product engineering team in Microsoft Teams.
naftiko: '0.5'
info:
label: Product Specification Change Request
description: Initiates a product specification change by creating a SAP engineering change order, opening a Jira review task, and notifying the product engineering team in Microsoft Teams.
tags:
- engineering
- product-development
- sap
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: product-engineering
port: 8080
tools:
- name: request-spec-change
description: Given a material, change description, and justification, create SAP ECO, Jira task, and notify engineering.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number being changed.
- name: change_description
in: body
type: string
description: Description of the specification change.
- name: justification
in: body
type: string
description: Business justification for the change.
- name: priority
in: body
type: string
description: 'Change priority: low, medium, high, critical.'
steps:
- name: create-eco
type: call
call: sap.create-change-order
with:
material: '{{material_number}}'
description: '{{change_description}}'
reason: '{{justification}}'
priority: '{{priority}}'
- name: create-review-task
type: call
call: jira.create-issue
with:
project_key: ENG
issuetype: Task
summary: 'Spec Change Review: {{material_number}} — {{change_description}}'
description: 'SAP ECO: {{create-eco.change_number}} | Justification: {{justification}} | Priority: {{priority}}'
priority: '{{priority}}'
- name: notify-engineering
type: call
call: msteams.post-channel-message
with:
team_id: $secrets.engineering_team_id
channel_id: $secrets.engineering_channel_id
text: 'Spec Change Request: {{material_number}} | {{change_description}} | Priority: {{priority}} | SAP ECO: {{create-eco.change_number}} | Jira: {{create-review-task.key}}'
consumes:
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/PLM_CHANGE_ORDER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: change-orders
path: /EngineeringChangeOrder
operations:
- name: create-change-order
method: POST
- type: http
namespace: jira
baseUri: https://3m.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
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
Looks up a supply chain order across SAP S/4HANA and Oracle E-Business Suite, reconciles inventory and delivery status, and surfaces consolidated status to Salesforce customer-facing records.
naftiko: '0.5'
info:
label: Supply Chain Order Status
description: Looks up a supply chain order across SAP S/4HANA and Oracle E-Business Suite, reconciles inventory and delivery status, and surfaces consolidated status to Salesforce customer-facing records.
tags:
- supply-chain
- erp
- sap
- oracle
- salesforce
- order-management
- logistics
capability:
exposes:
- type: mcp
namespace: supply-chain
port: 8080
tools:
- name: get-order-status
description: Look up a customer order across SAP and Oracle EBS, return consolidated fulfillment status, inventory availability, and estimated delivery date.
inputParameters:
- name: order_number
in: body
type: string
description: The customer order number, present in both SAP and Oracle EBS.
- name: salesforce_opportunity_id
in: body
type: string
description: The Salesforce opportunity ID linked to this order.
steps:
- name: get-sap-order
type: call
call: sap.get-sales-order
with:
order_number: '{{order_number}}'
- name: get-oracle-inventory
type: call
call: oracle-ebs.get-inventory-status
with:
item_number: '{{get-sap-order.material_number}}'
warehouse: '{{get-sap-order.shipping_plant}}'
- name: update-salesforce-opportunity
type: call
call: salesforce.update-opportunity
with:
opportunity_id: '{{salesforce_opportunity_id}}'
delivery_date: '{{get-sap-order.requested_delivery_date}}'
fulfillment_status: '{{get-sap-order.overall_status}}'
available_stock: '{{get-oracle-inventory.available_qty}}'
consumes:
- type: http
namespace: sap
baseUri: https://3m-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('{{order_number}}')
inputParameters:
- name: order_number
in: path
operations:
- name: get-sales-order
method: GET
outputRawFormat: json
- type: http
namespace: oracle-ebs
baseUri: https://3m-ebs.oracle.com/fscmRestApi/resources/v1
authentication:
type: basic
username: $secrets.oracle_ebs_user
password: $secrets.oracle_ebs_password
resources:
- name: inventory
path: /inventoryOnhandQuantities
inputParameters:
- name: item_number
in: query
- name: warehouse
in: query
operations:
- name: get-inventory-status
method: GET
- type: http
namespace: salesforce
baseUri: https://3m.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: update-opportunity
method: PATCH
When an Azure DevOps release pipeline reaches a manual gate, queries Datadog SLO status, checks ServiceNow for open P1 incidents, and posts a go/no-go recommendation to the release management Teams channel.
naftiko: '0.5'
info:
label: Azure DevOps Release Gate
description: When an Azure DevOps release pipeline reaches a manual gate, queries Datadog SLO status, checks ServiceNow for open P1 incidents, and posts a go/no-go recommendation to the release management Teams channel.
tags:
- devops
- azure-devops
- datadog
- servicenow
- release-management
- ci-cd
capability:
exposes:
- type: mcp
namespace: release-gate
port: 8080
tools:
- name: evaluate-release-gate
description: Given a release ID and target environment, check Datadog SLO health and open P1 ServiceNow incidents to produce a go/no-go recommendation.
inputParameters:
- name: release_id
in: body
type: string
description: The Azure DevOps release ID.
- name: target_environment
in: body
type: string
description: Target deployment environment (staging, prod).
- name: service_name
in: body
type: string
description: Datadog service name to check SLO for.
steps:
- name: check-slo
type: call
call: datadog.get-slo-status
with:
service: '{{service_name}}'
- name: check-open-incidents
type: call
call: servicenow.get-incidents
with:
urgency: '1'
state: '1'
- name: notify-release-team
type: call
call: msteams-release.send-message
with:
recipient_upn: release-mgmt@3m.com
text: 'Release Gate: {{release_id}} → {{target_environment}} | SLO: {{check-slo.status}} | Open P1s: {{check-open-incidents.count}} | Recommendation: review before proceeding.'
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-status
path: /slo
inputParameters:
- name: service
in: query
operations:
- name: get-slo-status
method: GET
- type: http
namespace: servicenow
baseUri: https://3m.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
inputParameters:
- name: urgency
in: query
- name: state
in: query
operations:
- name: get-incidents
method: GET
- type: http
namespace: msteams-release
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Processes intercompany invoices by matching SAP FI documents between company codes, logging discrepancies in Jira, and notifying the shared services team in Teams.
naftiko: '0.5'
info:
label: Intercompany Invoice Processing
description: Processes intercompany invoices by matching SAP FI documents between company codes, logging discrepancies in Jira, and notifying the shared services team in Teams.
tags:
- finance
- intercompany
- sap
- sap-s4hana
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: intercompany-finance
port: 8080
tools:
- name: process-intercompany-invoice
description: Given sending and receiving company codes and invoice number, match documents, log issues, and notify shared services.
inputParameters:
- name: sending_company
in: body
type: string
description: SAP company code of the sending entity.
- name: receiving_company
in: body
type: string
description: SAP company code of the receiving entity.
- name: invoice_number
in: body
type: string
description: The intercompany invoice number.
steps:
- name: get-sending-doc
type: call
call: sap.get-fi-document
with:
company_code: '{{sending_company}}'
invoice: '{{invoice_number}}'
- name: get-receiving-doc
type: call
call: sap.get-fi-document
with:
company_code: '{{receiving_company}}'
invoice: '{{invoice_number}}'
- name: log-discrepancy
type: call
call: jira.create-issue
with:
project_key: FIN
issuetype: Task
summary: 'IC Match: Invoice {{invoice_number}} ({{sending_company}} → {{receiving_company}})'
description: 'Sending amount: {{get-sending-doc.amount}} | Receiving amount: {{get-receiving-doc.amount}} | Currency: {{get-sending-doc.currency}}'
- name: notify-shared-services
type: call
call: msteams.post-channel-message
with:
team_id: $secrets.shared_services_team_id
channel_id: $secrets.ic_channel_id
text: 'IC Invoice {{invoice_number}}: {{sending_company}} → {{receiving_company}} | Sending: {{get-sending-doc.amount}} | Receiving: {{get-receiving-doc.amount}} | Jira: {{log-discrepancy.key}}'
consumes:
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/FI_DOCUMENT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: fi-documents
path: /FIDocument(CompanyCode='{{company_code}}',Invoice='{{invoice}}')
inputParameters:
- name: company_code
in: path
- name: invoice
in: path
operations:
- name: get-fi-document
method: GET
- type: http
namespace: jira
baseUri: https://3m.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
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 incoming NPS survey responses from Salesforce, segments detractors for immediate follow-up via HubSpot, and updates the Power BI customer satisfaction dashboard.
naftiko: '0.5'
info:
label: Customer NPS Survey Processing
description: Processes incoming NPS survey responses from Salesforce, segments detractors for immediate follow-up via HubSpot, and updates the Power BI customer satisfaction dashboard.
tags:
- customer-experience
- nps
- salesforce
- hubspot
- power-bi
- customer-success
capability:
exposes:
- type: mcp
namespace: customer-experience
port: 8080
tools:
- name: process-nps-response
description: Given an NPS survey response and Salesforce contact ID, route detractors for follow-up in HubSpot and refresh the Power BI CX dashboard.
inputParameters:
- name: salesforce_contact_id
in: body
type: string
description: The Salesforce contact ID of the survey respondent.
- name: nps_score
in: body
type: integer
description: NPS score 0–10.
- name: survey_comment
in: body
type: string
description: Optional open-text comment from the respondent.
steps:
- name: get-contact
type: call
call: salesforce.get-contact
with:
contact_id: '{{salesforce_contact_id}}'
- name: update-salesforce-nps
type: call
call: salesforce.update-contact
with:
contact_id: '{{salesforce_contact_id}}'
nps_score: '{{nps_score}}'
nps_comment: '{{survey_comment}}'
- name: create-hubspot-task
type: call
call: hubspot.create-task
with:
contact_email: '{{get-contact.email}}'
subject: 'NPS Detractor Follow-up: {{get-contact.name}} (score {{nps_score}})'
body: 'Comment: {{survey_comment}}'
due_date_days: '2'
consumes:
- type: http
namespace: salesforce
baseUri: https://3m.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: contacts
path: /sobjects/Contact/{{contact_id}}
inputParameters:
- name: contact_id
in: path
operations:
- name: get-contact
method: GET
- name: update-contact
method: PATCH
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com/crm/v3
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: tasks
path: /objects/tasks
operations:
- name: create-task
method: POST
When Workday records a termination, disables the Microsoft 365 account, raises a ServiceNow access revocation task, and notifies HR and IT in Microsoft Teams.
naftiko: '0.5'
info:
label: Employee Offboarding
description: When Workday records a termination, disables the Microsoft 365 account, raises a ServiceNow access revocation task, and notifies HR and IT in Microsoft Teams.
tags:
- hr
- offboarding
- workday
- microsoft-365
- servicenow
- microsoft-teams
- iam
capability:
exposes:
- type: mcp
namespace: hr-offboarding
port: 8080
tools:
- name: offboard-employee
description: Given a Workday employee ID and termination date, disable their Microsoft 365 account, open a ServiceNow revocation task, and notify HR and IT in Teams.
inputParameters:
- name: employee_id
in: body
type: string
description: The Workday employee ID.
- name: termination_date
in: body
type: string
description: Effective termination date in YYYY-MM-DD format.
- name: termination_type
in: body
type: string
description: Type of termination (voluntary, involuntary, retirement).
steps:
- name: get-employee
type: call
call: workday-offboard.get-worker
with:
worker_id: '{{employee_id}}'
- name: disable-m365
type: call
call: msgraph-offboard.disable-user
with:
upn: '{{get-employee.work_email}}'
- name: create-revocation-task
type: call
call: servicenow-offboard.create-task
with:
short_description: 'Offboarding access revocation: {{get-employee.full_name}}'
description: Employee {{employee_id}} terminated {{termination_date}} ({{termination_type}}). Revoke all system access.
category: offboarding
assigned_group: IT_Security
- name: notify-hr-it
type: call
call: msteams-offboard.send-message
with:
recipient_upn: hr-it-ops@3m.com
text: 'Offboarding: {{get-employee.full_name}} | Date: {{termination_date}} | Type: {{termination_type}} | M365 disabled | Task: {{create-revocation-task.number}}'
consumes:
- type: http
namespace: workday-offboard
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-offboard
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: users
path: /users/{{upn}}
inputParameters:
- name: upn
in: path
operations:
- name: disable-user
method: PATCH
- type: http
namespace: servicenow-offboard
baseUri: https://3m.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-offboard
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 is delayed, updates the SAP purchase order schedule, creates a ServiceNow case for procurement follow-up, and notifies the category manager in Teams.
naftiko: '0.5'
info:
label: Supplier Delivery Delay Escalation
description: When a supplier delivery is delayed, updates the SAP purchase order schedule, creates a ServiceNow case for procurement follow-up, and notifies the category manager in Teams.
tags:
- supply-chain
- procurement
- sap
- servicenow
- microsoft-teams
- vendor-management
capability:
exposes:
- type: mcp
namespace: supply-chain-escalation
port: 8080
tools:
- name: escalate-delivery-delay
description: Given a PO number, new estimated delivery date, and delay reason, update SAP schedule, create a ServiceNow case, and notify the category manager.
inputParameters:
- name: po_number
in: body
type: string
description: The SAP purchase order number.
- name: new_delivery_date
in: body
type: string
description: The revised estimated delivery date.
- name: delay_reason
in: body
type: string
description: Reason provided by the supplier for the delay.
- name: category_manager_upn
in: body
type: string
description: Microsoft UPN of the procurement category manager.
steps:
- name: update-po-schedule
type: call
call: sap.update-po-delivery
with:
po_number: '{{po_number}}'
delivery_date: '{{new_delivery_date}}'
note: 'Supplier delay: {{delay_reason}}'
- name: create-procurement-case
type: call
call: servicenow.create-case
with:
short_description: 'Supplier Delivery Delay: PO {{po_number}}'
description: 'PO {{po_number}} delayed to {{new_delivery_date}}. Reason: {{delay_reason}}'
category: procurement
priority: '2'
- name: notify-category-manager
type: call
call: msteams.send-chat
with:
recipient_upn: '{{category_manager_upn}}'
text: 'Supplier Delay on PO {{po_number}} | New ETA: {{new_delivery_date}} | Reason: {{delay_reason}} | ServiceNow: {{create-procurement-case.number}}'
consumes:
- type: http
namespace: sap
baseUri: https://3m-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: update-po-delivery
method: PATCH
- type: http
namespace: servicenow
baseUri: https://3m.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: chats
path: /users/{{recipient_upn}}/chats
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-chat
method: POST
Routes a capital expenditure request through SAP for financial posting, creates a Jira approval workflow, and notifies the plant controller and finance VP in Teams.
naftiko: '0.5'
info:
label: Capital Expenditure Approval
description: Routes a capital expenditure request through SAP for financial posting, creates a Jira approval workflow, and notifies the plant controller and finance VP in Teams.
tags:
- finance
- capital-expenditure
- sap
- jira
- microsoft-teams
- approval
capability:
exposes:
- type: mcp
namespace: capex
port: 8080
tools:
- name: submit-capex-request
description: Given a project description, amount, cost center, and approver, create SAP investment order, Jira approval, and notify finance.
inputParameters:
- name: project_description
in: body
type: string
description: Description of the capital project.
- name: amount
in: body
type: string
description: Requested capital amount in USD.
- name: cost_center
in: body
type: string
description: SAP cost center for the expenditure.
- name: approver_upn
in: body
type: string
description: UPN of the finance approver.
steps:
- name: create-investment-order
type: call
call: sap.create-investment-order
with:
description: '{{project_description}}'
planned_amount: '{{amount}}'
cost_center: '{{cost_center}}'
order_type: I001
- name: create-approval-ticket
type: call
call: jira.create-issue
with:
project_key: CAPEX
issuetype: Task
summary: 'CapEx Approval: {{project_description}} (${{amount}})'
description: 'Cost Center: {{cost_center}} | SAP Order: {{create-investment-order.order_number}} | Amount: ${{amount}}'
- name: notify-approver
type: call
call: msteams.send-chat
with:
recipient_upn: '{{approver_upn}}'
text: 'CapEx request pending your approval: {{project_description}} | ${{amount}} | SAP: {{create-investment-order.order_number}} | Jira: {{create-approval-ticket.key}}'
consumes:
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/IM_INVESTMENT_ORDER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: investment-orders
path: /InvestmentOrder
operations:
- name: create-investment-order
method: POST
- type: http
namespace: jira
baseUri: https://3m.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
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: chats
path: /users/{{recipient_upn}}/chats
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-chat
method: POST
Queries Workday to retrieve employee profile details including department, manager, location, and job title for HR and people operations.
naftiko: '0.5'
info:
label: Workday Employee Lookup
description: Queries Workday to retrieve employee profile details including department, manager, location, and job title for HR and people operations.
tags:
- hr
- workday
- employee
- people-operations
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: get-employee-profile
description: Look up a Workday employee by employee ID. Returns name, department, manager, job title, and work location.
inputParameters:
- name: employee_id
in: body
type: string
description: The Workday employee ID.
call: workday.get-worker
with:
employee_id: '{{employee_id}}'
outputParameters:
- name: full_name
type: string
mapping: $.Worker.Name
- name: department
type: string
mapping: $.Worker.Organization
- name: manager
type: string
mapping: $.Worker.Manager.Name
- name: job_title
type: string
mapping: $.Worker.JobTitle
- name: location
type: string
mapping: $.Worker.Location
consumes:
- type: http
namespace: workday
baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/3m
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
Retrieves a Safety Data Sheet from SAP EHS, uploads it to SharePoint, and distributes a notification to affected plant safety coordinators via Microsoft Teams.
naftiko: '0.5'
info:
label: SDS Document Distribution
description: Retrieves a Safety Data Sheet from SAP EHS, uploads it to SharePoint, and distributes a notification to affected plant safety coordinators via Microsoft Teams.
tags:
- safety
- ehs
- sap
- sharepoint
- microsoft-teams
- compliance
capability:
exposes:
- type: mcp
namespace: ehs-documents
port: 8080
tools:
- name: distribute-sds
description: Given a material number, retrieve the SDS from SAP, upload to SharePoint, and notify plant safety coordinators.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number.
- name: revision_reason
in: body
type: string
description: Reason for the SDS revision.
steps:
- name: get-sds
type: call
call: sap.get-sds-document
with:
material: '{{material_number}}'
- name: upload-to-sharepoint
type: call
call: sharepoint.upload-file
with:
site_id: $secrets.ehs_site_id
folder_path: /SDS/{{material_number}}
file_name: SDS-{{material_number}}-latest.pdf
content: '{{get-sds.document_content}}'
- name: notify-safety-coordinators
type: call
call: msteams.post-channel-message
with:
team_id: $secrets.safety_team_id
channel_id: $secrets.safety_sds_channel_id
text: 'Updated SDS for {{material_number}} now available on SharePoint. Reason: {{revision_reason}}'
consumes:
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/EHS_SDS_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: sds-documents
path: /SafetyDataSheet(Material='{{material}}')
inputParameters:
- name: material
in: path
operations:
- name: get-sds-document
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}}/{{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
- 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
Performs competitive pricing analysis by pulling 3M product prices from SAP, querying market intelligence from Snowflake, and publishing insights to the Salesforce opportunity and marketing Teams channel.
naftiko: '0.5'
info:
label: Competitive Pricing Analysis
description: Performs competitive pricing analysis by pulling 3M product prices from SAP, querying market intelligence from Snowflake, and publishing insights to the Salesforce opportunity and marketing Teams channel.
tags:
- sales
- pricing
- sap
- snowflake
- salesforce
- microsoft-teams
- market-intelligence
capability:
exposes:
- type: mcp
namespace: competitive-analysis
port: 8080
tools:
- name: analyze-competitive-pricing
description: Given a product line and competitor, pull 3M prices, market data, and publish analysis.
inputParameters:
- name: product_line
in: body
type: string
description: 3M product line identifier.
- name: competitor_name
in: body
type: string
description: Competitor name for comparison.
- name: salesforce_opportunity_id
in: body
type: string
description: Salesforce opportunity to attach analysis.
steps:
- name: get-3m-pricing
type: call
call: sap.get-product-pricing
with:
product_line: '{{product_line}}'
- name: get-market-intel
type: call
call: snowflake.run-query
with:
statement: SELECT * FROM MARKET_INTEL.COMPETITOR_PRICING WHERE competitor = '{{competitor_name}}' AND product_line = '{{product_line}}'
warehouse: ANALYTICS_WH
- name: update-opportunity
type: call
call: salesforce.add-note
with:
opportunity_id: '{{salesforce_opportunity_id}}'
title: 'Competitive Pricing: {{product_line}} vs {{competitor_name}}'
body: '3M avg price: {{get-3m-pricing.avg_price}} | Competitor avg: {{get-market-intel.competitor_avg_price}} | Delta: {{get-market-intel.price_delta_pct}}%'
- name: notify-marketing
type: call
call: msteams.post-channel-message
with:
team_id: $secrets.marketing_team_id
channel_id: $secrets.pricing_channel_id
text: 'Pricing Analysis: {{product_line}} vs {{competitor_name}} | 3M: {{get-3m-pricing.avg_price}} | Competitor: {{get-market-intel.competitor_avg_price}} | Opp: {{salesforce_opportunity_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/SD_PRICING_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: product-pricing
path: /ProductLinePricing(ProductLine='{{product_line}}')
inputParameters:
- name: product_line
in: path
operations:
- name: get-product-pricing
method: GET
- type: http
namespace: snowflake
baseUri: https://3m.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: salesforce
baseUri: https://3m.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: notes
path: /sobjects/ContentNote
inputParameters:
- name: opportunity_id
in: query
operations:
- name: add-note
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
Pulls the current Salesforce sales forecast by region, writes the data into SAP Business Warehouse for planning, and refreshes the Power BI sales leadership dashboard.
naftiko: '0.5'
info:
label: Sales Forecast Sync
description: Pulls the current Salesforce sales forecast by region, writes the data into SAP Business Warehouse for planning, and refreshes the Power BI sales leadership dashboard.
tags:
- sales
- forecasting
- salesforce
- sap
- sap-bw
- power-bi
- reporting
capability:
exposes:
- type: mcp
namespace: sales-planning
port: 8080
tools:
- name: sync-sales-forecast
description: Pull Salesforce opportunity forecast for a region and period, load into SAP BW, and refresh the Power BI sales dashboard.
inputParameters:
- name: region
in: body
type: string
description: Sales region (e.g., APAC, EMEA, Americas).
- name: forecast_period
in: body
type: string
description: Forecast period in YYYY-MM format.
steps:
- name: get-forecast
type: call
call: salesforce.get-forecast
with:
region: '{{region}}'
period: '{{forecast_period}}'
- name: load-bw
type: call
call: sap-bw.load-forecast-data
with:
region: '{{region}}'
period: '{{forecast_period}}'
amount: '{{get-forecast.forecast_amount}}'
currency: '{{get-forecast.currency}}'
- name: refresh-dashboard
type: call
call: powerbi.refresh-dataset
with:
dataset_name: sales-forecast-{{region}}-{{forecast_period}}
consumes:
- type: http
namespace: salesforce
baseUri: https://3m.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: forecasts
path: /query
inputParameters:
- name: region
in: query
- name: period
in: query
operations:
- name: get-forecast
method: GET
- type: http
namespace: sap-bw
baseUri: https://3m-bw.sap.com/sap/opu/odata/sap/ZBWFORECAST_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: forecast-data
path: /ForecastSet
operations:
- name: load-forecast-data
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_name}}/refreshes
inputParameters:
- name: dataset_name
in: path
operations:
- name: refresh-dataset
method: POST
Initiates a product batch recall by flagging the batch in SAP QM, creating a Jira tracking epic, notifying regulatory affairs via email, and posting to the quality leadership Teams channel.
naftiko: '0.5'
info:
label: Batch Recall Initiation
description: Initiates a product batch recall by flagging the batch in SAP QM, creating a Jira tracking epic, notifying regulatory affairs via email, and posting to the quality leadership Teams channel.
tags:
- quality
- recall
- sap
- jira
- microsoft-teams
- regulatory
- manufacturing
capability:
exposes:
- type: mcp
namespace: quality-recall
port: 8080
tools:
- name: initiate-batch-recall
description: Given a material number, batch number, and recall reason, flag the batch in SAP, create a Jira epic, notify regulatory, and alert quality leadership.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number of the recalled product.
- name: batch_number
in: body
type: string
description: The production batch number to recall.
- name: recall_reason
in: body
type: string
description: Reason for the product recall.
- name: recall_class
in: body
type: string
description: 'FDA recall classification: class_i, class_ii, or class_iii.'
steps:
- name: create-quality-notification
type: call
call: sap.create-qn
with:
material: '{{material_number}}'
batch: '{{batch_number}}'
notification_type: Q2
short_text: 'RECALL: {{material_number}} Batch {{batch_number}}'
long_text: '{{recall_reason}} | Classification: {{recall_class}}'
- name: create-recall-epic
type: call
call: jira.create-issue
with:
project_key: RECALL
issuetype: Epic
summary: 'Recall: {{material_number}} Batch {{batch_number}} ({{recall_class}})'
description: '{{recall_reason}} | SAP QN: {{create-quality-notification.notification_id}}'
- name: notify-regulatory
type: call
call: msgraph.send-mail
with:
to: $secrets.regulatory_affairs_dl
subject: 'URGENT: Batch Recall Initiated — {{material_number}} / {{batch_number}}'
body: 'A {{recall_class}} recall has been initiated for material {{material_number}}, batch {{batch_number}}. Reason: {{recall_reason}}. SAP QN: {{create-quality-notification.notification_id}}. Jira: {{create-recall-epic.key}}'
- name: alert-quality-leadership
type: call
call: msteams.post-channel-message
with:
team_id: $secrets.quality_team_id
channel_id: $secrets.quality_alerts_channel_id
text: 'RECALL INITIATED: {{material_number}} Batch {{batch_number}} | Class: {{recall_class}} | Reason: {{recall_reason}} | SAP QN: {{create-quality-notification.notification_id}} | Jira: {{create-recall-epic.key}}'
consumes:
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/QM_NOTIFICATION_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: quality-notifications
path: /QualityNotification
operations:
- name: create-qn
method: POST
- type: http
namespace: jira
baseUri: https://3m.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: msgraph
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: mail
path: /users/$secrets.service_account_upn/sendMail
operations:
- name: send-mail
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
Monitors Apache Airflow DAG run status, logs failures to Datadog, updates the Snowflake data pipeline audit table, and opens a Jira incident when a critical DAG fails.
naftiko: '0.5'
info:
label: Data Pipeline Monitoring
description: Monitors Apache Airflow DAG run status, logs failures to Datadog, updates the Snowflake data pipeline audit table, and opens a Jira incident when a critical DAG fails.
tags:
- data-engineering
- apache-airflow
- datadog
- snowflake
- jira
- observability
capability:
exposes:
- type: mcp
namespace: data-ops
port: 8080
tools:
- name: handle-dag-failure
description: Given a failed Airflow DAG run ID, log the failure to Datadog, write an audit record to Snowflake, and open a Jira incident for the data engineering team.
inputParameters:
- name: dag_id
in: body
type: string
description: The Airflow DAG identifier.
- name: run_id
in: body
type: string
description: The Airflow DAG run ID.
- name: failure_reason
in: body
type: string
description: Error message or reason for failure.
- name: data_domain
in: body
type: string
description: Business data domain (e.g., finance, supply_chain, hr).
steps:
- name: log-to-datadog
type: call
call: datadog.create-event
with:
title: 'Airflow DAG Failed: {{dag_id}}'
text: 'Run {{run_id}} failed. Reason: {{failure_reason}}'
alert_type: error
tags: dag:{{dag_id}},domain:{{data_domain}}
- name: open-jira-incident
type: call
call: jira.create-issue
with:
project_key: DATA
issuetype: Incident
summary: 'DAG Failure: {{dag_id}} — {{run_id}}'
description: 'DAG {{dag_id}} run {{run_id}} failed.
Domain: {{data_domain}}
Reason: {{failure_reason}}
Datadog: {{log-to-datadog.url}}'
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
operations:
- name: create-event
method: POST
- type: http
namespace: jira
baseUri: https://3m.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
Retrieves a Salesforce account record by ID, returning account name, industry, annual revenue, and account owner for sales and customer operations.
naftiko: '0.5'
info:
label: Salesforce Account Lookup
description: Retrieves a Salesforce account record by ID, returning account name, industry, annual revenue, and account owner for sales and customer operations.
tags:
- sales
- salesforce
- crm
- account-management
capability:
exposes:
- type: mcp
namespace: crm
port: 8080
tools:
- name: get-account
description: Look up a Salesforce account by account ID. Returns name, industry, revenue, owner, and billing country.
inputParameters:
- name: account_id
in: body
type: string
description: The Salesforce account ID.
call: salesforce.get-account
with:
account_id: '{{account_id}}'
outputParameters:
- name: name
type: string
mapping: $.Name
- name: industry
type: string
mapping: $.Industry
- name: annual_revenue
type: string
mapping: $.AnnualRevenue
- name: owner
type: string
mapping: $.Owner.Name
consumes:
- type: http
namespace: salesforce
baseUri: https://3m.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
Generates a Certificate of Analysis by pulling test results from SAP QM, formatting the document, uploading to SharePoint, and emailing it to the customer.
naftiko: '0.5'
info:
label: Quality Certificate Generation
description: Generates a Certificate of Analysis by pulling test results from SAP QM, formatting the document, uploading to SharePoint, and emailing it to the customer.
tags:
- quality
- sap
- sharepoint
- microsoft-outlook
- manufacturing
- certification
capability:
exposes:
- type: mcp
namespace: quality-certs
port: 8080
tools:
- name: generate-coa
description: Given a batch number and customer email, pull SAP QM results, upload COA to SharePoint, and email to customer.
inputParameters:
- name: batch_number
in: body
type: string
description: The production batch number.
- name: material_number
in: body
type: string
description: The SAP material number.
- name: customer_email
in: body
type: string
description: Customer email address for the COA.
steps:
- name: get-test-results
type: call
call: sap.get-batch-results
with:
batch: '{{batch_number}}'
material: '{{material_number}}'
- name: upload-coa
type: call
call: sharepoint.upload-file
with:
site_id: $secrets.quality_site_id
folder_path: /COA/{{material_number}}
file_name: COA-{{batch_number}}.pdf
content: '{{get-test-results.certificate_content}}'
- name: email-customer
type: call
call: msgraph.send-mail
with:
to: '{{customer_email}}'
subject: 3M Certificate of Analysis — {{material_number}} Batch {{batch_number}}
body: Please find attached the Certificate of Analysis for material {{material_number}}, batch {{batch_number}}. All test parameters within specification.
consumes:
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/QM_BATCH_RESULTS_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: batch-results
path: /BatchInspectionResult(Batch='{{batch}}',Material='{{material}}')
inputParameters:
- name: batch
in: path
- name: material
in: path
operations:
- name: get-batch-results
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}}/{{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
- type: http
namespace: msgraph
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: mail
path: /users/$secrets.service_account_upn/sendMail
operations:
- name: send-mail
method: POST
When R&D lab test results are available, records them in SAP QM, updates the Jira R&D tracker, and notifies the project scientist in Microsoft Teams.
naftiko: '0.5'
info:
label: Lab Test Result Processing
description: When R&D lab test results are available, records them in SAP QM, updates the Jira R&D tracker, and notifies the project scientist in Microsoft Teams.
tags:
- research
- quality
- sap
- jira
- microsoft-teams
- lab-testing
capability:
exposes:
- type: mcp
namespace: rd-lab
port: 8080
tools:
- name: process-lab-results
description: Given test results, material, and project info, log results in SAP QM, update Jira, and notify the project lead.
inputParameters:
- name: material_number
in: body
type: string
description: Material number tested.
- name: test_plan_id
in: body
type: string
description: SAP QM test plan identifier.
- name: result_status
in: body
type: string
description: 'Overall result: pass, fail, or conditional.'
- name: jira_key
in: body
type: string
description: The Jira R&D project issue key.
- name: scientist_upn
in: body
type: string
description: UPN of the lead scientist.
steps:
- name: record-results
type: call
call: sap.record-inspection-results
with:
inspection_plan: '{{test_plan_id}}'
material: '{{material_number}}'
result_status: '{{result_status}}'
- name: update-jira
type: call
call: jira.add-comment
with:
issue_key: '{{jira_key}}'
body: 'Lab test results recorded. Material: {{material_number}} | Status: {{result_status}} | SAP Inspection: {{record-results.inspection_lot}}'
- name: notify-scientist
type: call
call: msteams.send-chat
with:
recipient_upn: '{{scientist_upn}}'
text: 'Lab results for {{material_number}} are in: {{result_status}} | SAP: {{record-results.inspection_lot}} | Jira: {{jira_key}}'
consumes:
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/QM_INSPECTION_RESULT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: inspection-results
path: /InspectionResult
operations:
- name: record-inspection-results
method: POST
- type: http
namespace: jira
baseUri: https://3m.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_token
resources:
- name: comments
path: /issue/{{issue_key}}/comment
inputParameters:
- name: issue_key
in: path
operations:
- name: add-comment
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: chats
path: /users/{{recipient_upn}}/chats
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-chat
method: POST
Aggregates 3M content performance from LinkedIn and Meta, pushes the combined metrics to HubSpot campaign records, and posts a weekly digest to the social media Microsoft Teams channel.
naftiko: '0.5'
info:
label: Social Media Performance Digest
description: Aggregates 3M content performance from LinkedIn and Meta, pushes the combined metrics to HubSpot campaign records, and posts a weekly digest to the social media Microsoft Teams channel.
tags:
- marketing
- social-media
- linkedin
- meta
- hubspot
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: social-media
port: 8080
tools:
- name: digest-social-performance
description: Pull post engagement from LinkedIn and Meta for a given campaign ID, update HubSpot, and post a digest to Teams.
inputParameters:
- name: campaign_id
in: body
type: string
description: Campaign identifier shared across LinkedIn, Meta, and HubSpot.
- name: date_range
in: body
type: string
description: Reporting date range in YYYY-MM-DD/YYYY-MM-DD format.
steps:
- name: get-linkedin-stats
type: call
call: linkedin.get-campaign-analytics
with:
campaign_id: '{{campaign_id}}'
date_range: '{{date_range}}'
- name: get-meta-stats
type: call
call: meta.get-campaign-insights
with:
campaign_id: '{{campaign_id}}'
date_preset: '{{date_range}}'
- name: update-hubspot-campaign
type: call
call: hubspot.update-campaign
with:
campaign_id: '{{campaign_id}}'
linkedin_impressions: '{{get-linkedin-stats.impressions}}'
linkedin_clicks: '{{get-linkedin-stats.clicks}}'
meta_reach: '{{get-meta-stats.reach}}'
meta_engagement: '{{get-meta-stats.engagement}}'
- name: post-digest
type: call
call: msteams.send-message
with:
recipient_upn: social-media@3m.com
text: 'Social Digest ({{date_range}}): LinkedIn — {{get-linkedin-stats.impressions}} impressions, {{get-linkedin-stats.clicks}} clicks | Meta — {{get-meta-stats.reach}} reach, {{get-meta-stats.engagement}} engagements | HubSpot updated.'
consumes:
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: campaign-analytics
path: /adAnalytics
inputParameters:
- name: campaign_id
in: query
- name: date_range
in: query
operations:
- name: get-campaign-analytics
method: GET
- type: http
namespace: meta
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.meta_access_token
resources:
- name: campaign-insights
path: /{{campaign_id}}/insights
inputParameters:
- name: campaign_id
in: path
- name: date_preset
in: query
operations:
- name: get-campaign-insights
method: GET
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com/marketing/v3
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: campaigns
path: /campaigns/{{campaign_id}}
inputParameters:
- name: campaign_id
in: path
operations:
- name: update-campaign
method: PATCH
- 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
Creates a hazardous waste shipping manifest by pulling waste profile data from SAP EHS, generating the manifest in ServiceNow, and notifying the plant EHS coordinator in Teams.
naftiko: '0.5'
info:
label: Hazardous Waste Manifest Creation
description: Creates a hazardous waste shipping manifest by pulling waste profile data from SAP EHS, generating the manifest in ServiceNow, and notifying the plant EHS coordinator in Teams.
tags:
- ehs
- safety
- sap
- servicenow
- microsoft-teams
- waste-management
- compliance
capability:
exposes:
- type: mcp
namespace: waste-management
port: 8080
tools:
- name: create-waste-manifest
description: Given waste stream details, pull SAP EHS data, create ServiceNow manifest, and notify EHS coordinator.
inputParameters:
- name: waste_stream_id
in: body
type: string
description: SAP EHS waste stream identifier.
- name: plant_code
in: body
type: string
description: The 3M plant code.
- name: quantity_kg
in: body
type: string
description: Quantity of waste in kilograms.
- name: disposal_facility
in: body
type: string
description: Name of the disposal facility.
steps:
- name: get-waste-profile
type: call
call: sap.get-waste-profile
with:
waste_stream: '{{waste_stream_id}}'
plant: '{{plant_code}}'
- name: create-manifest
type: call
call: servicenow.create-manifest
with:
short_description: 'Hazwaste Manifest: {{waste_stream_id}} from {{plant_code}}'
waste_class: '{{get-waste-profile.waste_class}}'
un_number: '{{get-waste-profile.un_number}}'
quantity: '{{quantity_kg}}'
facility: '{{disposal_facility}}'
- name: notify-ehs
type: call
call: msteams.post-channel-message
with:
team_id: $secrets.ehs_team_id
channel_id: $secrets.ehs_waste_channel_id
text: 'Hazwaste Manifest Created: {{waste_stream_id}} | {{quantity_kg}} kg | Class: {{get-waste-profile.waste_class}} | Facility: {{disposal_facility}} | Manifest: {{create-manifest.number}}'
consumes:
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/EHS_WASTE_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: waste-profiles
path: /WasteProfile(WasteStream='{{waste_stream}}',Plant='{{plant}}')
inputParameters:
- name: waste_stream
in: path
- name: plant
in: path
operations:
- name: get-waste-profile
method: GET
- type: http
namespace: servicenow
baseUri: https://3m.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: manifests
path: /table/sn_ehs_manifest
operations:
- name: create-manifest
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
Monitors scrap rates by querying SAP production data, analyzing trends in Snowflake, and alerting the plant manager in Teams when thresholds are exceeded.
naftiko: '0.5'
info:
label: Scrap Rate Monitoring
description: Monitors scrap rates by querying SAP production data, analyzing trends in Snowflake, and alerting the plant manager in Teams when thresholds are exceeded.
tags:
- manufacturing
- quality
- sap
- snowflake
- microsoft-teams
- production
capability:
exposes:
- type: mcp
namespace: production-monitoring
port: 8080
tools:
- name: check-scrap-rate
description: Given a production line and period, check scrap rate against threshold and alert if exceeded.
inputParameters:
- name: production_line
in: body
type: string
description: The production line identifier.
- name: plant_code
in: body
type: string
description: The 3M plant code.
- name: period
in: body
type: string
description: Reporting period (e.g., 2026-03).
- name: threshold_pct
in: body
type: string
description: Scrap rate threshold percentage.
steps:
- name: get-scrap-data
type: call
call: sap.get-production-scrap
with:
line: '{{production_line}}'
plant: '{{plant_code}}'
period: '{{period}}'
- name: analyze-trend
type: call
call: snowflake.run-query
with:
statement: CALL MANUFACTURING.ANALYZE_SCRAP_TREND('{{production_line}}', '{{plant_code}}', '{{period}}')
warehouse: MANUFACTURING_WH
- name: alert-plant-manager
type: call
call: msteams.post-channel-message
with:
team_id: $secrets.plant_ops_team_id
channel_id: $secrets.plant_ops_channel_id
text: 'Scrap Rate Report: Line {{production_line}} at {{plant_code}} ({{period}}) | Current: {{get-scrap-data.scrap_rate}}% | Threshold: {{threshold_pct}}% | Trend: {{analyze-trend.trend_direction}}'
consumes:
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/PP_SCRAP_ANALYSIS_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: scrap-data
path: /ProductionScrap
inputParameters:
- name: line
in: query
- name: plant
in: query
- name: period
in: query
operations:
- name: get-production-scrap
method: GET
- type: http
namespace: snowflake
baseUri: https://3m.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: 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 the bill of materials for a finished good from SAP S/4HANA, returning component list, quantities, and assembly details for manufacturing engineering.
naftiko: '0.5'
info:
label: SAP Bill of Materials Lookup
description: Retrieves the bill of materials for a finished good from SAP S/4HANA, returning component list, quantities, and assembly details for manufacturing engineering.
tags:
- manufacturing
- bom
- sap
- sap-s4hana
- engineering
- materials
capability:
exposes:
- type: mcp
namespace: manufacturing-engineering
port: 8080
tools:
- name: get-bom
description: Look up a SAP bill of materials by material number and plant. Returns component list with quantities and units.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP finished good material number.
- name: plant_code
in: body
type: string
description: The 3M manufacturing plant code.
call: sap.get-bom
with:
material_number: '{{material_number}}'
plant: '{{plant_code}}'
outputParameters:
- name: bom_number
type: string
mapping: $.d.BillOfMaterial
- name: components
type: string
mapping: $.d.to_BillOfMaterialItem.results
- name: base_quantity
type: string
mapping: $.d.BOMHeaderBaseQuantity
consumes:
- type: http
namespace: sap
baseUri: https://3m-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(Material='{{material_number}}',Plant='{{plant}}')
inputParameters:
- name: material_number
in: path
- name: plant
in: path
operations:
- name: get-bom
method: GET
outputRawFormat: json
When Workday creates a new employee, provisions their Microsoft 365 account, creates a personal SharePoint site, and raises a ServiceNow hardware provisioning task.
naftiko: '0.5'
info:
label: Workspace Provisioning
description: When Workday creates a new employee, provisions their Microsoft 365 account, creates a personal SharePoint site, and raises a ServiceNow hardware provisioning task.
tags:
- hr
- it
- microsoft-365
- sharepoint
- servicenow
- workday
- provisioning
capability:
exposes:
- type: mcp
namespace: workspace-provisioning
port: 8080
tools:
- name: provision-workspace
description: Given a new Workday employee ID, create their Microsoft 365 account, SharePoint personal site, and a ServiceNow hardware request.
inputParameters:
- name: employee_id
in: body
type: string
description: The Workday employee ID.
- name: hardware_type
in: body
type: string
description: Required hardware type (e.g., laptop_windows, laptop_mac, mobile).
steps:
- name: get-employee
type: call
call: workday.get-worker
with:
worker_id: '{{employee_id}}'
- name: create-m365-account
type: call
call: msgraph.create-user
with:
display_name: '{{get-employee.full_name}}'
upn: '{{get-employee.work_email}}'
department: '{{get-employee.department}}'
job_title: '{{get-employee.job_title}}'
- name: create-sharepoint-site
type: call
call: sharepoint.create-site
with:
owner_upn: '{{get-employee.work_email}}'
site_name: '{{get-employee.full_name}}'
- name: request-hardware
type: call
call: servicenow.create-request
with:
short_description: 'Hardware request: {{hardware_type}} for {{get-employee.full_name}}'
category: hardware
requested_for: '{{get-employee.work_email}}'
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
- name: sites
path: /sites
operations:
- name: create-site
method: POST
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: sites
path: /
operations:
- name: create-site
method: POST
- type: http
namespace: servicenow
baseUri: https://3m.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: requests
path: /table/sc_request
operations:
- name: create-request
method: POST
Processes a customer complaint from Salesforce by creating a SAP quality notification, opening a Jira investigation ticket, and sending an acknowledgment email to the customer through Microsoft Graph.
naftiko: '0.5'
info:
label: Customer Complaint Processing
description: Processes a customer complaint from Salesforce by creating a SAP quality notification, opening a Jira investigation ticket, and sending an acknowledgment email to the customer through Microsoft Graph.
tags:
- quality
- customer-service
- salesforce
- sap
- jira
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: customer-quality
port: 8080
tools:
- name: process-complaint
description: Given a Salesforce case ID, create a SAP quality notification, open a Jira ticket, and send a customer acknowledgment email.
inputParameters:
- name: case_id
in: body
type: string
description: The Salesforce case ID for the complaint.
- name: product_number
in: body
type: string
description: The product material number.
- name: complaint_description
in: body
type: string
description: Description of the customer complaint.
- name: customer_email
in: body
type: string
description: Customer email for acknowledgment.
steps:
- name: create-sap-qn
type: call
call: sap.create-quality-notification
with:
material: '{{product_number}}'
notification_type: Q3
short_text: 'Customer Complaint: {{product_number}}'
long_text: '{{complaint_description}} | Salesforce Case: {{case_id}}'
- name: create-jira-investigation
type: call
call: jira.create-issue
with:
project_key: QA
issuetype: Task
summary: 'Investigate complaint: {{product_number}} — Case {{case_id}}'
description: '{{complaint_description}} | SAP QN: {{create-sap-qn.notification_id}}'
- name: send-acknowledgment
type: call
call: msgraph.send-mail
with:
to: '{{customer_email}}'
subject: 3M — Your complaint has been received (Case {{case_id}})
body: 'Thank you for contacting 3M. Your complaint regarding product {{product_number}} has been logged and assigned for investigation. Reference: {{create-sap-qn.notification_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/QM_NOTIFICATION_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: quality-notifications
path: /QualityNotification
operations:
- name: create-quality-notification
method: POST
- type: http
namespace: jira
baseUri: https://3m.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: msgraph
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: mail
path: /users/$secrets.service_account_upn/sendMail
operations:
- name: send-mail
method: POST
When a Snowflake data quality check fails (row count anomaly, null threshold breach, or schema drift), logs the failure to Datadog, opens a Jira data quality ticket, and notifies the data engineering team in Microsoft Teams.
naftiko: '0.5'
info:
label: Snowflake Data Quality Alert
description: When a Snowflake data quality check fails (row count anomaly, null threshold breach, or schema drift), logs the failure to Datadog, opens a Jira data quality ticket, and notifies the data engineering team in Microsoft Teams.
tags:
- data-quality
- snowflake
- datadog
- jira
- microsoft-teams
- data-engineering
capability:
exposes:
- type: mcp
namespace: data-quality
port: 8080
tools:
- name: handle-data-quality-failure
description: Given a Snowflake table and data quality check failure type, log to Datadog, open a Jira ticket, and notify the data team in Teams.
inputParameters:
- name: table_name
in: body
type: string
description: Fully-qualified Snowflake table name (database.schema.table).
- name: check_type
in: body
type: string
description: Type of check that failed (row_count, null_threshold, schema_drift, duplicate_key).
- name: expected_value
in: body
type: string
description: Expected value or threshold.
- name: actual_value
in: body
type: string
description: Actual observed value.
- name: data_domain
in: body
type: string
description: Business data domain (finance, hr, supply_chain, etc.).
steps:
- name: log-datadog
type: call
call: datadog.create-event
with:
title: 'Data Quality Failure: {{check_type}} on {{table_name}}'
text: 'Expected: {{expected_value}} | Actual: {{actual_value}} | Domain: {{data_domain}}'
alert_type: error
tags: data_quality:{{check_type}},domain:{{data_domain}}
- name: open-jira-ticket
type: call
call: jira.create-issue
with:
project_key: DATA
issuetype: Bug
summary: 'Data Quality: {{check_type}} failure on {{table_name}}'
description: 'Table: {{table_name}}
Check: {{check_type}}
Expected: {{expected_value}}
Actual: {{actual_value}}
Domain: {{data_domain}}
Datadog: {{log-datadog.url}}'
- name: notify-team
type: call
call: msteams.send-message
with:
recipient_upn: data-engineering@3m.com
text: 'Data Quality Failure: {{check_type}} on {{table_name}} | Expected: {{expected_value}} | Actual: {{actual_value}} | Jira: {{open-jira-ticket.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: events
path: /events
operations:
- name: create-event
method: POST
- type: http
namespace: jira
baseUri: https://3m.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
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
Updates distributor pricing by pulling new price conditions from SAP, generating a price list in Snowflake, and distributing it via email to the channel sales team and distributor contacts.
naftiko: '0.5'
info:
label: Distributor Price List Update
description: Updates distributor pricing by pulling new price conditions from SAP, generating a price list in Snowflake, and distributing it via email to the channel sales team and distributor contacts.
tags:
- sales
- pricing
- sap
- snowflake
- microsoft-outlook
- distribution
capability:
exposes:
- type: mcp
namespace: pricing
port: 8080
tools:
- name: update-price-list
description: Given a distributor ID and effective date, pull SAP pricing, generate price list, and distribute via email.
inputParameters:
- name: distributor_id
in: body
type: string
description: SAP customer number of the distributor.
- name: effective_date
in: body
type: string
description: Effective date for new pricing.
- name: distributor_email
in: body
type: string
description: Distributor contact email.
steps:
- name: get-price-conditions
type: call
call: sap.get-pricing
with:
customer: '{{distributor_id}}'
valid_from: '{{effective_date}}'
- name: generate-price-list
type: call
call: snowflake.run-query
with:
statement: CALL SALES.GENERATE_PRICE_LIST('{{distributor_id}}', '{{effective_date}}')
warehouse: SALES_WH
- name: send-price-list
type: call
call: msgraph.send-mail
with:
to: '{{distributor_email}}'
subject: 3M Updated Price List — Effective {{effective_date}}
body: 'Please find the updated price list effective {{effective_date}}. Total items: {{generate-price-list.item_count}}. Contact your 3M representative for questions.'
consumes:
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/SD_PRICING_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: pricing
path: /PriceCondition
inputParameters:
- name: customer
in: query
- name: valid_from
in: query
operations:
- name: get-pricing
method: GET
- type: http
namespace: snowflake
baseUri: https://3m.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: msgraph
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: mail
path: /users/$secrets.service_account_upn/sendMail
operations:
- name: send-mail
method: POST
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 Approval Pipeline
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
- ariba
- sap-ariba
- workday
- microsoft-teams
- approval
- spend-management
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: route-requisition-approval
description: Given an Ariba requisition ID and requestor employee ID, check the requisition amount, resolve the approver from Workday, and notify both parties in Microsoft Teams.
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 on the requisition.
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}}. Please review: {{get-requisition.approval_url}}'
- 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
Triggers a Kubernetes rolling deployment from a GitHub Actions release, monitors rollout health via Datadog, and posts the deployment result to the engineering Microsoft Teams channel.
naftiko: '0.5'
info:
label: Kubernetes Deployment Rollout
description: Triggers a Kubernetes rolling deployment from a GitHub Actions release, monitors rollout health via Datadog, and posts the deployment result to the engineering Microsoft Teams channel.
tags:
- devops
- kubernetes
- github-actions
- datadog
- microsoft-teams
- deployment
capability:
exposes:
- type: mcp
namespace: k8s-deploy
port: 8080
tools:
- name: rollout-deployment
description: Given a GitHub release tag and Kubernetes namespace, trigger a rolling deployment and monitor health via Datadog. Post the result to Teams.
inputParameters:
- name: repository
in: body
type: string
description: GitHub repository in owner/repo format.
- name: release_tag
in: body
type: string
description: The Git tag to deploy (e.g., v2.4.1).
- name: k8s_namespace
in: body
type: string
description: Kubernetes namespace to deploy into.
- name: service_name
in: body
type: string
description: Datadog service name for health monitoring.
steps:
- name: trigger-workflow
type: call
call: github.create-workflow-dispatch
with:
repository: '{{repository}}'
workflow_id: deploy.yml
ref: '{{release_tag}}'
namespace: '{{k8s_namespace}}'
- name: create-deployment-marker
type: call
call: datadog.create-event
with:
title: 'Deployment: {{repository}} {{release_tag}} → {{k8s_namespace}}'
text: 'Rolling deployment triggered. Workflow: {{trigger-workflow.run_id}}'
alert_type: info
tags: service:{{service_name}},env:{{k8s_namespace}}
- name: notify-team
type: call
call: msteams.send-message
with:
recipient_upn: engineering-deploys@3m.com
text: 'Deployment: {{repository}} {{release_tag}} → {{k8s_namespace}} | Run: {{trigger-workflow.run_id}} | Datadog: {{create-deployment-marker.url}}'
consumes:
- 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: create-workflow-dispatch
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: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
When a Salesforce opportunity closes as won, enrolls the customer in a HubSpot onboarding workflow, provisions a SharePoint customer portal, and notifies the customer success team in Teams.
naftiko: '0.5'
info:
label: Customer Onboarding Provisioning
description: When a Salesforce opportunity closes as won, enrolls the customer in a HubSpot onboarding workflow, provisions a SharePoint customer portal, and notifies the customer success team in Teams.
tags:
- sales
- customer-success
- salesforce
- hubspot
- sharepoint
- microsoft-teams
- onboarding
capability:
exposes:
- type: mcp
namespace: customer-onboarding
port: 8080
tools:
- name: provision-customer-onboarding
description: Given a closed-won Salesforce opportunity ID, enroll in HubSpot onboarding, provision a SharePoint portal, and notify the CSM in Teams.
inputParameters:
- name: salesforce_opportunity_id
in: body
type: string
description: The closed-won Salesforce opportunity ID.
- name: Cm_upn
in: body
type: string
description: Microsoft UPN of the assigned customer success manager.
steps:
- name: get-opportunity
type: call
call: salesforce-cx.get-opportunity
with:
opportunity_id: '{{salesforce_opportunity_id}}'
- name: enroll-hubspot
type: call
call: hubspot-cx.enroll-workflow
with:
contact_email: '{{get-opportunity.primary_contact_email}}'
workflow_name: enterprise-onboarding
- name: create-portal
type: call
call: sharepoint-cx.create-folder
with:
site_id: customer_portals_site
folder_path: Customers/{{get-opportunity.account_name}}
- name: notify-csm
type: call
call: msteams-cx.send-message
with:
recipient_upn: '{{csm_upn}}'
text: 'New Customer: {{get-opportunity.account_name}} | Value: {{get-opportunity.amount}} | Portal: {{create-portal.url}} | HubSpot enrolled.'
consumes:
- type: http
namespace: salesforce-cx
baseUri: https://3m.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: hubspot-cx
baseUri: https://api.hubapi.com/automation/v4
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: workflow-enrollments
path: /flows/enrollments
operations:
- name: enroll-workflow
method: POST
- type: http
namespace: sharepoint-cx
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: folders
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-cx
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
- concur
- sap-concur
- workday
- servicenow
- policy-compliance
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 the report details, validate the cost center against Workday, and flag any policy violations to 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 expense 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: 'Expense policy 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}}. Submitted: {{get-expense-report.submit_date}}.'
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://3m.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
Files customs declarations for international shipments by pulling export data from SAP GTS, creating a compliance record in ServiceNow, and notifying the trade compliance team in Teams.
naftiko: '0.5'
info:
label: Customs Declaration Filing
description: Files customs declarations for international shipments by pulling export data from SAP GTS, creating a compliance record in ServiceNow, and notifying the trade compliance team in Teams.
tags:
- logistics
- trade-compliance
- sap
- servicenow
- microsoft-teams
- customs
capability:
exposes:
- type: mcp
namespace: trade-compliance
port: 8080
tools:
- name: file-customs-declaration
description: Given a shipment reference and destination country, pull SAP GTS data, create compliance record, and notify trade team.
inputParameters:
- name: shipment_reference
in: body
type: string
description: SAP shipment document number.
- name: destination_country
in: body
type: string
description: ISO country code of destination.
- name: incoterms
in: body
type: string
description: Incoterms code (e.g., FOB, CIF, DDP).
steps:
- name: get-export-data
type: call
call: sap.get-gts-declaration
with:
shipment: '{{shipment_reference}}'
country: '{{destination_country}}'
- name: create-compliance-record
type: call
call: servicenow.create-compliance-record
with:
short_description: 'Customs Declaration: {{shipment_reference}} to {{destination_country}}'
classification: '{{get-export-data.tariff_code}}'
value: '{{get-export-data.declared_value}}'
incoterms: '{{incoterms}}'
- name: notify-trade-team
type: call
call: msteams.post-channel-message
with:
team_id: $secrets.trade_team_id
channel_id: $secrets.trade_channel_id
text: 'Customs Declaration Filed: {{shipment_reference}} to {{destination_country}} | Tariff: {{get-export-data.tariff_code}} | Value: {{get-export-data.declared_value}} | ServiceNow: {{create-compliance-record.number}}'
consumes:
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/GTS_DECLARATION_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: declarations
path: /CustomsDeclaration(Shipment='{{shipment}}',Country='{{country}}')
inputParameters:
- name: shipment
in: path
- name: country
in: path
operations:
- name: get-gts-declaration
method: GET
- type: http
namespace: servicenow
baseUri: https://3m.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: compliance
path: /table/sn_compliance_record
operations:
- name: create-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
Retrieves a procurement contract from SAP Ariba by contract ID, returning status, expiry date, supplier, and contract value for strategic sourcing.
naftiko: '0.5'
info:
label: SAP Ariba Contract Lookup
description: Retrieves a procurement contract from SAP Ariba by contract ID, returning status, expiry date, supplier, and contract value for strategic sourcing.
tags:
- procurement
- sap-ariba
- contract-management
- sourcing
capability:
exposes:
- type: mcp
namespace: sourcing
port: 8080
tools:
- name: get-contract
description: Look up an SAP Ariba contract by contract ID. Returns status, supplier, value, and expiry date.
inputParameters:
- name: contract_id
in: body
type: string
description: The SAP Ariba contract ID.
call: ariba.get-contract
with:
contract_id: '{{contract_id}}'
outputParameters:
- name: status
type: string
mapping: $.Status
- name: supplier
type: string
mapping: $.Supplier.Name
- name: contract_value
type: string
mapping: $.Amount.Amount
- name: expiry_date
type: string
mapping: $.ExpirationDate
consumes:
- type: http
namespace: ariba
baseUri: https://openapi.ariba.com/api/contract-compliance/v1/prod
authentication:
type: bearer
token: $secrets.ariba_token
inputParameters:
- name: apiKey
in: header
value: $secrets.ariba_api_key
resources:
- name: contracts
path: /contracts/{{contract_id}}
inputParameters:
- name: contract_id
in: path
operations:
- name: get-contract
method: GET
Creates a preventive maintenance work order in SAP Plant Maintenance, assigns a technician in ServiceNow, and sends a calendar invite via Microsoft Graph for scheduled maintenance windows.
naftiko: '0.5'
info:
label: Preventive Maintenance Scheduling
description: Creates a preventive maintenance work order in SAP Plant Maintenance, assigns a technician in ServiceNow, and sends a calendar invite via Microsoft Graph for scheduled maintenance windows.
tags:
- maintenance
- sap
- servicenow
- microsoft-outlook
- manufacturing
- scheduling
capability:
exposes:
- type: mcp
namespace: maintenance-scheduling
port: 8080
tools:
- name: schedule-preventive-maintenance
description: Given equipment ID, maintenance type, and scheduled date, create SAP PM order, assign in ServiceNow, and send calendar invite.
inputParameters:
- name: equipment_id
in: body
type: string
description: The SAP equipment ID.
- name: plant_code
in: body
type: string
description: The 3M plant code.
- name: maintenance_type
in: body
type: string
description: Type of maintenance (e.g., calibration, inspection, overhaul).
- name: scheduled_date
in: body
type: string
description: Scheduled date for maintenance.
- name: technician_upn
in: body
type: string
description: UPN of the assigned maintenance technician.
steps:
- name: create-pm-order
type: call
call: sap.create-pm-order
with:
equipment: '{{equipment_id}}'
plant: '{{plant_code}}'
order_type: PM01
short_text: 'PM: {{maintenance_type}} — {{equipment_id}}'
scheduled_start: '{{scheduled_date}}'
- name: create-snow-task
type: call
call: servicenow.create-task
with:
short_description: 'PM: {{maintenance_type}} for {{equipment_id}}'
assigned_to: '{{technician_upn}}'
scheduled_date: '{{scheduled_date}}'
reference: '{{create-pm-order.order_number}}'
- name: send-calendar-invite
type: call
call: msgraph.create-event
with:
attendee: '{{technician_upn}}'
subject: 'Preventive Maintenance: {{maintenance_type}} — {{equipment_id}}'
start: '{{scheduled_date}}T08:00:00'
end: '{{scheduled_date}}T12:00:00'
body: 'SAP Order: {{create-pm-order.order_number}} | Plant: {{plant_code}} | Equipment: {{equipment_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://3m-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-orders
path: /MaintenanceOrder
operations:
- name: create-pm-order
method: POST
- type: http
namespace: servicenow
baseUri: https://3m.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: msgraph
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: events
path: /users/{{attendee}}/events
inputParameters:
- name: attendee
in: path
operations:
- name: create-event
method: POST
When a Salesforce case breaches SLA, escalates to a ServiceNow priority incident, notifies the customer success manager in Microsoft Teams, and logs the escalation in Confluence.
naftiko: '0.5'
info:
label: Customer Support Ticket Escalation
description: When a Salesforce case breaches SLA, escalates to a ServiceNow priority incident, notifies the customer success manager in Microsoft Teams, and logs the escalation in Confluence.
tags:
- customer-support
- crm
- salesforce
- servicenow
- confluence
- microsoft-teams
- sla
capability:
exposes:
- type: mcp
namespace: customer-support
port: 8080
tools:
- name: escalate-sla-breach
description: Given a Salesforce case ID that has breached SLA, open a ServiceNow priority incident, notify the CSM in Teams, and document in Confluence.
inputParameters:
- name: salesforce_case_id
in: body
type: string
description: The Salesforce case record ID.
- name: Cm_upn
in: body
type: string
description: Microsoft UPN of the customer success manager.
- name: escalation_reason
in: body
type: string
description: Description of why SLA was breached.
steps:
- name: get-case
type: call
call: salesforce.get-case
with:
case_id: '{{salesforce_case_id}}'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'SLA Breach Escalation: {{get-case.subject}}'
description: 'Salesforce Case {{salesforce_case_id}} breached SLA. Customer: {{get-case.account_name}}. Reason: {{escalation_reason}}'
urgency: '2'
impact: '2'
category: customer_escalation
- name: notify-csm
type: call
call: msteams.send-message
with:
recipient_upn: '{{csm_upn}}'
text: 'SLA Breach: Case {{salesforce_case_id}} — {{get-case.subject}} | Customer: {{get-case.account_name}} | ServiceNow: {{create-incident.number}} | Reason: {{escalation_reason}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://3m.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: servicenow
baseUri: https://3m.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
Monitors MuleSoft API Manager for failed flows, correlates with Datadog APM traces, opens a ServiceNow integration incident, and notifies the integration team in Microsoft Teams.
naftiko: '0.5'
info:
label: MuleSoft Integration Health Monitor
description: Monitors MuleSoft API Manager for failed flows, correlates with Datadog APM traces, opens a ServiceNow integration incident, and notifies the integration team in Microsoft Teams.
tags:
- integration
- mulesoft
- datadog
- servicenow
- microsoft-teams
- api-management
capability:
exposes:
- type: mcp
namespace: integration-ops
port: 8080
tools:
- name: handle-integration-failure
description: Given a MuleSoft flow failure event, correlate with Datadog traces, open a ServiceNow incident, and alert the integration team in Teams.
inputParameters:
- name: flow_name
in: body
type: string
description: The name of the failed MuleSoft flow.
- name: environment
in: body
type: string
description: MuleSoft environment (dev, staging, prod).
- name: error_message
in: body
type: string
description: Error message from the failed flow.
- name: correlation_id
in: body
type: string
description: MuleSoft correlation ID for trace lookup.
steps:
- name: log-datadog
type: call
call: datadog.create-event
with:
title: 'MuleSoft Flow Failure: {{flow_name}} ({{environment}})'
text: 'Error: {{error_message}} | Correlation: {{correlation_id}}'
alert_type: error
tags: integration:mulesoft,flow:{{flow_name}},env:{{environment}}
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Integration Failure: {{flow_name}} in {{environment}}'
description: 'MuleSoft flow {{flow_name}} failed in {{environment}}.
Error: {{error_message}}
Correlation ID: {{correlation_id}}
Datadog: {{log-datadog.url}}'
category: integration
urgency: '2'
- name: notify-team
type: call
call: msteams.send-message
with:
recipient_upn: integration-ops@3m.com
text: 'MuleSoft Failure: {{flow_name}} ({{environment}}) | Error: {{error_message}} | ServiceNow: {{create-incident.number}} | Datadog: {{log-datadog.url}}'
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
operations:
- name: create-event
method: POST
- type: http
namespace: servicenow
baseUri: https://3m.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
Tracks resolution of internal audit findings by creating corrective actions in ServiceNow, assigning owners in Jira, and reporting status to the audit committee in Teams.
naftiko: '0.5'
info:
label: Plant Audit Finding Resolution
description: Tracks resolution of internal audit findings by creating corrective actions in ServiceNow, assigning owners in Jira, and reporting status to the audit committee in Teams.
tags:
- audit
- compliance
- servicenow
- jira
- microsoft-teams
- quality
capability:
exposes:
- type: mcp
namespace: audit-management
port: 8080
tools:
- name: resolve-audit-finding
description: Given an audit finding, create corrective action in ServiceNow, assign in Jira, and notify audit committee.
inputParameters:
- name: finding_id
in: body
type: string
description: The audit finding reference number.
- name: finding_description
in: body
type: string
description: Description of the audit finding.
- name: severity
in: body
type: string
description: 'Finding severity: minor, major, critical.'
- name: owner_upn
in: body
type: string
description: UPN of the corrective action owner.
- name: due_date
in: body
type: string
description: Due date for resolution.
steps:
- name: create-capa
type: call
call: servicenow.create-capa
with:
short_description: 'Audit Finding {{finding_id}}: {{finding_description}}'
severity: '{{severity}}'
assigned_to: '{{owner_upn}}'
due_date: '{{due_date}}'
- name: create-jira-task
type: call
call: jira.create-issue
with:
project_key: AUDIT
issuetype: Task
summary: 'CAPA: {{finding_id}} — {{finding_description}}'
description: 'Severity: {{severity}} | Due: {{due_date}} | ServiceNow CAPA: {{create-capa.number}}'
assignee: '{{owner_upn}}'
- name: notify-audit-committee
type: call
call: msteams.post-channel-message
with:
team_id: $secrets.audit_team_id
channel_id: $secrets.audit_channel_id
text: 'Audit Finding {{finding_id}} ({{severity}}): {{finding_description}} | Owner: {{owner_upn}} | Due: {{due_date}} | CAPA: {{create-capa.number}} | Jira: {{create-jira-task.key}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://3m.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: capa
path: /table/sn_quality_capa
operations:
- name: create-capa
method: POST
- type: http
namespace: jira
baseUri: https://3m.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
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 product defect is reported from Salesforce field service, creates a Jira defect ticket, logs a SAP quality notification, and opens a ServiceNow change request for the engineering team.
naftiko: '0.5'
info:
label: Product Defect Tracking
description: When a product defect is reported from Salesforce field service, creates a Jira defect ticket, logs a SAP quality notification, and opens a ServiceNow change request for the engineering team.
tags:
- quality
- product
- salesforce
- jira
- sap
- servicenow
- manufacturing
capability:
exposes:
- type: mcp
namespace: quality-management
port: 8080
tools:
- name: report-product-defect
description: Given a Salesforce field service case ID and product number, open a Jira defect, log a SAP quality notification, and create a ServiceNow change for engineering review.
inputParameters:
- name: salesforce_case_id
in: body
type: string
description: The Salesforce field service case ID.
- name: product_number
in: body
type: string
description: The SAP material/product number with the defect.
- name: defect_description
in: body
type: string
description: Description of the product defect.
- name: batch_number
in: body
type: string
description: The production batch number if known.
steps:
- name: get-case
type: call
call: salesforce.get-case
with:
case_id: '{{salesforce_case_id}}'
- name: create-jira-defect
type: call
call: jira.create-issue
with:
project_key: QA
issuetype: Bug
summary: 'Product Defect: {{product_number}} — {{defect_description}}'
description: 'Customer: {{get-case.account_name}} | Batch: {{batch_number}} | Case: {{salesforce_case_id}} | Defect: {{defect_description}}'
- name: log-sap-qn
type: call
call: sap.create-quality-notification
with:
material: '{{product_number}}'
batch: '{{batch_number}}'
short_text: 'Defect: {{defect_description}}'
notification_type: Q1
- name: create-change
type: call
call: servicenow.create-change-request
with:
short_description: 'Engineering review: product defect {{product_number}}'
description: 'Defect in {{product_number}} (batch {{batch_number}}). Jira: {{create-jira-defect.key}} | SAP QN: {{log-sap-qn.notification_id}}'
category: product_quality
consumes:
- type: http
namespace: salesforce
baseUri: https://3m.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
baseUri: https://3m.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: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/QM_NOTIFICATION_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: quality-notifications
path: /QualityNotification
operations:
- name: create-quality-notification
method: POST
- type: http
namespace: servicenow
baseUri: https://3m.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
Retrieves vendor master data from SAP S/4HANA by vendor number, returning company name, payment terms, currency, and purchasing organization details.
naftiko: '0.5'
info:
label: SAP Vendor Master Lookup
description: Retrieves vendor master data from SAP S/4HANA by vendor number, returning company name, payment terms, currency, and purchasing organization details.
tags:
- procurement
- vendor
- sap
- sap-s4hana
- master-data
capability:
exposes:
- type: mcp
namespace: vendor-management
port: 8080
tools:
- name: get-vendor
description: Look up SAP vendor master data by vendor number. Returns company name, payment terms, and purchasing organization.
inputParameters:
- name: vendor_number
in: body
type: string
description: The SAP vendor account number.
call: sap.get-vendor
with:
vendor_number: '{{vendor_number}}'
outputParameters:
- name: company_name
type: string
mapping: $.d.SupplierName
- name: payment_terms
type: string
mapping: $.d.PaymentTerms
- name: currency
type: string
mapping: $.d.Currency
consumes:
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: vendors
path: /A_Supplier('{{vendor_number}}')
inputParameters:
- name: vendor_number
in: path
operations:
- name: get-vendor
method: GET
outputRawFormat: json
Prepares for an OSHA compliance audit by pulling safety incident records from ServiceNow, gathering training completion data from Workday, and compiling an audit readiness report in SharePoint.
naftiko: '0.5'
info:
label: OSHA Compliance Audit Preparation
description: Prepares for an OSHA compliance audit by pulling safety incident records from ServiceNow, gathering training completion data from Workday, and compiling an audit readiness report in SharePoint.
tags:
- safety
- compliance
- osha
- servicenow
- workday
- sharepoint
capability:
exposes:
- type: mcp
namespace: compliance-audit
port: 8080
tools:
- name: prepare-osha-audit
description: Given a plant code and audit date, pull incident records, training data, and compile an audit report.
inputParameters:
- name: plant_code
in: body
type: string
description: The 3M plant code being audited.
- name: audit_date
in: body
type: string
description: Scheduled audit date.
- name: audit_scope
in: body
type: string
description: Scope of the OSHA audit (e.g., general_safety, chemical_handling, lockout_tagout).
steps:
- name: get-incident-records
type: call
call: servicenow.get-ehs-cases
with:
location: '{{plant_code}}'
date_range: last_12_months
category: '{{audit_scope}}'
- name: get-training-compliance
type: call
call: workday.get-training-completions
with:
location: '{{plant_code}}'
training_category: '{{audit_scope}}'
- name: upload-audit-report
type: call
call: sharepoint.upload-file
with:
site_id: $secrets.ehs_site_id
folder_path: /Audits/OSHA/{{plant_code}}
file_name: OSHA-Audit-Prep-{{plant_code}}-{{audit_date}}.json
content: 'Incidents: {{get-incident-records.total_count}} | Training Compliance: {{get-training-compliance.completion_rate}}%'
consumes:
- type: http
namespace: servicenow
baseUri: https://3m.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: ehs-cases
path: /table/sn_ehs_case
inputParameters:
- name: location
in: query
- name: date_range
in: query
- name: category
in: query
operations:
- name: get-ehs-cases
method: GET
- type: http
namespace: workday
baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/3m
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: training
path: /trainingCompletions
inputParameters:
- name: location
in: query
- name: training_category
in: query
operations:
- name: get-training-completions
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}}/{{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
Triggers an Azure Databricks ML training job, tracks the experiment in the model registry, logs metrics to Datadog, and posts training results to the data science Microsoft Teams channel.
naftiko: '0.5'
info:
label: ML Model Training Pipeline
description: Triggers an Azure Databricks ML training job, tracks the experiment in the model registry, logs metrics to Datadog, and posts training results to the data science Microsoft Teams channel.
tags:
- machine-learning
- azure-databricks
- datadog
- microsoft-teams
- data-science
- mlops
capability:
exposes:
- type: mcp
namespace: mlops
port: 8080
tools:
- name: run-training-job
description: Given a Databricks job ID and model name, trigger training, log metrics to Datadog, and post results to Teams.
inputParameters:
- name: databricks_job_id
in: body
type: string
description: The Azure Databricks job ID for the training pipeline.
- name: model_name
in: body
type: string
description: The registered model name in Databricks MLflow.
- name: experiment_name
in: body
type: string
description: The MLflow experiment name.
steps:
- name: trigger-job
type: call
call: databricks.run-job
with:
job_id: '{{databricks_job_id}}'
- name: log-metrics
type: call
call: datadog.create-event
with:
title: 'ML Training Started: {{model_name}}'
text: 'Job {{databricks_job_id}} | Experiment: {{experiment_name}} | Run: {{trigger-job.run_id}}'
alert_type: info
tags: ml_model:{{model_name}},experiment:{{experiment_name}}
- name: notify-team
type: call
call: msteams.send-message
with:
recipient_upn: data-science@3m.com
text: 'ML Training Job Started: {{model_name}} | Experiment: {{experiment_name}} | Databricks Run: {{trigger-job.run_id}} | Datadog: {{log-metrics.url}}'
consumes:
- type: http
namespace: databricks
baseUri: https://adb-3m.azuredatabricks.net/api/2.1
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: job-runs
path: /jobs/run-now
operations:
- name: run-job
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: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Extracts financial and operational data from SAP S/4HANA into Snowflake, runs compliance aggregations via Azure Data Factory, and publishes the result to a Power BI dataset for regulatory reporting.
naftiko: '0.5'
info:
label: Regulatory Compliance Reporting Pipeline
description: Extracts financial and operational data from SAP S/4HANA into Snowflake, runs compliance aggregations via Azure Data Factory, and publishes the result to a Power BI dataset for regulatory reporting.
tags:
- compliance
- finance
- reporting
- sap
- snowflake
- azure-data-factory
- power-bi
- regulatory
capability:
exposes:
- type: mcp
namespace: compliance-reporting
port: 8080
tools:
- name: run-compliance-report
description: 'Trigger a regulatory compliance data pipeline: extract from SAP, load to Snowflake, refresh via Azure Data Factory, and push results to Power BI.'
inputParameters:
- name: report_period
in: body
type: string
description: The reporting period in YYYY-MM format (e.g., 2025-03).
- name: report_type
in: body
type: string
description: The regulatory report type (e.g., sox_controls, ehs_emissions, product_safety).
- name: company_code
in: body
type: string
description: The SAP company code for the reporting entity.
steps:
- name: extract-sap-data
type: call
call: sap.get-financial-posting
with:
company_code: '{{company_code}}'
period: '{{report_period}}'
- name: trigger-adf-pipeline
type: call
call: azure-data-factory.run-pipeline
with:
pipeline_name: compliance-{{report_type}}
parameters: period={{report_period}},company={{company_code}}
- name: refresh-powerbi-dataset
type: call
call: powerbi.refresh-dataset
with:
dataset_name: compliance-{{report_type}}-{{report_period}}
consumes:
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/FAC_GL_ITEMS_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: financial-postings
path: /A_JournalEntry
inputParameters:
- name: company_code
in: query
- name: period
in: query
operations:
- name: get-financial-posting
method: GET
- type: http
namespace: azure-data-factory
baseUri: https://management.azure.com/subscriptions/{{subscription_id}}/resourceGroups/{{resource_group}}/providers/Microsoft.DataFactory/factories/{{factory_name}}
authentication:
type: bearer
token: $secrets.azure_token
resources:
- name: pipeline-runs
path: /pipelines/{{pipeline_name}}/createRun
inputParameters:
- name: pipeline_name
in: path
operations:
- name: run-pipeline
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_name}}/refreshes
inputParameters:
- name: dataset_name
in: path
operations:
- name: refresh-dataset
method: POST
When Datadog detects Oracle Database query latency or tablespace saturation anomalies, opens a ServiceNow DBA task and opens a Jira ticket for the database engineering team.
naftiko: '0.5'
info:
label: Oracle Database Performance Alert
description: When Datadog detects Oracle Database query latency or tablespace saturation anomalies, opens a ServiceNow DBA task and opens a Jira ticket for the database engineering team.
tags:
- database
- oracle
- datadog
- servicenow
- jira
- performance
- dba
capability:
exposes:
- type: mcp
namespace: dba-ops
port: 8080
tools:
- name: handle-db-performance-alert
description: Given an Oracle DB performance alert from Datadog, open a ServiceNow DBA task and a Jira ticket for investigation.
inputParameters:
- name: db_instance
in: body
type: string
description: Oracle database instance name.
- name: alert_type
in: body
type: string
description: Alert type (query_latency, tablespace_full, connection_pool, lock_wait).
- name: metric_value
in: body
type: string
description: The metric value that triggered the alert.
- name: datadog_alert_url
in: body
type: string
description: URL to the Datadog monitor event.
steps:
- name: create-snow-task
type: call
call: servicenow.create-task
with:
short_description: 'Oracle DB Alert: {{alert_type}} on {{db_instance}}'
description: 'Metric: {{metric_value}} | Alert: {{datadog_alert_url}}'
category: database_performance
assigned_group: DBA_Team
- name: create-jira-ticket
type: call
call: jira.create-issue
with:
project_key: DBA
issuetype: Task
summary: 'Oracle DB: {{alert_type}} on {{db_instance}} ({{metric_value}})'
description: 'ServiceNow: {{create-snow-task.number}}
Datadog: {{datadog_alert_url}}
Instance: {{db_instance}}
Alert: {{alert_type}}
Value: {{metric_value}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://3m.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: jira
baseUri: https://3m.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
Queries Oracle E-Business Suite general ledger for account balances by period, returning beginning balance, net activity, and ending balance for finance teams.
naftiko: '0.5'
info:
label: Oracle GL Balance Lookup
description: Queries Oracle E-Business Suite general ledger for account balances by period, returning beginning balance, net activity, and ending balance for finance teams.
tags:
- finance
- oracle
- general-ledger
- accounting
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: get-gl-balance
description: Look up Oracle general ledger balance by account and period. Returns beginning balance, debits, credits, and ending balance.
inputParameters:
- name: account_code
in: body
type: string
description: The GL account code combination.
- name: period_name
in: body
type: string
description: The accounting period (e.g., JAN-26).
call: oracle-ebs.get-gl-balance
with:
account_code: '{{account_code}}'
period_name: '{{period_name}}'
outputParameters:
- name: beginning_balance
type: string
mapping: $.BeginningBalance
- name: net_activity
type: string
mapping: $.NetActivity
- name: ending_balance
type: string
mapping: $.EndingBalance
consumes:
- type: http
namespace: oracle-ebs
baseUri: https://3m-ebs.oracle.com/fscmRestApi/resources/v1
authentication:
type: basic
username: $secrets.oracle_ebs_user
password: $secrets.oracle_ebs_password
resources:
- name: gl-balances
path: /glBalances
inputParameters:
- name: account_code
in: query
- name: period_name
in: query
operations:
- name: get-gl-balance
method: GET
When a SonarQube quality gate fails on a pull request, posts a quality report comment to the GitHub PR, opens a Jira engineering task, and notifies the team in Teams.
naftiko: '0.5'
info:
label: SonarQube Code Quality Gate Failure
description: When a SonarQube quality gate fails on a pull request, posts a quality report comment to the GitHub PR, opens a Jira engineering task, and notifies the team in Teams.
tags:
- code-quality
- sonarqube
- github
- jira
- microsoft-teams
- devsecops
capability:
exposes:
- type: mcp
namespace: code-quality
port: 8080
tools:
- name: handle-quality-gate-failure
description: Given a SonarQube project and GitHub PR number, post the quality report as a PR comment, open a Jira task, and alert the team in Teams.
inputParameters:
- name: sonarqube_project_key
in: body
type: string
description: The SonarQube project key.
- name: github_repo
in: body
type: string
description: GitHub repository in owner/repo format.
- name: pr_number
in: body
type: string
description: The GitHub pull request number.
- name: failed_conditions
in: body
type: string
description: Description of the failed gate conditions.
steps:
- name: get-sonar-report
type: call
call: sonarqube-cq.get-project-status
with:
project_key: '{{sonarqube_project_key}}'
- name: post-pr-comment
type: call
call: github-cq.create-pr-comment
with:
repository: '{{github_repo}}'
pr_number: '{{pr_number}}'
body: 'SonarQube Quality Gate FAILED
Conditions: {{failed_conditions}}
Bugs: {{get-sonar-report.bugs}} | Vulnerabilities: {{get-sonar-report.vulnerabilities}} | Coverage: {{get-sonar-report.coverage}}%'
- name: open-jira
type: call
call: jira-cq.create-issue
with:
project_key: ENG
issuetype: Task
summary: 'Quality gate failure: {{sonarqube_project_key}} PR #{{pr_number}}'
description: 'Failed: {{failed_conditions}}
Bugs: {{get-sonar-report.bugs}}
Vulnerabilities: {{get-sonar-report.vulnerabilities}}
Coverage: {{get-sonar-report.coverage}}%'
consumes:
- type: http
namespace: sonarqube-cq
baseUri: https://3m-sonar.internal/api
authentication:
type: bearer
token: $secrets.sonarqube_token
resources:
- name: project-status
path: /qualitygates/project_status
inputParameters:
- name: project_key
in: query
operations:
- name: get-project-status
method: GET
- type: http
namespace: github-cq
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: pr-comments
path: /repos/{{repository}}/issues/{{pr_number}}/comments
inputParameters:
- name: repository
in: path
- name: pr_number
in: path
operations:
- name: create-pr-comment
method: POST
- type: http
namespace: jira-cq
baseUri: https://3m.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
On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder, and sends a Microsoft Teams welcome message to the new employee.
naftiko: '0.5'
info:
label: Employee Onboarding Orchestrator
description: On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder, and sends a Microsoft Teams welcome message to the new employee.
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 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 the new hire is joining.
steps:
- name: get-employee
type: call
call: workday.get-worker
with:
worker_id: '{{workday_employee_id}}'
- name: open-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'New hire onboarding: {{get-employee.full_name}}'
category: hr_onboarding
assigned_group: IT_Onboarding
description: Onboarding for {{get-employee.full_name}} starting {{start_date}} in {{department}}.
- name: provision-folder
type: call
call: sharepoint.create-folder
with:
site_id: hr_onboarding_site
folder_path: OnboardingDocs/{{get-employee.full_name}}_{{start_date}}
- name: send-welcome
type: call
call: msteams.send-message
with:
recipient_upn: '{{get-employee.work_email}}'
text: Welcome to 3M, {{get-employee.first_name}}! Your IT onboarding ticket is {{open-ticket.number}}. Documents are ready at {{provision-folder.url}}.
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
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://3m.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
When an environmental health and safety incident is reported, creates a ServiceNow EHS case, logs the event in SAP Plant Maintenance, and notifies the site safety officer and EHS leadership in Microsoft Teams.
naftiko: '0.5'
info:
label: EHS Safety Incident Reporting
description: When an environmental health and safety incident is reported, creates a ServiceNow EHS case, logs the event in SAP Plant Maintenance, and notifies the site safety officer and EHS leadership in Microsoft Teams.
tags:
- ehs
- safety
- servicenow
- sap
- microsoft-teams
- compliance
- manufacturing
capability:
exposes:
- type: mcp
namespace: ehs
port: 8080
tools:
- name: report-safety-incident
description: Given an EHS incident description and plant code, open a ServiceNow EHS case, log in SAP PM, and notify the site safety officer in Teams.
inputParameters:
- name: incident_description
in: body
type: string
description: Description of the safety or environmental incident.
- name: plant_code
in: body
type: string
description: 3M plant or facility code where the incident occurred.
- name: severity
in: body
type: string
description: 'Incident severity: near_miss, first_aid, recordable, or lost_time.'
- name: safety_officer_upn
in: body
type: string
description: Microsoft UPN of the site safety officer.
steps:
- name: create-ehs-case
type: call
call: servicenow.create-ehs-case
with:
short_description: 'EHS Incident ({{severity}}): {{plant_code}}'
description: '{{incident_description}}'
category: safety_incident
severity: '{{severity}}'
location: '{{plant_code}}'
- name: log-sap-notification
type: call
call: sap.create-pm-notification
with:
plant: '{{plant_code}}'
notification_type: S2
short_text: 'EHS: {{severity}} at {{plant_code}}'
long_text: '{{incident_description}} | ServiceNow: {{create-ehs-case.number}}'
- name: notify-safety-officer
type: call
call: msteams.send-message
with:
recipient_upn: '{{safety_officer_upn}}'
text: 'EHS Incident Reported: {{severity}} at {{plant_code}} | ServiceNow: {{create-ehs-case.number}} | SAP Notification: {{log-sap-notification.notification_id}} | Details: {{incident_description}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://3m.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: ehs-cases
path: /table/sn_ehs_case
operations:
- name: create-ehs-case
method: POST
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/PM_NOTIFICATION_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: notifications
path: /MaintenanceNotification
operations:
- name: create-pm-notification
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
Automates production shift handover by collecting output data from SAP, summarizing open issues from ServiceNow, and posting a shift report to the plant operations Teams channel.
naftiko: '0.5'
info:
label: Production Shift Handover
description: Automates production shift handover by collecting output data from SAP, summarizing open issues from ServiceNow, and posting a shift report to the plant operations Teams channel.
tags:
- manufacturing
- production
- sap
- servicenow
- microsoft-teams
- operations
capability:
exposes:
- type: mcp
namespace: shift-management
port: 8080
tools:
- name: generate-shift-handover
description: Given a plant, line, and shift period, collect production data, open issues, and post handover report.
inputParameters:
- name: plant_code
in: body
type: string
description: The 3M plant code.
- name: production_line
in: body
type: string
description: Production line identifier.
- name: shift
in: body
type: string
description: Shift identifier (e.g., day, swing, night).
steps:
- name: get-production-output
type: call
call: sap.get-shift-output
with:
plant: '{{plant_code}}'
line: '{{production_line}}'
shift: '{{shift}}'
- name: get-open-issues
type: call
call: servicenow.get-open-incidents
with:
location: '{{plant_code}}'
equipment: '{{production_line}}'
- name: post-handover
type: call
call: msteams.post-channel-message
with:
team_id: $secrets.plant_ops_team_id
channel_id: $secrets.plant_ops_channel_id
text: 'Shift Handover: {{production_line}} at {{plant_code}} ({{shift}}) | Output: {{get-production-output.total_qty}} units | Scrap: {{get-production-output.scrap_qty}} | Open Issues: {{get-open-issues.count}}'
consumes:
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/PP_SHIFT_REPORT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: shift-output
path: /ShiftReport
inputParameters:
- name: plant
in: query
- name: line
in: query
- name: shift
in: query
operations:
- name: get-shift-output
method: GET
- type: http
namespace: servicenow
baseUri: https://3m.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
inputParameters:
- name: location
in: query
- name: equipment
in: query
operations:
- name: get-open-incidents
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
Retrieves a quality inspection lot from SAP QM by lot number, returning inspection results, usage decision, and defect counts for quality assurance teams.
naftiko: '0.5'
info:
label: SAP Quality Inspection Lot Lookup
description: Retrieves a quality inspection lot from SAP QM by lot number, returning inspection results, usage decision, and defect counts for quality assurance teams.
tags:
- quality
- sap
- sap-s4hana
- inspection
- manufacturing
- quality-control
capability:
exposes:
- type: mcp
namespace: quality-inspection
port: 8080
tools:
- name: get-inspection-lot
description: Look up a SAP quality inspection lot by number. Returns usage decision, inspection result, and defect count.
inputParameters:
- name: lot_number
in: body
type: string
description: The SAP inspection lot number.
call: sap.get-inspection-lot
with:
lot_number: '{{lot_number}}'
outputParameters:
- name: usage_decision
type: string
mapping: $.d.UsageDecision
- name: inspection_result
type: string
mapping: $.d.InspectionResult
- name: defect_count
type: string
mapping: $.d.NumberOfDefects
- name: material
type: string
mapping: $.d.Material
consumes:
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/QM_INSPECTION_LOT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: inspection-lots
path: /InspectionLot('{{lot_number}}')
inputParameters:
- name: lot_number
in: path
operations:
- name: get-inspection-lot
method: GET
outputRawFormat: json
When a Tableau workbook extract refresh fails, logs the failure to Datadog, opens a Jira ticket for the BI team, and notifies the dashboard owner in Microsoft Teams.
naftiko: '0.5'
info:
label: Tableau Dashboard Refresh Failure
description: When a Tableau workbook extract refresh fails, logs the failure to Datadog, opens a Jira ticket for the BI team, and notifies the dashboard owner in Microsoft Teams.
tags:
- analytics
- tableau
- datadog
- jira
- microsoft-teams
- business-intelligence
capability:
exposes:
- type: mcp
namespace: bi-ops
port: 8080
tools:
- name: handle-tableau-refresh-failure
description: Given a failed Tableau workbook name and owner, log to Datadog, open a Jira BI ticket, and notify the owner in Teams.
inputParameters:
- name: workbook_name
in: body
type: string
description: The Tableau workbook name.
- name: workbook_id
in: body
type: string
description: The Tableau workbook ID.
- name: owner_upn
in: body
type: string
description: Microsoft UPN of the workbook owner.
- name: error_message
in: body
type: string
description: Extract refresh error message.
steps:
- name: log-datadog
type: call
call: datadog-bi.create-event
with:
title: 'Tableau Refresh Failed: {{workbook_name}}'
text: 'Workbook: {{workbook_id}} | Error: {{error_message}} | Owner: {{owner_upn}}'
alert_type: error
tags: bi:tableau,workbook:{{workbook_name}}
- name: open-jira
type: call
call: jira-bi.create-issue
with:
project_key: BI
issuetype: Bug
summary: 'Tableau refresh failure: {{workbook_name}}'
description: 'Workbook: {{workbook_name}} ({{workbook_id}})
Owner: {{owner_upn}}
Error: {{error_message}}
Datadog: {{log-datadog.url}}'
- name: notify-owner
type: call
call: msteams-bi.send-message
with:
recipient_upn: '{{owner_upn}}'
text: 'Tableau Refresh Failed: {{workbook_name}} | Error: {{error_message}} | Jira: {{open-jira.key}}'
consumes:
- type: http
namespace: datadog-bi
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: jira-bi
baseUri: https://3m.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-bi
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
Orchestrates a new product regulatory submission by gathering product specs from SAP, creating a Jira submission tracker, uploading documents to SharePoint, and notifying the regulatory affairs team.
naftiko: '0.5'
info:
label: New Product Regulatory Submission
description: Orchestrates a new product regulatory submission by gathering product specs from SAP, creating a Jira submission tracker, uploading documents to SharePoint, and notifying the regulatory affairs team.
tags:
- regulatory
- compliance
- sap
- jira
- sharepoint
- product-development
capability:
exposes:
- type: mcp
namespace: regulatory-submissions
port: 8080
tools:
- name: submit-regulatory-package
description: Given a product material number, submission type, and target market, gather specs, create a tracker, upload docs, and notify the regulatory team.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number for the new product.
- name: submission_type
in: body
type: string
description: Type of regulatory submission (e.g., 510k, CE_mark, REACH).
- name: target_market
in: body
type: string
description: Target market for the submission (e.g., US, EU, APAC).
steps:
- name: get-product-specs
type: call
call: sap.get-material-master
with:
material_number: '{{material_number}}'
- name: create-submission-tracker
type: call
call: jira.create-issue
with:
project_key: REG
issuetype: Task
summary: 'Regulatory Submission: {{submission_type}} — {{material_number}} ({{target_market}})'
description: 'Product: {{get-product-specs.material_description}} | Type: {{submission_type}} | Market: {{target_market}}'
- name: create-sharepoint-folder
type: call
call: sharepoint.create-folder
with:
site_id: $secrets.regulatory_site_id
parent_path: /Submissions/{{submission_type}}
folder_name: '{{material_number}}-{{target_market}}'
- name: notify-regulatory-team
type: call
call: msteams.post-channel-message
with:
team_id: $secrets.regulatory_team_id
channel_id: $secrets.regulatory_channel_id
text: 'New Regulatory Submission: {{submission_type}} for {{material_number}} ({{target_market}}) | Jira: {{create-submission-tracker.key}} | SharePoint folder created'
consumes:
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/API_PRODUCT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: materials
path: /A_Product('{{material_number}}')
inputParameters:
- name: material_number
in: path
operations:
- name: get-material-master
method: GET
- type: http
namespace: jira
baseUri: https://3m.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: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: folders
path: /{{site_id}}/drive/root:{{parent_path}}/{{folder_name}}
inputParameters:
- name: site_id
in: path
- name: parent_path
in: path
- name: folder_name
in: path
operations:
- name: create-folder
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/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Assigns mandatory safety training in Workday Learning, creates a tracking record in ServiceNow, and sends a completion deadline reminder to the employee and their manager in Teams.
naftiko: '0.5'
info:
label: Safety Training Assignment
description: Assigns mandatory safety training in Workday Learning, creates a tracking record in ServiceNow, and sends a completion deadline reminder to the employee and their manager in Teams.
tags:
- safety
- training
- workday
- servicenow
- microsoft-teams
- compliance
capability:
exposes:
- type: mcp
namespace: safety-training
port: 8080
tools:
- name: assign-safety-training
description: Given an employee ID, training course, and deadline, assign in Workday, track in ServiceNow, and notify via Teams.
inputParameters:
- name: employee_id
in: body
type: string
description: The Workday employee ID.
- name: course_id
in: body
type: string
description: The Workday Learning course ID.
- name: deadline
in: body
type: string
description: Completion deadline date.
- name: employee_upn
in: body
type: string
description: Microsoft UPN of the employee.
steps:
- name: assign-course
type: call
call: workday.assign-learning
with:
employee_id: '{{employee_id}}'
course_id: '{{course_id}}'
due_date: '{{deadline}}'
- name: create-tracking-record
type: call
call: servicenow.create-task
with:
short_description: 'Safety training due: {{course_id}} for {{employee_id}}'
assigned_to: '{{employee_upn}}'
due_date: '{{deadline}}'
category: safety_training
- name: notify-employee
type: call
call: msteams.send-chat
with:
recipient_upn: '{{employee_upn}}'
text: 'You have been assigned mandatory safety training: {{course_id}}. Please complete by {{deadline}}. ServiceNow: {{create-tracking-record.number}}'
consumes:
- type: http
namespace: workday
baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/3m
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: learning
path: /learningAssignments
operations:
- name: assign-learning
method: POST
- type: http
namespace: servicenow
baseUri: https://3m.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
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: chats
path: /users/{{recipient_upn}}/chats
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-chat
method: POST
Manages environmental permit renewals by pulling permit data from ServiceNow, creating renewal tasks in Jira, and notifying the EHS director and regulatory team in Teams.
naftiko: '0.5'
info:
label: Environmental Permit Renewal
description: Manages environmental permit renewals by pulling permit data from ServiceNow, creating renewal tasks in Jira, and notifying the EHS director and regulatory team in Teams.
tags:
- ehs
- compliance
- regulatory
- servicenow
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ehs-permits
port: 8080
tools:
- name: initiate-permit-renewal
description: Given a permit ID and plant code, pull permit data, create renewal tasks, and notify stakeholders.
inputParameters:
- name: permit_id
in: body
type: string
description: The ServiceNow environmental permit record ID.
- name: plant_code
in: body
type: string
description: The 3M plant code.
- name: permit_type
in: body
type: string
description: Type of permit (e.g., air_emissions, water_discharge, waste_handling).
- name: expiry_date
in: body
type: string
description: Current permit expiry date.
steps:
- name: get-permit-details
type: call
call: servicenow.get-permit
with:
permit_id: '{{permit_id}}'
- name: create-renewal-tasks
type: call
call: jira.create-issue
with:
project_key: EHS
issuetype: Epic
summary: 'Permit Renewal: {{permit_type}} — {{plant_code}} (expires {{expiry_date}})'
description: 'Permit: {{permit_id}} | Type: {{permit_type}} | Plant: {{plant_code}} | Current expiry: {{expiry_date}} | Authority: {{get-permit-details.issuing_authority}}'
- name: notify-ehs-leadership
type: call
call: msteams.post-channel-message
with:
team_id: $secrets.ehs_team_id
channel_id: $secrets.ehs_permits_channel_id
text: 'Permit Renewal Required: {{permit_type}} at {{plant_code}} | Expires: {{expiry_date}} | Jira: {{create-renewal-tasks.key}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://3m.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: permits
path: /table/sn_ehs_permit/{{permit_id}}
inputParameters:
- name: permit_id
in: path
operations:
- name: get-permit
method: GET
- type: http
namespace: jira
baseUri: https://3m.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
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 Jira issue by key, returning summary, status, assignee, and priority for engineering and project management teams.
naftiko: '0.5'
info:
label: Jira Ticket Lookup
description: Retrieves a Jira issue by key, returning summary, status, assignee, and priority for engineering and project management teams.
tags:
- engineering
- jira
- project-management
- development
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: get-jira-issue
description: Look up a Jira issue by key. Returns summary, status, assignee, priority, and sprint.
inputParameters:
- name: issue_key
in: body
type: string
description: The Jira issue key (e.g., PROJ-1234).
call: jira.get-issue
with:
issue_key: '{{issue_key}}'
outputParameters:
- name: summary
type: string
mapping: $.fields.summary
- name: status
type: string
mapping: $.fields.status.name
- name: assignee
type: string
mapping: $.fields.assignee.displayName
- name: priority
type: string
mapping: $.fields.priority.name
consumes:
- type: http
namespace: jira
baseUri: https://3m.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_token
resources:
- name: issues
path: /issue/{{issue_key}}
inputParameters:
- name: issue_key
in: path
operations:
- name: get-issue
method: GET
Checks the last refresh status and timing of a Power BI dataset to verify data freshness for reporting and analytics teams.
naftiko: '0.5'
info:
label: Power BI Dataset Refresh Status
description: Checks the last refresh status and timing of a Power BI dataset to verify data freshness for reporting and analytics teams.
tags:
- analytics
- power-bi
- reporting
- data-quality
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: get-dataset-refresh-status
description: Check the last refresh status of a Power BI dataset. Returns status, start and end times, and error message if failed.
inputParameters:
- name: group_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.
call: powerbi.get-refresh-history
with:
group_id: '{{group_id}}'
dataset_id: '{{dataset_id}}'
outputParameters:
- name: status
type: string
mapping: $.value[0].status
- name: start_time
type: string
mapping: $.value[0].startTime
- name: end_time
type: string
mapping: $.value[0].endTime
consumes:
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: refresh-history
path: /groups/{{group_id}}/datasets/{{dataset_id}}/refreshes
inputParameters:
- name: group_id
in: path
- name: dataset_id
in: path
operations:
- name: get-refresh-history
method: GET
Assembles a weekly executive briefing by pulling sales pipeline from Salesforce, financial KPIs from Power BI, and operational metrics from Snowflake, then publishes the digest to a SharePoint executive portal and Teams channel.
naftiko: '0.5'
info:
label: Executive Briefing Digest
description: Assembles a weekly executive briefing by pulling sales pipeline from Salesforce, financial KPIs from Power BI, and operational metrics from Snowflake, then publishes the digest to a SharePoint executive portal and Teams channel.
tags:
- executive
- reporting
- salesforce
- power-bi
- snowflake
- sharepoint
- microsoft-teams
- digest
capability:
exposes:
- type: mcp
namespace: executive-reporting
port: 8080
tools:
- name: publish-executive-briefing
description: Pull pipeline from Salesforce, KPIs from Power BI, and ops metrics from Snowflake, then publish the digest to SharePoint and notify leadership in Teams.
inputParameters:
- name: week_ending
in: body
type: string
description: Week ending date in YYYY-MM-DD format.
- name: sharepoint_site_id
in: body
type: string
description: SharePoint executive portal site ID.
- name: leadership_channel_upn
in: body
type: string
description: Microsoft Teams channel or distribution UPN for leadership.
steps:
- name: get-pipeline
type: call
call: salesforce.get-pipeline-summary
with:
week_ending: '{{week_ending}}'
- name: get-financial-kpis
type: call
call: powerbi.get-dataset-rows
with:
dataset_name: executive-kpis
filter: week_ending eq '{{week_ending}}'
- name: publish-to-sharepoint
type: call
call: sharepoint.create-file
with:
site_id: '{{sharepoint_site_id}}'
file_path: ExecutiveBriefings/briefing-{{week_ending}}.md
content: '# 3M Executive Briefing — {{week_ending}}
## Pipeline
{{get-pipeline.summary}}
## Financial KPIs
{{get-financial-kpis.summary}}'
- name: notify-leadership
type: call
call: msteams.send-message
with:
recipient_upn: '{{leadership_channel_upn}}'
text: 'Executive Briefing Published (week of {{week_ending}}): Pipeline: {{get-pipeline.total_value}} | SharePoint: {{publish-to-sharepoint.url}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://3m.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: pipeline
path: /query
inputParameters:
- name: week_ending
in: query
operations:
- name: get-pipeline-summary
method: GET
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: dataset-rows
path: /datasets/{{dataset_name}}/tables/KPIs/rows
inputParameters:
- name: dataset_name
in: path
- name: filter
in: query
operations:
- name: get-dataset-rows
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:/{{file_path}}:/content
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: create-file
method: PUT
- 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
Promotes a SAP transport request through the landscape by triggering the release in SAP, logging the change in ServiceNow, and notifying the SAP Basis team in Teams.
naftiko: '0.5'
info:
label: SAP Transport Request Promotion
description: Promotes a SAP transport request through the landscape by triggering the release in SAP, logging the change in ServiceNow, and notifying the SAP Basis team in Teams.
tags:
- sap
- sap-s4hana
- servicenow
- microsoft-teams
- change-management
- development
capability:
exposes:
- type: mcp
namespace: sap-transport
port: 8080
tools:
- name: promote-transport
description: Given a transport number and target system, release the transport, log in ServiceNow, and notify SAP Basis.
inputParameters:
- name: transport_number
in: body
type: string
description: The SAP transport request number.
- name: target_system
in: body
type: string
description: Target system (e.g., QAS, PRD).
- name: change_ticket
in: body
type: string
description: ServiceNow change ticket number.
steps:
- name: release-transport
type: call
call: sap.release-transport
with:
transport: '{{transport_number}}'
target: '{{target_system}}'
- name: update-change-ticket
type: call
call: servicenow.update-change
with:
change_number: '{{change_ticket}}'
work_notes: 'Transport {{transport_number}} released to {{target_system}}. Status: {{release-transport.status}}'
- name: notify-basis
type: call
call: msteams.post-channel-message
with:
team_id: $secrets.sap_basis_team_id
channel_id: $secrets.sap_basis_channel_id
text: 'Transport {{transport_number}} released to {{target_system}} | Change: {{change_ticket}} | Status: {{release-transport.status}}'
consumes:
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/CTS_TRANSPORT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: transports
path: /Transport('{{transport}}')/Release
inputParameters:
- name: transport
in: path
operations:
- name: release-transport
method: POST
- type: http
namespace: servicenow
baseUri: https://3m.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: update-change
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
When a manufacturing asset health monitor signals degradation, creates a ServiceNow maintenance work order, cross-references the SAP Plant Maintenance module for asset details, and notifies the facility team in Microsoft Teams.
naftiko: '0.5'
info:
label: Equipment Maintenance Request
description: When a manufacturing asset health monitor signals degradation, creates a ServiceNow maintenance work order, cross-references the SAP Plant Maintenance module for asset details, and notifies the facility team in Microsoft Teams.
tags:
- manufacturing
- maintenance
- servicenow
- sap
- microsoft-teams
- asset-management
- industrial
capability:
exposes:
- type: mcp
namespace: plant-operations
port: 8080
tools:
- name: create-maintenance-request
description: Given an equipment ID and failure signal, fetch asset details from SAP Plant Maintenance, open a ServiceNow work order, and notify the facility team in Microsoft Teams.
inputParameters:
- name: equipment_id
in: body
type: string
description: The SAP Plant Maintenance equipment number.
- name: failure_signal
in: body
type: string
description: Description of the observed equipment fault or degradation signal.
- name: plant_code
in: body
type: string
description: The 3M manufacturing plant code where the equipment is located.
- name: priority
in: body
type: string
description: Maintenance priority (1=Emergency, 2=Urgent, 3=Normal, 4=Low).
steps:
- name: get-asset-details
type: call
call: sap.get-equipment
with:
equipment_id: '{{equipment_id}}'
plant: '{{plant_code}}'
- name: create-work-order
type: call
call: servicenow.create-work-order
with:
short_description: 'Maintenance Request: {{get-asset-details.equipment_description}} — {{failure_signal}}'
category: plant_maintenance
asset_tag: '{{equipment_id}}'
location: '{{plant_code}}'
priority: '{{priority}}'
description: 'Equipment: {{get-asset-details.equipment_description}}
Plant: {{plant_code}}
Fault: {{failure_signal}}
Last PM: {{get-asset-details.last_pm_date}}'
- name: notify-facility
type: call
call: msteams.send-message
with:
recipient_upn: plant-{{plant_code}}-ops@3m.com
text: 'Maintenance Request: {{get-asset-details.equipment_description}} ({{equipment_id}}) | Plant: {{plant_code}} | Priority: {{priority}} | Signal: {{failure_signal}} | Work Order: {{create-work-order.number}}'
consumes:
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/PM_EQUIPMENT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: equipment
path: /Equipment('{{equipment_id}}')
inputParameters:
- name: equipment_id
in: path
operations:
- name: get-equipment
method: GET
- type: http
namespace: servicenow
baseUri: https://3m.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: 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 Confluence page by ID, returning title, content body, last modified date, and author for knowledge management and documentation teams.
naftiko: '0.5'
info:
label: Confluence Page Lookup
description: Retrieves a Confluence page by ID, returning title, content body, last modified date, and author for knowledge management and documentation teams.
tags:
- knowledge-management
- confluence
- documentation
- collaboration
capability:
exposes:
- type: mcp
namespace: knowledge
port: 8080
tools:
- name: get-confluence-page
description: Look up a Confluence page by page ID. Returns title, body content, last modifier, and version.
inputParameters:
- name: page_id
in: body
type: string
description: The Confluence page ID.
call: confluence.get-page
with:
page_id: '{{page_id}}'
outputParameters:
- name: title
type: string
mapping: $.title
- name: body
type: string
mapping: $.body.storage.value
- name: last_modified
type: string
mapping: $.version.when
- name: author
type: string
mapping: $.version.by.displayName
consumes:
- type: http
namespace: confluence
baseUri: https://3m.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_token
resources:
- name: pages
path: /content/{{page_id}}
inputParameters:
- name: page_id
in: path
operations:
- name: get-page
method: GET
Coordinates a 3M product launch by publishing brand assets from Adobe Creative Cloud to SharePoint, scheduling the HubSpot email campaign, and posting launch readiness to the marketing Microsoft Teams channel.
naftiko: '0.5'
info:
label: Product Launch Content Pipeline
description: Coordinates a 3M product launch by publishing brand assets from Adobe Creative Cloud to SharePoint, scheduling the HubSpot email campaign, and posting launch readiness to the marketing Microsoft Teams channel.
tags:
- marketing
- product-launch
- adobe-creative-cloud
- sharepoint
- hubspot
- microsoft-teams
- content
capability:
exposes:
- type: mcp
namespace: product-launch
port: 8080
tools:
- name: execute-launch-content-pipeline
description: Given a product name and HubSpot campaign ID, publish approved brand assets to SharePoint, activate the HubSpot email campaign, and notify the marketing team in Teams.
inputParameters:
- name: product_name
in: body
type: string
description: The product name being launched.
- name: hubspot_campaign_id
in: body
type: string
description: The HubSpot email campaign ID to activate.
- name: sharepoint_library_id
in: body
type: string
description: SharePoint document library ID for brand assets.
- name: launch_date
in: body
type: string
description: Planned launch date in YYYY-MM-DD format.
steps:
- name: publish-assets
type: call
call: sharepoint.create-folder
with:
site_id: marketing_assets_site
folder_path: ProductLaunches/{{product_name}}_{{launch_date}}
- name: activate-campaign
type: call
call: hubspot.activate-campaign
with:
campaign_id: '{{hubspot_campaign_id}}'
- name: notify-marketing
type: call
call: msteams.send-message
with:
recipient_upn: marketing-team@3m.com
text: 'Launch Pipeline Complete: {{product_name}} | Launch Date: {{launch_date}} | Assets: {{publish-assets.url}} | HubSpot Campaign: {{hubspot_campaign_id}} activated.'
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}}
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: create-folder
method: POST
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com/marketing/v3
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: campaigns
path: /campaigns/{{campaign_id}}/activate
inputParameters:
- name: campaign_id
in: path
operations:
- name: activate-campaign
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
Returns current headcount by department and cost center from Workday and ADP, cross-referenced against SAP cost center hierarchy, for use in headcount planning and budget reporting.
naftiko: '0.5'
info:
label: Headcount and Payroll Snapshot
description: Returns current headcount by department and cost center from Workday and ADP, cross-referenced against SAP cost center hierarchy, for use in headcount planning and budget reporting.
tags:
- hr
- finance
- payroll
- workday
- adp
- sap
- headcount
- reporting
capability:
exposes:
- type: mcp
namespace: hr-finance
port: 8080
tools:
- name: get-headcount-snapshot
description: Returns employee headcount grouped by department and cost center from Workday, enriched with ADP payroll classification data.
call: workday.headcount-export
outputParameters:
- name: employees
type: array
mapping: $.data
items:
- name: employee_id
type: string
mapping: $.workerId
- name: full_name
type: string
mapping: $.name.formattedName
- name: department
type: string
mapping: $.organizationInfo.department
- name: cost_center
type: string
mapping: $.organizationInfo.costCenter
- name: employment_type
type: string
mapping: $.workerType
- name: get-payroll-by-cost-center
description: Returns ADP payroll totals grouped by SAP cost center code for a given pay period. Use for budget vs. actuals reconciliation.
inputParameters:
- name: pay_period_start
in: body
type: string
description: Start date of the pay period in YYYY-MM-DD format.
- name: pay_period_end
in: body
type: string
description: End date of the pay period in YYYY-MM-DD format.
call: adp.payroll-summary
with:
start_date: '{{pay_period_start}}'
end_date: '{{pay_period_end}}'
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
operations:
- name: headcount-export
method: GET
- type: http
namespace: adp
baseUri: https://api.adp.com
authentication:
type: bearer
token: $secrets.adp_token
resources:
- name: payroll
path: /payroll/v1/payroll-output
inputParameters:
- name: start_date
in: query
- name: end_date
in: query
operations:
- name: payroll-summary
method: GET
Extracts actuals from SAP S/4HANA and budget from Oracle Hyperion, computes variance, and publishes the result to the Power BI finance dashboard and posts a summary to the finance Microsoft Teams channel.
naftiko: '0.5'
info:
label: Budget vs Actuals Reporting
description: Extracts actuals from SAP S/4HANA and budget from Oracle Hyperion, computes variance, and publishes the result to the Power BI finance dashboard and posts a summary to the finance Microsoft Teams channel.
tags:
- finance
- budgeting
- sap
- oracle-hyperion
- power-bi
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: finance-reporting
port: 8080
tools:
- name: run-budget-vs-actuals
description: Pull actuals from SAP and budget from Hyperion for a cost center and period, compute variance, refresh Power BI, and post a summary to Teams.
inputParameters:
- name: cost_center
in: body
type: string
description: SAP cost center code.
- name: fiscal_year
in: body
type: string
description: Four-digit fiscal year.
- name: fiscal_period
in: body
type: string
description: Two-digit fiscal period.
steps:
- name: get-actuals
type: call
call: sap.get-cost-center-actuals
with:
cost_center: '{{cost_center}}'
fiscal_year: '{{fiscal_year}}'
fiscal_period: '{{fiscal_period}}'
- name: get-budget
type: call
call: oracle-hyperion.get-budget
with:
cost_center: '{{cost_center}}'
period: '{{fiscal_year}}.{{fiscal_period}}'
- name: refresh-dashboard
type: call
call: powerbi.refresh-dataset
with:
dataset_name: budget-vs-actuals-{{cost_center}}-{{fiscal_year}}-{{fiscal_period}}
- name: notify-finance
type: call
call: msteams.send-message
with:
recipient_upn: finance-reporting@3m.com
text: 'Budget vs Actuals: Cost Center {{cost_center}} | Period {{fiscal_year}}.{{fiscal_period}} | Actuals: {{get-actuals.total_actual}} | Budget: {{get-budget.total_budget}} | Power BI refreshed.'
consumes:
- type: http
namespace: sap
baseUri: https://3m-s4.sap.com/sap/opu/odata/sap/FAC_CO_COSTCENTER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: cost-center-actuals
path: /CostCenterActuals
inputParameters:
- name: cost_center
in: query
- name: fiscal_year
in: query
- name: fiscal_period
in: query
operations:
- name: get-cost-center-actuals
method: GET
- type: http
namespace: oracle-hyperion
baseUri: https://3m-hyperion.oracle.com/HyperionPlanning/rest/v3
authentication:
type: basic
username: $secrets.hyperion_user
password: $secrets.hyperion_password
resources:
- name: budget-data
path: /applications/3M_CONSOL/dataExport
inputParameters:
- name: cost_center
in: query
- name: period
in: query
operations:
- name: get-budget
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_name}}/refreshes
inputParameters:
- name: dataset_name
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: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
When Datadog fires a critical alert, creates a ServiceNow P1 incident, posts an alert to the Microsoft Teams on-call channel, and attaches the Datadog dashboard link for rapid triage.
naftiko: '0.5'
info:
label: IT Incident Response
description: When Datadog fires a critical alert, creates a ServiceNow P1 incident, posts an alert to the Microsoft Teams on-call channel, and attaches the Datadog dashboard link for rapid triage.
tags:
- itsm
- observability
- datadog
- servicenow
- microsoft-teams
- incident-response
- operations
capability:
exposes:
- type: mcp
namespace: it-ops
port: 8080
tools:
- name: handle-critical-alert
description: Given a Datadog monitor alert, open a ServiceNow P1 incident and notify the on-call channel in Microsoft Teams with full context.
inputParameters:
- name: monitor_id
in: body
type: string
description: The Datadog monitor ID that fired.
- name: monitor_name
in: body
type: string
description: Human-readable name of the firing monitor.
- name: host
in: body
type: string
description: The affected host or service.
- name: alert_url
in: body
type: string
description: URL to the Datadog monitor event.
- name: oncall_channel
in: body
type: string
description: Microsoft Teams channel ID for on-call notifications.
steps:
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'P1 Alert: {{monitor_name}} on {{host}}'
urgency: '1'
impact: '1'
category: infrastructure
description: 'Datadog monitor {{monitor_id}} fired for {{host}}. Dashboard: {{alert_url}}'
- name: notify-oncall
type: call
call: msteams.send-message
with:
recipient_upn: '{{oncall_channel}}'
text: 'P1 Incident Opened: {{monitor_name}} | Host: {{host}} | ServiceNow: {{create-incident.number}} | Datadog: {{alert_url}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://3m.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 Prometheus alerts on high CPU, scales the Azure Kubernetes Service cluster, creates a Datadog annotation, and posts a status update to Microsoft Teams.
naftiko: '0.5'
info:
label: Infrastructure Scaling Automation
description: When Prometheus alerts on high CPU, scales the Azure Kubernetes Service cluster, creates a Datadog annotation, and posts a status update to Microsoft Teams.
tags:
- infrastructure
- autoscaling
- prometheus
- azure-kubernetes-service
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: infra-scaling
port: 8080
tools:
- name: auto-scale-cluster
description: Given a cluster name and target node count, scale the AKS cluster, annotate Datadog, and notify the team.
inputParameters:
- name: cluster_name
in: body
type: string
description: The AKS cluster name.
- name: target_node_count
in: body
type: string
description: Desired number of nodes.
- name: trigger_metric
in: body
type: string
description: The Prometheus metric that triggered the scaling.
steps:
- name: scale-cluster
type: call
call: aks.scale-nodepool
with:
cluster_name: '{{cluster_name}}'
node_count: '{{target_node_count}}'
- name: annotate-datadog
type: call
call: datadog.create-event
with:
title: 'AKS Auto-Scale: {{cluster_name}}'
text: 'Scaled to {{target_node_count}} nodes. Trigger: {{trigger_metric}}'
alert_type: info
- name: notify-team
type: call
call: msteams.send-message
with:
channel: platform-ops
text: 'Auto-Scale Complete: {{cluster_name}} scaled to {{target_node_count}} nodes. Trigger: {{trigger_metric}}. Datadog event: {{annotate-datadog.id}}'
consumes:
- type: http
namespace: aks
baseUri: https://management.azure.com/subscriptions/$secrets.azure_subscription_id/resourceGroups
authentication:
type: bearer
token: $secrets.azure_token
resources:
- name: nodepools
path: /adidas-rg/providers/Microsoft.ContainerService/managedClusters/{{cluster_name}}/agentPools/default
inputParameters:
- name: cluster_name
in: path
operations:
- name: scale-nodepool
method: PUT
- 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: 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
operations:
- name: send-message
method: POST
Pulls online inventory from BigCommerce and warehouse stock from SAP S/4HANA, reconciles discrepancies, and logs mismatches in ServiceNow and a Google Sheet.
naftiko: '0.5'
info:
label: Omnichannel Inventory Reconciliation
description: Pulls online inventory from BigCommerce and warehouse stock from SAP S/4HANA, reconciles discrepancies, and logs mismatches in ServiceNow and a Google Sheet.
tags:
- supply-chain
- inventory
- bigcommerce
- sap-s4hana
- servicenow
- google-sheets
capability:
exposes:
- type: mcp
namespace: inventory-reconciliation
port: 8080
tools:
- name: reconcile-inventory
description: Given a product SKU, compare online and warehouse inventory and log any discrepancies.
inputParameters:
- name: sku
in: body
type: string
description: The product SKU to reconcile.
- name: warehouse_plant
in: body
type: string
description: The SAP plant code for the warehouse.
steps:
- name: get-online-stock
type: call
call: bigcommerce.get-product-stock
with:
sku: '{{sku}}'
- name: get-warehouse-stock
type: call
call: sap.get-material-stock
with:
material: '{{sku}}'
plant: '{{warehouse_plant}}'
- name: log-discrepancy
type: call
call: servicenow.create-incident
with:
short_description: 'Inventory mismatch: {{sku}} — Online: {{get-online-stock.quantity}} vs WH: {{get-warehouse-stock.quantity}}'
category: inventory
priority: '3'
description: 'SKU {{sku}} at plant {{warehouse_plant}}. BigCommerce: {{get-online-stock.quantity}}, SAP: {{get-warehouse-stock.quantity}}.'
- name: log-to-sheet
type: call
call: gsheets.append-row
with:
spreadsheet_id: $secrets.inventory_reconciliation_sheet
range: Discrepancies!A1
values: '{{sku}},{{warehouse_plant}},{{get-online-stock.quantity}},{{get-warehouse-stock.quantity}},{{log-discrepancy.number}}'
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/adidas/v3
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: products
path: /catalog/products
inputParameters:
- name: sku
in: query
operations:
- name: get-product-stock
method: GET
- type: http
namespace: sap
baseUri: https://adidas-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
operations:
- name: get-material-stock
method: GET
- type: http
namespace: servicenow
baseUri: https://adidas.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: gsheets
baseUri: https://sheets.googleapis.com/v4/spreadsheets
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: values
path: /{{spreadsheet_id}}/values/{{range}}:append
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: append-row
method: POST
Retrieves Jira issue status for Adidas engineering teams.
naftiko: '0.5'
info:
label: Jira Issue Status
description: Retrieves Jira issue status for Adidas engineering teams.
tags:
- devops
- jira
- project-management
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: get-issue
description: Look up Jira issue at Adidas.
inputParameters:
- name: issue_key
in: body
type: string
description: The issue_key to look up.
call: jira.get-issue_key
with:
issue_key: '{{issue_key}}'
consumes:
- type: http
namespace: jira
baseUri: https://adidas.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: jira_issue_status
method: GET
Retrieves Confluence page content for Adidas knowledge base.
naftiko: '0.5'
info:
label: Confluence Page Retrieval
description: Retrieves Confluence page content for Adidas knowledge base.
tags:
- collaboration
- confluence
- documentation
capability:
exposes:
- type: mcp
namespace: knowledge
port: 8080
tools:
- name: get-page
description: Get page at Adidas.
inputParameters:
- name: page_id
in: body
type: string
description: The page_id to look up.
call: confluence.get-page_id
with:
page_id: '{{page_id}}'
consumes:
- type: http
namespace: confluence
baseUri: https://adidas.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_api_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: confluence_page_retrieval
method: GET
Extracts customer behavior segments from Adobe Analytics, enriches with purchase history from SAP HANA, and pushes personalized recommendations to the BigCommerce storefront.
naftiko: '0.5'
info:
label: Personalization Engine Data Sync
description: Extracts customer behavior segments from Adobe Analytics, enriches with purchase history from SAP HANA, and pushes personalized recommendations to the BigCommerce storefront.
tags:
- personalization
- adobe-analytics
- sap-hana
- bigcommerce
capability:
exposes:
- type: mcp
namespace: personalization
port: 8080
tools:
- name: sync-personalization
description: Given a customer segment ID, pull behavior data and purchase history, then update storefront recommendations.
inputParameters:
- name: segment_id
in: body
type: string
description: The Adobe Analytics segment ID.
- name: report_suite_id
in: body
type: string
description: The Adobe Analytics report suite.
steps:
- name: get-segment-data
type: call
call: adobe-analytics.get-segment-users
with:
segment_id: '{{segment_id}}'
report_suite_id: '{{report_suite_id}}'
- name: get-purchase-history
type: call
call: sap-hana.query-purchase-history
with:
segment_id: '{{segment_id}}'
- name: update-recommendations
type: call
call: bigcommerce.update-customer-group
with:
segment_id: '{{segment_id}}'
recommended_products: '{{get-purchase-history.top_products}}'
behavioral_tags: '{{get-segment-data.interests}}'
consumes:
- type: http
namespace: adobe-analytics
baseUri: https://analytics.adobe.io/api/adidas
authentication:
type: bearer
token: $secrets.adobe_analytics_token
inputParameters:
- name: x-api-key
in: header
value: $secrets.adobe_client_id
resources:
- name: segments
path: /segments/{{segment_id}}/users
inputParameters:
- name: segment_id
in: path
operations:
- name: get-segment-users
method: GET
- type: http
namespace: sap-hana
baseUri: https://adidas-hana.sap.com/sap/hana/xs/api
authentication:
type: basic
username: $secrets.sap_hana_user
password: $secrets.sap_hana_password
resources:
- name: purchase-history
path: /analytics/purchases
operations:
- name: query-purchase-history
method: POST
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/adidas/v3
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: customer-groups
path: /customers/groups
operations:
- name: update-customer-group
method: PUT
Checks ServiceNow incident status for Adidas IT operations.
naftiko: '0.5'
info:
label: ServiceNow Incident Status Check
description: Checks ServiceNow incident status for Adidas IT operations.
tags:
- itsm
- servicenow
- incident-management
capability:
exposes:
- type: mcp
namespace: itsm
port: 8080
tools:
- name: get-incident
description: Look up incident at Adidas.
inputParameters:
- name: incident_id
in: body
type: string
description: The incident_id to look up.
call: servicenow.get-incident_id
with:
incident_id: '{{incident_id}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow_incident_status_che
method: GET
Drafts a support article from a resolved Zendesk ticket, publishes it to Notion, and shares the link in a Microsoft Teams support channel.
naftiko: '0.5'
info:
label: Knowledge Base Article Publisher
description: Drafts a support article from a resolved Zendesk ticket, publishes it to Notion, and shares the link in a Microsoft Teams support channel.
tags:
- knowledge-management
- zendesk
- notion
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: knowledge-base
port: 8080
tools:
- name: publish-kb-article
description: Given a resolved Zendesk ticket ID, extract the resolution, publish to Notion, and share in Teams.
inputParameters:
- name: ticket_id
in: body
type: string
description: The Zendesk ticket ID with the resolution to publish.
- name: category
in: body
type: string
description: The knowledge base category (e.g. shipping, returns, product-info).
steps:
- name: get-ticket
type: call
call: zendesk.get-ticket
with:
ticket_id: '{{ticket_id}}'
- name: create-article
type: call
call: notion.create-page
with:
parent_id: $secrets.kb_database_id
title: '{{get-ticket.subject}}'
properties_category: '{{category}}'
content: '{{get-ticket.resolution_notes}}'
- name: share-article
type: call
call: msteams.send-message
with:
channel: customer-support
text: 'New KB Article: {{get-ticket.subject}} | Category: {{category}} | Link: {{create-article.url}} | Source: Ticket #{{ticket_id}}'
consumes:
- type: http
namespace: zendesk
baseUri: https://adidas.zendesk.com/api/v2
authentication:
type: bearer
token: $secrets.zendesk_token
resources:
- name: tickets
path: /tickets/{{ticket_id}}.json
inputParameters:
- name: ticket_id
in: path
operations:
- name: get-ticket
method: GET
- type: http
namespace: notion
baseUri: https://api.notion.com/v1
authentication:
type: bearer
token: $secrets.notion_token
inputParameters:
- name: Notion-Version
in: header
value: '2022-06-28'
resources:
- name: pages
path: /pages
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/{{team_id}}/channels/{{channel_id}}/messages
operations:
- name: send-message
method: POST
When SAP detects a supplier delay, creates a ServiceNow incident, notifies the supply chain team in Microsoft Teams, and logs a risk entry in SAP S/4HANA.
naftiko: '0.5'
info:
label: Supply Chain Disruption Alert
description: When SAP detects a supplier delay, creates a ServiceNow incident, notifies the supply chain team in Microsoft Teams, and logs a risk entry in SAP S/4HANA.
tags:
- supply-chain
- sap-s4hana
- servicenow
- microsoft-teams
- risk-management
capability:
exposes:
- type: mcp
namespace: supply-chain
port: 8080
tools:
- name: handle-disruption
description: Given a supplier ID and delay details, create incident, notify the team, and log a supply chain risk.
inputParameters:
- name: supplier_id
in: body
type: string
description: The SAP supplier business partner ID.
- name: delay_days
in: body
type: string
description: Number of days the shipment is delayed.
- name: affected_materials
in: body
type: string
description: Comma-separated list of affected material numbers.
steps:
- name: get-supplier
type: call
call: sap.get-supplier
with:
supplier_id: '{{supplier_id}}'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Supply chain delay: {{get-supplier.name}} — {{delay_days}} days'
category: supply_chain
priority: '2'
description: 'Supplier {{get-supplier.name}} ({{supplier_id}}) delayed by {{delay_days}} days. Affected materials: {{affected_materials}}.'
- name: notify-team
type: call
call: msteams.send-message
with:
channel: supply-chain-alerts
text: 'Supplier Delay Alert: {{get-supplier.name}} | Delay: {{delay_days}} days | Materials: {{affected_materials}} | Incident: {{create-incident.number}}'
- name: log-risk
type: call
call: sap.create-risk-entry
with:
supplier_id: '{{supplier_id}}'
risk_type: DELIVERY_DELAY
severity: HIGH
description: '{{delay_days}} day delay affecting materials: {{affected_materials}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-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_id}}')
inputParameters:
- name: supplier_id
in: path
operations:
- name: get-supplier
method: GET
- name: risk-entries
path: /A_SupplierRisk
operations:
- name: create-risk-entry
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.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/{{team_id}}/channels/{{channel_id}}/messages
operations:
- name: send-message
method: POST
Analyzes sell-through rates in Snowflake, calculates optimal markdowns, updates pricing in SAP, refreshes dashboards, and notifies merchandising.
naftiko: '0.5'
info:
label: Seasonal Markdown Optimization
description: Analyzes sell-through rates in Snowflake, calculates optimal markdowns, updates pricing in SAP, refreshes dashboards, and notifies merchandising.
tags:
- merchandising
- snowflake
- sap
- powerbi
- slack
capability:
exposes:
- type: mcp
namespace: merchandising
port: 8080
tools:
- name: seasonal_markdown_optimization
description: Orchestrate seasonal markdown optimization workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-snowflake
type: call
call: snowflake.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-sap
type: call
call: sap.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-slack
type: call
call: slack.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-servicenow
type: call
call: servicenow.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
Retrieves Datadog monitor status for Adidas infrastructure.
naftiko: '0.5'
info:
label: Datadog Monitor Status
description: Retrieves Datadog monitor status for Adidas infrastructure.
tags:
- monitoring
- datadog
- alerting
capability:
exposes:
- type: mcp
namespace: observability
port: 8080
tools:
- name: get-monitor
description: Check monitor at Adidas.
inputParameters:
- name: monitor_id
in: body
type: string
description: The monitor_id to look up.
call: datadog.get-monitor_id
with:
monitor_id: '{{monitor_id}}'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apiKey
key: $secrets.datadog_api_key
header: DD-API-KEY
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: datadog_monitor_status
method: GET
Retrieves experiment results from Google Optimize and Adobe Analytics, consolidates them, and posts findings to a Notion knowledge base page.
naftiko: '0.5'
info:
label: E-Commerce A/B Test Result Collector
description: Retrieves experiment results from Google Optimize and Adobe Analytics, consolidates them, and posts findings to a Notion knowledge base page.
tags:
- experimentation
- google-optimize
- adobe-analytics
- notion
capability:
exposes:
- type: mcp
namespace: experimentation
port: 8080
tools:
- name: collect-ab-results
description: Given an experiment ID, collect results from Google Optimize and Adobe Analytics and write the summary to Notion.
inputParameters:
- name: experiment_id
in: body
type: string
description: The Google Optimize experiment ID.
- name: report_suite_id
in: body
type: string
description: The Adobe Analytics report suite ID.
- name: notion_page_id
in: body
type: string
description: The Notion page ID where results will be appended.
steps:
- name: get-optimize-results
type: call
call: google-optimize.get-experiment
with:
experiment_id: '{{experiment_id}}'
- name: get-adobe-segment
type: call
call: adobe-analytics.get-segment-report
with:
report_suite_id: '{{report_suite_id}}'
experiment_id: '{{experiment_id}}'
- name: write-to-notion
type: call
call: notion.append-block
with:
page_id: '{{notion_page_id}}'
content: 'Experiment: {{experiment_id}} | Winner: {{get-optimize-results.winner_variant}} | Lift: {{get-optimize-results.improvement_pct}}% | Revenue Impact: {{get-adobe-segment.revenue_delta}} | Confidence: {{get-optimize-results.confidence}}%'
consumes:
- type: http
namespace: google-optimize
baseUri: https://www.googleapis.com/analytics/v3/management
authentication:
type: bearer
token: $secrets.google_optimize_token
resources:
- name: experiments
path: /accounts/adidas/webproperties/UA-XXXXX/profiles/YYYYY/experiments/{{experiment_id}}
inputParameters:
- name: experiment_id
in: path
operations:
- name: get-experiment
method: GET
- type: http
namespace: adobe-analytics
baseUri: https://analytics.adobe.io/api/adidas/reports
authentication:
type: bearer
token: $secrets.adobe_analytics_token
inputParameters:
- name: x-api-key
in: header
value: $secrets.adobe_client_id
resources:
- name: reports
path: /ranked
operations:
- name: get-segment-report
method: POST
- type: http
namespace: notion
baseUri: https://api.notion.com/v1
authentication:
type: bearer
token: $secrets.notion_token
inputParameters:
- name: Notion-Version
in: header
value: '2022-06-28'
resources:
- name: blocks
path: /blocks/{{page_id}}/children
inputParameters:
- name: page_id
in: path
operations:
- name: append-block
method: PATCH
Retrieves QC results from SAP, runs statistical analysis in Snowflake, flags defective batches, creates Jira tasks, and notifies quality team.
naftiko: '0.5'
info:
label: Product Quality Inspection Pipeline
description: Retrieves QC results from SAP, runs statistical analysis in Snowflake, flags defective batches, creates Jira tasks, and notifies quality team.
tags:
- quality
- sap
- snowflake
- jira
- slack
capability:
exposes:
- type: mcp
namespace: quality
port: 8080
tools:
- name: product_quality_inspection_pipeline
description: Orchestrate product quality inspection pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-sap
type: call
call: sap.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-snowflake
type: call
call: snowflake.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-jira
type: call
call: jira.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: jira
baseUri: https://adidas.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Queries Grafana dashboard data for Adidas monitoring.
naftiko: '0.5'
info:
label: Grafana Dashboard Query
description: Queries Grafana dashboard data for Adidas monitoring.
tags:
- monitoring
- grafana
- dashboards
capability:
exposes:
- type: mcp
namespace: monitoring
port: 8080
tools:
- name: get-dashboard
description: Query dashboard at Adidas.
inputParameters:
- name: dashboard_uid
in: body
type: string
description: The dashboard_uid to look up.
call: grafana.get-dashboard_uid
with:
dashboard_uid: '{{dashboard_uid}}'
consumes:
- type: http
namespace: grafana
baseUri: https://adidas-grafana.com/api
authentication:
type: bearer
token: $secrets.grafana_api_key
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: grafana_dashboard_query
method: GET
Validates inventory in SAP, checks marketing assets in Adobe, confirms pricing in Salesforce, updates e-commerce catalog, and notifies launch team.
naftiko: '0.5'
info:
label: Product Launch Readiness Orchestrator
description: Validates inventory in SAP, checks marketing assets in Adobe, confirms pricing in Salesforce, updates e-commerce catalog, and notifies launch team.
tags:
- product-launch
- sap
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: product-launch
port: 8080
tools:
- name: product_launch_readiness_orchestrator
description: Orchestrate product launch readiness orchestrator workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-sap
type: call
call: sap.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-salesforce
type: call
call: salesforce.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-slack
type: call
call: slack.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-servicenow
type: call
call: servicenow.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: salesforce-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
When seasonal markdowns are triggered, updates product prices in BigCommerce, adjusts SAP pricing conditions, and sends a promotional email via Adobe Campaign.
naftiko: '0.5'
info:
label: Seasonal Markdown Execution
description: When seasonal markdowns are triggered, updates product prices in BigCommerce, adjusts SAP pricing conditions, and sends a promotional email via Adobe Campaign.
tags:
- retail
- pricing
- bigcommerce
- sap-s4hana
- adobe-campaign
capability:
exposes:
- type: mcp
namespace: markdown
port: 8080
tools:
- name: execute-markdown
description: Given a product category, discount percentage, and effective date, apply markdowns across all channels.
inputParameters:
- name: category
in: body
type: string
description: Product category to markdown.
- name: discount_pct
in: body
type: string
description: Discount percentage to apply.
- name: effective_date
in: body
type: string
description: Markdown effective date in YYYY-MM-DD format.
steps:
- name: update-ecommerce-prices
type: call
call: bigcommerce.batch-update-prices
with:
category: '{{category}}'
discount_pct: '{{discount_pct}}'
effective_date: '{{effective_date}}'
- name: update-sap-conditions
type: call
call: sap.update-pricing-condition
with:
condition_type: ZK07
category: '{{category}}'
discount_pct: '{{discount_pct}}'
valid_from: '{{effective_date}}'
- name: send-promo-email
type: call
call: adobe-campaign.create-delivery
with:
template: seasonal_markdown_v1
category: '{{category}}'
discount_pct: '{{discount_pct}}'
scheduled_date: '{{effective_date}}'
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/adidas/v3
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: products
path: /catalog/products
operations:
- name: batch-update-prices
method: PUT
- type: http
namespace: sap
baseUri: https://adidas-s4.sap.com/sap/opu/odata/sap/API_SLSPRICINGCONDITIONRECORD_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: conditions
path: /A_SlsPrcgCndnRecdValidity
operations:
- name: update-pricing-condition
method: POST
- type: http
namespace: adobe-campaign
baseUri: https://mc.adobe.io/adidas/campaign
authentication:
type: bearer
token: $secrets.adobe_campaign_token
resources:
- name: deliveries
path: /deliveries
operations:
- name: create-delivery
method: POST
When an order is placed on BigCommerce, checks SAP inventory, creates a shipment in SAP S/4HANA, and notifies the customer via Zendesk with tracking details.
naftiko: '0.5'
info:
label: E-Commerce Order Fulfillment Tracker
description: When an order is placed on BigCommerce, checks SAP inventory, creates a shipment in SAP S/4HANA, and notifies the customer via Zendesk with tracking details.
tags:
- ecommerce
- fulfillment
- bigcommerce
- sap-s4hana
- zendesk
capability:
exposes:
- type: mcp
namespace: order-fulfillment
port: 8080
tools:
- name: fulfill-order
description: Given a BigCommerce order ID and customer email, verify inventory, create a shipment, and send tracking info to the customer.
inputParameters:
- name: order_id
in: body
type: string
description: The BigCommerce order ID.
- name: customer_email
in: body
type: string
description: The customer email address for notification.
steps:
- name: get-order
type: call
call: bigcommerce.get-order
with:
order_id: '{{order_id}}'
- name: check-inventory
type: call
call: sap.check-availability
with:
sku: '{{get-order.line_items[0].sku}}'
quantity: '{{get-order.line_items[0].quantity}}'
- name: create-shipment
type: call
call: sap.create-delivery
with:
order_reference: '{{order_id}}'
sku: '{{get-order.line_items[0].sku}}'
ship_to: '{{get-order.shipping_address}}'
- name: notify-customer
type: call
call: zendesk.create-ticket
with:
requester_email: '{{customer_email}}'
subject: Your Adidas order {{order_id}} has shipped!
body: 'Tracking number: {{create-shipment.tracking_number}}. Estimated delivery: {{create-shipment.estimated_delivery}}.'
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/adidas/v2
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: orders
path: /orders/{{order_id}}
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: sap
baseUri: https://adidas-s4.sap.com/sap/opu/odata/sap/API_OUTBOUND_DELIVERY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: availability
path: /A_MaterialStock
operations:
- name: check-availability
method: GET
- name: deliveries
path: /A_OutbDeliveryHeader
operations:
- name: create-delivery
method: POST
- type: http
namespace: zendesk
baseUri: https://adidas.zendesk.com/api/v2
authentication:
type: bearer
token: $secrets.zendesk_token
resources:
- name: tickets
path: /tickets.json
operations:
- name: create-ticket
method: POST
Queries SAP S/4HANA for real-time stock levels of a given SKU across all regional warehouses. Used by merchandising and store operations teams.
naftiko: '0.5'
info:
label: Product Inventory Lookup
description: Queries SAP S/4HANA for real-time stock levels of a given SKU across all regional warehouses. Used by merchandising and store operations teams.
tags:
- retail
- inventory
- sap-s4hana
capability:
exposes:
- type: mcp
namespace: inventory
port: 8080
tools:
- name: get-sku-inventory
description: Look up current inventory levels for a product SKU across all Adidas distribution centers.
inputParameters:
- name: sku
in: body
type: string
description: The Adidas product SKU identifier.
call: sap.get-inventory
with:
sku: '{{sku}}'
outputParameters:
- name: total_available
type: string
mapping: $.d.AvailableStock
- name: warehouse_breakdown
type: string
mapping: $.d.PlantStockDetails
- name: reserved_quantity
type: string
mapping: $.d.ReservedQuantity
consumes:
- type: http
namespace: sap
baseUri: https://adidas-s4.sap.com/sap/opu/odata/sap/API_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_MatlStkInAcctMod(Material='{{sku}}')
inputParameters:
- name: sku
in: path
operations:
- name: get-inventory
method: GET
Analyzes trend data in Snowflake, forecasts demand by category, creates collection plans in Jira, updates SAP materials, and notifies design team.
naftiko: '0.5'
info:
label: Collection Planning Pipeline
description: Analyzes trend data in Snowflake, forecasts demand by category, creates collection plans in Jira, updates SAP materials, and notifies design team.
tags:
- design
- snowflake
- jira
- sap
- slack
capability:
exposes:
- type: mcp
namespace: design
port: 8080
tools:
- name: collection_planning_pipeline
description: Orchestrate collection planning pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-snowflake
type: call
call: snowflake.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-jira
type: call
call: jira.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-sap
type: call
call: sap.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: jira
baseUri: https://adidas.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: jira-op
method: POST
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Runs a PromQL instant query against the Adidas Prometheus cluster and returns the current metric value.
naftiko: '0.5'
info:
label: Prometheus Metric Query
description: Runs a PromQL instant query against the Adidas Prometheus cluster and returns the current metric value.
tags:
- observability
- prometheus
- metrics
capability:
exposes:
- type: mcp
namespace: metrics
port: 8080
tools:
- name: query-metric
description: Execute a PromQL instant query and return the current value for the specified metric expression.
inputParameters:
- name: promql
in: body
type: string
description: The PromQL expression to evaluate.
call: prometheus.instant-query
with:
promql: '{{promql}}'
outputParameters:
- name: value
type: string
mapping: $.data.result[0].value[1]
- name: metric
type: string
mapping: $.data.result[0].metric
consumes:
- type: http
namespace: prometheus
baseUri: https://prometheus.adidas.internal/api/v1
authentication:
type: bearer
token: $secrets.prometheus_token
resources:
- name: query
path: /query
inputParameters:
- name: query
in: query
value: '{{promql}}'
operations:
- name: instant-query
method: GET
Collects engagement metrics from social APIs, aggregates in Snowflake, updates HubSpot campaign records, refreshes dashboards, and notifies marketing.
naftiko: '0.5'
info:
label: Social Media Campaign Tracker
description: Collects engagement metrics from social APIs, aggregates in Snowflake, updates HubSpot campaign records, refreshes dashboards, and notifies marketing.
tags:
- marketing
- hubspot
- snowflake
- powerbi
- slack
capability:
exposes:
- type: mcp
namespace: marketing
port: 8080
tools:
- name: social_media_campaign_tracker
description: Orchestrate social media campaign tracker workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-hubspot
type: call
call: hubspot.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-snowflake
type: call
call: snowflake.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-slack
type: call
call: slack.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-servicenow
type: call
call: servicenow.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: hubspot-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
Exports customer segments from Snowflake, syncs to Salesforce Marketing Cloud, validates delivery in Datadog, and notifies marketing.
naftiko: '0.5'
info:
label: Personalization Engine Sync Pipeline
description: Exports customer segments from Snowflake, syncs to Salesforce Marketing Cloud, validates delivery in Datadog, and notifies marketing.
tags:
- marketing
- snowflake
- salesforce
- datadog
- slack
capability:
exposes:
- type: mcp
namespace: marketing
port: 8080
tools:
- name: personalization_engine_sync_pipeline
description: Orchestrate personalization engine sync pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-snowflake
type: call
call: snowflake.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-salesforce
type: call
call: salesforce.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-datadog
type: call
call: datadog.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: salesforce-op
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apiKey
key: $secrets.datadog_api_key
header: DD-API-KEY
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: datadog-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Validates shipment data from SAP against trade regulations, checks denied party lists, creates compliance records, and notifies trade compliance team.
naftiko: '0.5'
info:
label: Cross-Border Trade Compliance
description: Validates shipment data from SAP against trade regulations, checks denied party lists, creates compliance records, and notifies trade compliance team.
tags:
- trade-compliance
- sap
- servicenow
- jira
- slack
capability:
exposes:
- type: mcp
namespace: trade-compliance
port: 8080
tools:
- name: cross_border_trade_compliance
description: Orchestrate cross-border trade compliance workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-sap
type: call
call: sap.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-servicenow
type: call
call: servicenow.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-jira
type: call
call: jira.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
- type: http
namespace: jira
baseUri: https://adidas.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Deploys a trained model from Azure Machine Learning to Azure Kubernetes Service, registers the deployment in Datadog, and notifies the data science team in Teams.
naftiko: '0.5'
info:
label: ML Model Deployment Pipeline
description: Deploys a trained model from Azure Machine Learning to Azure Kubernetes Service, registers the deployment in Datadog, and notifies the data science team in Teams.
tags:
- machine-learning
- azure-machine-learning
- azure-kubernetes-service
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ml-deployment
port: 8080
tools:
- name: deploy-model
description: Given a model name and version, deploy to AKS, register in Datadog, and notify the team.
inputParameters:
- name: model_name
in: body
type: string
description: The Azure ML model name.
- name: model_version
in: body
type: string
description: The model version to deploy.
- name: endpoint_name
in: body
type: string
description: The AKS inference endpoint name.
steps:
- name: create-deployment
type: call
call: azure-ml.create-deployment
with:
model_name: '{{model_name}}'
model_version: '{{model_version}}'
endpoint_name: '{{endpoint_name}}'
- name: register-monitor
type: call
call: datadog.create-monitor
with:
name: 'ML Model: {{model_name}} v{{model_version}}'
type: metric alert
query: avg(last_5m):avg:ml.inference.latency{model:{{model_name}}} > 500
- name: notify-team
type: call
call: msteams.send-message
with:
channel: data-science
text: 'Model Deployed: {{model_name}} v{{model_version}} to {{endpoint_name}} | Status: {{create-deployment.provisioning_state}} | Monitor: {{register-monitor.id}}'
consumes:
- type: http
namespace: azure-ml
baseUri: https://ml.azure.com/api/subscriptions/$secrets.azure_subscription_id/resourceGroups/adidas-ml-rg/providers/Microsoft.MachineLearningServices/workspaces/adidas-ml
authentication:
type: bearer
token: $secrets.azure_token
resources:
- name: deployments
path: /onlineEndpoints/{{endpoint_name}}/deployments
inputParameters:
- name: endpoint_name
in: path
operations:
- name: create-deployment
method: PUT
- 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: monitors
path: /monitor
operations:
- name: create-monitor
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
operations:
- name: send-message
method: POST
When an Apache Spark job fails, logs the failure in Datadog, opens a ServiceNow incident, and notifies the data engineering team in Microsoft Teams.
naftiko: '0.5'
info:
label: Data Pipeline Failure Handler
description: When an Apache Spark job fails, logs the failure in Datadog, opens a ServiceNow incident, and notifies the data engineering team in Microsoft Teams.
tags:
- data-engineering
- apache-spark
- datadog
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: data-ops
port: 8080
tools:
- name: handle-spark-failure
description: Given a Spark application ID and error details, create observability event, incident, and team alert.
inputParameters:
- name: application_id
in: body
type: string
description: The Spark application ID.
- name: job_name
in: body
type: string
description: The name of the failed Spark job.
- name: error_message
in: body
type: string
description: The error message from the failure.
steps:
- name: log-event
type: call
call: datadog.create-event
with:
title: 'Spark Job Failure: {{job_name}}'
text: 'App: {{application_id}} | Error: {{error_message}}'
alert_type: error
tags: spark,job:{{job_name}}
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: '[Data Pipeline] Spark job failed: {{job_name}}'
category: data_engineering
priority: '2'
description: 'Application: {{application_id}}
Job: {{job_name}}
Error: {{error_message}}'
- name: alert-team
type: call
call: msteams.send-message
with:
channel: data-engineering-alerts
text: 'Spark Failure: {{job_name}} | App: {{application_id}} | Error: {{error_message}} | Incident: {{create-incident.number}}'
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: events
path: /events
operations:
- name: create-event
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.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/{{team_id}}/channels/{{channel_id}}/messages
operations:
- name: send-message
method: POST
Monitors order fulfillment times from SAP, checks against SLAs in Snowflake, creates escalations in ServiceNow, and notifies operations.
naftiko: '0.5'
info:
label: Order Fulfillment SLA Monitor
description: Monitors order fulfillment times from SAP, checks against SLAs in Snowflake, creates escalations in ServiceNow, and notifies operations.
tags:
- fulfillment
- sap
- snowflake
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: fulfillment
port: 8080
tools:
- name: order_fulfillment_sla_monitor
description: Orchestrate order fulfillment sla monitor workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-sap
type: call
call: sap.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-snowflake
type: call
call: snowflake.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-servicenow
type: call
call: servicenow.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Identifies affected batches in SAP, traces distribution, notifies retailers via Salesforce, creates recall task force in ServiceNow, and alerts legal.
naftiko: '0.5'
info:
label: Product Recall Management Pipeline
description: Identifies affected batches in SAP, traces distribution, notifies retailers via Salesforce, creates recall task force in ServiceNow, and alerts legal.
tags:
- quality
- sap
- salesforce
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: quality
port: 8080
tools:
- name: product_recall_management_pipeline
description: Orchestrate product recall management pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-sap
type: call
call: sap.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-salesforce
type: call
call: salesforce.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-servicenow
type: call
call: servicenow.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: salesforce-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Runs a Terraform plan via GitHub Actions, detects drift, opens a ServiceNow change request, and alerts the infrastructure team in Teams.
naftiko: '0.5'
info:
label: Terraform Drift Detection and Remediation
description: Runs a Terraform plan via GitHub Actions, detects drift, opens a ServiceNow change request, and alerts the infrastructure team in Teams.
tags:
- infrastructure
- terraform
- github-actions
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: iac-drift
port: 8080
tools:
- name: detect-and-remediate-drift
description: Given a Terraform workspace, run a plan, detect drift, and open a change request if drift is found.
inputParameters:
- name: workspace
in: body
type: string
description: The Terraform Cloud workspace name.
- name: repository
in: body
type: string
description: The GitHub repository containing the Terraform code.
steps:
- name: trigger-plan
type: call
call: github-actions.trigger-workflow
with:
repository: '{{repository}}'
workflow_id: terraform-plan.yml
ref: main
inputs_workspace: '{{workspace}}'
- name: open-change-request
type: call
call: servicenow.create-change-request
with:
short_description: 'Terraform drift detected: {{workspace}}'
category: infrastructure
description: 'Drift detected in workspace {{workspace}}. Plan run: {{trigger-plan.run_id}}. Repository: {{repository}}.'
risk: moderate
- name: notify-team
type: call
call: msteams.send-message
with:
channel: infra-ops
text: 'Terraform Drift: {{workspace}} | Change Request: {{open-change-request.number}} | Plan: {{trigger-plan.run_id}} | Repo: {{repository}}'
consumes:
- type: http
namespace: github-actions
baseUri: https://api.github.com/repos
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: workflows
path: /{{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: servicenow
baseUri: https://adidas.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.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
operations:
- name: send-message
method: POST
Receives wholesale orders in Salesforce, validates credit in SAP, creates fulfillment orders, updates Snowflake analytics, and notifies sales.
naftiko: '0.5'
info:
label: Wholesale Order Processing Pipeline
description: Receives wholesale orders in Salesforce, validates credit in SAP, creates fulfillment orders, updates Snowflake analytics, and notifies sales.
tags:
- wholesale
- salesforce
- sap
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: wholesale
port: 8080
tools:
- name: wholesale_order_processing_pipeline
description: Orchestrate wholesale order processing pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-salesforce
type: call
call: salesforce.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-sap
type: call
call: sap.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-snowflake
type: call
call: snowflake.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: salesforce-op
method: POST
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Monitors transactions from Stripe, runs fraud scoring in Snowflake, blocks suspicious orders, creates cases in ServiceNow, and alerts fraud team.
naftiko: '0.5'
info:
label: E-Commerce Fraud Detection Pipeline
description: Monitors transactions from Stripe, runs fraud scoring in Snowflake, blocks suspicious orders, creates cases in ServiceNow, and alerts fraud team.
tags:
- fraud
- stripe
- snowflake
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: fraud
port: 8080
tools:
- name: e_commerce_fraud_detection_pipeline
description: Orchestrate e-commerce fraud detection pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-stripe
type: call
call: stripe.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-snowflake
type: call
call: snowflake.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-servicenow
type: call
call: servicenow.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: stripe
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: stripe-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Searches the Adidas product catalog index in Elasticsearch by keyword and returns matching product names, prices, and availability.
naftiko: '0.5'
info:
label: Elasticsearch Product Search
description: Searches the Adidas product catalog index in Elasticsearch by keyword and returns matching product names, prices, and availability.
tags:
- search
- elasticsearch
- product-catalog
capability:
exposes:
- type: mcp
namespace: product-search
port: 8080
tools:
- name: search-products
description: Search the product catalog by keyword and return matching products with prices and availability.
inputParameters:
- name: query
in: body
type: string
description: Free-text search query for products.
- name: limit
in: body
type: string
description: Maximum number of results to return.
call: elasticsearch.search
with:
query: '{{query}}'
limit: '{{limit}}'
outputParameters:
- name: total_hits
type: string
mapping: $.hits.total.value
- name: products
type: string
mapping: $.hits.hits
consumes:
- type: http
namespace: elasticsearch
baseUri: https://es.adidas.internal:9200
authentication:
type: basic
username: $secrets.es_user
password: $secrets.es_password
resources:
- name: product-index
path: /products/_search
operations:
- name: search
method: POST
When SonarQube detects a critical vulnerability, creates a GitHub issue, opens a ServiceNow security incident, and alerts the security team via Teams.
naftiko: '0.5'
info:
label: Security Vulnerability Response
description: When SonarQube detects a critical vulnerability, creates a GitHub issue, opens a ServiceNow security incident, and alerts the security team via Teams.
tags:
- security
- sonarqube
- github
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: security-response
port: 8080
tools:
- name: handle-vulnerability
description: Given a SonarQube project and vulnerability details, create tracking issue, security incident, and alert the team.
inputParameters:
- name: project_key
in: body
type: string
description: The SonarQube project key.
- name: vulnerability_id
in: body
type: string
description: The SonarQube vulnerability issue key.
- name: severity
in: body
type: string
description: Vulnerability severity (CRITICAL, HIGH, MEDIUM, LOW).
steps:
- name: get-vulnerability
type: call
call: sonarqube.get-issue
with:
issue_key: '{{vulnerability_id}}'
- name: create-gh-issue
type: call
call: github.create-issue
with:
repository: adidas/{{project_key}}
title: '[Security] {{severity}}: {{get-vulnerability.message}}'
body: 'SonarQube: {{vulnerability_id}}
Severity: {{severity}}
Component: {{get-vulnerability.component}}
Line: {{get-vulnerability.line}}'
labels: security,{{severity}}
- name: create-security-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Security vulnerability: {{project_key}} — {{severity}}'
category: security
priority: '1'
description: '{{get-vulnerability.message}}. GitHub: {{create-gh-issue.html_url}}'
- name: alert-security
type: call
call: msteams.send-message
with:
channel: security-alerts
text: 'Security Alert: {{severity}} vulnerability in {{project_key}} | {{get-vulnerability.message}} | GH: {{create-gh-issue.html_url}} | Incident: {{create-security-incident.number}}'
consumes:
- type: http
namespace: sonarqube
baseUri: https://sonarqube.adidas.internal/api
authentication:
type: bearer
token: $secrets.sonarqube_token
resources:
- name: issues
path: /issues/search
inputParameters:
- name: issues
in: query
value: '{{issue_key}}'
operations:
- name: get-issue
method: GET
- type: http
namespace: github
baseUri: https://api.github.com/repos
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: issues
path: /{{repository}}/issues
inputParameters:
- name: repository
in: path
operations:
- name: create-issue
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.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/{{team_id}}/channels/{{channel_id}}/messages
operations:
- name: send-message
method: POST
Retrieves PagerDuty incident details for Adidas on-call teams.
naftiko: '0.5'
info:
label: PagerDuty Incident Details
description: Retrieves PagerDuty incident details for Adidas on-call teams.
tags:
- devops
- pagerduty
- on-call
capability:
exposes:
- type: mcp
namespace: incident-mgmt
port: 8080
tools:
- name: get-incident
description: Look up incident at Adidas.
inputParameters:
- name: incident_id
in: body
type: string
description: The incident_id to look up.
call: pagerduty.get-incident_id
with:
incident_id: '{{incident_id}}'
consumes:
- type: http
namespace: pagerduty
baseUri: https://api.pagerduty.com
authentication:
type: bearer
token: $secrets.pagerduty_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: pagerduty_incident_details
method: GET
Calculates loyalty points from Stripe transactions, updates member profile in Salesforce, triggers reward notification, and syncs to analytics.
naftiko: '0.5'
info:
label: Customer Loyalty Rewards Processor
description: Calculates loyalty points from Stripe transactions, updates member profile in Salesforce, triggers reward notification, and syncs to analytics.
tags:
- loyalty
- stripe
- salesforce
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: loyalty
port: 8080
tools:
- name: customer_loyalty_rewards_processor
description: Orchestrate customer loyalty rewards processor workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-stripe
type: call
call: stripe.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-salesforce
type: call
call: salesforce.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-snowflake
type: call
call: snowflake.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: stripe
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: stripe-op
method: POST
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: salesforce-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Tracks sponsorship contracts in SAP, validates deliverables, updates Salesforce, creates renewal tasks in Jira, and notifies partnership team.
naftiko: '0.5'
info:
label: Athlete Sponsorship Contract Pipeline
description: Tracks sponsorship contracts in SAP, validates deliverables, updates Salesforce, creates renewal tasks in Jira, and notifies partnership team.
tags:
- sponsorship
- sap
- salesforce
- jira
- slack
capability:
exposes:
- type: mcp
namespace: sponsorship
port: 8080
tools:
- name: athlete_sponsorship_contract_pipeline
description: Orchestrate athlete sponsorship contract pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-sap
type: call
call: sap.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-salesforce
type: call
call: salesforce.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-jira
type: call
call: jira.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: salesforce-op
method: POST
- type: http
namespace: jira
baseUri: https://adidas.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
When Palo Alto Networks detects a threat, blocks the source IP via Cisco firewall, creates a ServiceNow security incident, and alerts the SOC team in Microsoft Teams.
naftiko: '0.5'
info:
label: Network Incident Auto-Remediation
description: When Palo Alto Networks detects a threat, blocks the source IP via Cisco firewall, creates a ServiceNow security incident, and alerts the SOC team in Microsoft Teams.
tags:
- security
- network
- palo-alto-networks
- cisco
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: network-security
port: 8080
tools:
- name: remediate-threat
description: Given a threat event from Palo Alto, block the source IP, create a security incident, and alert the SOC.
inputParameters:
- name: threat_id
in: body
type: string
description: The Palo Alto threat log ID.
- name: source_ip
in: body
type: string
description: The source IP address of the threat.
- name: threat_type
in: body
type: string
description: The threat classification.
steps:
- name: get-threat-details
type: call
call: paloalto.get-threat-log
with:
threat_id: '{{threat_id}}'
- name: block-ip
type: call
call: cisco.add-acl-entry
with:
source_ip: '{{source_ip}}'
action: deny
description: 'Auto-blocked: {{threat_type}} — {{threat_id}}'
- name: create-security-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Network threat: {{threat_type}} from {{source_ip}}'
category: security
priority: '1'
description: 'Threat: {{get-threat-details.description}} | Source: {{source_ip}} | Auto-blocked via Cisco ACL. Palo Alto log: {{threat_id}}.'
- name: alert-soc
type: call
call: msteams.send-message
with:
channel: soc-alerts
text: 'Network Threat Remediated: {{threat_type}} from {{source_ip}} | Blocked: YES | Incident: {{create-security-incident.number}} | PA Log: {{threat_id}}'
consumes:
- type: http
namespace: paloalto
baseUri: https://panorama.adidas.com/api
authentication:
type: bearer
token: $secrets.paloalto_api_key
resources:
- name: threat-logs
path: /logs/threat/{{threat_id}}
inputParameters:
- name: threat_id
in: path
operations:
- name: get-threat-log
method: GET
- type: http
namespace: cisco
baseUri: https://cisco-fw.adidas.internal/restconf/data
authentication:
type: basic
username: $secrets.cisco_user
password: $secrets.cisco_password
resources:
- name: acl
path: /Cisco-IOS-XE-native:native/ip/access-list
operations:
- name: add-acl-entry
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.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/{{team_id}}/channels/{{channel_id}}/messages
operations:
- name: send-message
method: POST
Monitors POS anomalies from SAP, cross-references with video analytics, creates investigation cases in ServiceNow, and alerts loss prevention.
naftiko: '0.5'
info:
label: Retail Theft Prevention Pipeline
description: Monitors POS anomalies from SAP, cross-references with video analytics, creates investigation cases in ServiceNow, and alerts loss prevention.
tags:
- loss-prevention
- sap
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: loss-prevention
port: 8080
tools:
- name: retail_theft_prevention_pipeline
description: Orchestrate retail theft prevention pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-sap
type: call
call: sap.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-servicenow
type: call
call: servicenow.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-slack
type: call
call: slack.create-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Exports a GitLab project's issues and pipelines, creates corresponding work items in Azure DevOps, and logs the migration progress in a Google Sheet.
naftiko: '0.5'
info:
label: GitLab to Azure DevOps Migration Tracker
description: Exports a GitLab project's issues and pipelines, creates corresponding work items in Azure DevOps, and logs the migration progress in a Google Sheet.
tags:
- devops
- migration
- gitlab
- azure-devops
- google-sheets
capability:
exposes:
- type: mcp
namespace: devops-migration
port: 8080
tools:
- name: migrate-project
description: Given a GitLab project ID and Azure DevOps project, migrate issues and pipeline config and track progress.
inputParameters:
- name: gitlab_project_id
in: body
type: string
description: The GitLab project ID.
- name: azdo_project
in: body
type: string
description: The Azure DevOps project name.
- name: tracker_sheet_id
in: body
type: string
description: Google Sheets ID for migration tracking.
steps:
- name: export-issues
type: call
call: gitlab.list-issues
with:
project_id: '{{gitlab_project_id}}'
- name: create-work-items
type: call
call: azdo.create-work-item
with:
project: '{{azdo_project}}'
type: User Story
title: 'Migrated from GitLab: {{export-issues.title}}'
description: '{{export-issues.description}}'
- name: log-progress
type: call
call: gsheets.append-row
with:
spreadsheet_id: '{{tracker_sheet_id}}'
range: Migration!A1
values: '{{gitlab_project_id}},{{azdo_project}},{{export-issues.total_count}},{{create-work-items.count}},completed'
consumes:
- type: http
namespace: gitlab
baseUri: https://gitlab.adidas.com/api/v4
authentication:
type: bearer
token: $secrets.gitlab_token
resources:
- name: issues
path: /projects/{{project_id}}/issues
inputParameters:
- name: project_id
in: path
operations:
- name: list-issues
method: GET
- type: http
namespace: azdo
baseUri: https://dev.azure.com/adidas
authentication:
type: basic
username: ''
password: $secrets.azdo_pat
resources:
- name: work-items
path: /{{project}}/_apis/wit/workitems/$User Story
inputParameters:
- name: project
in: path
operations:
- name: create-work-item
method: POST
- type: http
namespace: gsheets
baseUri: https://sheets.googleapis.com/v4/spreadsheets
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: values
path: /{{spreadsheet_id}}/values/{{range}}:append
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: append-row
method: POST
Collects engagement metrics from Instagram, Facebook, Twitter, and YouTube for a given campaign hashtag and posts a consolidated summary to Microsoft Teams.
naftiko: '0.5'
info:
label: Social Media Engagement Aggregator
description: Collects engagement metrics from Instagram, Facebook, Twitter, and YouTube for a given campaign hashtag and posts a consolidated summary to Microsoft Teams.
tags:
- marketing
- social-media
- instagram
- facebook
- twitter
- youtube
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: social-analytics
port: 8080
tools:
- name: aggregate-engagement
description: Given a campaign hashtag, collect engagement metrics from all social channels and post a summary to Teams.
inputParameters:
- name: hashtag
in: body
type: string
description: 'The campaign hashtag to track (without #).'
- name: date_range
in: body
type: string
description: Date range in YYYY-MM-DD/YYYY-MM-DD format.
steps:
- name: get-instagram-metrics
type: call
call: instagram.get-hashtag-metrics
with:
hashtag: '{{hashtag}}'
date_range: '{{date_range}}'
- name: get-facebook-metrics
type: call
call: facebook.get-page-insights
with:
hashtag: '{{hashtag}}'
date_range: '{{date_range}}'
- name: get-twitter-metrics
type: call
call: twitter.get-tweet-metrics
with:
hashtag: '{{hashtag}}'
date_range: '{{date_range}}'
- name: get-youtube-metrics
type: call
call: youtube.get-video-metrics
with:
hashtag: '{{hashtag}}'
date_range: '{{date_range}}'
- name: post-summary
type: call
call: msteams.send-message
with:
channel: marketing-analytics
text: 'Campaign #{{hashtag}} Engagement Summary | IG: {{get-instagram-metrics.total_engagement}} | FB: {{get-facebook-metrics.total_engagement}} | Twitter: {{get-twitter-metrics.total_engagement}} | YT: {{get-youtube-metrics.total_views}}'
consumes:
- type: http
namespace: instagram
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.instagram_token
resources:
- name: hashtag-search
path: /ig_hashtag_search
operations:
- name: get-hashtag-metrics
method: GET
- type: http
namespace: facebook
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.facebook_page_token
resources:
- name: insights
path: /{{page_id}}/insights
operations:
- name: get-page-insights
method: GET
- type: http
namespace: twitter
baseUri: https://api.twitter.com/2
authentication:
type: bearer
token: $secrets.twitter_bearer_token
resources:
- name: tweets
path: /tweets/search/recent
operations:
- name: get-tweet-metrics
method: GET
- type: http
namespace: youtube
baseUri: https://www.googleapis.com/youtube/v3
authentication:
type: bearer
token: $secrets.youtube_api_key
resources:
- name: search
path: /search
operations:
- name: get-video-metrics
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
operations:
- name: send-message
method: POST
Validates product labels against regulatory databases, checks SAP material master data, creates compliance records, and notifies regulatory team.
naftiko: '0.5'
info:
label: Compliance Labeling Verification
description: Validates product labels against regulatory databases, checks SAP material master data, creates compliance records, and notifies regulatory team.
tags:
- compliance
- sap
- servicenow
- jira
- slack
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: compliance_labeling_verification
description: Orchestrate compliance labeling verification workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-sap
type: call
call: sap.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-servicenow
type: call
call: servicenow.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-jira
type: call
call: jira.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
- type: http
namespace: jira
baseUri: https://adidas.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Fetches open problems from Dynatrace for a given management zone and returns problem titles, severity levels, and impacted entities.
naftiko: '0.5'
info:
label: Dynatrace Problem Query
description: Fetches open problems from Dynatrace for a given management zone and returns problem titles, severity levels, and impacted entities.
tags:
- observability
- dynatrace
- incident-management
capability:
exposes:
- type: mcp
namespace: apm
port: 8080
tools:
- name: get-open-problems
description: Query Dynatrace for open problems in a management zone, returning severity and impacted entities.
inputParameters:
- name: management_zone
in: body
type: string
description: The Dynatrace management zone name.
call: dynatrace.list-problems
with:
management_zone: '{{management_zone}}'
outputParameters:
- name: total_count
type: string
mapping: $.totalCount
- name: problems
type: string
mapping: $.problems
consumes:
- type: http
namespace: dynatrace
baseUri: https://adidas.live.dynatrace.com/api/v2
authentication:
type: bearer
token: $secrets.dynatrace_token
resources:
- name: problems
path: /problems
inputParameters:
- name: problemSelector
in: query
value: managementZoneIds({{management_zone}}),status(OPEN)
operations:
- name: list-problems
method: GET
Runs a top-N sales query against SAP HANA for a given product category and region, returning aggregated revenue and units sold.
naftiko: '0.5'
info:
label: SAP HANA Sales Cube Query
description: Runs a top-N sales query against SAP HANA for a given product category and region, returning aggregated revenue and units sold.
tags:
- analytics
- sap-hana
- sales
capability:
exposes:
- type: mcp
namespace: sales-analytics
port: 8080
tools:
- name: query-sales-cube
description: Query SAP HANA sales analytics cube for revenue and units sold by product category and region.
inputParameters:
- name: category
in: body
type: string
description: Product category (e.g. footwear, apparel, accessories).
- name: region
in: body
type: string
description: Sales region code (e.g. EMEA, NAM, APAC).
call: sap-hana.run-query
with:
category: '{{category}}'
region: '{{region}}'
outputParameters:
- name: total_revenue
type: string
mapping: $.results[0].REVENUE
- name: units_sold
type: string
mapping: $.results[0].UNITS
consumes:
- type: http
namespace: sap-hana
baseUri: https://adidas-hana.sap.com/sap/hana/xs/api
authentication:
type: basic
username: $secrets.sap_hana_user
password: $secrets.sap_hana_password
resources:
- name: sales-cube
path: /analytics/sales
operations:
- name: run-query
method: POST
Retrieves Okta user profile for Adidas identity management.
naftiko: '0.5'
info:
label: Okta User Profile Lookup
description: Retrieves Okta user profile for Adidas identity management.
tags:
- security
- okta
- identity
capability:
exposes:
- type: mcp
namespace: identity
port: 8080
tools:
- name: get-user
description: Look up user at Adidas.
inputParameters:
- name: user_email
in: body
type: string
description: The user_email to look up.
call: okta.get-user_email
with:
user_email: '{{user_email}}'
consumes:
- type: http
namespace: okta
baseUri: https://adidas.okta.com/api/v1
authentication:
type: apiKey
key: $secrets.okta_api_token
header: Authorization
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: okta_user_profile_lookup
method: GET
Collects carbon footprint data from SAP, aggregates in Snowflake, generates ESG reports in Power BI, and publishes to sustainability team.
naftiko: '0.5'
info:
label: Sustainability Metrics Collection Pipeline
description: Collects carbon footprint data from SAP, aggregates in Snowflake, generates ESG reports in Power BI, and publishes to sustainability team.
tags:
- sustainability
- sap
- snowflake
- powerbi
- slack
capability:
exposes:
- type: mcp
namespace: sustainability
port: 8080
tools:
- name: sustainability_metrics_collector
description: Orchestrate sustainability metrics collection pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-sap
type: call
call: sap.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-snowflake
type: call
call: snowflake.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-slack
type: call
call: slack.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-servicenow
type: call
call: servicenow.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
Retrieves a Salesforce lead record and returns scoring details, source channel, and status. Used by sales development reps to prioritize outreach.
naftiko: '0.5'
info:
label: Salesforce Lead Qualification
description: Retrieves a Salesforce lead record and returns scoring details, source channel, and status. Used by sales development reps to prioritize outreach.
tags:
- sales
- salesforce
- lead-management
capability:
exposes:
- type: mcp
namespace: sales
port: 8080
tools:
- name: get-lead-details
description: Look up a Salesforce lead by ID and return qualification score, status, and source.
inputParameters:
- name: lead_id
in: body
type: string
description: The Salesforce lead record ID.
call: salesforce.get-lead
with:
lead_id: '{{lead_id}}'
outputParameters:
- name: lead_score
type: string
mapping: $.Lead_Score__c
- name: status
type: string
mapping: $.Status
- name: source
type: string
mapping: $.LeadSource
consumes:
- type: http
namespace: salesforce
baseUri: https://adidas.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
Extracts return data from SAP, analyzes patterns in Snowflake, identifies quality issues, creates Jira tickets, and notifies product team.
naftiko: '0.5'
info:
label: Product Return Analysis Pipeline
description: Extracts return data from SAP, analyzes patterns in Snowflake, identifies quality issues, creates Jira tickets, and notifies product team.
tags:
- returns
- sap
- snowflake
- jira
- slack
capability:
exposes:
- type: mcp
namespace: returns
port: 8080
tools:
- name: product_return_analysis_pipeline
description: Orchestrate product return analysis pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-sap
type: call
call: sap.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-snowflake
type: call
call: snowflake.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-jira
type: call
call: jira.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: jira
baseUri: https://adidas.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Retrieves a BigCommerce order by ID and returns order status, total, shipping address, and line items.
naftiko: '0.5'
info:
label: BigCommerce Order Lookup
description: Retrieves a BigCommerce order by ID and returns order status, total, shipping address, and line items.
tags:
- ecommerce
- bigcommerce
- order-management
capability:
exposes:
- type: mcp
namespace: ecommerce
port: 8080
tools:
- name: get-order
description: Look up a BigCommerce order by ID and return its status, total, and shipping details.
inputParameters:
- name: order_id
in: body
type: string
description: The BigCommerce order ID.
call: bigcommerce.get-order
with:
order_id: '{{order_id}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: total
type: string
mapping: $.total_inc_tax
- name: shipping_address
type: string
mapping: $.shipping_addresses
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/adidas/v2
authentication:
type: bearer
token: $secrets.bigcommerce_token
inputParameters:
- name: X-Auth-Token
in: header
value: $secrets.bigcommerce_auth_token
resources:
- name: orders
path: /orders/{{order_id}}
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
When OpenTelemetry detects high-latency traces, extracts span details, creates a Dynatrace problem annotation, and opens a ServiceNow incident with trace context.
naftiko: '0.5'
info:
label: OpenTelemetry Trace to Incident
description: When OpenTelemetry detects high-latency traces, extracts span details, creates a Dynatrace problem annotation, and opens a ServiceNow incident with trace context.
tags:
- observability
- opentelemetry
- dynatrace
- servicenow
capability:
exposes:
- type: mcp
namespace: trace-incident
port: 8080
tools:
- name: escalate-trace
description: Given an OpenTelemetry trace ID, extract details, annotate in Dynatrace, and create an incident.
inputParameters:
- name: trace_id
in: body
type: string
description: The OpenTelemetry trace ID.
- name: service_name
in: body
type: string
description: The affected service name.
- name: latency_ms
in: body
type: string
description: The observed latency in milliseconds.
steps:
- name: get-trace
type: call
call: otel.get-trace
with:
trace_id: '{{trace_id}}'
- name: annotate-dynatrace
type: call
call: dynatrace.create-event
with:
entity_id: '{{service_name}}'
event_type: CUSTOM_ANNOTATION
description: 'High latency trace: {{trace_id}} — {{latency_ms}}ms'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'High latency: {{service_name}} — {{latency_ms}}ms'
category: performance
priority: '2'
description: 'Trace ID: {{trace_id}} | Service: {{service_name}} | Latency: {{latency_ms}}ms | Root span: {{get-trace.root_span_name}} | Dynatrace event: {{annotate-dynatrace.id}}'
consumes:
- type: http
namespace: otel
baseUri: https://otel-collector.adidas.internal/api/v1
authentication:
type: bearer
token: $secrets.otel_token
resources:
- name: traces
path: /traces/{{trace_id}}
inputParameters:
- name: trace_id
in: path
operations:
- name: get-trace
method: GET
- type: http
namespace: dynatrace
baseUri: https://adidas.live.dynatrace.com/api/v2
authentication:
type: bearer
token: $secrets.dynatrace_token
resources:
- name: events
path: /events/ingest
operations:
- name: create-event
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.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
Tracks product stages in SAP PLM, syncs to Snowflake for analytics, creates phase-gate tasks in Jira, and notifies product management.
naftiko: '0.5'
info:
label: Product Lifecycle Management Pipeline
description: Tracks product stages in SAP PLM, syncs to Snowflake for analytics, creates phase-gate tasks in Jira, and notifies product management.
tags:
- plm
- sap
- snowflake
- jira
- slack
capability:
exposes:
- type: mcp
namespace: plm
port: 8080
tools:
- name: product_lifecycle_management_pipeline
description: Orchestrate product lifecycle management pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-sap
type: call
call: sap.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-snowflake
type: call
call: snowflake.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-jira
type: call
call: jira.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: jira
baseUri: https://adidas.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Pulls vendor records from Oracle E-Business Suite, cross-references compliance data in SAP, and generates an audit report in SharePoint with findings logged to ServiceNow.
naftiko: '0.5'
info:
label: Vendor Compliance Audit
description: Pulls vendor records from Oracle E-Business Suite, cross-references compliance data in SAP, and generates an audit report in SharePoint with findings logged to ServiceNow.
tags:
- compliance
- oracle-e-business-suite
- sap-s4hana
- sharepoint
- servicenow
capability:
exposes:
- type: mcp
namespace: vendor-compliance
port: 8080
tools:
- name: run-vendor-audit
description: Given a vendor ID, pull records from Oracle and SAP, then generate an audit report and log findings.
inputParameters:
- name: vendor_id
in: body
type: string
description: The vendor identifier.
- name: audit_type
in: body
type: string
description: Type of audit (sustainability, labor, quality).
steps:
- name: get-oracle-vendor
type: call
call: oracle.get-vendor
with:
vendor_id: '{{vendor_id}}'
- name: get-sap-compliance
type: call
call: sap.get-vendor-compliance
with:
vendor_id: '{{vendor_id}}'
audit_type: '{{audit_type}}'
- name: create-report
type: call
call: sharepoint.create-file
with:
site_id: compliance_audits
folder_path: Vendors/{{get-oracle-vendor.vendor_name}}
file_name: audit_{{audit_type}}_report.docx
content: 'Vendor: {{get-oracle-vendor.vendor_name}} | Type: {{audit_type}} | Score: {{get-sap-compliance.score}} | Findings: {{get-sap-compliance.findings_count}}'
- name: log-findings
type: call
call: servicenow.create-incident
with:
short_description: 'Vendor audit: {{get-oracle-vendor.vendor_name}} — {{audit_type}}'
category: compliance
description: 'Score: {{get-sap-compliance.score}}. Findings: {{get-sap-compliance.findings_count}}. Report: {{create-report.url}}'
consumes:
- type: http
namespace: oracle
baseUri: https://oracle-ebs.adidas.com/webservices/rest/v1
authentication:
type: basic
username: $secrets.oracle_user
password: $secrets.oracle_password
resources:
- name: vendors
path: /vendors/{{vendor_id}}
inputParameters:
- name: vendor_id
in: path
operations:
- name: get-vendor
method: GET
- type: http
namespace: sap
baseUri: https://adidas-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: compliance
path: /A_Supplier('{{vendor_id}}')/to_ComplianceData
inputParameters:
- name: vendor_id
in: path
operations:
- name: get-vendor-compliance
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:/{{folder_path}}/{{file_name}}:/content
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
- name: file_name
in: path
operations:
- name: create-file
method: PUT
- type: http
namespace: servicenow
baseUri: https://adidas.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
Tracks program participation from Workday, calculates engagement in Snowflake, updates Power BI reports, and notifies HR team.
naftiko: '0.5'
info:
label: Employee Wellness Program Pipeline
description: Tracks program participation from Workday, calculates engagement in Snowflake, updates Power BI reports, and notifies HR team.
tags:
- hr
- workday
- snowflake
- powerbi
- slack
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: employee_wellness_program_pipeline
description: Orchestrate employee wellness program pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-workday
type: call
call: workday.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-snowflake
type: call
call: snowflake.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-slack
type: call
call: slack.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-servicenow
type: call
call: servicenow.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: workday
baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/adidas
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: workday-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
Sends a message to a Slack channel for Adidas notifications.
naftiko: '0.5'
info:
label: Slack Channel Post
description: Sends a message to a Slack channel for Adidas notifications.
tags:
- collaboration
- slack
- messaging
capability:
exposes:
- type: mcp
namespace: messaging
port: 8080
tools:
- name: send-message
description: Post to Slack at Adidas.
inputParameters:
- name: channel
in: body
type: string
description: The channel to look up.
call: slack.get-channel
with:
channel: '{{channel}}'
consumes:
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack_channel_post
method: GET
Looks up a ServiceNow incident by number and returns its state, priority, assigned group, and resolution notes.
naftiko: '0.5'
info:
label: ServiceNow Incident Status
description: Looks up a ServiceNow incident by number and returns its state, priority, assigned group, and resolution notes.
tags:
- itsm
- servicenow
- incident-management
capability:
exposes:
- type: mcp
namespace: itsm
port: 8080
tools:
- name: get-incident
description: Retrieve a ServiceNow incident record by number including state, priority, and assignment.
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: state
type: string
mapping: $.result[0].state
- name: priority
type: string
mapping: $.result[0].priority
- name: assigned_group
type: string
mapping: $.result[0].assignment_group.display_value
consumes:
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
inputParameters:
- name: sysparm_query
in: query
value: number={{incident_number}}
- name: incident_number
in: path
operations:
- name: get-incident
method: GET
Triggers Power BI dataset refresh for Adidas reporting.
naftiko: '0.5'
info:
label: Power BI Refresh Trigger
description: Triggers Power BI dataset refresh for Adidas reporting.
tags:
- analytics
- power-bi
- reporting
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: trigger-refresh
description: Trigger refresh at Adidas.
inputParameters:
- name: dataset_id
in: body
type: string
description: The dataset_id to look up.
call: powerbi.get-dataset_id
with:
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: resources
path: /resources/{{resource_id}}
operations:
- name: power_bi_refresh_trigger
method: GET
When a SAP S/4HANA purchase order exceeds a spend threshold, routes for manager approval via PeopleSoft and notifies the requestor in Microsoft Teams with approval status.
naftiko: '0.5'
info:
label: SAP Purchase Order Approval Pipeline
description: When a SAP S/4HANA purchase order exceeds a spend threshold, routes for manager approval via PeopleSoft and notifies the requestor in Microsoft Teams with approval status.
tags:
- procurement
- sap-s4hana
- peoplesoft
- microsoft-teams
- approval
capability:
exposes:
- type: mcp
namespace: po-approval
port: 8080
tools:
- name: route-po-approval
description: Given a PO number and requestor ID, check the amount, route for approval, and notify both parties.
inputParameters:
- name: po_number
in: body
type: string
description: The SAP purchase order number.
- name: requestor_id
in: body
type: string
description: The PeopleSoft employee ID of the requestor.
- name: spend_amount
in: body
type: string
description: The total PO amount.
steps:
- name: get-po
type: call
call: sap.get-purchase-order
with:
po_number: '{{po_number}}'
- name: get-approver
type: call
call: peoplesoft.get-manager
with:
employee_id: '{{requestor_id}}'
- name: notify-approver
type: call
call: msteams.send-message
with:
recipient_upn: '{{get-approver.manager_email}}'
text: 'PO Approval Required: PO {{po_number}} for {{spend_amount}} from {{get-po.vendor_name}}. Please review and approve.'
- name: notify-requestor
type: call
call: msteams.send-message
with:
recipient_upn: '{{get-approver.employee_email}}'
text: Your PO {{po_number}} ({{spend_amount}}) has been routed to {{get-approver.manager_name}} for approval.
consumes:
- type: http
namespace: sap
baseUri: https://adidas-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-purchase-order
method: GET
- type: http
namespace: peoplesoft
baseUri: https://peoplesoft.adidas.com/psftapi/v1
authentication:
type: basic
username: $secrets.peoplesoft_user
password: $secrets.peoplesoft_password
resources:
- name: employees
path: /employees/{{employee_id}}/manager
inputParameters:
- name: employee_id
in: path
operations:
- name: get-manager
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 a HubSpot CRM contact by email address and returns lifecycle stage, last activity date, and deal associations.
naftiko: '0.5'
info:
label: HubSpot Contact Lookup
description: Retrieves a HubSpot CRM contact by email address and returns lifecycle stage, last activity date, and deal associations.
tags:
- crm
- hubspot
- contacts
capability:
exposes:
- type: mcp
namespace: crm
port: 8080
tools:
- name: get-contact-by-email
description: Look up a HubSpot contact by email and return lifecycle stage, last activity, and associated deals.
inputParameters:
- name: email
in: body
type: string
description: The contact email address.
call: hubspot.get-contact
with:
email: '{{email}}'
outputParameters:
- name: lifecycle_stage
type: string
mapping: $.properties.lifecyclestage
- name: last_activity
type: string
mapping: $.properties.notes_last_updated
- name: deal_count
type: string
mapping: $.properties.num_associated_deals
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}}
inputParameters:
- name: email
in: path
- name: idProperty
in: query
value: email
operations:
- name: get-contact
method: GET
Forecasts volume from Snowflake, optimizes shifts in Workday, syncs schedules to SAP, updates Grafana dashboards, and notifies warehouse managers.
naftiko: '0.5'
info:
label: Warehouse Labor Scheduling Pipeline
description: Forecasts volume from Snowflake, optimizes shifts in Workday, syncs schedules to SAP, updates Grafana dashboards, and notifies warehouse managers.
tags:
- logistics
- snowflake
- workday
- sap
- grafana
capability:
exposes:
- type: mcp
namespace: logistics
port: 8080
tools:
- name: warehouse_labor_scheduling_pipeline
description: Orchestrate warehouse labor scheduling pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-snowflake
type: call
call: snowflake.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-workday
type: call
call: workday.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-sap
type: call
call: sap.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-grafana
type: call
call: grafana.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: workday
baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/adidas
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: workday-op
method: POST
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: grafana
baseUri: https://adidas-grafana.com/api
authentication:
type: bearer
token: $secrets.grafana_api_key
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: grafana-op
method: POST
Analyzes market data in Snowflake, evaluates regulatory requirements, creates business case in Confluence-equivalent, and notifies strategy team.
naftiko: '0.5'
info:
label: New Market Entry Assessment
description: Analyzes market data in Snowflake, evaluates regulatory requirements, creates business case in Confluence-equivalent, and notifies strategy team.
tags:
- strategy
- snowflake
- salesforce
- jira
- slack
capability:
exposes:
- type: mcp
namespace: strategy
port: 8080
tools:
- name: new_market_entry_assessment
description: Orchestrate new market entry assessment workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-snowflake
type: call
call: snowflake.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-salesforce
type: call
call: salesforce.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-jira
type: call
call: jira.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: salesforce-op
method: POST
- type: http
namespace: jira
baseUri: https://adidas.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Orchestrates creative asset production by uploading a design brief to Box, triggering an Adobe Creative Cloud workflow, and publishing the final asset to SharePoint and Notion.
naftiko: '0.5'
info:
label: Content Asset Production Pipeline
description: Orchestrates creative asset production by uploading a design brief to Box, triggering an Adobe Creative Cloud workflow, and publishing the final asset to SharePoint and Notion.
tags:
- creative
- content-production
- box
- adobe-creative-cloud
- sharepoint
- notion
capability:
exposes:
- type: mcp
namespace: content-production
port: 8080
tools:
- name: produce-asset
description: Given an asset brief, upload to Box, trigger creative workflow, and publish to SharePoint and Notion.
inputParameters:
- name: brief_title
in: body
type: string
description: Title of the creative brief.
- name: campaign_name
in: body
type: string
description: The marketing campaign name.
- name: asset_type
in: body
type: string
description: Type of asset (banner, video, social, email).
steps:
- name: upload-brief
type: call
call: box.upload-file
with:
folder_id: $secrets.creative_briefs_folder
file_name: '{{brief_title}}_brief.pdf'
campaign: '{{campaign_name}}'
- name: trigger-creative
type: call
call: adobe-cc.start-workflow
with:
workflow_template: '{{asset_type}}_production'
brief_url: '{{upload-brief.shared_link}}'
campaign: '{{campaign_name}}'
- name: publish-sharepoint
type: call
call: sharepoint.upload-file
with:
site_id: marketing_assets
folder_path: Campaigns/{{campaign_name}}/{{asset_type}}
file_url: '{{trigger-creative.output_url}}'
- name: log-in-notion
type: call
call: notion.create-page
with:
parent_id: $secrets.creative_tracker_db
title: '{{brief_title}}'
properties_campaign: '{{campaign_name}}'
properties_type: '{{asset_type}}'
properties_sharepoint_url: '{{publish-sharepoint.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/content
operations:
- name: upload-file
method: POST
- type: http
namespace: adobe-cc
baseUri: https://cc-api.adobe.io/v1
authentication:
type: bearer
token: $secrets.adobe_cc_token
resources:
- name: workflows
path: /workflows
operations:
- name: start-workflow
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: upload-file
method: PUT
- type: http
namespace: notion
baseUri: https://api.notion.com/v1
authentication:
type: bearer
token: $secrets.notion_token
inputParameters:
- name: Notion-Version
in: header
value: '2022-06-28'
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Queries Microsoft Power Automate for failed flow runs, creates ServiceNow incidents for each failure, and posts a summary to Microsoft Teams.
naftiko: '0.5'
info:
label: Power Automate Workflow Status Reporter
description: Queries Microsoft Power Automate for failed flow runs, creates ServiceNow incidents for each failure, and posts a summary to Microsoft Teams.
tags:
- automation
- microsoft-power-automate
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: rpa-ops
port: 8080
tools:
- name: report-failed-flows
description: Given a date range, find all failed Power Automate flows, create incidents, and summarize in Teams.
inputParameters:
- name: date_from
in: body
type: string
description: Start date for the search in YYYY-MM-DD format.
- name: date_to
in: body
type: string
description: End date for the search in YYYY-MM-DD format.
steps:
- name: get-failed-runs
type: call
call: power-automate.list-failed-runs
with:
date_from: '{{date_from}}'
date_to: '{{date_to}}'
- name: create-incidents
type: call
call: servicenow.create-incident
with:
short_description: 'Power Automate failure: {{get-failed-runs.flow_name}}'
category: automation
priority: '3'
description: 'Flow: {{get-failed-runs.flow_name}} | Run ID: {{get-failed-runs.run_id}} | Error: {{get-failed-runs.error_message}}'
- name: post-summary
type: call
call: msteams.send-message
with:
channel: automation-ops
text: 'Power Automate Failure Summary ({{date_from}} to {{date_to}}): {{get-failed-runs.total_failures}} failed runs | Incident: {{create-incidents.number}}'
consumes:
- type: http
namespace: power-automate
baseUri: https://api.flow.microsoft.com/providers/Microsoft.ProcessSimple
authentication:
type: bearer
token: $secrets.power_automate_token
resources:
- name: flow-runs
path: /environments/$secrets.pa_environment_id/flows
operations:
- name: list-failed-runs
method: GET
- type: http
namespace: servicenow
baseUri: https://adidas.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/{{team_id}}/channels/{{channel_id}}/messages
operations:
- name: send-message
method: POST
Collects vendor delivery data from SAP, calculates scores in Snowflake, updates Salesforce vendor records, and notifies procurement.
naftiko: '0.5'
info:
label: Vendor Performance Scorecard Pipeline
description: Collects vendor delivery data from SAP, calculates scores in Snowflake, updates Salesforce vendor records, and notifies procurement.
tags:
- procurement
- sap
- snowflake
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: vendor_performance_scorecard_pipeline
description: Orchestrate vendor performance scorecard pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-sap
type: call
call: sap.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-snowflake
type: call
call: snowflake.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-salesforce
type: call
call: salesforce.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: salesforce-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Retrieves a Zendesk support ticket by ID including status, priority, assignee, and customer satisfaction rating. Used by customer service managers.
naftiko: '0.5'
info:
label: Zendesk Ticket Lookup
description: Retrieves a Zendesk support ticket by ID including status, priority, assignee, and customer satisfaction rating. Used by customer service managers.
tags:
- customer-service
- zendesk
- support
capability:
exposes:
- type: mcp
namespace: support
port: 8080
tools:
- name: get-ticket
description: Look up a Zendesk support ticket and return its status, priority, assignee, and satisfaction rating.
inputParameters:
- name: ticket_id
in: body
type: string
description: The Zendesk ticket ID.
call: zendesk.get-ticket
with:
ticket_id: '{{ticket_id}}'
outputParameters:
- name: status
type: string
mapping: $.ticket.status
- name: priority
type: string
mapping: $.ticket.priority
- name: assignee
type: string
mapping: $.ticket.assignee_id
- name: satisfaction_rating
type: string
mapping: $.ticket.satisfaction_rating.score
consumes:
- type: http
namespace: zendesk
baseUri: https://adidas.zendesk.com/api/v2
authentication:
type: bearer
token: $secrets.zendesk_token
resources:
- name: tickets
path: /tickets/{{ticket_id}}.json
inputParameters:
- name: ticket_id
in: path
operations:
- name: get-ticket
method: GET
Retrieves a Stripe payment intent by ID and returns amount, status, currency, and last four digits of the card used. Used by finance operations.
naftiko: '0.5'
info:
label: Stripe Payment Lookup
description: Retrieves a Stripe payment intent by ID and returns amount, status, currency, and last four digits of the card used. Used by finance operations.
tags:
- finance
- stripe
- payments
capability:
exposes:
- type: mcp
namespace: payments
port: 8080
tools:
- name: get-payment
description: Look up a Stripe payment intent by ID and return its amount, status, and payment method details.
inputParameters:
- name: payment_intent_id
in: body
type: string
description: The Stripe payment intent ID (e.g. pi_xxx).
call: stripe.get-payment-intent
with:
payment_intent_id: '{{payment_intent_id}}'
outputParameters:
- name: amount
type: string
mapping: $.amount
- name: currency
type: string
mapping: $.currency
- name: status
type: string
mapping: $.status
- name: card_last4
type: string
mapping: $.payment_method.card.last4
consumes:
- type: http
namespace: stripe
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: payment-intents
path: /payment_intents/{{payment_intent_id}}
inputParameters:
- name: payment_intent_id
in: path
operations:
- name: get-payment-intent
method: GET
Collects influencer metrics from social APIs, calculates ROI in Snowflake, updates HubSpot campaigns, and notifies the brand team.
naftiko: '0.5'
info:
label: Influencer Campaign ROI Calculator
description: Collects influencer metrics from social APIs, calculates ROI in Snowflake, updates HubSpot campaigns, and notifies the brand team.
tags:
- marketing
- hubspot
- snowflake
- powerbi
- slack
capability:
exposes:
- type: mcp
namespace: marketing
port: 8080
tools:
- name: influencer_campaign_roi_calculator
description: Orchestrate influencer campaign roi calculator workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-hubspot
type: call
call: hubspot.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-snowflake
type: call
call: snowflake.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-slack
type: call
call: slack.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-servicenow
type: call
call: servicenow.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: hubspot-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
Retrieves Salesforce account details for Adidas sales teams.
naftiko: '0.5'
info:
label: Salesforce Account Info
description: Retrieves Salesforce account details for Adidas sales teams.
tags:
- crm
- salesforce
- accounts
capability:
exposes:
- type: mcp
namespace: crm
port: 8080
tools:
- name: get-account
description: Look up account at Adidas.
inputParameters:
- name: account_id
in: body
type: string
description: The account_id to look up.
call: salesforce.get-account_id
with:
account_id: '{{account_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: salesforce_account_info
method: GET
Pulls campaign spend from Adobe Campaign, payment data from Stripe, and reconciles against the budget in SAP BW, then updates a Microsoft Excel tracker on SharePoint.
naftiko: '0.5'
info:
label: Marketing Budget Tracker Sync
description: Pulls campaign spend from Adobe Campaign, payment data from Stripe, and reconciles against the budget in SAP BW, then updates a Microsoft Excel tracker on SharePoint.
tags:
- finance
- marketing
- adobe-campaign
- stripe
- sap-bw
- microsoft-excel
- sharepoint
capability:
exposes:
- type: mcp
namespace: budget-tracking
port: 8080
tools:
- name: sync-marketing-budget
description: Given a campaign ID and fiscal period, pull spend data from all channels and reconcile against budget.
inputParameters:
- name: campaign_id
in: body
type: string
description: The marketing campaign identifier.
- name: fiscal_period
in: body
type: string
description: The fiscal period (e.g. 2026-Q1).
steps:
- name: get-campaign-spend
type: call
call: adobe-campaign.get-delivery-stats
with:
campaign_id: '{{campaign_id}}'
- name: get-payment-totals
type: call
call: stripe.get-balance-transactions
with:
campaign_reference: '{{campaign_id}}'
period: '{{fiscal_period}}'
- name: get-budget
type: call
call: sap-bw.get-budget-allocation
with:
cost_center: marketing
period: '{{fiscal_period}}'
- name: update-excel
type: call
call: sharepoint.update-excel-range
with:
site_id: finance_reports
workbook_path: Budgets/Marketing_{{fiscal_period}}.xlsx
range: Summary!A2
values: '{{campaign_id}},{{get-campaign-spend.total_cost}},{{get-payment-totals.net_amount}},{{get-budget.allocated}},{{get-budget.remaining}}'
consumes:
- type: http
namespace: adobe-campaign
baseUri: https://mc.adobe.io/adidas/campaign
authentication:
type: bearer
token: $secrets.adobe_campaign_token
resources:
- name: deliveries
path: /deliveries/{{campaign_id}}/stats
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-delivery-stats
method: GET
- type: http
namespace: stripe
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: balance-transactions
path: /balance_transactions
operations:
- name: get-balance-transactions
method: GET
- type: http
namespace: sap-bw
baseUri: https://adidas-bw.sap.com/sap/bw/odata/v1
authentication:
type: basic
username: $secrets.sap_bw_user
password: $secrets.sap_bw_password
resources:
- name: budgets
path: /ZBUDGET_ALLOCATION
operations:
- name: get-budget-allocation
method: GET
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: excel
path: /{{site_id}}/drive/root:/{{workbook_path}}:/workbook/worksheets/{{range}}
inputParameters:
- name: site_id
in: path
- name: workbook_path
in: path
- name: range
in: path
operations:
- name: update-excel-range
method: PATCH
Retrieves page-level performance metrics from Adobe Analytics for a specified report suite and page path.
naftiko: '0.5'
info:
label: Adobe Analytics Page Performance
description: Retrieves page-level performance metrics from Adobe Analytics for a specified report suite and page path.
tags:
- analytics
- adobe-analytics
- ecommerce
capability:
exposes:
- type: mcp
namespace: digital-analytics
port: 8080
tools:
- name: get-page-performance
description: Query Adobe Analytics for page views, bounce rate, and average time on page for a given URL path.
inputParameters:
- name: report_suite_id
in: body
type: string
description: The Adobe Analytics report suite ID.
- name: page_path
in: body
type: string
description: The URL path to analyze.
call: adobe-analytics.get-report
with:
report_suite_id: '{{report_suite_id}}'
page_path: '{{page_path}}'
outputParameters:
- name: page_views
type: string
mapping: $.rows[0].data[0]
- name: bounce_rate
type: string
mapping: $.rows[0].data[1]
- name: avg_time_on_page
type: string
mapping: $.rows[0].data[2]
consumes:
- type: http
namespace: adobe-analytics
baseUri: https://analytics.adobe.io/api/adidas/reports
authentication:
type: bearer
token: $secrets.adobe_analytics_token
inputParameters:
- name: x-api-key
in: header
value: $secrets.adobe_client_id
resources:
- name: reports
path: /ranked
operations:
- name: get-report
method: POST
On a GitHub Actions pipeline failure, creates a Datadog event marker, opens a ServiceNow incident, and alerts the engineering team in Microsoft Teams.
naftiko: '0.5'
info:
label: CI/CD Pipeline Failure Handler
description: On a GitHub Actions pipeline failure, creates a Datadog event marker, opens a ServiceNow incident, and alerts the engineering team in Microsoft Teams.
tags:
- devops
- github-actions
- datadog
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: handle-pipeline-failure
description: Given a pipeline run ID, repo, and branch, create observability marker, open incident, and alert the team.
inputParameters:
- name: run_id
in: body
type: string
description: The GitHub Actions workflow run ID.
- name: repository
in: body
type: string
description: The GitHub repository (org/repo format).
- name: branch
in: body
type: string
description: The branch that failed.
- name: failed_job
in: body
type: string
description: Name of the failed job.
steps:
- name: create-dd-event
type: call
call: datadog.create-event
with:
title: 'Pipeline Failure: {{repository}} / {{branch}}'
text: 'Run ID: {{run_id}} | Job: {{failed_job}}'
alert_type: error
tags: repo:{{repository}},branch:{{branch}}
- name: open-incident
type: call
call: servicenow.create-incident
with:
short_description: '[CI Failure] {{repository}} / {{branch}} — {{failed_job}}'
category: software
priority: '3'
description: 'GitHub Actions run {{run_id}} failed on {{branch}} in {{repository}}. Job: {{failed_job}}.'
- name: alert-team
type: call
call: msteams.send-message
with:
channel: engineering-alerts
text: 'Pipeline Failure: {{repository}} | Branch: {{branch}} | Job: {{failed_job}} | Incident: {{open-incident.number}} | Run: https://github.com/{{repository}}/actions/runs/{{run_id}}'
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: events
path: /events
operations:
- name: create-event
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.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/{{team_id}}/channels/{{channel_id}}/messages
operations:
- name: send-message
method: POST
When SAP S/4HANA detects inventory below safety stock, generates a purchase requisition, notifies the procurement team in Teams, and logs it in a Google Sheet tracker.
naftiko: '0.5'
info:
label: Warehouse Replenishment Orchestrator
description: When SAP S/4HANA detects inventory below safety stock, generates a purchase requisition, notifies the procurement team in Teams, and logs it in a Google Sheet tracker.
tags:
- supply-chain
- replenishment
- sap-s4hana
- microsoft-teams
- google-sheets
capability:
exposes:
- type: mcp
namespace: replenishment
port: 8080
tools:
- name: trigger-replenishment
description: Given a material number and plant, create a purchase requisition, notify procurement, and log the event.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number.
- name: plant
in: body
type: string
description: The SAP plant code.
- name: current_stock
in: body
type: string
description: Current on-hand quantity.
- name: reorder_quantity
in: body
type: string
description: Quantity to reorder.
steps:
- name: create-pr
type: call
call: sap.create-purchase-requisition
with:
material: '{{material_number}}'
plant: '{{plant}}'
quantity: '{{reorder_quantity}}'
requisition_type: NB
- name: notify-procurement
type: call
call: msteams.send-message
with:
channel: procurement-alerts
text: 'Replenishment Alert: Material {{material_number}} at plant {{plant}} is below safety stock ({{current_stock}} on hand). PR {{create-pr.requisition_number}} created for {{reorder_quantity}} units.'
- name: log-event
type: call
call: gsheets.append-row
with:
spreadsheet_id: $secrets.replenishment_tracker_sheet
range: Log!A1
values: '{{material_number}},{{plant}},{{current_stock}},{{reorder_quantity}},{{create-pr.requisition_number}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-s4.sap.com/sap/opu/odata/sap/API_PURCHASEREQ_PROCESS_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: requisitions
path: /A_PurchaseReqnHeader
operations:
- name: create-purchase-requisition
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
operations:
- name: send-message
method: POST
- type: http
namespace: gsheets
baseUri: https://sheets.googleapis.com/v4/spreadsheets
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: values
path: /{{spreadsheet_id}}/values/{{range}}:append
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: append-row
method: POST
Retrieves promo plan from Salesforce, validates margins in Snowflake, updates SAP pricing, syncs to e-commerce, and notifies merchandising.
naftiko: '0.5'
info:
label: Promotional Pricing Orchestrator
description: Retrieves promo plan from Salesforce, validates margins in Snowflake, updates SAP pricing, syncs to e-commerce, and notifies merchandising.
tags:
- pricing
- salesforce
- snowflake
- sap
- slack
capability:
exposes:
- type: mcp
namespace: pricing
port: 8080
tools:
- name: promotional_pricing_orchestrator
description: Orchestrate promotional pricing orchestrator workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-salesforce
type: call
call: salesforce.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-snowflake
type: call
call: snowflake.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-sap
type: call
call: sap.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: salesforce-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Monitors checkout funnel in Datadog, analyzes drop-off in Snowflake, runs A/B test analysis, creates Jira improvements, and notifies product team.
naftiko: '0.5'
info:
label: E-Commerce Checkout Optimization
description: Monitors checkout funnel in Datadog, analyzes drop-off in Snowflake, runs A/B test analysis, creates Jira improvements, and notifies product team.
tags:
- e-commerce
- datadog
- snowflake
- jira
- slack
capability:
exposes:
- type: mcp
namespace: e-commerce
port: 8080
tools:
- name: e_commerce_checkout_optimization
description: Orchestrate e-commerce checkout optimization workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-datadog
type: call
call: datadog.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-snowflake
type: call
call: snowflake.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-jira
type: call
call: jira.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apiKey
key: $secrets.datadog_api_key
header: DD-API-KEY
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: datadog-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: jira
baseUri: https://adidas.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Monitors warehouse KPIs from SAP, analyzes bottlenecks in Snowflake, creates improvement tasks in Jira, updates Grafana dashboards, and alerts ops.
naftiko: '0.5'
info:
label: Warehouse Operations Optimization
description: Monitors warehouse KPIs from SAP, analyzes bottlenecks in Snowflake, creates improvement tasks in Jira, updates Grafana dashboards, and alerts ops.
tags:
- logistics
- sap
- snowflake
- jira
- grafana
capability:
exposes:
- type: mcp
namespace: logistics
port: 8080
tools:
- name: warehouse_operations_optimization
description: Orchestrate warehouse operations optimization workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-sap
type: call
call: sap.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-snowflake
type: call
call: snowflake.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-jira
type: call
call: jira.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-grafana
type: call
call: grafana.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: jira
baseUri: https://adidas.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: jira-op
method: POST
- type: http
namespace: grafana
baseUri: https://adidas-grafana.com/api
authentication:
type: bearer
token: $secrets.grafana_api_key
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: grafana-op
method: POST
Searches Splunk indexes for log entries at Adidas.
naftiko: '0.5'
info:
label: Splunk Log Search
description: Searches Splunk indexes for log entries at Adidas.
tags:
- devops
- splunk
- logging
capability:
exposes:
- type: mcp
namespace: logging
port: 8080
tools:
- name: search-logs
description: Search Splunk logs for Adidas.
inputParameters:
- name: query
in: body
type: string
description: The query to look up.
call: splunk.get-query
with:
query: '{{query}}'
consumes:
- type: http
namespace: splunk
baseUri: https://adidas-splunk.com/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: splunk_log_search
method: GET
On a new product launch, creates an Adobe Campaign email blast, posts to Instagram and Facebook, updates the BigCommerce storefront, and sends an internal Teams notification.
naftiko: '0.5'
info:
label: New Product Launch Campaign Orchestrator
description: On a new product launch, creates an Adobe Campaign email blast, posts to Instagram and Facebook, updates the BigCommerce storefront, and sends an internal Teams notification.
tags:
- marketing
- product-launch
- adobe-campaign
- instagram
- facebook
- bigcommerce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: product-launch
port: 8080
tools:
- name: orchestrate-launch
description: Given a product ID, campaign name, and launch date, coordinate the full product launch across marketing channels and the e-commerce storefront.
inputParameters:
- name: product_id
in: body
type: string
description: The Adidas product ID for the new launch.
- name: campaign_name
in: body
type: string
description: The name of the marketing campaign.
- name: launch_date
in: body
type: string
description: The scheduled launch date in YYYY-MM-DD format.
steps:
- name: create-email-campaign
type: call
call: adobe-campaign.create-delivery
with:
campaign_name: '{{campaign_name}}'
template: product_launch_v2
scheduled_date: '{{launch_date}}'
product_id: '{{product_id}}'
- name: post-instagram
type: call
call: instagram.create-media
with:
caption: 'The wait is over. {{campaign_name}} drops {{launch_date}}. Link in bio. #adidas #newdrop'
product_id: '{{product_id}}'
- name: post-facebook
type: call
call: facebook.create-post
with:
message: Introducing {{campaign_name}} - available {{launch_date}} on adidas.com and in stores.
product_id: '{{product_id}}'
- name: update-storefront
type: call
call: bigcommerce.update-product-visibility
with:
product_id: '{{product_id}}'
is_visible: 'true'
availability_date: '{{launch_date}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel: product-launches
text: 'Product launch orchestrated: {{campaign_name}} | Product: {{product_id}} | Email: {{create-email-campaign.delivery_id}} | IG: {{post-instagram.media_id}} | FB: {{post-facebook.post_id}} | Store: live on {{launch_date}}'
consumes:
- type: http
namespace: adobe-campaign
baseUri: https://mc.adobe.io/adidas/campaign
authentication:
type: bearer
token: $secrets.adobe_campaign_token
inputParameters:
- name: x-api-key
in: header
value: $secrets.adobe_client_id
resources:
- name: deliveries
path: /deliveries
operations:
- name: create-delivery
method: POST
- type: http
namespace: instagram
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.instagram_token
resources:
- name: media
path: /{{ig_user_id}}/media
operations:
- name: create-media
method: POST
- type: http
namespace: facebook
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.facebook_page_token
resources:
- name: posts
path: /{{page_id}}/feed
operations:
- name: create-post
method: POST
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/adidas/v3
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: products
path: /catalog/products/{{product_id}}
inputParameters:
- name: product_id
in: path
operations:
- name: update-product-visibility
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/{{team_id}}/channels/{{channel_id}}/messages
operations:
- name: send-message
method: POST
Provisions store in SAP, creates Salesforce location record, sets up ServiceNow IT support, assigns staff in Workday, and notifies retail operations.
naftiko: '0.5'
info:
label: Store Opening Orchestrator
description: Provisions store in SAP, creates Salesforce location record, sets up ServiceNow IT support, assigns staff in Workday, and notifies retail operations.
tags:
- retail
- sap
- salesforce
- servicenow
- workday
capability:
exposes:
- type: mcp
namespace: retail
port: 8080
tools:
- name: store_opening_orchestrator
description: Orchestrate store opening orchestrator workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-sap
type: call
call: sap.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-salesforce
type: call
call: salesforce.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-servicenow
type: call
call: servicenow.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-workday
type: call
call: workday.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: salesforce-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
- type: http
namespace: workday
baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/adidas
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: workday-op
method: POST
Searches Elasticsearch indexes for Adidas.
naftiko: '0.5'
info:
label: Elasticsearch Log Query
description: Searches Elasticsearch indexes for Adidas.
tags:
- data
- elasticsearch
- search
capability:
exposes:
- type: mcp
namespace: search
port: 8080
tools:
- name: search-logs
description: Search ES logs at Adidas.
inputParameters:
- name: query
in: body
type: string
description: The query to look up.
call: elasticsearch.get-query
with:
query: '{{query}}'
consumes:
- type: http
namespace: elasticsearch
baseUri: https://adidas-es.com:9200
authentication:
type: bearer
token: $secrets.elasticsearch_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: elasticsearch_log_query
method: GET
Detects high-priority Zendesk tickets, enriches with customer data from Salesforce, creates escalation in ServiceNow, and notifies management.
naftiko: '0.5'
info:
label: Customer Service Escalation Pipeline
description: Detects high-priority Zendesk tickets, enriches with customer data from Salesforce, creates escalation in ServiceNow, and notifies management.
tags:
- customer-service
- zendesk
- salesforce
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: customer-service
port: 8080
tools:
- name: customer_service_escalation_pipeline
description: Orchestrate customer service escalation pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-zendesk
type: call
call: zendesk.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-salesforce
type: call
call: salesforce.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-servicenow
type: call
call: servicenow.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: zendesk
baseUri: https://adidas.zendesk.com/api/v2
authentication:
type: bearer
token: $secrets.zendesk_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: zendesk-op
method: POST
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: salesforce-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Collects carbon footprint data from SAP, energy usage from Oracle Cloud, and supply chain metrics from SAP BW, then publishes a sustainability dashboard to Google Sheets and notifies leadership in Teams.
naftiko: '0.5'
info:
label: Sustainability Reporting Pipeline
description: Collects carbon footprint data from SAP, energy usage from Oracle Cloud, and supply chain metrics from SAP BW, then publishes a sustainability dashboard to Google Sheets and notifies leadership in Teams.
tags:
- sustainability
- sap-s4hana
- oracle-cloud
- sap-bw
- google-sheets
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sustainability
port: 8080
tools:
- name: generate-sustainability-report
description: Given a fiscal period, collect sustainability metrics from all sources and publish a consolidated report.
inputParameters:
- name: fiscal_period
in: body
type: string
description: The fiscal period (e.g. 2026-Q1).
- name: spreadsheet_id
in: body
type: string
description: Google Sheets ID for the sustainability dashboard.
steps:
- name: get-carbon-data
type: call
call: sap.get-carbon-footprint
with:
period: '{{fiscal_period}}'
- name: get-energy-usage
type: call
call: oracle-cloud.get-energy-metrics
with:
period: '{{fiscal_period}}'
- name: get-supply-chain-metrics
type: call
call: sap-bw.get-sustainability-kpis
with:
period: '{{fiscal_period}}'
- name: update-dashboard
type: call
call: gsheets.update-range
with:
spreadsheet_id: '{{spreadsheet_id}}'
range: Dashboard!A2
values: '{{fiscal_period}},{{get-carbon-data.total_co2_tons}},{{get-energy-usage.kwh_total}},{{get-supply-chain-metrics.recycled_materials_pct}},{{get-supply-chain-metrics.sustainable_suppliers_pct}}'
- name: notify-leadership
type: call
call: msteams.send-message
with:
channel: sustainability-leadership
text: 'Sustainability Report: {{fiscal_period}} | CO2: {{get-carbon-data.total_co2_tons}} tons | Energy: {{get-energy-usage.kwh_total}} kWh | Recycled Materials: {{get-supply-chain-metrics.recycled_materials_pct}}% | Sustainable Suppliers: {{get-supply-chain-metrics.sustainable_suppliers_pct}}%'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-s4.sap.com/sap/opu/odata/sap/API_SUSTAINABILITY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: carbon
path: /A_CarbonFootprint
operations:
- name: get-carbon-footprint
method: GET
- type: http
namespace: oracle-cloud
baseUri: https://cloud.oracle.com/api/v1
authentication:
type: bearer
token: $secrets.oracle_cloud_token
resources:
- name: energy
path: /sustainability/energy
operations:
- name: get-energy-metrics
method: GET
- type: http
namespace: sap-bw
baseUri: https://adidas-bw.sap.com/sap/bw/odata/v1
authentication:
type: basic
username: $secrets.sap_bw_user
password: $secrets.sap_bw_password
resources:
- name: sustainability
path: /ZSUSTAINABILITY_KPI
operations:
- name: get-sustainability-kpis
method: GET
- type: http
namespace: gsheets
baseUri: https://sheets.googleapis.com/v4/spreadsheets
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: values
path: /{{spreadsheet_id}}/values/{{range}}
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: update-range
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/{{team_id}}/channels/{{channel_id}}/messages
operations:
- name: send-message
method: POST
When a Salesforce opportunity is marked as Closed Won, creates a sales order in SAP S/4HANA, updates the Salesforce record with the SAP order number, and notifies the fulfillment team in Teams.
naftiko: '0.5'
info:
label: Salesforce to SAP Order Sync
description: When a Salesforce opportunity is marked as Closed Won, creates a sales order in SAP S/4HANA, updates the Salesforce record with the SAP order number, and notifies the fulfillment team in Teams.
tags:
- sales
- salesforce
- sap-s4hana
- microsoft-teams
- order-management
capability:
exposes:
- type: mcp
namespace: order-sync
port: 8080
tools:
- name: sync-won-opportunity
description: Given a Salesforce opportunity ID, create a SAP sales order, update SF with the order number, and notify fulfillment.
inputParameters:
- name: opportunity_id
in: body
type: string
description: The Salesforce opportunity ID.
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:
customer_id: '{{get-opportunity.account_sap_id}}'
amount: '{{get-opportunity.amount}}'
products: '{{get-opportunity.line_items}}'
delivery_date: '{{get-opportunity.close_date}}'
- name: update-salesforce
type: call
call: salesforce.update-opportunity
with:
opportunity_id: '{{opportunity_id}}'
sap_order_number: '{{create-sales-order.order_number}}'
- name: notify-fulfillment
type: call
call: msteams.send-message
with:
channel: fulfillment-ops
text: 'New Sales Order: SAP {{create-sales-order.order_number}} from SF Opportunity {{opportunity_id}} | Customer: {{get-opportunity.account_name}} | Amount: {{get-opportunity.amount}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://adidas.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
- name: update-opportunity
method: PATCH
- type: http
namespace: sap
baseUri: https://adidas-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
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
operations:
- name: send-message
method: POST
Collects POS data from SAP, aggregates in Snowflake, refreshes Power BI dashboards, identifies underperformers, and notifies retail ops.
naftiko: '0.5'
info:
label: Retail Store Performance Pipeline
description: Collects POS data from SAP, aggregates in Snowflake, refreshes Power BI dashboards, identifies underperformers, and notifies retail ops.
tags:
- retail
- sap
- snowflake
- powerbi
- slack
capability:
exposes:
- type: mcp
namespace: retail
port: 8080
tools:
- name: retail_store_performance_pipeline
description: Orchestrate retail store performance pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-sap
type: call
call: sap.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-snowflake
type: call
call: snowflake.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-slack
type: call
call: slack.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-servicenow
type: call
call: servicenow.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
Executes SQL queries against Adidas Snowflake warehouse.
naftiko: '0.5'
info:
label: Snowflake Query Executor
description: Executes SQL queries against Adidas Snowflake warehouse.
tags:
- data
- snowflake
- analytics
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: run-query
description: Run query at Adidas.
inputParameters:
- name: sql_query
in: body
type: string
description: The sql_query to look up.
call: snowflake.get-sql_query
with:
sql_query: '{{sql_query}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake_query_executor
method: GET
When a new employee joins a department, assigns the relevant Pluralsight learning path, creates a Microsoft Planner task for completion tracking, and notifies the manager in Teams.
naftiko: '0.5'
info:
label: Pluralsight Learning Path Assignment
description: When a new employee joins a department, assigns the relevant Pluralsight learning path, creates a Microsoft Planner task for completion tracking, and notifies the manager in Teams.
tags:
- learning
- pluralsight
- microsoft-planner
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: learning
port: 8080
tools:
- name: assign-learning-path
description: Given an employee email and department, assign the Pluralsight path, create a tracking task, and notify the manager.
inputParameters:
- name: employee_email
in: body
type: string
description: The new employee email.
- name: department
in: body
type: string
description: The department the employee is joining.
- name: manager_email
in: body
type: string
description: The manager email for notification.
steps:
- name: assign-path
type: call
call: pluralsight.assign-channel
with:
user_email: '{{employee_email}}'
channel_name: '{{department}}_onboarding'
- name: create-task
type: call
call: planner.create-task
with:
plan_id: $secrets.learning_plan_id
title: 'Complete Pluralsight path: {{department}}_onboarding'
assigned_to: '{{employee_email}}'
due_date: +30d
- name: notify-manager
type: call
call: msteams.send-message
with:
recipient_upn: '{{manager_email}}'
text: 'Learning path assigned to {{employee_email}}: {{department}}_onboarding | Due in 30 days | Task: {{create-task.id}}'
consumes:
- type: http
namespace: pluralsight
baseUri: https://api.pluralsight.com/api/v1
authentication:
type: bearer
token: $secrets.pluralsight_token
resources:
- name: channels
path: /channels/assign
operations:
- name: assign-channel
method: POST
- type: http
namespace: planner
baseUri: https://graph.microsoft.com/v1.0/planner
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: tasks
path: /tasks
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: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Creates a Salesforce campaign for a sponsored event, uploads the sponsorship agreement to Google Drive, schedules social media posts on Instagram and Twitter, and sets up a Planner task for follow-up.
naftiko: '0.5'
info:
label: Event Sponsorship Tracker
description: Creates a Salesforce campaign for a sponsored event, uploads the sponsorship agreement to Google Drive, schedules social media posts on Instagram and Twitter, and sets up a Planner task for follow-up.
tags:
- marketing
- events
- salesforce
- google-drive
- instagram
- twitter
- microsoft-planner
capability:
exposes:
- type: mcp
namespace: event-sponsorship
port: 8080
tools:
- name: setup-sponsorship
description: Given event details and sponsorship terms, create campaign, store agreement, schedule social posts, and track follow-up.
inputParameters:
- name: event_name
in: body
type: string
description: Name of the sponsored event.
- name: event_date
in: body
type: string
description: Event date in YYYY-MM-DD format.
- name: sponsorship_amount
in: body
type: string
description: Sponsorship investment amount.
- name: sport_category
in: body
type: string
description: Sport category for the event.
steps:
- name: create-campaign
type: call
call: salesforce.create-campaign
with:
name: 'Sponsorship: {{event_name}}'
type: Event
start_date: '{{event_date}}'
budgeted_cost: '{{sponsorship_amount}}'
- name: upload-agreement
type: call
call: gdrive.upload-file
with:
folder_id: $secrets.sponsorships_folder
file_name: '{{event_name}}_agreement.pdf'
- name: schedule-instagram
type: call
call: instagram.create-media
with:
caption: 'We''re proud to sponsor {{event_name}}! See you there. #adidas #{{sport_category}}'
scheduled_date: '{{event_date}}'
- name: schedule-twitter
type: call
call: twitter.create-tweet
with:
text: 'Adidas is the official sponsor of {{event_name}}. Game on. #adidas #{{sport_category}}'
- name: create-followup-task
type: call
call: planner.create-task
with:
plan_id: $secrets.events_plan_id
title: 'Post-event report: {{event_name}}'
due_date: +7d
description: 'Campaign: {{create-campaign.id}} | Agreement: {{upload-agreement.url}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: campaigns
path: /sobjects/Campaign
operations:
- name: create-campaign
method: POST
- type: http
namespace: gdrive
baseUri: https://www.googleapis.com/upload/drive/v3
authentication:
type: bearer
token: $secrets.google_drive_token
resources:
- name: files
path: /files
operations:
- name: upload-file
method: POST
- type: http
namespace: instagram
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.instagram_token
resources:
- name: media
path: /{{ig_user_id}}/media
operations:
- name: create-media
method: POST
- type: http
namespace: twitter
baseUri: https://api.twitter.com/2
authentication:
type: bearer
token: $secrets.twitter_bearer_token
resources:
- name: tweets
path: /tweets
operations:
- name: create-tweet
method: POST
- type: http
namespace: planner
baseUri: https://graph.microsoft.com/v1.0/planner
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: tasks
path: /tasks
operations:
- name: create-task
method: POST
Tracks touchpoints from Salesforce, web analytics from Datadog, purchase data from Stripe, aggregates in Snowflake, and notifies CX team.
naftiko: '0.5'
info:
label: Customer Journey Analytics Pipeline
description: Tracks touchpoints from Salesforce, web analytics from Datadog, purchase data from Stripe, aggregates in Snowflake, and notifies CX team.
tags:
- customer-experience
- salesforce
- datadog
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: customer-experience
port: 8080
tools:
- name: customer_journey_analytics_pipeline
description: Orchestrate customer journey analytics pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-salesforce
type: call
call: salesforce.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-datadog
type: call
call: datadog.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-snowflake
type: call
call: snowflake.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: salesforce-op
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apiKey
key: $secrets.datadog_api_key
header: DD-API-KEY
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: datadog-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Syncs inventory between SAP warehouse, Salesforce Commerce Cloud, and store POS systems, logs discrepancies in ServiceNow, and alerts supply chain.
naftiko: '0.5'
info:
label: Omnichannel Inventory Sync Pipeline
description: Syncs inventory between SAP warehouse, Salesforce Commerce Cloud, and store POS systems, logs discrepancies in ServiceNow, and alerts supply chain.
tags:
- inventory
- sap
- salesforce
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: inventory
port: 8080
tools:
- name: omnichannel_inventory_sync_pipeline
description: Orchestrate omnichannel inventory sync pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-sap
type: call
call: sap.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-salesforce
type: call
call: salesforce.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-servicenow
type: call
call: servicenow.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: salesforce-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Collects social media mentions, runs sentiment analysis in Snowflake, updates HubSpot brand health metrics, and notifies communications team.
naftiko: '0.5'
info:
label: Brand Sentiment Analyzer
description: Collects social media mentions, runs sentiment analysis in Snowflake, updates HubSpot brand health metrics, and notifies communications team.
tags:
- brand
- snowflake
- hubspot
- powerbi
- slack
capability:
exposes:
- type: mcp
namespace: brand
port: 8080
tools:
- name: brand_sentiment_analyzer
description: Orchestrate brand sentiment analyzer workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-snowflake
type: call
call: snowflake.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-hubspot
type: call
call: hubspot.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-slack
type: call
call: slack.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-servicenow
type: call
call: servicenow.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: hubspot-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
Pulls sales data from Snowflake, runs ML models for demand prediction, updates SAP MRP, generates reports in Power BI, and notifies planners.
naftiko: '0.5'
info:
label: Supply Chain Demand Forecasting
description: Pulls sales data from Snowflake, runs ML models for demand prediction, updates SAP MRP, generates reports in Power BI, and notifies planners.
tags:
- supply-chain
- snowflake
- sap
- powerbi
- slack
capability:
exposes:
- type: mcp
namespace: supply-chain
port: 8080
tools:
- name: supply_chain_demand_forecasting
description: Orchestrate supply chain demand forecasting workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-snowflake
type: call
call: snowflake.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-sap
type: call
call: sap.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-slack
type: call
call: slack.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-servicenow
type: call
call: servicenow.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
Receives a customer inquiry via WhatsApp, looks up the order in BigCommerce, fetches tracking from SAP, and replies with the order status through WhatsApp.
naftiko: '0.5'
info:
label: WhatsApp Customer Order Status Bot
description: Receives a customer inquiry via WhatsApp, looks up the order in BigCommerce, fetches tracking from SAP, and replies with the order status through WhatsApp.
tags:
- customer-service
- whatsapp
- bigcommerce
- sap-s4hana
capability:
exposes:
- type: mcp
namespace: whatsapp-bot
port: 8080
tools:
- name: handle-order-inquiry
description: Given a WhatsApp message with an order number, look up status and reply with tracking info.
inputParameters:
- name: phone_number
in: body
type: string
description: The customer WhatsApp phone number.
- name: order_id
in: body
type: string
description: The order ID from the customer message.
steps:
- name: get-order
type: call
call: bigcommerce.get-order
with:
order_id: '{{order_id}}'
- name: get-tracking
type: call
call: sap.get-delivery-tracking
with:
order_reference: '{{order_id}}'
- name: reply-whatsapp
type: call
call: whatsapp.send-message
with:
to: '{{phone_number}}'
text: 'Hi! Your order #{{order_id}} is {{get-order.status}}. Tracking: {{get-tracking.tracking_number}}. Estimated delivery: {{get-tracking.estimated_delivery}}.'
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/adidas/v2
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: orders
path: /orders/{{order_id}}
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: sap
baseUri: https://adidas-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
operations:
- name: get-delivery-tracking
method: GET
- type: http
namespace: whatsapp
baseUri: https://graph.facebook.com/v18.0/$secrets.whatsapp_phone_id
authentication:
type: bearer
token: $secrets.whatsapp_token
resources:
- name: messages
path: /messages
operations:
- name: send-message
method: POST
Retrieves GitHub repository metadata for Adidas.
naftiko: '0.5'
info:
label: GitHub Repository Lookup
description: Retrieves GitHub repository metadata for Adidas.
tags:
- devops
- github
- source-control
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: get-repo
description: Look up repo at Adidas.
inputParameters:
- name: repo_name
in: body
type: string
description: The repo_name to look up.
call: github.get-repo_name
with:
repo_name: '{{repo_name}}'
consumes:
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: github_repository_lookup
method: GET
Pulls store sales data from Teradata, KPI metrics from SAP BW, and customer foot traffic from Google Analytics, then consolidates into a Google Sheet for regional managers.
naftiko: '0.5'
info:
label: Retail Store Performance Dashboard Sync
description: Pulls store sales data from Teradata, KPI metrics from SAP BW, and customer foot traffic from Google Analytics, then consolidates into a Google Sheet for regional managers.
tags:
- retail
- analytics
- teradata
- sap-bw
- google-analytics
- google-sheets
capability:
exposes:
- type: mcp
namespace: retail-reporting
port: 8080
tools:
- name: sync-store-dashboard
description: Given a store ID and date range, collect sales, KPIs, and traffic data and write to a Google Sheet.
inputParameters:
- name: store_id
in: body
type: string
description: The Adidas retail store identifier.
- name: date_range
in: body
type: string
description: Date range in YYYY-MM-DD/YYYY-MM-DD format.
- name: spreadsheet_id
in: body
type: string
description: The Google Sheets spreadsheet ID for output.
steps:
- name: get-sales
type: call
call: teradata.query-store-sales
with:
store_id: '{{store_id}}'
date_range: '{{date_range}}'
- name: get-kpis
type: call
call: sap-bw.get-store-kpis
with:
store_id: '{{store_id}}'
date_range: '{{date_range}}'
- name: get-traffic
type: call
call: ga.get-store-traffic
with:
store_id: '{{store_id}}'
date_range: '{{date_range}}'
- name: write-to-sheet
type: call
call: gsheets.update-range
with:
spreadsheet_id: '{{spreadsheet_id}}'
range: Dashboard!A1
values: 'Store: {{store_id}} | Revenue: {{get-sales.total_revenue}} | Transactions: {{get-sales.transactions}} | Conversion: {{get-kpis.conversion_rate}} | Foot Traffic: {{get-traffic.sessions}}'
consumes:
- type: http
namespace: teradata
baseUri: https://teradata.adidas.internal/api/v1
authentication:
type: basic
username: $secrets.teradata_user
password: $secrets.teradata_password
resources:
- name: queries
path: /queries
operations:
- name: query-store-sales
method: POST
- type: http
namespace: sap-bw
baseUri: https://adidas-bw.sap.com/sap/bw/odata/v1
authentication:
type: basic
username: $secrets.sap_bw_user
password: $secrets.sap_bw_password
resources:
- name: store-kpis
path: /ZRETAIL_STORE_KPI
operations:
- name: get-store-kpis
method: GET
- type: http
namespace: ga
baseUri: https://analyticsdata.googleapis.com/v1beta
authentication:
type: bearer
token: $secrets.google_analytics_token
resources:
- name: reports
path: /properties/{{property_id}}:runReport
operations:
- name: get-store-traffic
method: POST
- type: http
namespace: gsheets
baseUri: https://sheets.googleapis.com/v4/spreadsheets
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: values
path: /{{spreadsheet_id}}/values/{{range}}
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: update-range
method: PUT
Creates a Salesforce opportunity for an athlete endorsement, stores the contract in Box, updates the deal in Microsoft Planner, and notifies the brand team in Teams.
naftiko: '0.5'
info:
label: Athlete Endorsement Deal Tracker
description: Creates a Salesforce opportunity for an athlete endorsement, stores the contract in Box, updates the deal in Microsoft Planner, and notifies the brand team in Teams.
tags:
- partnerships
- salesforce
- box
- microsoft-planner
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: endorsements
port: 8080
tools:
- name: create-endorsement-deal
description: Given athlete details and deal terms, create tracking records across Salesforce, Box, Planner, and Teams.
inputParameters:
- name: athlete_name
in: body
type: string
description: Name of the athlete.
- name: deal_value
in: body
type: string
description: Total deal value.
- name: sport_category
in: body
type: string
description: Sport category (e.g. running, football, basketball).
- name: contract_duration
in: body
type: string
description: Contract duration in months.
steps:
- name: create-opportunity
type: call
call: salesforce.create-opportunity
with:
name: 'Endorsement: {{athlete_name}} — {{sport_category}}'
amount: '{{deal_value}}'
stage: Negotiation
description: '{{contract_duration}} month endorsement deal with {{athlete_name}} for {{sport_category}}.'
- name: create-contract-folder
type: call
call: box.create-folder
with:
parent_folder_id: $secrets.endorsements_folder
name: '{{athlete_name}}_{{sport_category}}'
- name: create-planner-task
type: call
call: planner.create-task
with:
plan_id: $secrets.endorsements_plan_id
title: 'Review: {{athlete_name}} endorsement — {{deal_value}}'
due_date: +14d
description: 'SF Opportunity: {{create-opportunity.id}} | Box: {{create-contract-folder.url}}'
- name: notify-brand-team
type: call
call: msteams.send-message
with:
channel: brand-partnerships
text: 'New Endorsement Deal: {{athlete_name}} ({{sport_category}}) | Value: {{deal_value}} | Duration: {{contract_duration}}mo | SF: {{create-opportunity.id}} | Task: {{create-planner-task.id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /sobjects/Opportunity
operations:
- name: create-opportunity
method: POST
- type: http
namespace: box
baseUri: https://api.box.com/2.0
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: folders
path: /folders
operations:
- name: create-folder
method: POST
- type: http
namespace: planner
baseUri: https://graph.microsoft.com/v1.0/planner
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: tasks
path: /tasks
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/{{team_id}}/channels/{{channel_id}}/messages
operations:
- name: send-message
method: POST
When a return request arrives in Zendesk, looks up the order in BigCommerce, initiates a refund via Stripe, updates the SAP inventory, and resolves the Zendesk ticket.
naftiko: '0.5'
info:
label: Customer Return Processing
description: When a return request arrives in Zendesk, looks up the order in BigCommerce, initiates a refund via Stripe, updates the SAP inventory, and resolves the Zendesk ticket.
tags:
- customer-service
- returns
- zendesk
- bigcommerce
- stripe
- sap-s4hana
capability:
exposes:
- type: mcp
namespace: returns
port: 8080
tools:
- name: process-return
description: Given a Zendesk ticket ID and order ID, process the full return including refund and inventory adjustment.
inputParameters:
- name: ticket_id
in: body
type: string
description: The Zendesk ticket ID for the return request.
- name: order_id
in: body
type: string
description: The BigCommerce order ID.
- name: reason
in: body
type: string
description: Return reason code.
steps:
- name: get-order
type: call
call: bigcommerce.get-order
with:
order_id: '{{order_id}}'
- name: process-refund
type: call
call: stripe.create-refund
with:
payment_intent_id: '{{get-order.payment_reference}}'
amount: '{{get-order.total_inc_tax}}'
reason: '{{reason}}'
- name: update-inventory
type: call
call: sap.post-goods-receipt
with:
sku: '{{get-order.line_items[0].sku}}'
quantity: '{{get-order.line_items[0].quantity}}'
movement_type: RETURN
- name: resolve-ticket
type: call
call: zendesk.update-ticket
with:
ticket_id: '{{ticket_id}}'
status: solved
comment: 'Return processed. Refund: {{process-refund.id}} ({{process-refund.amount}}). Inventory updated.'
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/adidas/v2
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: orders
path: /orders/{{order_id}}
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: stripe
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: refunds
path: /refunds
operations:
- name: create-refund
method: POST
- type: http
namespace: sap
baseUri: https://adidas-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_DOCUMENT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: material-documents
path: /A_MaterialDocumentHeader
operations:
- name: post-goods-receipt
method: POST
- type: http
namespace: zendesk
baseUri: https://adidas.zendesk.com/api/v2
authentication:
type: bearer
token: $secrets.zendesk_token
resources:
- name: tickets
path: /tickets/{{ticket_id}}.json
inputParameters:
- name: ticket_id
in: path
operations:
- name: update-ticket
method: PUT
When a Zendesk ticket is resolved, sends a Google Forms satisfaction survey link, collects the response, and updates the Salesforce contact record with the CSAT score.
naftiko: '0.5'
info:
label: Customer Feedback Loop
description: When a Zendesk ticket is resolved, sends a Google Forms satisfaction survey link, collects the response, and updates the Salesforce contact record with the CSAT score.
tags:
- customer-service
- feedback
- zendesk
- google-forms
- salesforce
capability:
exposes:
- type: mcp
namespace: customer-feedback
port: 8080
tools:
- name: trigger-feedback-survey
description: Given a resolved Zendesk ticket, send a satisfaction survey and route the score back to Salesforce.
inputParameters:
- name: ticket_id
in: body
type: string
description: The resolved Zendesk ticket ID.
- name: customer_email
in: body
type: string
description: The customer email address.
- name: salesforce_contact_id
in: body
type: string
description: The Salesforce contact ID.
steps:
- name: get-ticket
type: call
call: zendesk.get-ticket
with:
ticket_id: '{{ticket_id}}'
- name: send-survey
type: call
call: google-forms.send-form
with:
form_id: $secrets.csat_form_id
recipient_email: '{{customer_email}}'
ticket_reference: '{{ticket_id}}'
- name: update-salesforce
type: call
call: salesforce.update-contact
with:
contact_id: '{{salesforce_contact_id}}'
last_survey_sent: '{{ticket_id}}'
survey_type: CSAT
consumes:
- type: http
namespace: zendesk
baseUri: https://adidas.zendesk.com/api/v2
authentication:
type: bearer
token: $secrets.zendesk_token
resources:
- name: tickets
path: /tickets/{{ticket_id}}.json
inputParameters:
- name: ticket_id
in: path
operations:
- name: get-ticket
method: GET
- type: http
namespace: google-forms
baseUri: https://forms.googleapis.com/v1
authentication:
type: bearer
token: $secrets.google_forms_token
resources:
- name: forms
path: /forms/{{form_id}}/responses
inputParameters:
- name: form_id
in: path
operations:
- name: send-form
method: POST
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: contacts
path: /sobjects/Contact/{{contact_id}}
inputParameters:
- name: contact_id
in: path
operations:
- name: update-contact
method: PATCH
Monitors equipment telemetry in Datadog, predicts maintenance needs in Snowflake, creates work orders in ServiceNow, and notifies facility team.
naftiko: '0.5'
info:
label: Warehouse Equipment Maintenance Pipeline
description: Monitors equipment telemetry in Datadog, predicts maintenance needs in Snowflake, creates work orders in ServiceNow, and notifies facility team.
tags:
- maintenance
- datadog
- snowflake
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: maintenance
port: 8080
tools:
- name: warehouse_equipment_maintenance_pipeline
description: Orchestrate warehouse equipment maintenance pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-datadog
type: call
call: datadog.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-snowflake
type: call
call: snowflake.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-servicenow
type: call
call: servicenow.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apiKey
key: $secrets.datadog_api_key
header: DD-API-KEY
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: datadog-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Looks up a potential influencer on LinkedIn and ZoomInfo, creates a Salesforce opportunity, drafts an outreach email in Adobe Campaign, and tracks the engagement in HubSpot.
naftiko: '0.5'
info:
label: Influencer Collaboration Workflow
description: Looks up a potential influencer on LinkedIn and ZoomInfo, creates a Salesforce opportunity, drafts an outreach email in Adobe Campaign, and tracks the engagement in HubSpot.
tags:
- marketing
- influencer
- linkedin
- zoominfo
- salesforce
- adobe-campaign
- hubspot
capability:
exposes:
- type: mcp
namespace: influencer-marketing
port: 8080
tools:
- name: initiate-collaboration
description: Given an influencer name and social handle, research them, create a sales opportunity, and start outreach.
inputParameters:
- name: influencer_name
in: body
type: string
description: Full name of the influencer.
- name: social_handle
in: body
type: string
description: Primary social media handle.
- name: campaign_name
in: body
type: string
description: The marketing campaign for this collaboration.
steps:
- name: lookup-linkedin
type: call
call: linkedin.search-person
with:
name: '{{influencer_name}}'
- name: enrich-contact
type: call
call: zoominfo.enrich-person
with:
name: '{{influencer_name}}'
social_handle: '{{social_handle}}'
- name: create-opportunity
type: call
call: salesforce.create-opportunity
with:
name: 'Influencer Collab: {{influencer_name}} — {{campaign_name}}'
stage: Prospecting
description: 'LinkedIn: {{lookup-linkedin.profile_url}} | Followers: {{enrich-contact.follower_count}} | Engagement Rate: {{enrich-contact.engagement_rate}}'
- name: create-outreach
type: call
call: adobe-campaign.create-delivery
with:
template: influencer_outreach_v1
recipient_email: '{{enrich-contact.email}}'
campaign_name: '{{campaign_name}}'
- name: create-hubspot-contact
type: call
call: hubspot.create-contact
with:
email: '{{enrich-contact.email}}'
firstname: '{{influencer_name}}'
company: Influencer
lifecyclestage: lead
consumes:
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: people
path: /people
operations:
- name: search-person
method: GET
- type: http
namespace: zoominfo
baseUri: https://api.zoominfo.com
authentication:
type: bearer
token: $secrets.zoominfo_token
resources:
- name: enrich
path: /enrich/person
operations:
- name: enrich-person
method: POST
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /sobjects/Opportunity
operations:
- name: create-opportunity
method: POST
- type: http
namespace: adobe-campaign
baseUri: https://mc.adobe.io/adidas/campaign
authentication:
type: bearer
token: $secrets.adobe_campaign_token
resources:
- name: deliveries
path: /deliveries
operations:
- name: create-delivery
method: POST
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com/crm/v3
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: contacts
path: /objects/contacts
operations:
- name: create-contact
method: POST
Pulls a summary report from Google Analytics for a specified campaign, returning sessions, conversion rate, and revenue attribution.
naftiko: '0.5'
info:
label: Google Analytics Campaign Report
description: Pulls a summary report from Google Analytics for a specified campaign, returning sessions, conversion rate, and revenue attribution.
tags:
- marketing
- google-analytics
- campaign
capability:
exposes:
- type: mcp
namespace: marketing-analytics
port: 8080
tools:
- name: get-campaign-report
description: Retrieve a Google Analytics campaign performance summary including sessions, conversions, and revenue.
inputParameters:
- name: campaign_id
in: body
type: string
description: The Google Analytics campaign ID.
- name: date_range
in: body
type: string
description: Date range in YYYY-MM-DD/YYYY-MM-DD format.
call: ga.get-report
with:
campaign_id: '{{campaign_id}}'
date_range: '{{date_range}}'
outputParameters:
- name: sessions
type: string
mapping: $.rows[0].metricValues[0].value
- name: conversion_rate
type: string
mapping: $.rows[0].metricValues[1].value
- name: revenue
type: string
mapping: $.rows[0].metricValues[2].value
consumes:
- type: http
namespace: ga
baseUri: https://analyticsdata.googleapis.com/v1beta
authentication:
type: bearer
token: $secrets.google_analytics_token
resources:
- name: reports
path: /properties/{{campaign_id}}:runReport
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-report
method: POST
Monitors product listings across e-commerce channels, tracks pricing and availability, logs discrepancies, and alerts the digital commerce team.
naftiko: '0.5'
info:
label: Digital Shelf Monitoring Pipeline
description: Monitors product listings across e-commerce channels, tracks pricing and availability, logs discrepancies, and alerts the digital commerce team.
tags:
- e-commerce
- datadog
- snowflake
- jira
- slack
capability:
exposes:
- type: mcp
namespace: e-commerce
port: 8080
tools:
- name: digital_shelf_monitoring_pipeline
description: Orchestrate digital shelf monitoring pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-datadog
type: call
call: datadog.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-snowflake
type: call
call: snowflake.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-jira
type: call
call: jira.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apiKey
key: $secrets.datadog_api_key
header: DD-API-KEY
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: datadog-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: jira
baseUri: https://adidas.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Queries the Teradata data warehouse for store-level sales performance by location and date range.
naftiko: '0.5'
info:
label: Teradata Retail Analytics Query
description: Queries the Teradata data warehouse for store-level sales performance by location and date range.
tags:
- analytics
- teradata
- retail
capability:
exposes:
- type: mcp
namespace: retail-analytics
port: 8080
tools:
- name: query-store-sales
description: Run a store-level sales query in Teradata by store ID and date range.
inputParameters:
- name: store_id
in: body
type: string
description: The Adidas retail store identifier.
- 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: teradata.run-query
with:
store_id: '{{store_id}}'
start_date: '{{start_date}}'
end_date: '{{end_date}}'
outputParameters:
- name: total_revenue
type: string
mapping: $.results[0].TOTAL_REVENUE
- name: transactions
type: string
mapping: $.results[0].TRANSACTION_COUNT
- name: avg_basket_size
type: string
mapping: $.results[0].AVG_BASKET
consumes:
- type: http
namespace: teradata
baseUri: https://teradata.adidas.internal/api/v1
authentication:
type: basic
username: $secrets.teradata_user
password: $secrets.teradata_password
resources:
- name: queries
path: /queries
operations:
- name: run-query
method: POST
Integrates point-of-sale data by pulling retail POS data from Circana, updating Salesforce retail accounts, and refreshing the Power BI sales analytics dashboard.
naftiko: '0.5'
info:
label: Point of Sale Data Integration
description: Integrates point-of-sale data by pulling retail POS data from Circana, updating Salesforce retail accounts, and refreshing the Power BI sales analytics dashboard.
tags:
- distribution
- marketing
- salesforce
- power-bi
capability:
exposes:
- type: mcp
namespace: pos-integration
port: 8080
tools:
- name: integrate-pos-data
description: 'Integrate POS data: pull Circana data, update Salesforce accounts, and refresh Power BI dashboard.'
inputParameters:
- name: retailer_id
in: body
type: string
description: The Circana retailer ID.
- name: sf_account_id
in: body
type: string
description: The Salesforce retail account ID.
- name: dataset_id
in: body
type: string
description: The Power BI sales dataset ID.
steps:
- name: get-pos-data
type: call
call: circana.get-retailer-pos
with:
retailer_id: '{{retailer_id}}'
- name: update-sf-account
type: call
call: salesforce.update-account
with:
account_id: '{{sf_account_id}}'
weekly_volume: '{{get-pos-data.weekly_volume}}'
market_share: '{{get-pos-data.market_share}}'
- name: refresh-dashboard
type: call
call: powerbi.trigger-refresh
with:
dataset_id: '{{dataset_id}}'
consumes:
- type: http
namespace: circana
baseUri: https://api.circana.com/v2
authentication:
type: bearer
token: $secrets.circana_token
resources:
- name: pos
path: /pos/retailer/{{retailer_id}}
inputParameters:
- name: retailer_id
in: path
operations:
- name: get-retailer-pos
method: GET
- type: http
namespace: salesforce
baseUri: https://coca-cola.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
- 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: trigger-refresh
method: POST
Retrieves a SAP billing document by number, returning billing type, payer, net value, and billing date.
naftiko: '0.5'
info:
label: SAP Billing Document Lookup
description: Retrieves a SAP billing document by number, returning billing type, payer, net value, and billing date.
tags:
- finance
- sap
- billing
capability:
exposes:
- type: mcp
namespace: billing
port: 8080
tools:
- name: get-billing-document
description: Look up a SAP billing document. Returns billing type, payer, net value, and billing date.
inputParameters:
- name: billing_document
in: body
type: string
description: The SAP billing document number.
call: sap.get-billing-doc
with:
billing_document: '{{billing_document}}'
outputParameters:
- name: billing_type
type: string
mapping: $.d.BillingDocumentType
- name: payer
type: string
mapping: $.d.PayerParty
- name: net_value
type: string
mapping: $.d.TotalNetAmount
- name: billing_date
type: string
mapping: $.d.BillingDocumentDate
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-s4.sap.com/sap/opu/odata/sap/API_BILLING_DOCUMENT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: billing-documents
path: /A_BillingDocument('{{billing_document}}')
inputParameters:
- name: billing_document
in: path
operations:
- name: get-billing-doc
method: GET
Monitors brand sentiment by pulling social listening data from HubSpot, cross-referencing with Adobe Analytics web traffic, and alerting brand management via Microsoft Teams.
naftiko: '0.5'
info:
label: Social Media Sentiment Alert
description: Monitors brand sentiment by pulling social listening data from HubSpot, cross-referencing with Adobe Analytics web traffic, and alerting brand management via Microsoft Teams.
tags:
- marketing
- brand-management
- hubspot
- adobe-analytics
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: brand-monitoring
port: 8080
tools:
- name: check-brand-sentiment
description: 'Orchestrate brand sentiment check: pull HubSpot social data, cross-reference Adobe Analytics, and alert brand team.'
inputParameters:
- name: brand_name
in: body
type: string
description: The brand to monitor, e.g. Coca-Cola, Sprite.
- name: date_range
in: body
type: string
description: Date range in YYYY-MM-DD:YYYY-MM-DD format.
steps:
- name: get-social-sentiment
type: call
call: hubspot.get-social-mentions
with:
brand: '{{brand_name}}'
date_range: '{{date_range}}'
- name: get-web-traffic
type: call
call: adobe.get-brand-traffic
with:
brand_segment: '{{brand_name}}'
date_range: '{{date_range}}'
- name: alert-brand-team
type: call
call: msteams.send-message
with:
channel_id: brand-{{brand_name}}
text: 'Brand Sentiment Report for {{brand_name}}: Social mentions: {{get-social-sentiment.mention_count}}. Sentiment score: {{get-social-sentiment.sentiment_score}}. Web traffic: {{get-web-traffic.page_views}} page views.'
consumes:
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com/crm/v3
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: social-mentions
path: /objects/social_mentions/search
operations:
- name: get-social-mentions
method: POST
- type: http
namespace: adobe
baseUri: https://analytics.adobe.io/api/cocacola
authentication:
type: bearer
token: $secrets.adobe_analytics_token
resources:
- name: reports
path: /reports
operations:
- name: get-brand-traffic
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves a vendor invoice from SAP, verifies it against the corresponding purchase order and goods receipt, and posts a match result back to SAP for payment approval.
naftiko: '0.5'
info:
label: Invoice Processing and Three-Way Match
description: Retrieves a vendor invoice from SAP, verifies it against the corresponding purchase order and goods receipt, and posts a match result back to SAP for payment approval.
tags:
- finance
- procurement
- sap
- invoice-processing
capability:
exposes:
- type: mcp
namespace: finance-ops
port: 8080
tools:
- name: process-invoice-match
description: Given an invoice number, retrieve the invoice and linked PO from SAP S/4HANA, validate quantity and price, and update the invoice match status. Use for accounts payable automation and three-way match workflows.
inputParameters:
- name: invoice_number
in: body
type: string
description: The SAP vendor invoice number (MIRO-style document number).
steps:
- name: get-invoice
type: call
call: sap-fi.get-invoice
with:
invoice_number: '{{invoice_number}}'
- name: get-po
type: call
call: sap-mm.get-po
with:
po_number: '{{get-invoice.po_number}}'
- name: post-match-result
type: call
call: sap-fi.update-invoice-status
with:
invoice_number: '{{invoice_number}}'
match_status: Matched
consumes:
- type: http
namespace: sap-fi
baseUri: https://coca-cola-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-invoice
method: GET
- name: update-invoice-status
method: PATCH
- type: http
namespace: sap-mm
baseUri: https://coca-cola-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
Retrieves the status of a SAP production order including planned quantity, confirmed quantity, and system status for manufacturing tracking.
naftiko: '0.5'
info:
label: SAP Production Order Status
description: Retrieves the status of a SAP production order including planned quantity, confirmed quantity, and system status for manufacturing tracking.
tags:
- manufacturing
- sap
- production
capability:
exposes:
- type: mcp
namespace: manufacturing
port: 8080
tools:
- name: get-production-order
description: Look up a SAP production order by order number. Returns order type, status, planned quantity, and confirmed quantity.
inputParameters:
- name: order_number
in: body
type: string
description: The SAP production order number, e.g. 1000001234.
call: sap.get-production-order
with:
order_number: '{{order_number}}'
outputParameters:
- name: order_type
type: string
mapping: $.d.ManufacturingOrderType
- name: status
type: string
mapping: $.d.MfgOrderPlannedTotalQty
- name: planned_qty
type: string
mapping: $.d.MfgOrderPlannedTotalQty
- name: confirmed_qty
type: string
mapping: $.d.MfgOrderConfirmedYieldQty
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-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-orders
path: /A_ProductionOrder_2('{{order_number}}')
inputParameters:
- name: order_number
in: path
operations:
- name: get-production-order
method: GET
Retrieves a SAP outbound delivery document by delivery number, returning ship-to party, planned goods issue date, and delivery status.
naftiko: '0.5'
info:
label: SAP Delivery Document Lookup
description: Retrieves a SAP outbound delivery document by delivery number, returning ship-to party, planned goods issue date, and delivery status.
tags:
- distribution
- sap
- logistics
capability:
exposes:
- type: mcp
namespace: logistics
port: 8080
tools:
- name: get-delivery-document
description: Look up a SAP outbound delivery by delivery number. Returns ship-to party, goods issue date, and overall status.
inputParameters:
- name: delivery_number
in: body
type: string
description: The SAP delivery document number, e.g. 8000012345.
call: sap.get-delivery
with:
delivery_number: '{{delivery_number}}'
outputParameters:
- name: ship_to_party
type: string
mapping: $.d.ShipToParty
- name: planned_goods_issue_date
type: string
mapping: $.d.PlannedGoodsIssueDate
- name: delivery_status
type: string
mapping: $.d.OverallSDProcessStatus
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-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_number}}')
inputParameters:
- name: delivery_number
in: path
operations:
- name: get-delivery
method: GET
Syncs email campaign results from MailChimp to Salesforce campaign records and posts a performance summary to Microsoft Teams.
naftiko: '0.5'
info:
label: MailChimp Email Campaign Results Sync
description: Syncs email campaign results from MailChimp to Salesforce campaign records and posts a performance summary to Microsoft Teams.
tags:
- marketing
- mailchimp
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: email-marketing
port: 8080
tools:
- name: sync-email-campaign-results
description: Sync MailChimp campaign results to Salesforce and post performance summary to Teams.
inputParameters:
- name: mailchimp_campaign_id
in: body
type: string
description: The MailChimp campaign ID.
- name: sf_campaign_id
in: body
type: string
description: The Salesforce campaign ID.
steps:
- name: get-campaign-report
type: call
call: mailchimp.get-campaign-report
with:
campaign_id: '{{mailchimp_campaign_id}}'
- name: update-sf-campaign
type: call
call: salesforce.update-campaign
with:
campaign_id: '{{sf_campaign_id}}'
emails_sent: '{{get-campaign-report.emails_sent}}'
open_rate: '{{get-campaign-report.open_rate}}'
click_rate: '{{get-campaign-report.click_rate}}'
- name: post-summary
type: call
call: msteams.send-message
with:
channel_id: marketing-campaigns
text: 'Email Campaign Report: {{get-campaign-report.campaign_title}}. Sent: {{get-campaign-report.emails_sent}}. Open rate: {{get-campaign-report.open_rate}}%. Click rate: {{get-campaign-report.click_rate}}%.'
consumes:
- type: http
namespace: mailchimp
baseUri: https://us1.api.mailchimp.com/3.0
authentication:
type: basic
username: anystring
password: $secrets.mailchimp_api_key
resources:
- name: campaign-reports
path: /reports/{{campaign_id}}
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-campaign-report
method: GET
- type: http
namespace: salesforce
baseUri: https://coca-cola.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: campaigns
path: /sobjects/Campaign/{{campaign_id}}
inputParameters:
- name: campaign_id
in: path
operations:
- name: update-campaign
method: PATCH
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channels
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Converts a customer complaint from Zendesk into a quality case by creating a SAP quality notification, linking to the Salesforce account, and notifying the quality team via Microsoft Teams.
naftiko: '0.5'
info:
label: Customer Complaint to Quality Case
description: Converts a customer complaint from Zendesk into a quality case by creating a SAP quality notification, linking to the Salesforce account, and notifying the quality team via Microsoft Teams.
tags:
- customer-service
- quality
- zendesk
- sap
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: quality-feedback
port: 8080
tools:
- name: convert-complaint-to-quality-case
description: Convert Zendesk complaint to SAP quality case, link Salesforce account, and notify quality team.
inputParameters:
- name: ticket_id
in: body
type: string
description: The Zendesk ticket ID.
- name: account_id
in: body
type: string
description: The Salesforce account ID.
steps:
- name: get-complaint
type: call
call: zendesk.get-ticket
with:
ticket_id: '{{ticket_id}}'
- name: create-quality-notification
type: call
call: sap.create-quality-notification
with:
notification_type: customer_complaint
description: '{{get-complaint.subject}}: {{get-complaint.description}}'
material: '{{get-complaint.product_sku}}'
- name: update-sf-account
type: call
call: salesforce.create-case
with:
account_id: '{{account_id}}'
subject: 'Quality case: {{get-complaint.subject}}'
sap_notification: '{{create-quality-notification.notification_number}}'
- name: notify-quality
type: call
call: msteams.send-message
with:
channel_id: quality-cases
text: 'New quality case from customer complaint. Zendesk: #{{ticket_id}}. SAP notification: {{create-quality-notification.notification_number}}. Salesforce case: {{update-sf-account.case_number}}'
consumes:
- type: http
namespace: zendesk
baseUri: https://cocacola.zendesk.com/api/v2
authentication:
type: bearer
token: $secrets.zendesk_token
resources:
- name: tickets
path: /tickets/{{ticket_id}}
inputParameters:
- name: ticket_id
in: path
operations:
- name: get-ticket
method: GET
- type: http
namespace: sap
baseUri: https://coca-cola-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: /A_QualityNotification
operations:
- name: create-quality-notification
method: POST
- type: http
namespace: salesforce
baseUri: https://coca-cola.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: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channels
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves SLO compliance status from Datadog for all production services and publishes a weekly reliability digest to the SRE Microsoft Teams channel.
naftiko: '0.5'
info:
label: Datadog SLO Compliance Report
description: Retrieves SLO compliance status from Datadog for all production services and publishes a weekly reliability digest to the SRE Microsoft Teams channel.
tags:
- observability
- datadog
- slo
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: slo-reporting
port: 8080
tools:
- name: digest-slo-compliance
description: Fetch all SLO status summaries from Datadog and post a weekly compliance report to the SRE Teams channel. Use for reliability governance and SLO review meetings.
steps:
- name: get-slos
type: call
call: datadog.list-slos
- name: post-report
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sre_channel_id
text: 'Weekly SLO Report: {{get-slos.total_count}} SLOs tracked across Coca-Cola production services.'
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
operations:
- name: list-slos
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Fetches open Dependabot security alerts for a GitHub repository, creates ServiceNow security incidents for critical findings, and notifies the security team via Teams.
naftiko: '0.5'
info:
label: GitHub Security Vulnerability Scan Triage
description: Fetches open Dependabot security alerts for a GitHub repository, creates ServiceNow security incidents for critical findings, and notifies the security team via Teams.
tags:
- security
- github
- servicenow
- devops
- vulnerability-management
capability:
exposes:
- type: mcp
namespace: security-ops
port: 8080
tools:
- name: triage-security-alerts
description: Retrieve open Dependabot security alerts for a GitHub repository, create ServiceNow security incidents for critical severity alerts, and notify the security team via Teams.
inputParameters:
- name: repo
in: body
type: string
description: The repository in owner/repo format to scan for security alerts.
steps:
- name: get-alerts
type: call
call: github.list-dependabot-alerts
with:
owner: coca-cola
repo: '{{repo}}'
severity: critical
- name: create-security-incident
type: call
call: servicenow.create-incident
with:
short_description: Critical Dependabot alerts in {{repo}}
category: security
urgency: '1'
- name: notify-security-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_security_channel_id
text: 'Security Alert: {{get-alerts.total_count}} critical vulnerabilities in {{repo}}. Incident: {{create-security-incident.number}}'
consumes:
- type: http
namespace: github
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: list-dependabot-alerts
method: GET
- type: http
namespace: servicenow
baseUri: https://cocacola.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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a Salesforce survey response scores below a detractor threshold, automatically creates a service case and assigns it to the customer success team.
naftiko: '0.5'
info:
label: Salesforce Customer NPS Case Creation
description: When a Salesforce survey response scores below a detractor threshold, automatically creates a service case and assigns it to the customer success team.
tags:
- sales
- customer-success
- salesforce
- nps
capability:
exposes:
- type: mcp
namespace: customer-success
port: 8080
tools:
- name: handle-nps-detractor
description: Given a Salesforce contact ID and NPS score below 7, create a service case and assign it to the customer success team for follow-up. Use for automated detractor response workflows.
inputParameters:
- name: contact_id
in: body
type: string
description: The Salesforce Contact ID of the NPS survey respondent.
- name: nps_score
in: body
type: integer
description: The NPS score (0–10) from the survey response.
- name: feedback
in: body
type: string
description: Verbatim feedback provided by the respondent.
steps:
- name: get-contact
type: call
call: salesforce-contact.get-contact
with:
contact_id: '{{contact_id}}'
- name: create-case
type: call
call: salesforce-cases.create-case
with:
subject: 'NPS Detractor Follow-up: {{get-contact.name}} (Score: {{nps_score}})'
description: '{{feedback}}'
contactId: '{{contact_id}}'
origin: NPS Survey
priority: High
consumes:
- type: http
namespace: salesforce-contact
baseUri: https://cocacola.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: contact
path: /sobjects/Contact/{{contact_id}}
inputParameters:
- name: contact_id
in: path
operations:
- name: get-contact
method: GET
- type: http
namespace: salesforce-cases
baseUri: https://cocacola.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
Converts demand forecasts into production plans by pulling forecast data from Salesforce, creating planned orders in SAP, and updating the Power BI demand planning dashboard.
naftiko: '0.5'
info:
label: Demand Forecast to Production Plan
description: Converts demand forecasts into production plans by pulling forecast data from Salesforce, creating planned orders in SAP, and updating the Power BI demand planning dashboard.
tags:
- supply-chain
- manufacturing
- salesforce
- sap
- power-bi
capability:
exposes:
- type: mcp
namespace: demand-planning
port: 8080
tools:
- name: convert-forecast-to-plan
description: 'Convert demand forecast to production plan: pull Salesforce forecast, create SAP planned orders, refresh dashboard.'
inputParameters:
- name: forecast_id
in: body
type: string
description: The Salesforce demand forecast record ID.
- name: plant_code
in: body
type: string
description: The target manufacturing plant code.
- name: dataset_id
in: body
type: string
description: The Power BI demand planning dataset ID.
steps:
- name: get-forecast
type: call
call: salesforce.get-forecast
with:
forecast_id: '{{forecast_id}}'
- name: create-planned-orders
type: call
call: sap.create-planned-order
with:
material_number: '{{get-forecast.material}}'
plant: '{{plant_code}}'
planned_quantity: '{{get-forecast.quantity}}'
planned_date: '{{get-forecast.delivery_date}}'
- name: refresh-dashboard
type: call
call: powerbi.trigger-refresh
with:
dataset_id: '{{dataset_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://coca-cola.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: forecasts
path: /sobjects/Demand_Forecast__c/{{forecast_id}}
inputParameters:
- name: forecast_id
in: path
operations:
- name: get-forecast
method: GET
- type: http
namespace: sap
baseUri: https://coca-cola-s4.sap.com/sap/opu/odata/sap/API_PLANNED_ORDER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: planned-orders
path: /A_PlannedOrder
operations:
- name: create-planned-order
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: trigger-refresh
method: POST
Pulls current active headcount and salary band data from Workday and returns a structured summary grouped by cost center for finance planning.
naftiko: '0.5'
info:
label: Headcount Snapshot by Cost Center
description: Pulls current active headcount and salary band data from Workday and returns a structured summary grouped by cost center for finance planning.
tags:
- hr
- finance
- reporting
- workday
capability:
exposes:
- type: mcp
namespace: hr-reporting
port: 8080
tools:
- name: get-headcount-snapshot
description: Returns active headcount grouped by cost center and employment type from Workday. Use for headcount planning, finance forecasting, or budget review.
call: workday.list-workers
outputParameters:
- name: workers
type: array
mapping: $.data
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-list
path: /coca-cola/workers
operations:
- name: list-workers
method: GET
Detects packaging material shortages by checking SAP inventory levels, identifies affected production orders, and escalates to supply chain and manufacturing teams via Microsoft Teams.
naftiko: '0.5'
info:
label: Packaging Material Shortage Alert
description: Detects packaging material shortages by checking SAP inventory levels, identifies affected production orders, and escalates to supply chain and manufacturing teams via Microsoft Teams.
tags:
- manufacturing
- supply-chain
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: supply-chain-alert
port: 8080
tools:
- name: alert-packaging-shortage
description: 'Orchestrate packaging shortage response: check SAP inventory, identify affected orders, and notify supply chain team.'
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number for the packaging material.
- name: plant_code
in: body
type: string
description: The manufacturing plant code.
steps:
- name: check-stock
type: call
call: sap.get-material-stock
with:
material_number: '{{material_number}}'
plant: '{{plant_code}}'
- name: get-affected-orders
type: call
call: sap.get-dependent-orders
with:
material_number: '{{material_number}}'
plant: '{{plant_code}}'
- name: notify-supply-chain
type: call
call: msteams.send-message
with:
channel_id: supply-chain-alerts
text: 'PACKAGING SHORTAGE: Material {{material_number}} at plant {{plant_code}}. Available stock: {{check-stock.available_stock}} {{check-stock.unit}}. Affected production orders: {{get-affected-orders.count}}. Immediate procurement action required.'
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-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(Material='{{material_number}}',Plant='{{plant}}')
inputParameters:
- name: material_number
in: path
- name: plant
in: path
operations:
- name: get-material-stock
method: GET
- name: dependent-orders
path: /A_ProductionOrder?$filter=Material eq '{{material_number}}' and Plant eq '{{plant}}'
inputParameters:
- name: material_number
in: query
- name: plant
in: query
operations:
- name: get-dependent-orders
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Optimizes vending machine refills by pulling telemetry data, checking regional inventory in SAP, and creating route-optimized refill tasks in ServiceNow.
naftiko: '0.5'
info:
label: Vending Machine Refill Optimization
description: Optimizes vending machine refills by pulling telemetry data, checking regional inventory in SAP, and creating route-optimized refill tasks in ServiceNow.
tags:
- distribution
- supply-chain
- sap
- servicenow
capability:
exposes:
- type: mcp
namespace: vending-ops
port: 8080
tools:
- name: optimize-refill-routes
description: 'Optimize vending refills: pull machine telemetry, check SAP inventory, and create ServiceNow refill tasks.'
inputParameters:
- name: region_code
in: body
type: string
description: The regional distribution code.
- name: threshold_percent
in: body
type: string
description: The stock threshold percentage to trigger refill.
steps:
- name: get-machine-telemetry
type: call
call: sap.get-vending-telemetry
with:
region: '{{region_code}}'
threshold: '{{threshold_percent}}'
- name: check-regional-inventory
type: call
call: sap.get-regional-stock
with:
region: '{{region_code}}'
- name: create-refill-tasks
type: call
call: servicenow.create-task
with:
short_description: 'Vending refill route: Region {{region_code}}'
description: 'Machines below {{threshold_percent}}%: {{get-machine-telemetry.low_stock_count}}. Regional inventory: {{check-regional-inventory.available_cases}} cases available.'
category: vending_refill
assignment_group: Distribution_{{region_code}}
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-s4.sap.com/sap/opu/odata/sap/API_VENDING_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: telemetry
path: /VendingMachineStatus?$filter=Region eq '{{region}}' and StockLevel lt {{threshold}}
inputParameters:
- name: region
in: query
- name: threshold
in: query
operations:
- name: get-vending-telemetry
method: GET
- name: regional-stock
path: /RegionalInventory('{{region}}')
inputParameters:
- name: region
in: path
operations:
- name: get-regional-stock
method: GET
- type: http
namespace: servicenow
baseUri: https://cocacola.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
When a quality issue is detected, places a batch on hold in SAP, creates a quality case in ServiceNow, and notifies the quality assurance and distribution teams via Microsoft Teams.
naftiko: '0.5'
info:
label: Quality Hold and Recall Orchestrator
description: When a quality issue is detected, places a batch on hold in SAP, creates a quality case in ServiceNow, and notifies the quality assurance and distribution teams via Microsoft Teams.
tags:
- manufacturing
- quality
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: quality-ops
port: 8080
tools:
- name: initiate-quality-hold
description: 'Orchestrate a quality hold: place batch on hold in SAP, create ServiceNow case, and notify QA and distribution teams.'
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number.
- name: batch_number
in: body
type: string
description: The batch number to place on hold.
- name: reason
in: body
type: string
description: The reason for the quality hold.
steps:
- name: get-batch-info
type: call
call: sap.get-batch
with:
material_number: '{{material_number}}'
batch_number: '{{batch_number}}'
- name: place-batch-hold
type: call
call: sap.update-batch-status
with:
material_number: '{{material_number}}'
batch_number: '{{batch_number}}'
status: RESTRICTED
- name: create-quality-case
type: call
call: servicenow.create-incident
with:
short_description: 'Quality hold: Material {{material_number}} Batch {{batch_number}}'
description: '{{reason}}'
category: quality_hold
urgency: '1'
assignment_group: Quality_Assurance
- name: notify-teams
type: call
call: msteams.send-message
with:
channel_id: quality-alerts
text: 'QUALITY HOLD: Material {{material_number}}, Batch {{batch_number}} placed on hold. Reason: {{reason}}. Production date: {{get-batch-info.production_date}}. ServiceNow case: {{create-quality-case.number}}'
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-s4.sap.com/sap/opu/odata/sap/API_BATCH_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: batches
path: /A_Batch(Material='{{material_number}}',Batch='{{batch_number}}')
inputParameters:
- name: material_number
in: path
- name: batch_number
in: path
operations:
- name: get-batch
method: GET
- name: update-batch-status
method: PATCH
- type: http
namespace: servicenow
baseUri: https://cocacola.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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Orchestrates the monthly financial close by checking SAP period-end status, validating Oracle Cloud journal balances, refreshing the Power BI finance dashboard, and notifying the finance team.
naftiko: '0.5'
info:
label: Monthly Financial Close Orchestrator
description: Orchestrates the monthly financial close by checking SAP period-end status, validating Oracle Cloud journal balances, refreshing the Power BI finance dashboard, and notifying the finance team.
tags:
- finance
- sap
- oracle-cloud
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finance-close
port: 8080
tools:
- name: run-monthly-close
description: 'Orchestrate monthly financial close: check SAP period status, validate Oracle journals, refresh dashboard, and notify finance.'
inputParameters:
- name: fiscal_period
in: body
type: string
description: The fiscal period, e.g. 2026-03.
- name: company_code
in: body
type: string
description: The SAP company code.
- name: dataset_id
in: body
type: string
description: The Power BI finance dataset ID.
steps:
- name: check-period-status
type: call
call: sap.get-period-close-status
with:
company_code: '{{company_code}}'
period: '{{fiscal_period}}'
- name: validate-journals
type: call
call: oracle.get-journal-balance
with:
period: '{{fiscal_period}}'
- name: refresh-finance-dashboard
type: call
call: powerbi.trigger-refresh
with:
dataset_id: '{{dataset_id}}'
- name: notify-finance
type: call
call: msteams.send-message
with:
channel_id: finance-close
text: 'Monthly close for {{fiscal_period}}: SAP period status: {{check-period-status.status}}. Oracle journal balance: {{validate-journals.balance_status}}. Dashboard refreshed.'
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-s4.sap.com/sap/opu/odata/sap/API_FINANCIALPERIODCLOSE_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: period-close
path: /A_FinancialPeriodClose(CompanyCode='{{company_code}}',Period='{{period}}')
inputParameters:
- name: company_code
in: path
- name: period
in: path
operations:
- name: get-period-close-status
method: GET
- type: http
namespace: oracle
baseUri: https://coca-cola.oraclecloud.com/fscmRestApi/resources/v1
authentication:
type: basic
username: $secrets.oracle_user
password: $secrets.oracle_password
resources:
- name: journal-balances
path: /journalBalances?q=Period={{period}}
inputParameters:
- name: period
in: query
operations:
- name: get-journal-balance
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: 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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Reconciles vendor payments by pulling invoice data from SAP, matching against Oracle Cloud payment records, and logging discrepancies in ServiceNow.
naftiko: '0.5'
info:
label: Vendor Payment Reconciliation
description: Reconciles vendor payments by pulling invoice data from SAP, matching against Oracle Cloud payment records, and logging discrepancies in ServiceNow.
tags:
- finance
- sap
- oracle-cloud
- servicenow
- procurement
capability:
exposes:
- type: mcp
namespace: finance-ops
port: 8080
tools:
- name: reconcile-vendor-payment
description: Orchestrate vendor payment reconciliation across SAP invoices, Oracle Cloud payments, and ServiceNow for discrepancy tracking.
inputParameters:
- name: vendor_id
in: body
type: string
description: The SAP vendor ID.
- name: invoice_number
in: body
type: string
description: The SAP invoice document number.
steps:
- name: get-sap-invoice
type: call
call: sap.get-invoice
with:
invoice_number: '{{invoice_number}}'
- name: get-oracle-payment
type: call
call: oracle.get-payment
with:
vendor_id: '{{vendor_id}}'
invoice_reference: '{{invoice_number}}'
- name: log-discrepancy
type: call
call: servicenow.create-incident
with:
short_description: 'Payment reconciliation: Vendor {{vendor_id}} Invoice {{invoice_number}}'
description: 'SAP amount: {{get-sap-invoice.total_amount}}. Oracle payment: {{get-oracle-payment.payment_amount}}.'
category: finance_reconciliation
assignment_group: Accounts_Payable
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-s4.sap.com/sap/opu/odata/sap/API_SUPPLIERINVOICE_PROCESS_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-invoice
method: GET
- type: http
namespace: oracle
baseUri: https://coca-cola.oraclecloud.com/fscmRestApi/resources/v1
authentication:
type: basic
username: $secrets.oracle_user
password: $secrets.oracle_password
resources:
- name: payments
path: /payments?q=VendorId={{vendor_id}};InvoiceNumber={{invoice_reference}}
inputParameters:
- name: vendor_id
in: query
- name: invoice_reference
in: query
operations:
- name: get-payment
method: GET
- type: http
namespace: servicenow
baseUri: https://cocacola.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
Fetches open pull requests from a GitHub repository and posts a daily review-pending summary to the engineering Teams channel to prompt timely code reviews.
naftiko: '0.5'
info:
label: GitHub Pull Request Code Review Summary
description: Fetches open pull requests from a GitHub repository and posts a daily review-pending summary to the engineering Teams channel to prompt timely code reviews.
tags:
- devops
- github
- code-review
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: devops-review
port: 8080
tools:
- name: digest-pending-prs
description: List all open pull requests for a GitHub repository and post a summary of review-pending PRs to the designated Teams channel. Use for daily PR queue digest automation.
inputParameters:
- name: repo
in: body
type: string
description: The repository in owner/repo format.
steps:
- name: list-prs
type: call
call: github.list-pull-requests
with:
owner: coca-cola
repo: '{{repo}}'
state: open
- name: post-digest
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_engineering_channel_id
text: 'PR Review Digest for {{repo}}: {{list-prs.total_count}} open PRs awaiting review.'
consumes:
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: pull-requests
path: /repos/{{owner}}/{{repo}}/pulls
inputParameters:
- name: owner
in: path
- name: repo
in: path
- name: state
in: query
operations:
- name: list-pull-requests
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Validates new product launch readiness by checking SAP material master setup, Salesforce product catalog entry, and Adobe Analytics tracking configuration.
naftiko: '0.5'
info:
label: New Product Launch Readiness Check
description: Validates new product launch readiness by checking SAP material master setup, Salesforce product catalog entry, and Adobe Analytics tracking configuration.
tags:
- brand-management
- manufacturing
- sap
- salesforce
- adobe-analytics
capability:
exposes:
- type: mcp
namespace: product-launch
port: 8080
tools:
- name: check-launch-readiness
description: Validate new product launch readiness across SAP material master, Salesforce catalog, and Adobe Analytics tracking.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number for the new product.
- name: product_id
in: body
type: string
description: The Salesforce product record ID.
steps:
- name: check-material-master
type: call
call: sap.get-material-master
with:
material_number: '{{material_number}}'
- name: check-sf-product
type: call
call: salesforce.get-product
with:
product_id: '{{product_id}}'
- name: check-analytics-tracking
type: call
call: adobe.get-tracking-config
with:
product_code: '{{material_number}}'
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-s4.sap.com/sap/opu/odata/sap/API_PRODUCT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: materials
path: /A_Product('{{material_number}}')
inputParameters:
- name: material_number
in: path
operations:
- name: get-material-master
method: GET
- type: http
namespace: salesforce
baseUri: https://coca-cola.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: products
path: /sobjects/Product2/{{product_id}}
inputParameters:
- name: product_id
in: path
operations:
- name: get-product
method: GET
- type: http
namespace: adobe
baseUri: https://analytics.adobe.io/api/cocacola
authentication:
type: bearer
token: $secrets.adobe_analytics_token
resources:
- name: tracking-config
path: /tracking/product/{{product_code}}
inputParameters:
- name: product_code
in: path
operations:
- name: get-tracking-config
method: GET
Monitors plant water usage compliance by pulling consumption data from SAP, comparing against permitted limits, and alerting environmental compliance via Microsoft Teams and ServiceNow.
naftiko: '0.5'
info:
label: Water Usage Compliance Monitor
description: Monitors plant water usage compliance by pulling consumption data from SAP, comparing against permitted limits, and alerting environmental compliance via Microsoft Teams and ServiceNow.
tags:
- manufacturing
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: environmental
port: 8080
tools:
- name: monitor-water-compliance
description: 'Monitor water usage compliance: pull SAP data, compare limits, and alert compliance team.'
inputParameters:
- name: plant_code
in: body
type: string
description: The plant code.
- name: period
in: body
type: string
description: The monitoring period.
steps:
- name: get-water-usage
type: call
call: sap.get-plant-water-usage
with:
plant: '{{plant_code}}'
period: '{{period}}'
- name: create-compliance-record
type: call
call: servicenow.create-task
with:
short_description: 'Water usage compliance: Plant {{plant_code}} - {{period}}'
description: 'Usage: {{get-water-usage.total_liters}} liters. Permit limit: {{get-water-usage.permit_limit}} liters. Utilization: {{get-water-usage.utilization_percent}}%.'
category: environmental_compliance
assignment_group: Environmental_Compliance
- name: alert-team
type: call
call: msteams.send-message
with:
channel_id: environmental
text: 'Water Usage Report: Plant {{plant_code}} ({{period}}). Usage: {{get-water-usage.total_liters}}L. Permit: {{get-water-usage.permit_limit}}L. Utilization: {{get-water-usage.utilization_percent}}%.'
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-s4.sap.com/sap/opu/odata/sap/API_PLANT_METRICS_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: water
path: /PlantWaterUsage(Plant='{{plant}}',Period='{{period}}')
inputParameters:
- name: plant
in: path
- name: period
in: path
operations:
- name: get-plant-water-usage
method: GET
- type: http
namespace: servicenow
baseUri: https://cocacola.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
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channels
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves an employee profile from Workday by worker ID, returning name, department, job title, and manager information.
naftiko: '0.5'
info:
label: Workday Employee Profile Lookup
description: Retrieves an employee profile from Workday by worker ID, returning name, department, job title, and manager information.
tags:
- hr
- workday
- employee-data
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: get-employee-profile
description: Look up a Coca-Cola employee profile in Workday by worker ID. Returns full name, department, job title, and manager.
inputParameters:
- name: worker_id
in: body
type: string
description: The Workday worker ID, e.g. WD-00456.
call: workday.get-worker
with:
worker_id: '{{worker_id}}'
outputParameters:
- name: full_name
type: string
mapping: $.worker.descriptor
- name: department
type: string
mapping: $.worker.primaryPosition.department
- name: job_title
type: string
mapping: $.worker.primaryPosition.jobTitle
- name: manager
type: string
mapping: $.worker.primaryPosition.manager.descriptor
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: /coca-cola/workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
Pulls trade promotion results from Salesforce, enriches with point-of-sale data from Circana, and updates the Power BI retail analytics dashboard.
naftiko: '0.5'
info:
label: Retail Promotion Performance Sync
description: Pulls trade promotion results from Salesforce, enriches with point-of-sale data from Circana, and updates the Power BI retail analytics dashboard.
tags:
- marketing
- salesforce
- brand-management
- power-bi
- distribution
capability:
exposes:
- type: mcp
namespace: trade-marketing
port: 8080
tools:
- name: sync-promotion-performance
description: 'Orchestrate retail promotion performance sync: pull Salesforce promotion data, enrich with Circana POS data, and refresh Power BI dashboard.'
inputParameters:
- name: promotion_id
in: body
type: string
description: The Salesforce promotion record ID.
- name: dataset_id
in: body
type: string
description: The Power BI retail analytics dataset ID.
steps:
- name: get-promotion
type: call
call: salesforce.get-promotion
with:
promotion_id: '{{promotion_id}}'
- name: get-pos-data
type: call
call: circana.get-pos-lift
with:
brand: '{{get-promotion.brand}}'
start_date: '{{get-promotion.start_date}}'
end_date: '{{get-promotion.end_date}}'
- name: refresh-dashboard
type: call
call: powerbi.trigger-refresh
with:
dataset_id: '{{dataset_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://coca-cola.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: promotions
path: /sobjects/Promotion__c/{{promotion_id}}
inputParameters:
- name: promotion_id
in: path
operations:
- name: get-promotion
method: GET
- type: http
namespace: circana
baseUri: https://api.circana.com/v2
authentication:
type: bearer
token: $secrets.circana_token
resources:
- name: pos-lift
path: /pos/lift?brand={{brand}}&start={{start_date}}&end={{end_date}}
inputParameters:
- name: brand
in: query
- name: start_date
in: query
- name: end_date
in: query
operations:
- name: get-pos-lift
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: trigger-refresh
method: POST
Schedules syrup concentrate production by checking raw material availability in SAP, creating production orders, and notifying the bottling plant via Microsoft Teams.
naftiko: '0.5'
info:
label: Syrup Concentrate Production Scheduling
description: Schedules syrup concentrate production by checking raw material availability in SAP, creating production orders, and notifying the bottling plant via Microsoft Teams.
tags:
- manufacturing
- supply-chain
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: production-scheduling
port: 8080
tools:
- name: schedule-concentrate-production
description: 'Schedule concentrate production: check SAP raw materials, create production order, and notify bottling plant.'
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number for the concentrate.
- name: plant_code
in: body
type: string
description: The manufacturing plant code.
- name: quantity
in: body
type: string
description: The quantity to produce.
- name: production_date
in: body
type: string
description: The target production date in YYYY-MM-DD format.
steps:
- name: check-raw-materials
type: call
call: sap.check-material-availability
with:
material_number: '{{material_number}}'
plant: '{{plant_code}}'
quantity: '{{quantity}}'
- name: create-production-order
type: call
call: sap.create-production-order
with:
material_number: '{{material_number}}'
plant: '{{plant_code}}'
quantity: '{{quantity}}'
start_date: '{{production_date}}'
- name: notify-plant
type: call
call: msteams.send-message
with:
channel_id: plant-{{plant_code}}-production
text: 'Concentrate production scheduled: Material {{material_number}}. Qty: {{quantity}}. Date: {{production_date}}. Order: {{create-production-order.order_number}}. Raw material status: {{check-raw-materials.availability_status}}.'
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-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: availability
path: /MaterialAvailability(Material='{{material_number}}',Plant='{{plant}}')
inputParameters:
- name: material_number
in: path
- name: plant
in: path
operations:
- name: check-material-availability
method: GET
- name: production-orders
path: /A_ProductionOrder_2
operations:
- name: create-production-order
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Records a goods receipt in SAP S/4HANA for a delivered purchase order line, updates inventory, and notifies the procurement team via Teams.
naftiko: '0.5'
info:
label: SAP Goods Receipt Confirmation
description: Records a goods receipt in SAP S/4HANA for a delivered purchase order line, updates inventory, and notifies the procurement team via Teams.
tags:
- supply-chain
- sap
- procurement
- inventory
capability:
exposes:
- type: mcp
namespace: supply-chain
port: 8080
tools:
- name: confirm-goods-receipt
description: Given a SAP purchase order number and delivery quantity, post a goods receipt in SAP S/4HANA to update inventory and notify the procurement team via Teams.
inputParameters:
- name: po_number
in: body
type: string
description: The SAP purchase order number for the delivery.
- name: quantity
in: body
type: number
description: The quantity delivered.
steps:
- name: post-gr
type: call
call: sap.post-goods-receipt
with:
po_number: '{{po_number}}'
quantity: '{{quantity}}'
- name: notify-procurement
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_procurement_channel_id
text: 'Goods receipt posted for PO {{po_number}}: {{quantity}} units received. GR Document: {{post-gr.material_document}}.'
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_DOCUMENT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: material-documents
path: /A_MaterialDocumentHeader
operations:
- name: post-goods-receipt
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Tracks regulatory compliance documents by checking expiry dates in SharePoint, creating renewal tasks in ServiceNow, and alerting the legal and compliance team via Microsoft Teams.
naftiko: '0.5'
info:
label: Regulatory Compliance Document Tracker
description: Tracks regulatory compliance documents by checking expiry dates in SharePoint, creating renewal tasks in ServiceNow, and alerting the legal and compliance team via Microsoft Teams.
tags:
- manufacturing
- sharepoint
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: regulatory-compliance
port: 8080
tools:
- name: track-compliance-documents
description: 'Track regulatory compliance docs: check SharePoint expiry dates, create ServiceNow tasks, and alert compliance team.'
inputParameters:
- name: document_category
in: body
type: string
description: The compliance document category, e.g. FDA, EPA, OSHA.
- name: plant_code
in: body
type: string
description: The plant code.
steps:
- name: get-documents
type: call
call: sharepoint.get-compliance-docs
with:
site_id: regulatory
category: '{{document_category}}'
plant: '{{plant_code}}'
- name: create-renewal-tasks
type: call
call: servicenow.create-task
with:
short_description: 'Compliance document renewal: {{document_category}} for plant {{plant_code}}'
description: 'Documents expiring: {{get-documents.expiring_count}}. Next expiry: {{get-documents.next_expiry_date}}.'
category: regulatory_compliance
assignment_group: Legal_Compliance
- name: alert-compliance
type: call
call: msteams.send-message
with:
channel_id: regulatory-compliance
text: 'Compliance Alert: {{document_category}} documents for plant {{plant_code}}. Expiring soon: {{get-documents.expiring_count}}. Next expiry: {{get-documents.next_expiry_date}}. Task: {{create-renewal-tasks.number}}.'
consumes:
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: compliance-docs
path: /sites/{{site_id}}/lists/{{category}}/items?$filter=Plant eq '{{plant}}'
inputParameters:
- name: site_id
in: path
- name: category
in: path
- name: plant
in: query
operations:
- name: get-compliance-docs
method: GET
- type: http
namespace: servicenow
baseUri: https://cocacola.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
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channels
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Handles e-commerce order exceptions by pulling order details from BigCommerce, checking SAP inventory availability, and creating a Zendesk ticket for customer communication.
naftiko: '0.5'
info:
label: E-Commerce Order Exception Handler
description: Handles e-commerce order exceptions by pulling order details from BigCommerce, checking SAP inventory availability, and creating a Zendesk ticket for customer communication.
tags:
- distribution
- bigcommerce
- sap
- zendesk
- customer-service
capability:
exposes:
- type: mcp
namespace: ecommerce
port: 8080
tools:
- name: handle-order-exception
description: 'Orchestrate e-commerce order exception: pull BigCommerce order, check SAP stock, and create Zendesk ticket.'
inputParameters:
- name: order_id
in: body
type: string
description: The BigCommerce order ID.
steps:
- name: get-order
type: call
call: bigcommerce.get-order
with:
order_id: '{{order_id}}'
- name: check-stock
type: call
call: sap.get-material-stock
with:
material_number: '{{get-order.sku}}'
- name: create-support-ticket
type: call
call: zendesk.create-ticket
with:
subject: 'Order exception: #{{order_id}}'
description: 'Order {{order_id}} for {{get-order.customer_name}} requires attention. Product: {{get-order.product_name}}. Available stock: {{check-stock.available_stock}}.'
requester_email: '{{get-order.customer_email}}'
priority: high
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/cocacola/v2
authentication:
type: apiKey
header: X-Auth-Token
value: $secrets.bigcommerce_token
resources:
- name: orders
path: /orders/{{order_id}}
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: sap
baseUri: https://coca-cola-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(Material='{{material_number}}')
inputParameters:
- name: material_number
in: path
operations:
- name: get-material-stock
method: GET
- type: http
namespace: zendesk
baseUri: https://cocacola.zendesk.com/api/v2
authentication:
type: bearer
token: $secrets.zendesk_token
resources:
- name: tickets
path: /tickets
operations:
- name: create-ticket
method: POST
Assesses ingredient supplier risk by pulling vendor data from SAP, checking compliance status in ServiceNow, and generating a risk report posted to Microsoft Teams.
naftiko: '0.5'
info:
label: Ingredient Supplier Risk Assessment
description: Assesses ingredient supplier risk by pulling vendor data from SAP, checking compliance status in ServiceNow, and generating a risk report posted to Microsoft Teams.
tags:
- procurement
- supply-chain
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: supplier-risk
port: 8080
tools:
- name: assess-supplier-risk
description: 'Assess ingredient supplier risk: pull SAP vendor data, check ServiceNow compliance, and post risk report.'
inputParameters:
- name: vendor_id
in: body
type: string
description: The SAP vendor ID.
steps:
- name: get-vendor-data
type: call
call: sap.get-vendor
with:
vendor_id: '{{vendor_id}}'
- name: check-compliance
type: call
call: servicenow.get-compliance-record
with:
vendor_name: '{{get-vendor-data.vendor_name}}'
- name: post-risk-report
type: call
call: msteams.send-message
with:
channel_id: procurement-risk
text: 'Supplier Risk Assessment: {{get-vendor-data.vendor_name}} ({{vendor_id}}). Country: {{get-vendor-data.country}}. Payment terms: {{get-vendor-data.payment_terms}}. Compliance status: {{check-compliance.status}}. Last audit: {{check-compliance.last_audit_date}}.'
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: vendors
path: /A_BusinessPartner('{{vendor_id}}')
inputParameters:
- name: vendor_id
in: path
operations:
- name: get-vendor
method: GET
- type: http
namespace: servicenow
baseUri: https://cocacola.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: compliance
path: /table/vendor_compliance?sysparm_query=vendor_name={{vendor_name}}
inputParameters:
- name: vendor_name
in: query
operations:
- name: get-compliance-record
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves campaign performance metrics from Google Analytics including sessions, bounce rate, and conversions for a specified campaign.
naftiko: '0.5'
info:
label: Google Analytics Campaign Metrics
description: Retrieves campaign performance metrics from Google Analytics including sessions, bounce rate, and conversions for a specified campaign.
tags:
- marketing
- google-analytics
- campaign-management
capability:
exposes:
- type: mcp
namespace: marketing-analytics
port: 8080
tools:
- name: get-campaign-metrics
description: Fetch Google Analytics campaign performance data. Returns sessions, bounce rate, and goal completions for a given campaign.
inputParameters:
- name: campaign_id
in: body
type: string
description: The Google Analytics campaign identifier.
- name: date_range
in: body
type: string
description: Date range in YYYY-MM-DD:YYYY-MM-DD format.
call: ga.get-campaign-report
with:
campaign_id: '{{campaign_id}}'
date_range: '{{date_range}}'
outputParameters:
- name: sessions
type: string
mapping: $.reports[0].data.totals[0].values[0]
- name: bounce_rate
type: string
mapping: $.reports[0].data.totals[0].values[1]
- name: conversions
type: string
mapping: $.reports[0].data.totals[0].values[2]
consumes:
- type: http
namespace: ga
baseUri: https://analyticsreporting.googleapis.com/v4
authentication:
type: bearer
token: $secrets.google_analytics_token
resources:
- name: reports
path: /reports:batchGet
operations:
- name: get-campaign-report
method: POST
Monitors co-packer production by pulling production reports from SAP, validating against contracted volumes in Salesforce, and sending a variance report to Microsoft Teams.
naftiko: '0.5'
info:
label: Co-Packer Production Monitoring
description: Monitors co-packer production by pulling production reports from SAP, validating against contracted volumes in Salesforce, and sending a variance report to Microsoft Teams.
tags:
- manufacturing
- supply-chain
- sap
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: co-packer
port: 8080
tools:
- name: monitor-copacker-production
description: 'Monitor co-packer production: pull SAP reports, validate against Salesforce contracts, and post variance.'
inputParameters:
- name: vendor_id
in: body
type: string
description: The SAP co-packer vendor ID.
- name: sf_contract_id
in: body
type: string
description: The Salesforce contract record ID.
- name: period
in: body
type: string
description: The production period.
steps:
- name: get-production-report
type: call
call: sap.get-copacker-production
with:
vendor_id: '{{vendor_id}}'
period: '{{period}}'
- name: get-contracted-volumes
type: call
call: salesforce.get-contract
with:
contract_id: '{{sf_contract_id}}'
- name: post-variance
type: call
call: msteams.send-message
with:
channel_id: co-packer-ops
text: 'Co-Packer Report for {{get-production-report.vendor_name}} ({{period}}): Produced: {{get-production-report.actual_volume}}. Contracted: {{get-contracted-volumes.contracted_volume}}. Variance: {{get-production-report.variance_percent}}%.'
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-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: copacker-production
path: /CopackerProduction(VendorId='{{vendor_id}}',Period='{{period}}')
inputParameters:
- name: vendor_id
in: path
- name: period
in: path
operations:
- name: get-copacker-production
method: GET
- type: http
namespace: salesforce
baseUri: https://coca-cola.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
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channels
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a GitHub Actions workflow fails on a protected branch, opens a ServiceNow incident and posts a failure summary to the engineering Microsoft Teams channel.
naftiko: '0.5'
info:
label: GitHub Pipeline Failure Alert
description: When a GitHub Actions workflow fails on a protected branch, opens a ServiceNow incident and posts a failure summary to the engineering Microsoft Teams channel.
tags:
- devops
- cicd
- github
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: handle-pipeline-failure
description: Given a GitHub Actions run ID and repository, retrieve failure details, open a ServiceNow incident, and alert the engineering Teams channel. Use when a protected-branch workflow fails.
inputParameters:
- name: run_id
in: body
type: string
description: The GitHub Actions workflow run ID.
- name: repo
in: body
type: string
description: The repository in owner/repo format, e.g. coca-cola/supply-chain-service.
- name: branch
in: body
type: string
description: The branch name where the failure occurred.
steps:
- name: get-run
type: call
call: github.get-workflow-run
with:
owner: coca-cola
repo: '{{repo}}'
run_id: '{{run_id}}'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'CI/CD failure: {{repo}} / {{branch}}'
description: 'GitHub Actions run {{run_id}} failed on branch {{branch}}. URL: {{get-run.html_url}}'
urgency: '2'
- name: post-alert
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_engineering_channel_id
text: 'Pipeline Failure: {{repo}} | Branch: {{branch}} | Run: {{run_id}} | Incident: {{create-incident.number}} | Log: {{get-run.html_url}}'
consumes:
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: workflow-run
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
- type: http
namespace: servicenow
baseUri: https://cocacola.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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Synchronizes seasonal demand plans by pulling historical sales data from Teradata, adjusting SAP MRP parameters, and notifying supply chain planners via Microsoft Teams.
naftiko: '0.5'
info:
label: Seasonal Demand Planning Sync
description: Synchronizes seasonal demand plans by pulling historical sales data from Teradata, adjusting SAP MRP parameters, and notifying supply chain planners via Microsoft Teams.
tags:
- supply-chain
- manufacturing
- teradata
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: seasonal-planning
port: 8080
tools:
- name: sync-seasonal-demand
description: 'Sync seasonal demand: pull Teradata sales history, adjust SAP MRP, and notify planners.'
inputParameters:
- name: product_group
in: body
type: string
description: The product group code.
- name: season
in: body
type: string
description: 'The season: spring, summer, fall, winter.'
steps:
- name: get-historical-sales
type: call
call: teradata.get-seasonal-sales
with:
product_group: '{{product_group}}'
season: '{{season}}'
- name: update-mrp-parameters
type: call
call: sap.update-mrp-forecast
with:
product_group: '{{product_group}}'
forecast_quantity: '{{get-historical-sales.projected_demand}}'
- name: notify-planners
type: call
call: msteams.send-message
with:
channel_id: demand-planning
text: 'Seasonal demand update for {{product_group}} ({{season}}): Historical avg: {{get-historical-sales.avg_volume}}. Projected demand: {{get-historical-sales.projected_demand}}. SAP MRP parameters updated.'
consumes:
- type: http
namespace: teradata
baseUri: https://coca-cola-td.teradata.com/api/v1
authentication:
type: bearer
token: $secrets.teradata_token
resources:
- name: seasonal-sales
path: /queries/seasonal-sales?product_group={{product_group}}&season={{season}}
inputParameters:
- name: product_group
in: query
- name: season
in: query
operations:
- name: get-seasonal-sales
method: GET
- type: http
namespace: sap
baseUri: https://coca-cola-s4.sap.com/sap/opu/odata/sap/API_MRP_FORECAST_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: mrp-forecast
path: /MRPForecast
operations:
- name: update-mrp-forecast
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors contract renewal dates by checking SAP vendor contracts, creating renewal tasks in ServiceNow, and sending reminders to procurement managers via Microsoft Outlook.
naftiko: '0.5'
info:
label: Contract Renewal Reminder Workflow
description: Monitors contract renewal dates by checking SAP vendor contracts, creating renewal tasks in ServiceNow, and sending reminders to procurement managers via Microsoft Outlook.
tags:
- procurement
- sap
- servicenow
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: contract-management
port: 8080
tools:
- name: trigger-renewal-reminder
description: 'Orchestrate contract renewal reminder: check SAP contract, create ServiceNow task, and send Outlook reminder.'
inputParameters:
- name: contract_number
in: body
type: string
description: The SAP contract number.
steps:
- name: get-contract
type: call
call: sap.get-contract
with:
contract_number: '{{contract_number}}'
- name: create-renewal-task
type: call
call: servicenow.create-task
with:
short_description: 'Contract renewal: {{contract_number}} - {{get-contract.vendor_name}}'
due_date: '{{get-contract.expiry_date}}'
assignment_group: Procurement_Management
- name: send-reminder-email
type: call
call: outlook.send-email
with:
to: '{{get-contract.procurement_manager_email}}'
subject: 'Contract Renewal Reminder: {{get-contract.vendor_name}}'
body: 'Contract {{contract_number}} with {{get-contract.vendor_name}} expires on {{get-contract.expiry_date}}. Value: ${{get-contract.total_value}}. ServiceNow task: {{create-renewal-task.number}}.'
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-s4.sap.com/sap/opu/odata/sap/API_PURCHASECONTRACT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: contracts
path: /A_PurchaseContract('{{contract_number}}')
inputParameters:
- name: contract_number
in: path
operations:
- name: get-contract
method: GET
- type: http
namespace: servicenow
baseUri: https://cocacola.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: outlook
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /me/sendMail
operations:
- name: send-email
method: POST
When a bottling line goes down, retrieves equipment status from SAP, creates a ServiceNow maintenance ticket, and notifies the plant operations team via Microsoft Teams.
naftiko: '0.5'
info:
label: Bottling Line Downtime Response
description: When a bottling line goes down, retrieves equipment status from SAP, creates a ServiceNow maintenance ticket, and notifies the plant operations team via Microsoft Teams.
tags:
- manufacturing
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: manufacturing-ops
port: 8080
tools:
- name: handle-bottling-downtime
description: 'Orchestrate bottling line downtime response: check SAP equipment status, create ServiceNow ticket, and notify plant ops via Teams.'
inputParameters:
- name: equipment_id
in: body
type: string
description: The SAP equipment ID for the bottling line.
- name: plant_code
in: body
type: string
description: The plant code where the downtime occurred.
steps:
- name: get-equipment-status
type: call
call: sap.get-equipment
with:
equipment_id: '{{equipment_id}}'
- name: create-maintenance-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'Bottling line downtime: {{equipment_id}} at plant {{plant_code}}'
category: plant_maintenance
urgency: '1'
assignment_group: Plant_Maintenance_{{plant_code}}
- name: notify-plant-ops
type: call
call: msteams.send-message
with:
channel_id: plant-ops-{{plant_code}}
text: 'ALERT: Bottling line {{equipment_id}} is down at plant {{plant_code}}. Equipment status: {{get-equipment-status.system_status}}. Maintenance ticket: {{create-maintenance-ticket.number}}'
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-s4.sap.com/sap/opu/odata/sap/API_EQUIPMENT
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: equipment
path: /A_Equipment('{{equipment_id}}')
inputParameters:
- name: equipment_id
in: path
operations:
- name: get-equipment
method: GET
- type: http
namespace: servicenow
baseUri: https://cocacola.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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Aggregates marketing attribution data from Google Analytics, Adobe Analytics, and LinkedIn to create a unified campaign performance view in Salesforce.
naftiko: '0.5'
info:
label: Multi-Channel Marketing Attribution
description: Aggregates marketing attribution data from Google Analytics, Adobe Analytics, and LinkedIn to create a unified campaign performance view in Salesforce.
tags:
- marketing
- google-analytics
- adobe-analytics
- linkedin
- salesforce
capability:
exposes:
- type: mcp
namespace: marketing-attribution
port: 8080
tools:
- name: aggregate-attribution
description: 'Aggregate marketing attribution: pull GA, Adobe Analytics, and LinkedIn data, then update Salesforce campaign.'
inputParameters:
- name: campaign_id
in: body
type: string
description: The Salesforce campaign ID.
- name: ga_campaign_id
in: body
type: string
description: The Google Analytics campaign ID.
- name: linkedin_campaign_id
in: body
type: string
description: The LinkedIn campaign ID.
steps:
- name: get-ga-attribution
type: call
call: ga.get-campaign-report
with:
campaign_id: '{{ga_campaign_id}}'
- name: get-adobe-attribution
type: call
call: adobe.get-campaign-attribution
with:
campaign_id: '{{campaign_id}}'
- name: get-linkedin-attribution
type: call
call: linkedin.get-campaign-analytics
with:
campaign_id: '{{linkedin_campaign_id}}'
- name: update-sf-campaign
type: call
call: salesforce.update-campaign
with:
campaign_id: '{{campaign_id}}'
web_conversions: '{{get-ga-attribution.conversions}}'
display_impressions: '{{get-adobe-attribution.impressions}}'
social_engagements: '{{get-linkedin-attribution.engagements}}'
consumes:
- type: http
namespace: ga
baseUri: https://analyticsreporting.googleapis.com/v4
authentication:
type: bearer
token: $secrets.google_analytics_token
resources:
- name: reports
path: /reports:batchGet
operations:
- name: get-campaign-report
method: POST
- type: http
namespace: adobe
baseUri: https://analytics.adobe.io/api/cocacola
authentication:
type: bearer
token: $secrets.adobe_analytics_token
resources:
- name: attribution
path: /attribution
operations:
- name: get-campaign-attribution
method: POST
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: analytics
path: /adAnalyticsV2?campaigns=urn:li:sponsoredCampaign:{{campaign_id}}
inputParameters:
- name: campaign_id
in: query
operations:
- name: get-campaign-analytics
method: GET
- type: http
namespace: salesforce
baseUri: https://coca-cola.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: campaigns
path: /sobjects/Campaign/{{campaign_id}}
inputParameters:
- name: campaign_id
in: path
operations:
- name: update-campaign
method: PATCH
Queries Salesforce for opportunities that have changed stage in the last 24 hours and logs the changes to a Power BI dataset for sales pipeline reporting.
naftiko: '0.5'
info:
label: Salesforce Opportunity Stage Sync
description: Queries Salesforce for opportunities that have changed stage in the last 24 hours and logs the changes to a Power BI dataset for sales pipeline reporting.
tags:
- sales
- crm
- salesforce
- power-bi
- reporting
capability:
exposes:
- type: mcp
namespace: sales-reporting
port: 8080
tools:
- name: sync-opportunity-stages
description: Fetch all Salesforce opportunities with stage changes in the last 24 hours and push the updated records to the Power BI sales pipeline dataset. Use for daily sales pipeline refresh.
steps:
- name: get-changed-opps
type: call
call: salesforce.query-opportunities
with:
soql: SELECT Id,Name,StageName,Amount,CloseDate FROM Opportunity WHERE LastModifiedDate = LAST_N_DAYS:1
- name: push-to-powerbi
type: call
call: powerbi.push-rows
with:
dataset_id: $secrets.powerbi_pipeline_dataset_id
table_name: Opportunities
rows: '{{get-changed-opps.records}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://cocacola.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
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: dataset-rows
path: /datasets/{{dataset_id}}/tables/{{table_name}}/rows
inputParameters:
- name: dataset_id
in: path
- name: table_name
in: path
operations:
- name: push-rows
method: POST
Triggers a scheduled refresh for a Power BI dataset and monitors refresh status, notifying the data analytics team via Teams when complete or failed.
naftiko: '0.5'
info:
label: Power BI Dataset Refresh Trigger
description: Triggers a scheduled refresh for a Power BI dataset and monitors refresh status, notifying the data analytics team via Teams when complete or failed.
tags:
- data
- analytics
- power-bi
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: data-analytics
port: 8080
tools:
- name: trigger-dataset-refresh
description: Trigger a Power BI dataset refresh for the given dataset ID and post completion status to the analytics Teams channel. Use for scheduled BI report refresh automation.
inputParameters:
- name: dataset_id
in: body
type: string
description: The Power BI dataset ID to refresh.
steps:
- name: start-refresh
type: call
call: powerbi.refresh-dataset
with:
dataset_id: '{{dataset_id}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_analytics_channel_id
text: Power BI dataset {{dataset_id}} refresh triggered successfully.
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: /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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves the latest build status for a specified Azure DevOps pipeline, returning build result, duration, and triggered by.
naftiko: '0.5'
info:
label: Azure DevOps Build Status
description: Retrieves the latest build status for a specified Azure DevOps pipeline, returning build result, duration, and triggered by.
tags:
- devops
- azure-devops
- ci-cd
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: get-build-status
description: Check the latest build status for an Azure DevOps pipeline. Returns result, duration, and source branch.
inputParameters:
- name: pipeline_id
in: body
type: string
description: The Azure DevOps pipeline definition ID.
call: azdo.get-latest-build
with:
pipeline_id: '{{pipeline_id}}'
outputParameters:
- name: result
type: string
mapping: $.value[0].result
- name: duration
type: string
mapping: $.value[0].finishTime
- name: source_branch
type: string
mapping: $.value[0].sourceBranch
consumes:
- type: http
namespace: azdo
baseUri: https://dev.azure.com/coca-cola
authentication:
type: basic
username: $secrets.azdo_user
password: $secrets.azdo_pat
resources:
- name: builds
path: /_apis/build/builds?definitions={{pipeline_id}}&$top=1&api-version=7.0
inputParameters:
- name: pipeline_id
in: query
operations:
- name: get-latest-build
method: GET
Rebalances warehouse inventory by checking stock levels across plants in SAP, creating stock transfer orders, and logging the rebalance action in ServiceNow.
naftiko: '0.5'
info:
label: Warehouse Inventory Rebalance
description: Rebalances warehouse inventory by checking stock levels across plants in SAP, creating stock transfer orders, and logging the rebalance action in ServiceNow.
tags:
- supply-chain
- distribution
- sap
- servicenow
capability:
exposes:
- type: mcp
namespace: warehouse-ops
port: 8080
tools:
- name: rebalance-inventory
description: 'Orchestrate inventory rebalance: check multi-plant stock in SAP, create transfer orders, and log in ServiceNow.'
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number.
- name: source_plant
in: body
type: string
description: The source plant code.
- name: target_plant
in: body
type: string
description: The target plant code.
- name: quantity
in: body
type: string
description: The quantity to transfer.
steps:
- name: check-source-stock
type: call
call: sap.get-material-stock
with:
material_number: '{{material_number}}'
plant: '{{source_plant}}'
- name: create-transfer-order
type: call
call: sap.create-stock-transfer
with:
material_number: '{{material_number}}'
source_plant: '{{source_plant}}'
target_plant: '{{target_plant}}'
quantity: '{{quantity}}'
- name: log-rebalance
type: call
call: servicenow.create-incident
with:
short_description: 'Inventory rebalance: {{material_number}} from {{source_plant}} to {{target_plant}}'
description: 'Transferred {{quantity}} units. Transfer order: {{create-transfer-order.transfer_order_number}}'
category: warehouse_operations
assignment_group: Warehouse_Ops
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-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(Material='{{material_number}}',Plant='{{plant}}')
inputParameters:
- name: material_number
in: path
- name: plant
in: path
operations:
- name: get-material-stock
method: GET
- name: stock-transfers
path: /A_StockTransferOrder
operations:
- name: create-stock-transfer
method: POST
- type: http
namespace: servicenow
baseUri: https://cocacola.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 Datadog Logs for error spikes in a specified service over the past hour and returns a ranked summary of the top error patterns.
naftiko: '0.5'
info:
label: Datadog Log Anomaly Investigation
description: Queries Datadog Logs for error spikes in a specified service over the past hour and returns a ranked summary of the top error patterns.
tags:
- observability
- datadog
- logging
- incident-response
capability:
exposes:
- type: mcp
namespace: log-analysis
port: 8080
tools:
- name: get-error-log-summary
description: Query Datadog Logs for the top error patterns in a given service over the past hour. Returns ranked error messages and counts for rapid incident triage.
inputParameters:
- name: service_name
in: body
type: string
description: The Datadog service name to query logs for, e.g. beverage-order-service.
call: datadog.search-logs
with:
query: service:{{service_name}} status:error
outputParameters:
- name: logs
type: array
mapping: $.data
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: logs
path: /logs-queries/list
inputParameters:
- name: query
in: query
operations:
- name: search-logs
method: GET
Looks up a SAP S/4HANA purchase order by PO number and returns header status, vendor, total value, and open line items.
naftiko: '0.5'
info:
label: SAP Purchase Order Lookup
description: Looks up a SAP S/4HANA purchase order by PO number and returns header status, vendor, total value, and open line items.
tags:
- finance
- procurement
- sap
- erp
capability:
exposes:
- type: mcp
namespace: erp
port: 8080
tools:
- name: get-purchase-order
description: Look up a Coca-Cola SAP S/4HANA purchase order by PO number. Returns status, vendor name, total amount, and currency. Use for procurement tracking or invoice reconciliation.
inputParameters:
- name: po_number
in: body
type: string
description: The SAP purchase order number, e.g. 4500001234.
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://coca-cola-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
Retrieves the current status of a ServiceNow incident by incident number, returning state, priority, assigned group, and resolution notes.
naftiko: '0.5'
info:
label: ServiceNow Incident Status Lookup
description: Retrieves the current status of a ServiceNow incident by incident number, returning state, priority, assigned group, and resolution notes.
tags:
- it-operations
- servicenow
- incident-management
capability:
exposes:
- type: mcp
namespace: itsm
port: 8080
tools:
- name: get-incident-status
description: Look up a ServiceNow incident by number. Returns current state, priority, assignment group, and short description.
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: state
type: string
mapping: $.result.state
- name: priority
type: string
mapping: $.result.priority
- name: assignment_group
type: string
mapping: $.result.assignment_group.display_value
- name: short_description
type: string
mapping: $.result.short_description
consumes:
- type: http
namespace: servicenow
baseUri: https://cocacola.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
Manages IT asset lifecycle by checking asset status in ServiceNow, verifying user assignment in Workday, and updating the asset tracking record.
naftiko: '0.5'
info:
label: IT Asset Lifecycle Management
description: Manages IT asset lifecycle by checking asset status in ServiceNow, verifying user assignment in Workday, and updating the asset tracking record.
tags:
- it-operations
- servicenow
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: it-asset
port: 8080
tools:
- name: manage-asset-lifecycle
description: 'Manage IT asset lifecycle: check ServiceNow asset, verify Workday user, and update tracking.'
inputParameters:
- name: asset_tag
in: body
type: string
description: The ServiceNow asset tag.
steps:
- name: get-asset
type: call
call: servicenow.get-asset
with:
asset_tag: '{{asset_tag}}'
- name: get-assigned-user
type: call
call: workday.get-worker
with:
worker_id: '{{get-asset.assigned_to_worker_id}}'
- name: update-asset-record
type: call
call: servicenow.update-asset
with:
asset_tag: '{{asset_tag}}'
assigned_user: '{{get-assigned-user.full_name}}'
department: '{{get-assigned-user.department}}'
- name: notify-it-ops
type: call
call: msteams.send-message
with:
channel_id: it-asset-management
text: 'Asset {{asset_tag}} verified. Assigned to: {{get-assigned-user.full_name}} ({{get-assigned-user.department}}). Status: {{get-asset.status}}. Age: {{get-asset.age_months}} months.'
consumes:
- type: http
namespace: servicenow
baseUri: https://cocacola.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: assets
path: /table/alm_hardware?sysparm_query=asset_tag={{asset_tag}}
inputParameters:
- name: asset_tag
in: query
operations:
- name: get-asset
method: GET
- name: update-asset
method: PATCH
- 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: /coca-cola/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: channels
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Given a Salesforce account ID, retrieves account details, open opportunities, and recent service cases to produce a unified health summary for the account manager.
naftiko: '0.5'
info:
label: Salesforce Account Health Check
description: Given a Salesforce account ID, retrieves account details, open opportunities, and recent service cases to produce a unified health summary for the account manager.
tags:
- sales
- crm
- salesforce
- customer-success
capability:
exposes:
- type: mcp
namespace: crm
port: 8080
tools:
- name: get-account-health
description: Given a Salesforce account ID, retrieve the account profile, open opportunities, and recent service cases. Returns a consolidated health view for account review meetings.
inputParameters:
- name: account_id
in: body
type: string
description: The Salesforce Account ID (18-character Salesforce ID).
steps:
- name: get-account
type: call
call: salesforce-acct.get-account
with:
account_id: '{{account_id}}'
- name: get-opportunities
type: call
call: salesforce-opp.query-opportunities
with:
soql: SELECT Id,Name,StageName,Amount FROM Opportunity WHERE AccountId='{{account_id}}' AND IsClosed=false
- name: get-cases
type: call
call: salesforce-case.query-cases
with:
soql: SELECT Id,Subject,Status,CreatedDate FROM Case WHERE AccountId='{{account_id}}' ORDER BY CreatedDate DESC LIMIT 5
consumes:
- type: http
namespace: salesforce-acct
baseUri: https://cocacola.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: account
path: /sobjects/Account/{{account_id}}
inputParameters:
- name: account_id
in: path
operations:
- name: get-account
method: GET
- type: http
namespace: salesforce-opp
baseUri: https://cocacola.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
- type: http
namespace: salesforce-case
baseUri: https://cocacola.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-cases
method: GET
Pulls production order data from SAP, calculates yield variance, refreshes the Power BI manufacturing dashboard, and posts a yield summary to Microsoft Teams.
naftiko: '0.5'
info:
label: Production Yield Analysis and Report
description: Pulls production order data from SAP, calculates yield variance, refreshes the Power BI manufacturing dashboard, and posts a yield summary to Microsoft Teams.
tags:
- manufacturing
- sap
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: manufacturing-analytics
port: 8080
tools:
- name: analyze-production-yield
description: 'Orchestrate production yield analysis: pull SAP production data, refresh Power BI dashboard, and post summary to Teams.'
inputParameters:
- name: plant_code
in: body
type: string
description: The manufacturing plant code.
- name: production_date
in: body
type: string
description: The production date in YYYY-MM-DD format.
- name: dataset_id
in: body
type: string
description: The Power BI manufacturing dataset ID.
steps:
- name: get-production-orders
type: call
call: sap.get-production-orders-by-plant
with:
plant_code: '{{plant_code}}'
date: '{{production_date}}'
- name: refresh-dashboard
type: call
call: powerbi.trigger-refresh
with:
dataset_id: '{{dataset_id}}'
- name: post-yield-summary
type: call
call: msteams.send-message
with:
channel_id: manufacturing-ops
text: 'Production Yield Report for Plant {{plant_code}} on {{production_date}}: Total orders: {{get-production-orders.count}}. Dashboard refresh status: {{refresh-dashboard.status}}.'
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-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-orders
path: /A_ProductionOrder_2?$filter=ProductionPlant eq '{{plant_code}}' and MfgOrderPlannedStartDate eq datetime'{{date}}'
inputParameters:
- name: plant_code
in: query
- name: date
in: query
operations:
- name: get-production-orders-by-plant
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: 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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves a SAP plant maintenance order by order number, returning equipment, functional location, priority, and system status.
naftiko: '0.5'
info:
label: SAP Plant Maintenance Order Lookup
description: Retrieves a SAP plant maintenance order by order number, returning equipment, functional location, priority, and system status.
tags:
- manufacturing
- sap
- maintenance
capability:
exposes:
- type: mcp
namespace: plant-maintenance
port: 8080
tools:
- name: get-maintenance-order
description: Look up a SAP plant maintenance order. Returns equipment ID, functional location, priority, and current status.
inputParameters:
- name: order_number
in: body
type: string
description: The SAP maintenance order number.
call: sap.get-maintenance-order
with:
order_number: '{{order_number}}'
outputParameters:
- name: equipment
type: string
mapping: $.d.Equipment
- name: functional_location
type: string
mapping: $.d.FunctionalLocation
- name: priority
type: string
mapping: $.d.MaintenanceOrderPriority
- name: status
type: string
mapping: $.d.MaintenanceOrderSystemStatus
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-s4.sap.com/sap/opu/odata/sap/API_MAINTENANCEORDER
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: maintenance-orders
path: /MaintenanceOrder('{{order_number}}')
inputParameters:
- name: order_number
in: path
operations:
- name: get-maintenance-order
method: GET
Syncs LinkedIn employer branding campaign metrics to Workday recruiting analytics and posts a talent acquisition report to Microsoft Teams.
naftiko: '0.5'
info:
label: LinkedIn Employer Brand Campaign Sync
description: Syncs LinkedIn employer branding campaign metrics to Workday recruiting analytics and posts a talent acquisition report to Microsoft Teams.
tags:
- hr
- marketing
- linkedin
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: talent-marketing
port: 8080
tools:
- name: sync-employer-brand
description: Sync LinkedIn employer brand campaign data to Workday and post report to Teams.
inputParameters:
- name: campaign_id
in: body
type: string
description: The LinkedIn campaign ID.
steps:
- name: get-linkedin-metrics
type: call
call: linkedin.get-campaign-analytics
with:
campaign_id: '{{campaign_id}}'
- name: update-workday-recruiting
type: call
call: workday.update-recruiting-metrics
with:
source: linkedin
impressions: '{{get-linkedin-metrics.impressions}}'
applications: '{{get-linkedin-metrics.conversions}}'
- name: post-report
type: call
call: msteams.send-message
with:
channel_id: talent-acquisition
text: 'LinkedIn Employer Brand Report: Impressions: {{get-linkedin-metrics.impressions}}. Clicks: {{get-linkedin-metrics.clicks}}. Applications: {{get-linkedin-metrics.conversions}}. Cost per application: ${{get-linkedin-metrics.cost_per_conversion}}.'
consumes:
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: campaign-analytics
path: /adAnalyticsV2?campaigns=urn:li:sponsoredCampaign:{{campaign_id}}
inputParameters:
- name: campaign_id
in: query
operations:
- name: get-campaign-analytics
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: recruiting-metrics
path: /coca-cola/recruiting/metrics
operations:
- name: update-recruiting-metrics
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When an employee termination is recorded in Workday, deactivates the Microsoft 365 account, closes open ServiceNow tickets, and notifies the HR team via Teams.
naftiko: '0.5'
info:
label: Employee Offboarding Workflow
description: When an employee termination is recorded in Workday, deactivates the Microsoft 365 account, closes open ServiceNow tickets, and notifies the HR team via Teams.
tags:
- hr
- offboarding
- workday
- servicenow
- microsoft-365
capability:
exposes:
- type: mcp
namespace: hr-offboarding
port: 8080
tools:
- name: trigger-offboarding
description: Given a Workday employee ID and termination date, deactivate the Microsoft 365 account, close open ServiceNow tickets assigned to the user, and notify the HR business partner via Teams.
inputParameters:
- name: employee_id
in: body
type: string
description: The Workday worker ID of the departing employee.
- name: termination_date
in: body
type: string
description: The termination effective date in ISO 8601 format.
steps:
- name: get-worker
type: call
call: workday.get-worker
with:
worker_id: '{{employee_id}}'
- name: disable-account
type: call
call: msgraph.disable-user
with:
user_upn: '{{get-worker.work_email}}'
- name: close-tickets
type: call
call: servicenow.close-user-incidents
with:
caller_email: '{{get-worker.work_email}}'
- name: notify-hr
type: call
call: msteams-notify.send-message
with:
recipient_upn: '{{get-worker.manager_email}}'
text: 'Offboarding complete for {{get-worker.full_name}} (termination date: {{termination_date}}). M365 account disabled.'
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: /coca-cola/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: user-account
path: /users/{{user_upn}}
inputParameters:
- name: user_upn
in: path
operations:
- name: disable-user
method: PATCH
- type: http
namespace: servicenow
baseUri: https://cocacola.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: close-user-incidents
method: PATCH
- type: http
namespace: msteams-notify
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
Assembles a QBR data pack by pulling account health, open opportunities, and case volume from Salesforce, then posts a summary to the sales leadership Teams channel.
naftiko: '0.5'
info:
label: Salesforce Quarterly Business Review Pack Builder
description: Assembles a QBR data pack by pulling account health, open opportunities, and case volume from Salesforce, then posts a summary to the sales leadership Teams channel.
tags:
- sales
- salesforce
- reporting
- microsoft-teams
- qbr
capability:
exposes:
- type: mcp
namespace: sales-qbr
port: 8080
tools:
- name: build-qbr-pack
description: Given a Salesforce account ID, compile a QBR data pack with account health metrics, pipeline, and case volume, then post a summary to the sales leadership Teams channel.
inputParameters:
- name: account_id
in: body
type: string
description: The Salesforce Account ID for the QBR.
steps:
- name: get-account
type: call
call: salesforce.get-account
with:
account_id: '{{account_id}}'
- name: get-pipeline
type: call
call: salesforce-pipeline.query-opportunities
with:
soql: SELECT Id,Name,Amount,StageName FROM Opportunity WHERE AccountId='{{account_id}}' AND IsClosed=false
- name: post-summary
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sales_channel_id
text: 'QBR Pack ready for {{get-account.Name}}: {{get-pipeline.totalSize}} open opportunities compiled.'
consumes:
- type: http
namespace: salesforce
baseUri: https://cocacola.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: account
path: /sobjects/Account/{{account_id}}
inputParameters:
- name: account_id
in: path
operations:
- name: get-account
method: GET
- type: http
namespace: salesforce-pipeline
baseUri: https://cocacola.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
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Schedules fleet vehicle maintenance by checking SAP equipment records, creating a ServiceNow work order, and notifying the fleet management team via Microsoft Teams.
naftiko: '0.5'
info:
label: Fleet Vehicle Maintenance Scheduler
description: Schedules fleet vehicle maintenance by checking SAP equipment records, creating a ServiceNow work order, and notifying the fleet management team via Microsoft Teams.
tags:
- distribution
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: fleet-ops
port: 8080
tools:
- name: schedule-vehicle-maintenance
description: 'Orchestrate fleet maintenance: check SAP equipment, create ServiceNow work order, and notify fleet team.'
inputParameters:
- name: vehicle_id
in: body
type: string
description: The SAP equipment ID for the fleet vehicle.
- name: maintenance_type
in: body
type: string
description: 'Type of maintenance: preventive, corrective, inspection.'
steps:
- name: get-vehicle-record
type: call
call: sap.get-equipment
with:
equipment_id: '{{vehicle_id}}'
- name: create-work-order
type: call
call: servicenow.create-work-order
with:
short_description: 'Fleet maintenance: {{vehicle_id}} - {{maintenance_type}}'
assignment_group: Fleet_Maintenance
vehicle_id: '{{vehicle_id}}'
last_service_date: '{{get-vehicle-record.last_maintenance_date}}'
- name: notify-fleet-team
type: call
call: msteams.send-message
with:
channel_id: fleet-management
text: 'Maintenance scheduled for vehicle {{vehicle_id}}. Type: {{maintenance_type}}. Last service: {{get-vehicle-record.last_maintenance_date}}. Work order: {{create-work-order.number}}'
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-s4.sap.com/sap/opu/odata/sap/API_EQUIPMENT
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: equipment
path: /A_Equipment('{{equipment_id}}')
inputParameters:
- name: equipment_id
in: path
operations:
- name: get-equipment
method: GET
- type: http
namespace: servicenow
baseUri: https://cocacola.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: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channels
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a new hire record is created in Workday, opens a ServiceNow onboarding task, provisions a Microsoft 365 account, and sends a Microsoft Teams welcome message.
naftiko: '0.5'
info:
label: New Hire Onboarding Orchestrator
description: When a new hire record is created in Workday, opens a ServiceNow onboarding task, provisions a Microsoft 365 account, and sends a Microsoft Teams welcome message.
tags:
- hr
- onboarding
- workday
- servicenow
- microsoft-teams
- microsoft-365
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 across ServiceNow, Microsoft 365, and Microsoft Teams.
inputParameters:
- name: employee_id
in: body
type: string
description: The Workday worker ID for the new hire, e.g. WD-00123.
- name: start_date
in: body
type: string
description: The employee start date in ISO 8601 format (YYYY-MM-DD).
steps:
- name: get-worker
type: call
call: workday.get-worker
with:
worker_id: '{{employee_id}}'
- name: create-onboarding-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'New hire onboarding: {{get-worker.full_name}}'
category: hr_onboarding
assigned_to: IT_Onboarding_Team
- name: provision-m365
type: call
call: msgraph.create-user
with:
displayName: '{{get-worker.full_name}}'
mail: '{{get-worker.work_email}}'
department: '{{get-worker.department}}'
- name: send-welcome
type: call
call: msteams.send-message
with:
recipient_upn: '{{get-worker.work_email}}'
text: Welcome to Coca-Cola, {{get-worker.first_name}}! Your IT onboarding ticket is {{create-onboarding-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: /coca-cola/workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: servicenow
baseUri: https://cocacola.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: 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: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: chats
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
When a cold chain temperature breach is detected, retrieves shipment details from SAP, creates a quality incident in ServiceNow, and alerts the distribution team via Microsoft Teams.
naftiko: '0.5'
info:
label: Cold Chain Temperature Breach Response
description: When a cold chain temperature breach is detected, retrieves shipment details from SAP, creates a quality incident in ServiceNow, and alerts the distribution team via Microsoft Teams.
tags:
- supply-chain
- distribution
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: cold-chain
port: 8080
tools:
- name: handle-temperature-breach
description: 'Orchestrate cold chain breach response: pull SAP shipment data, create quality incident, and alert distribution team.'
inputParameters:
- name: shipment_id
in: body
type: string
description: The SAP shipment document number.
- name: temperature_reading
in: body
type: string
description: The recorded temperature in Celsius.
steps:
- name: get-shipment
type: call
call: sap.get-shipment
with:
shipment_id: '{{shipment_id}}'
- name: create-quality-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Cold chain breach: Shipment {{shipment_id}} at {{temperature_reading}}C'
category: quality_cold_chain
urgency: '1'
assignment_group: Quality_Distribution
- name: alert-distribution
type: call
call: msteams.send-message
with:
channel_id: distribution-alerts
text: 'COLD CHAIN ALERT: Shipment {{shipment_id}} recorded {{temperature_reading}}C. Destination: {{get-shipment.destination}}. ServiceNow: {{create-quality-incident.number}}'
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-s4.sap.com/sap/opu/odata/sap/API_SHIPMENT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: shipments
path: /A_Shipment('{{shipment_id}}')
inputParameters:
- name: shipment_id
in: path
operations:
- name: get-shipment
method: GET
- type: http
namespace: servicenow
baseUri: https://cocacola.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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Processes raw material procurement approvals by validating the SAP purchase requisition, checking budget availability in Oracle Cloud, and routing for approval via Microsoft Power Automate.
naftiko: '0.5'
info:
label: Raw Material Procurement Approval
description: Processes raw material procurement approvals by validating the SAP purchase requisition, checking budget availability in Oracle Cloud, and routing for approval via Microsoft Power Automate.
tags:
- procurement
- supply-chain
- sap
- oracle-cloud
- microsoft-power-automate
capability:
exposes:
- type: mcp
namespace: procurement-approval
port: 8080
tools:
- name: process-procurement-approval
description: 'Orchestrate raw material procurement approval: validate SAP PR, check Oracle budget, and route approval.'
inputParameters:
- name: requisition_number
in: body
type: string
description: The SAP purchase requisition number.
steps:
- name: get-requisition
type: call
call: sap.get-purchase-requisition
with:
requisition_number: '{{requisition_number}}'
- name: check-budget
type: call
call: oracle.check-budget-availability
with:
cost_center: '{{get-requisition.cost_center}}'
amount: '{{get-requisition.total_amount}}'
- name: route-approval
type: call
call: power-automate.trigger-flow
with:
flow_id: procurement-approval
requisition_number: '{{requisition_number}}'
amount: '{{get-requisition.total_amount}}'
budget_status: '{{check-budget.status}}'
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-s4.sap.com/sap/opu/odata/sap/API_PURCHASEREQ_PROCESS_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: requisitions
path: /A_PurchaseRequisition('{{requisition_number}}')
inputParameters:
- name: requisition_number
in: path
operations:
- name: get-purchase-requisition
method: GET
- type: http
namespace: oracle
baseUri: https://coca-cola.oraclecloud.com/fscmRestApi/resources/v1
authentication:
type: basic
username: $secrets.oracle_user
password: $secrets.oracle_password
resources:
- name: budgets
path: /budgetBalances?q=CostCenter={{cost_center}}
inputParameters:
- name: cost_center
in: query
operations:
- name: check-budget-availability
method: GET
- type: http
namespace: power-automate
baseUri: https://prod-cocacola.logic.azure.com
authentication:
type: apiKey
header: x-flow-key
value: $secrets.power_automate_key
resources:
- name: flows
path: /workflows/{{flow_id}}/triggers/manual/paths/invoke
inputParameters:
- name: flow_id
in: path
operations:
- name: trigger-flow
method: POST
Reconciles goods movements by pulling movement data from SAP, validating against warehouse records, and creating discrepancy reports in ServiceNow.
naftiko: '0.5'
info:
label: SAP Goods Movement Reconciliation
description: Reconciles goods movements by pulling movement data from SAP, validating against warehouse records, and creating discrepancy reports in ServiceNow.
tags:
- supply-chain
- sap
- servicenow
- manufacturing
capability:
exposes:
- type: mcp
namespace: goods-movement
port: 8080
tools:
- name: reconcile-goods-movements
description: 'Reconcile SAP goods movements: pull movement data, validate against warehouse, and log discrepancies.'
inputParameters:
- name: plant_code
in: body
type: string
description: The SAP plant code.
- name: movement_date
in: body
type: string
description: The date to reconcile in YYYY-MM-DD format.
steps:
- name: get-goods-movements
type: call
call: sap.get-goods-movements
with:
plant: '{{plant_code}}'
date: '{{movement_date}}'
- name: get-warehouse-records
type: call
call: sap.get-warehouse-inventory
with:
plant: '{{plant_code}}'
date: '{{movement_date}}'
- name: log-discrepancies
type: call
call: servicenow.create-incident
with:
short_description: 'Goods movement discrepancy: Plant {{plant_code}} on {{movement_date}}'
description: 'Total movements: {{get-goods-movements.count}}. Warehouse records: {{get-warehouse-records.count}}.'
category: inventory_reconciliation
assignment_group: Warehouse_Ops_{{plant_code}}
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_DOCUMENT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: goods-movements
path: /A_MaterialDocumentHeader?$filter=Plant eq '{{plant}}' and PostingDate eq datetime'{{date}}'
inputParameters:
- name: plant
in: query
- name: date
in: query
operations:
- name: get-goods-movements
method: GET
- name: warehouse-inventory
path: /WarehouseInventory(Plant='{{plant}}',Date='{{date}}')
inputParameters:
- name: plant
in: path
- name: date
in: path
operations:
- name: get-warehouse-inventory
method: GET
- type: http
namespace: servicenow
baseUri: https://cocacola.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
Calculates trade promotion ROI by pulling promotion spend from SAP, incremental sales from Circana, and posting the ROI analysis to Salesforce and Microsoft Teams.
naftiko: '0.5'
info:
label: Trade Promotion ROI Calculator
description: Calculates trade promotion ROI by pulling promotion spend from SAP, incremental sales from Circana, and posting the ROI analysis to Salesforce and Microsoft Teams.
tags:
- marketing
- finance
- sap
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: trade-promotion-roi
port: 8080
tools:
- name: calculate-promotion-roi
description: 'Calculate trade promotion ROI: pull SAP spend, Circana sales lift, and post analysis to Salesforce and Teams.'
inputParameters:
- name: promotion_id
in: body
type: string
description: The Salesforce promotion record ID.
- name: cost_center
in: body
type: string
description: The SAP cost center for promotion spend.
steps:
- name: get-promotion-spend
type: call
call: sap.get-cost-center-actuals
with:
cost_center: '{{cost_center}}'
- name: get-sales-lift
type: call
call: circana.get-promotion-lift
with:
promotion_id: '{{promotion_id}}'
- name: update-sf-promotion
type: call
call: salesforce.update-promotion
with:
promotion_id: '{{promotion_id}}'
total_spend: '{{get-promotion-spend.total_actual}}'
incremental_volume: '{{get-sales-lift.incremental_volume}}'
roi_percentage: '{{get-sales-lift.roi}}'
- name: post-roi-report
type: call
call: msteams.send-message
with:
channel_id: trade-marketing
text: 'Trade Promotion ROI: Promotion {{promotion_id}}. Spend: ${{get-promotion-spend.total_actual}}. Incremental volume: {{get-sales-lift.incremental_volume}}. ROI: {{get-sales-lift.roi}}%.'
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-s4.sap.com/sap/opu/odata/sap/API_COSTCENTER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: cost-centers
path: /A_CostCenter('{{cost_center}}')/to_Actuals
inputParameters:
- name: cost_center
in: path
operations:
- name: get-cost-center-actuals
method: GET
- type: http
namespace: circana
baseUri: https://api.circana.com/v2
authentication:
type: bearer
token: $secrets.circana_token
resources:
- name: promotion-lift
path: /promotions/{{promotion_id}}/lift
inputParameters:
- name: promotion_id
in: path
operations:
- name: get-promotion-lift
method: GET
- type: http
namespace: salesforce
baseUri: https://coca-cola.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: promotions
path: /sobjects/Promotion__c/{{promotion_id}}
inputParameters:
- name: promotion_id
in: path
operations:
- name: update-promotion
method: PATCH
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channels
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Audits all repositories in the Coca-Cola GitHub organization for missing branch protection rules and reports non-compliant repositories to the security team via Teams.
naftiko: '0.5'
info:
label: GitHub Repository Security Policy Audit
description: Audits all repositories in the Coca-Cola GitHub organization for missing branch protection rules and reports non-compliant repositories to the security team via Teams.
tags:
- security
- github
- devops
- compliance
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: security-audit
port: 8080
tools:
- name: audit-branch-protection
description: List all repositories in the Coca-Cola GitHub organization and check each for branch protection rules on the default branch. Report non-compliant repos to the security Teams channel.
steps:
- name: list-repos
type: call
call: github.list-org-repos
with:
org: coca-cola
type: private
- name: post-audit-report
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_security_channel_id
text: 'Branch Protection Audit: {{list-repos.total_count}} private repositories reviewed for compliance.'
consumes:
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: org-repos
path: /orgs/{{org}}/repos
inputParameters:
- name: org
in: path
- name: type
in: query
operations:
- name: list-org-repos
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Optimizes route-to-market by analyzing Salesforce retail account data, checking SAP warehouse inventory, and generating optimized delivery routes posted to Microsoft Teams.
naftiko: '0.5'
info:
label: Route to Market Optimization
description: Optimizes route-to-market by analyzing Salesforce retail account data, checking SAP warehouse inventory, and generating optimized delivery routes posted to Microsoft Teams.
tags:
- distribution
- supply-chain
- salesforce
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: route-optimization
port: 8080
tools:
- name: optimize-routes
description: 'Optimize delivery routes: analyze Salesforce accounts, check SAP inventory, and post optimized routes.'
inputParameters:
- name: region_code
in: body
type: string
description: The distribution region code.
- name: delivery_date
in: body
type: string
description: Target delivery date in YYYY-MM-DD format.
steps:
- name: get-retail-accounts
type: call
call: salesforce.get-region-accounts
with:
region: '{{region_code}}'
- name: check-warehouse-stock
type: call
call: sap.get-regional-stock
with:
region: '{{region_code}}'
- name: post-optimized-routes
type: call
call: msteams.send-message
with:
channel_id: distribution-{{region_code}}
text: 'Route optimization for {{region_code}} on {{delivery_date}}: Active accounts: {{get-retail-accounts.count}}. Warehouse stock: {{check-warehouse-stock.total_cases}} cases. Routes generated and ready for dispatch.'
consumes:
- type: http
namespace: salesforce
baseUri: https://coca-cola.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /query?q=SELECT+Id,Name+FROM+Account+WHERE+Region__c='{{region}}'
inputParameters:
- name: region
in: query
operations:
- name: get-region-accounts
method: GET
- type: http
namespace: sap
baseUri: https://coca-cola-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: regional-stock
path: /RegionalInventory('{{region}}')
inputParameters:
- name: region
in: path
operations:
- name: get-regional-stock
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When Dynatrace detects performance degradation, retrieves problem details, creates a ServiceNow incident, and notifies the SRE team via Microsoft Teams.
naftiko: '0.5'
info:
label: Dynatrace Performance Degradation Alert
description: When Dynatrace detects performance degradation, retrieves problem details, creates a ServiceNow incident, and notifies the SRE team via Microsoft Teams.
tags:
- it-operations
- dynatrace
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: performance-ops
port: 8080
tools:
- name: handle-performance-degradation
description: 'Handle Dynatrace performance alert: get problem details, create ServiceNow incident, and notify SRE team.'
inputParameters:
- name: problem_id
in: body
type: string
description: The Dynatrace problem ID.
steps:
- name: get-problem-details
type: call
call: dynatrace.get-problem
with:
problem_id: '{{problem_id}}'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Performance degradation: {{get-problem-details.title}}'
description: 'Impact: {{get-problem-details.impact_level}}. Root cause: {{get-problem-details.root_cause}}. Affected services: {{get-problem-details.affected_entities}}.'
urgency: '2'
assignment_group: SRE_Team
- name: notify-sre
type: call
call: msteams.send-message
with:
channel_id: sre-alerts
text: 'Performance Alert: {{get-problem-details.title}}. Impact: {{get-problem-details.impact_level}}. ServiceNow: {{create-incident.number}}.'
consumes:
- type: http
namespace: dynatrace
baseUri: https://cocacola.live.dynatrace.com/api/v2
authentication:
type: bearer
token: $secrets.dynatrace_token
resources:
- name: problems
path: /problems/{{problem_id}}
inputParameters:
- name: problem_id
in: path
operations:
- name: get-problem
method: GET
- type: http
namespace: servicenow
baseUri: https://cocacola.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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Performs distributor credit checks by validating credit limits in SAP, checking payment history in Salesforce, and releasing or blocking the sales order.
naftiko: '0.5'
info:
label: Distributor Credit Check and Order Release
description: Performs distributor credit checks by validating credit limits in SAP, checking payment history in Salesforce, and releasing or blocking the sales order.
tags:
- distribution
- finance
- sap
- salesforce
capability:
exposes:
- type: mcp
namespace: credit-management
port: 8080
tools:
- name: check-credit-and-release
description: Check distributor credit in SAP, verify Salesforce payment history, and release or block sales order.
inputParameters:
- name: sales_order_number
in: body
type: string
description: The SAP sales order number.
- name: account_id
in: body
type: string
description: The Salesforce distributor account ID.
steps:
- name: get-credit-status
type: call
call: sap.get-credit-status
with:
sales_order: '{{sales_order_number}}'
- name: get-payment-history
type: call
call: salesforce.get-payment-history
with:
account_id: '{{account_id}}'
- name: release-order
type: call
call: sap.release-credit-block
with:
sales_order: '{{sales_order_number}}'
credit_status: '{{get-credit-status.credit_status}}'
payment_score: '{{get-payment-history.payment_score}}'
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-s4.sap.com/sap/opu/odata/sap/API_SALES_ORDER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: credit-status
path: /A_SalesOrder('{{sales_order}}')/to_CreditStatus
inputParameters:
- name: sales_order
in: path
operations:
- name: get-credit-status
method: GET
- name: credit-release
path: /A_SalesOrder('{{sales_order}}')/to_CreditRelease
inputParameters:
- name: sales_order
in: path
operations:
- name: release-credit-block
method: POST
- type: http
namespace: salesforce
baseUri: https://coca-cola.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: payment-history
path: /sobjects/Account/{{account_id}}/Payment_History__r
inputParameters:
- name: account_id
in: path
operations:
- name: get-payment-history
method: GET
Retrieves the current stock level for a given material number from SAP S/4HANA, returning plant, storage location, and available quantity.
naftiko: '0.5'
info:
label: SAP Material Stock Level Check
description: Retrieves the current stock level for a given material number from SAP S/4HANA, returning plant, storage location, and available quantity.
tags:
- supply-chain
- sap
- inventory
capability:
exposes:
- type: mcp
namespace: inventory
port: 8080
tools:
- name: get-material-stock
description: Look up current stock levels for a material in SAP S/4HANA. Returns plant, storage location, unrestricted stock, and unit of measure.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number, e.g. 000000000050001234.
call: sap.get-material-stock
with:
material_number: '{{material_number}}'
outputParameters:
- name: plant
type: string
mapping: $.d.Plant
- name: storage_location
type: string
mapping: $.d.StorageLocation
- name: available_stock
type: string
mapping: $.d.MatlWrhsStkQtyInMatlBaseUnit
- name: unit
type: string
mapping: $.d.MaterialBaseUnit
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-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(Material='{{material_number}}')
inputParameters:
- name: material_number
in: path
operations:
- name: get-material-stock
method: GET
When a critical ServiceNow incident is raised, creates a Datadog event marker, pages the on-call engineer, and posts an alert to the IT-incidents Microsoft Teams channel.
naftiko: '0.5'
info:
label: IT Incident Response Orchestrator
description: When a critical ServiceNow incident is raised, creates a Datadog event marker, pages the on-call engineer, and posts an alert to the IT-incidents Microsoft Teams channel.
tags:
- itsm
- incident-response
- servicenow
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: it-ops
port: 8080
tools:
- name: handle-critical-incident
description: Given a ServiceNow incident number, retrieve incident details, create a Datadog event marker for correlation, and post an alert to the IT-incidents Teams channel. Use for critical P1/P2 incident bridges.
inputParameters:
- name: incident_number
in: body
type: string
description: The ServiceNow incident number, e.g. INC0012345.
steps:
- name: get-incident
type: call
call: servicenow.get-incident
with:
incident_number: '{{incident_number}}'
- name: create-datadog-event
type: call
call: datadog.create-event
with:
title: 'ServiceNow Incident: {{incident_number}}'
text: '{{get-incident.short_description}} — Priority: {{get-incident.priority}}'
alert_type: error
- name: post-teams-alert
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_it_channel_id
text: 'CRITICAL INCIDENT {{incident_number}}: {{get-incident.short_description}} | Assigned: {{get-incident.assigned_to}} | Datadog event: {{create-datadog-event.event_id}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://cocacola.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: get-incident
method: GET
- 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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Reconciles digital marketing spend by pulling campaign costs from Google Analytics, comparing with SAP cost center actuals, and posting a variance report to Microsoft Teams.
naftiko: '0.5'
info:
label: Digital Marketing Spend Reconciliation
description: Reconciles digital marketing spend by pulling campaign costs from Google Analytics, comparing with SAP cost center actuals, and posting a variance report to Microsoft Teams.
tags:
- marketing
- finance
- google-analytics
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: marketing-finance
port: 8080
tools:
- name: reconcile-marketing-spend
description: Reconcile digital marketing spend across Google Analytics and SAP, then post variance report to Teams.
inputParameters:
- name: cost_center
in: body
type: string
description: The SAP cost center for marketing.
- name: campaign_id
in: body
type: string
description: The Google Analytics campaign ID.
- name: period
in: body
type: string
description: The fiscal period, e.g. 2026-03.
steps:
- name: get-ga-spend
type: call
call: ga.get-campaign-cost
with:
campaign_id: '{{campaign_id}}'
period: '{{period}}'
- name: get-sap-actuals
type: call
call: sap.get-cost-center-actuals
with:
cost_center: '{{cost_center}}'
period: '{{period}}'
- name: post-variance-report
type: call
call: msteams.send-message
with:
channel_id: marketing-finance
text: 'Marketing Spend Reconciliation for {{period}}: GA Campaign Spend: ${{get-ga-spend.total_cost}}. SAP Cost Center Actuals: ${{get-sap-actuals.total_actual}}. Variance requires review.'
consumes:
- type: http
namespace: ga
baseUri: https://analyticsreporting.googleapis.com/v4
authentication:
type: bearer
token: $secrets.google_analytics_token
resources:
- name: campaign-cost
path: /reports:batchGet
operations:
- name: get-campaign-cost
method: POST
- type: http
namespace: sap
baseUri: https://coca-cola-s4.sap.com/sap/opu/odata/sap/API_COSTCENTER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: cost-centers
path: /A_CostCenter('{{cost_center}}')/to_Actuals?$filter=Period eq '{{period}}'
inputParameters:
- name: cost_center
in: path
- name: period
in: query
operations:
- name: get-cost-center-actuals
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Creates a ServiceNow change request for a planned infrastructure change, routes it for manager approval, and notifies the requester via Teams when approved or rejected.
naftiko: '0.5'
info:
label: ServiceNow Change Request Approval
description: Creates a ServiceNow change request for a planned infrastructure change, routes it for manager approval, and notifies the requester via Teams when approved or rejected.
tags:
- itsm
- change-management
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: change-mgmt
port: 8080
tools:
- name: create-change-request
description: Given a change description, risk level, and planned start/end times, create a ServiceNow change request and notify the requester of submission via Teams.
inputParameters:
- name: description
in: body
type: string
description: A description of the planned infrastructure change.
- name: risk
in: body
type: string
description: 'Risk level: low, medium, or high.'
- name: planned_start
in: body
type: string
description: Planned change start time in ISO 8601 format.
- name: requester_upn
in: body
type: string
description: UPN (email) of the person requesting the change.
steps:
- name: create-cr
type: call
call: servicenow.create-change
with:
description: '{{description}}'
risk: '{{risk}}'
start_date: '{{planned_start}}'
- name: notify-requester
type: call
call: msteams.send-message
with:
recipient_upn: '{{requester_upn}}'
text: Your change request {{create-cr.number}} has been submitted and is pending approval.
consumes:
- type: http
namespace: servicenow
baseUri: https://cocacola.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: mail
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Retrieves the status of a running Teradata query by session ID, returning query state, elapsed time, and CPU consumption.
naftiko: '0.5'
info:
label: Teradata Warehouse Query Status
description: Retrieves the status of a running Teradata query by session ID, returning query state, elapsed time, and CPU consumption.
tags:
- analytics
- teradata
- data-warehouse
capability:
exposes:
- type: mcp
namespace: data-warehouse
port: 8080
tools:
- name: get-query-status
description: Check the status of a Teradata query by session ID. Returns query state, elapsed time, and CPU seconds.
inputParameters:
- name: session_id
in: body
type: string
description: The Teradata session ID.
call: teradata.get-query-status
with:
session_id: '{{session_id}}'
outputParameters:
- name: query_state
type: string
mapping: $.queryState
- name: elapsed_time
type: string
mapping: $.elapsedTime
- name: cpu_seconds
type: string
mapping: $.cpuSeconds
consumes:
- type: http
namespace: teradata
baseUri: https://coca-cola-td.teradata.com/api/v1
authentication:
type: bearer
token: $secrets.teradata_token
resources:
- name: queries
path: /queries/{{session_id}}/status
inputParameters:
- name: session_id
in: path
operations:
- name: get-query-status
method: GET
Retrieves a Zendesk support ticket by ID, returning status, priority, requester, and subject for customer service tracking.
naftiko: '0.5'
info:
label: Zendesk Ticket Status Lookup
description: Retrieves a Zendesk support ticket by ID, returning status, priority, requester, and subject for customer service tracking.
tags:
- customer-service
- zendesk
- support
capability:
exposes:
- type: mcp
namespace: support
port: 8080
tools:
- name: get-ticket
description: Look up a Zendesk support ticket by ID. Returns status, priority, requester name, and subject.
inputParameters:
- name: ticket_id
in: body
type: string
description: The Zendesk ticket ID.
call: zendesk.get-ticket
with:
ticket_id: '{{ticket_id}}'
outputParameters:
- name: status
type: string
mapping: $.ticket.status
- name: priority
type: string
mapping: $.ticket.priority
- name: requester
type: string
mapping: $.ticket.requester.name
- name: subject
type: string
mapping: $.ticket.subject
consumes:
- type: http
namespace: zendesk
baseUri: https://cocacola.zendesk.com/api/v2
authentication:
type: bearer
token: $secrets.zendesk_token
resources:
- name: tickets
path: /tickets/{{ticket_id}}
inputParameters:
- name: ticket_id
in: path
operations:
- name: get-ticket
method: GET
When Datadog detects an infrastructure anomaly above a threshold, creates a ServiceNow incident and notifies the SRE team in Teams with metric context.
naftiko: '0.5'
info:
label: Datadog Infrastructure Anomaly Responder
description: When Datadog detects an infrastructure anomaly above a threshold, creates a ServiceNow incident and notifies the SRE team in Teams with metric context.
tags:
- observability
- datadog
- servicenow
- microsoft-teams
- monitoring
capability:
exposes:
- type: mcp
namespace: observability-ops
port: 8080
tools:
- name: handle-infra-anomaly
description: Given a Datadog monitor ID and alert status, fetch monitor details, create a ServiceNow incident, and post context-rich alert to the SRE Teams channel. Use for infrastructure anomaly response automation.
inputParameters:
- name: monitor_id
in: body
type: string
description: The Datadog monitor ID that triggered the alert.
- name: alert_status
in: body
type: string
description: 'The alert status: Alert, Warn, or No Data.'
steps:
- name: get-monitor
type: call
call: datadog.get-monitor
with:
monitor_id: '{{monitor_id}}'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Datadog anomaly: {{get-monitor.name}}'
description: 'Monitor ID: {{monitor_id}} | Status: {{alert_status}} | Query: {{get-monitor.query}}'
urgency: '1'
- name: post-alert
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sre_channel_id
text: 'Infra Anomaly: {{get-monitor.name}} | Status: {{alert_status}} | Incident: {{create-incident.number}}'
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/{{monitor_id}}
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
- type: http
namespace: servicenow
baseUri: https://cocacola.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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Checks workforce training compliance by pulling training records from Workday, verifying certifications against requirements, and creating non-compliance tasks in ServiceNow.
naftiko: '0.5'
info:
label: Workforce Training Compliance Check
description: Checks workforce training compliance by pulling training records from Workday, verifying certifications against requirements, and creating non-compliance tasks in ServiceNow.
tags:
- hr
- manufacturing
- workday
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: training-compliance
port: 8080
tools:
- name: check-training-compliance
description: 'Check training compliance: pull Workday records, verify certifications, and create ServiceNow tasks for gaps.'
inputParameters:
- name: department
in: body
type: string
description: The department to check.
- name: plant_code
in: body
type: string
description: The plant code.
steps:
- name: get-training-records
type: call
call: workday.get-training-records
with:
department: '{{department}}'
location: '{{plant_code}}'
- name: create-compliance-tasks
type: call
call: servicenow.create-task
with:
short_description: 'Training compliance gap: {{department}} at plant {{plant_code}}'
description: 'Overdue trainings: {{get-training-records.overdue_count}}. Expiring certifications: {{get-training-records.expiring_count}}.'
category: training_compliance
assignment_group: HR_Training
- name: notify-hr
type: call
call: msteams.send-message
with:
channel_id: hr-compliance
text: 'Training Compliance Report for {{department}} at plant {{plant_code}}: Total employees: {{get-training-records.total_employees}}. Compliant: {{get-training-records.compliant_count}}. Overdue: {{get-training-records.overdue_count}}. ServiceNow task: {{create-compliance-tasks.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: training
path: /coca-cola/training/records?department={{department}}&location={{location}}
inputParameters:
- name: department
in: query
- name: location
in: query
operations:
- name: get-training-records
method: GET
- type: http
namespace: servicenow
baseUri: https://cocacola.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
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channels
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Manages packaging changes by updating the SAP material master, creating a change request in ServiceNow, and notifying brand management and manufacturing via Microsoft Teams.
naftiko: '0.5'
info:
label: Brand Packaging Change Management
description: Manages packaging changes by updating the SAP material master, creating a change request in ServiceNow, and notifying brand management and manufacturing via Microsoft Teams.
tags:
- brand-management
- manufacturing
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: packaging-change
port: 8080
tools:
- name: manage-packaging-change
description: 'Manage packaging change: update SAP material, create ServiceNow change request, and notify teams.'
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number.
- name: change_description
in: body
type: string
description: Description of the packaging change.
- name: effective_date
in: body
type: string
description: Effective date in YYYY-MM-DD format.
steps:
- name: get-current-material
type: call
call: sap.get-material-master
with:
material_number: '{{material_number}}'
- name: create-change-request
type: call
call: servicenow.create-change-request
with:
short_description: 'Packaging change: Material {{material_number}}'
description: '{{change_description}}. Current packaging: {{get-current-material.packaging_type}}. Effective: {{effective_date}}.'
category: packaging_change
assignment_group: Brand_Packaging
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
channel_id: brand-packaging
text: 'Packaging Change: Material {{material_number}} ({{get-current-material.description}}). Change: {{change_description}}. Effective: {{effective_date}}. Change request: {{create-change-request.number}}.'
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-s4.sap.com/sap/opu/odata/sap/API_PRODUCT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: materials
path: /A_Product('{{material_number}}')
inputParameters:
- name: material_number
in: path
operations:
- name: get-material-master
method: GET
- type: http
namespace: servicenow
baseUri: https://cocacola.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.msgraph_token
resources:
- name: channels
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Orchestrates new supplier onboarding by creating the vendor master in SAP, setting up a contract workspace in SharePoint, and notifying procurement via Microsoft Teams.
naftiko: '0.5'
info:
label: Supplier Onboarding Orchestrator
description: Orchestrates new supplier onboarding by creating the vendor master in SAP, setting up a contract workspace in SharePoint, and notifying procurement via Microsoft Teams.
tags:
- procurement
- sap
- sharepoint
- microsoft-teams
- supply-chain
capability:
exposes:
- type: mcp
namespace: procurement-onboarding
port: 8080
tools:
- name: onboard-supplier
description: 'Orchestrate supplier onboarding: create SAP vendor master, set up SharePoint workspace, and notify procurement team.'
inputParameters:
- name: vendor_name
in: body
type: string
description: The supplier company name.
- name: vendor_country
in: body
type: string
description: The supplier country code.
- name: category
in: body
type: string
description: The procurement category, e.g. raw-materials, packaging.
steps:
- name: create-vendor
type: call
call: sap.create-vendor
with:
name: '{{vendor_name}}'
country: '{{vendor_country}}'
purchasing_group: '{{category}}'
- name: create-contract-workspace
type: call
call: sharepoint.create-folder
with:
site_id: procurement
folder_path: Vendors/{{vendor_name}}
- name: notify-procurement
type: call
call: msteams.send-message
with:
channel_id: procurement-ops
text: 'New supplier onboarded: {{vendor_name}} ({{vendor_country}}). SAP Vendor ID: {{create-vendor.vendor_id}}. Category: {{category}}. Contract workspace created in SharePoint.'
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: vendors
path: /A_BusinessPartner
operations:
- name: create-vendor
method: POST
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: folders
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: channels
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Queries Workday for pending time-off requests older than 48 hours and sends a reminder to the responsible managers via Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Time-Off Request Approval Reminder
description: Queries Workday for pending time-off requests older than 48 hours and sends a reminder to the responsible managers via Microsoft Teams.
tags:
- hr
- workday
- microsoft-teams
- approval
capability:
exposes:
- type: mcp
namespace: hr-leave
port: 8080
tools:
- name: remind-pending-timeoff-approvals
description: Fetch all Workday time-off requests that have been pending approval for more than 48 hours and send a reminder to each manager via Teams.
steps:
- name: get-pending-requests
type: call
call: workday.list-pending-timeoff
with:
status: Awaiting_Approval
- name: notify-managers
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_hr_channel_id
text: 'Reminder: {{get-pending-requests.total_count}} time-off requests are awaiting approval in Workday for more than 48 hours.'
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: timeoff-requests
path: /coca-cola/timeOffRequests
inputParameters:
- name: status
in: query
operations:
- name: list-pending-timeoff
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves application health summary from New Relic, including response time, throughput, and error rate for a given application.
naftiko: '0.5'
info:
label: New Relic Application Health
description: Retrieves application health summary from New Relic, including response time, throughput, and error rate for a given application.
tags:
- it-operations
- new-relic
- monitoring
capability:
exposes:
- type: mcp
namespace: apm
port: 8080
tools:
- name: get-app-health
description: Get the health summary of a New Relic application. Returns response time, throughput, and error rate.
inputParameters:
- name: app_id
in: body
type: string
description: The New Relic application ID.
call: newrelic.get-app-summary
with:
app_id: '{{app_id}}'
outputParameters:
- name: response_time
type: string
mapping: $.application_summary.response_time
- name: throughput
type: string
mapping: $.application_summary.throughput
- name: error_rate
type: string
mapping: $.application_summary.error_rate
consumes:
- type: http
namespace: newrelic
baseUri: https://api.newrelic.com/v2
authentication:
type: apiKey
header: X-Api-Key
value: $secrets.newrelic_api_key
resources:
- name: applications
path: /applications/{{app_id}}.json
inputParameters:
- name: app_id
in: path
operations:
- name: get-app-summary
method: GET
Audits retail shelf compliance by pulling store audit data from Salesforce, comparing against planogram standards, and posting a compliance report to Microsoft Teams.
naftiko: '0.5'
info:
label: Retail Shelf Compliance Audit
description: Audits retail shelf compliance by pulling store audit data from Salesforce, comparing against planogram standards, and posting a compliance report to Microsoft Teams.
tags:
- distribution
- brand-management
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: retail-compliance
port: 8080
tools:
- name: audit-shelf-compliance
description: 'Audit retail shelf compliance: pull Salesforce audit data, compare with standards, and post report to Teams.'
inputParameters:
- name: store_account_id
in: body
type: string
description: The Salesforce store account ID.
- name: audit_date
in: body
type: string
description: The audit date in YYYY-MM-DD format.
steps:
- name: get-audit-record
type: call
call: salesforce.get-audit-record
with:
account_id: '{{store_account_id}}'
audit_date: '{{audit_date}}'
- name: get-planogram
type: call
call: salesforce.get-planogram
with:
store_type: '{{get-audit-record.store_type}}'
- name: post-compliance-report
type: call
call: msteams.send-message
with:
channel_id: retail-operations
text: 'Shelf Compliance Audit: Store {{get-audit-record.store_name}} on {{audit_date}}. Compliance score: {{get-audit-record.compliance_score}}%. Planogram adherence: {{get-audit-record.planogram_match}}%. Action required: {{get-audit-record.action_items}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://coca-cola.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: audits
path: /sobjects/Store_Audit__c?q=AccountId='{{account_id}}' AND AuditDate='{{audit_date}}'
inputParameters:
- name: account_id
in: query
- name: audit_date
in: query
operations:
- name: get-audit-record
method: GET
- name: planograms
path: /sobjects/Planogram__c?q=StoreType='{{store_type}}'
inputParameters:
- name: store_type
in: query
operations:
- name: get-planogram
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Validates cross-border trade compliance by checking SAP export documentation, verifying customs classification, and logging compliance status in ServiceNow.
naftiko: '0.5'
info:
label: Cross-Border Trade Compliance Check
description: Validates cross-border trade compliance by checking SAP export documentation, verifying customs classification, and logging compliance status in ServiceNow.
tags:
- distribution
- supply-chain
- sap
- servicenow
capability:
exposes:
- type: mcp
namespace: trade-compliance
port: 8080
tools:
- name: check-trade-compliance
description: 'Validate cross-border trade compliance: check SAP export docs, verify customs, and log in ServiceNow.'
inputParameters:
- name: delivery_number
in: body
type: string
description: The SAP delivery document number.
- name: destination_country
in: body
type: string
description: The destination country code.
steps:
- name: get-export-docs
type: call
call: sap.get-export-documentation
with:
delivery_number: '{{delivery_number}}'
- name: verify-customs
type: call
call: sap.get-customs-classification
with:
material: '{{get-export-docs.material_number}}'
country: '{{destination_country}}'
- name: log-compliance
type: call
call: servicenow.create-task
with:
short_description: 'Trade compliance: Delivery {{delivery_number}} to {{destination_country}}'
description: 'Export docs status: {{get-export-docs.status}}. Customs classification: {{verify-customs.hs_code}}. Duty rate: {{verify-customs.duty_rate}}%.'
category: trade_compliance
assignment_group: Trade_Compliance
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-s4.sap.com/sap/opu/odata/sap/API_OUTBOUND_DELIVERY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: export-docs
path: /A_OutbDeliveryHeader('{{delivery_number}}')/to_ExportDocuments
inputParameters:
- name: delivery_number
in: path
operations:
- name: get-export-documentation
method: GET
- name: customs
path: /CustomsClassification(Material='{{material}}',Country='{{country}}')
inputParameters:
- name: material
in: path
- name: country
in: path
operations:
- name: get-customs-classification
method: GET
- type: http
namespace: servicenow
baseUri: https://cocacola.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
Tracks GitHub release deployments by checking release status, verifying Datadog health metrics post-deploy, and updating the ServiceNow change request.
naftiko: '0.5'
info:
label: GitHub Release Deployment Tracker
description: Tracks GitHub release deployments by checking release status, verifying Datadog health metrics post-deploy, and updating the ServiceNow change request.
tags:
- devops
- github
- datadog
- servicenow
capability:
exposes:
- type: mcp
namespace: deployment
port: 8080
tools:
- name: track-release-deployment
description: 'Track release deployment: check GitHub release, verify Datadog metrics, and update ServiceNow change request.'
inputParameters:
- name: repo
in: body
type: string
description: The GitHub repository name.
- name: release_tag
in: body
type: string
description: The release tag version.
- name: change_request_id
in: body
type: string
description: The ServiceNow change request sys_id.
steps:
- name: get-release
type: call
call: github.get-release
with:
repo: '{{repo}}'
tag: '{{release_tag}}'
- name: check-post-deploy-health
type: call
call: datadog.get-service-metrics
with:
service_name: '{{repo}}'
- name: update-change-request
type: call
call: servicenow.update-change-request
with:
sys_id: '{{change_request_id}}'
state: review
work_notes: 'Release {{release_tag}} deployed. Error rate: {{check-post-deploy-health.error_rate}}. P99 latency: {{check-post-deploy-health.p99_latency}}ms.'
consumes:
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: releases
path: /repos/coca-cola/{{repo}}/releases/tags/{{tag}}
inputParameters:
- name: repo
in: path
- name: tag
in: path
operations:
- name: get-release
method: GET
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apiKey
header: DD-API-KEY
value: $secrets.datadog_api_key
resources:
- name: service-metrics
path: /metrics/query?query=service:{{service_name}}
inputParameters:
- name: service_name
in: query
operations:
- name: get-service-metrics
method: GET
- type: http
namespace: servicenow
baseUri: https://cocacola.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: change-requests
path: /table/change_request/{{sys_id}}
inputParameters:
- name: sys_id
in: path
operations:
- name: update-change-request
method: PATCH
Processes fountain equipment service requests by looking up the customer in Salesforce, creating a field service ticket in ServiceNow, and notifying the service technician via Microsoft Teams.
naftiko: '0.5'
info:
label: Fountain Equipment Service Request
description: Processes fountain equipment service requests by looking up the customer in Salesforce, creating a field service ticket in ServiceNow, and notifying the service technician via Microsoft Teams.
tags:
- distribution
- customer-service
- salesforce
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: field-service
port: 8080
tools:
- name: create-fountain-service-request
description: 'Process fountain service request: look up Salesforce customer, create ServiceNow ticket, notify technician.'
inputParameters:
- name: account_id
in: body
type: string
description: The Salesforce customer account ID.
- name: equipment_serial
in: body
type: string
description: The fountain equipment serial number.
- name: issue_description
in: body
type: string
description: Description of the service issue.
steps:
- name: get-customer
type: call
call: salesforce.get-account
with:
account_id: '{{account_id}}'
- name: create-service-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'Fountain service: {{equipment_serial}} at {{get-customer.name}}'
description: '{{issue_description}}'
category: fountain_equipment
assignment_group: Fountain_Service
- name: notify-technician
type: call
call: msteams.send-message
with:
channel_id: fountain-service
text: 'New fountain service request: {{get-customer.name}}. Equipment: {{equipment_serial}}. Issue: {{issue_description}}. Ticket: {{create-service-ticket.number}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://coca-cola.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: servicenow
baseUri: https://cocacola.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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors Azure Databricks ETL pipeline runs, checks for failures in Datadog, and creates a ServiceNow incident if errors are detected.
naftiko: '0.5'
info:
label: Azure Databricks ETL Pipeline Monitor
description: Monitors Azure Databricks ETL pipeline runs, checks for failures in Datadog, and creates a ServiceNow incident if errors are detected.
tags:
- analytics
- azure-databricks
- datadog
- servicenow
capability:
exposes:
- type: mcp
namespace: data-ops
port: 8080
tools:
- name: monitor-etl-pipeline
description: 'Monitor Databricks ETL pipeline: check run status, verify Datadog metrics, and create ServiceNow incident on failure.'
inputParameters:
- name: run_id
in: body
type: string
description: The Databricks job run ID.
steps:
- name: get-run-status
type: call
call: databricks.get-run
with:
run_id: '{{run_id}}'
- name: check-datadog-metrics
type: call
call: datadog.get-pipeline-metrics
with:
pipeline_name: '{{get-run-status.job_name}}'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'ETL pipeline alert: {{get-run-status.job_name}} run {{run_id}}'
description: 'Run status: {{get-run-status.state}}. Error rate: {{check-datadog-metrics.error_rate}}.'
category: data_pipeline
assignment_group: Data_Engineering
consumes:
- type: http
namespace: databricks
baseUri: https://adb-cocacola.azuredatabricks.net/api/2.1
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: runs
path: /jobs/runs/get?run_id={{run_id}}
inputParameters:
- name: run_id
in: query
operations:
- name: get-run
method: GET
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apiKey
header: DD-API-KEY
value: $secrets.datadog_api_key
resources:
- name: pipeline-metrics
path: /metrics/query?query=pipeline:{{pipeline_name}}
inputParameters:
- name: pipeline_name
in: query
operations:
- name: get-pipeline-metrics
method: GET
- type: http
namespace: servicenow
baseUri: https://cocacola.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 employee changes roles in Workday, updates ServiceNow access groups, modifies SharePoint permissions, and notifies the employee and manager via Microsoft Teams.
naftiko: '0.5'
info:
label: Employee Role Change Provisioning
description: When an employee changes roles in Workday, updates ServiceNow access groups, modifies SharePoint permissions, and notifies the employee and manager via Microsoft Teams.
tags:
- hr
- workday
- servicenow
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-provisioning
port: 8080
tools:
- name: process-role-change
description: 'Orchestrate employee role change: update ServiceNow access, modify SharePoint permissions, and notify via Teams.'
inputParameters:
- name: worker_id
in: body
type: string
description: The Workday worker ID.
- name: new_role
in: body
type: string
description: The new role title.
steps:
- name: get-worker
type: call
call: workday.get-worker
with:
worker_id: '{{worker_id}}'
- name: update-access-groups
type: call
call: servicenow.update-user-groups
with:
user_email: '{{get-worker.work_email}}'
new_role: '{{new_role}}'
- name: update-sharepoint-access
type: call
call: sharepoint.update-permissions
with:
user_email: '{{get-worker.work_email}}'
site_group: '{{new_role}}-team'
- name: notify-employee
type: call
call: msteams.send-message
with:
recipient_upn: '{{get-worker.work_email}}'
text: Hi {{get-worker.first_name}}, your role has been updated to {{new_role}}. Your system access has been adjusted accordingly.
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: /coca-cola/workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: servicenow
baseUri: https://cocacola.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: user-groups
path: /table/sys_user_grmember
operations:
- name: update-user-groups
method: POST
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: permissions
path: /sites/root/permissions
operations:
- name: update-permissions
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: chats
path: /users/{{recipient_upn}}/chats
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Orchestrates a marketing campaign launch by creating the campaign in Salesforce, setting up tracking in Google Analytics, and posting the announcement to Microsoft Teams.
naftiko: '0.5'
info:
label: Brand Marketing Campaign Launch
description: Orchestrates a marketing campaign launch by creating the campaign in Salesforce, setting up tracking in Google Analytics, and posting the announcement to Microsoft Teams.
tags:
- marketing
- brand-management
- salesforce
- google-analytics
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: marketing
port: 8080
tools:
- name: launch-brand-campaign
description: Orchestrate a brand campaign launch across Salesforce, Google Analytics, and Microsoft Teams.
inputParameters:
- name: campaign_name
in: body
type: string
description: The name of the marketing campaign.
- name: brand
in: body
type: string
description: The Coca-Cola brand, e.g. Coca-Cola Classic, Sprite, Fanta.
- name: start_date
in: body
type: string
description: Campaign start date in YYYY-MM-DD format.
- name: budget
in: body
type: string
description: Campaign budget in USD.
steps:
- name: create-sf-campaign
type: call
call: salesforce.create-campaign
with:
name: '{{campaign_name}}'
brand: '{{brand}}'
start_date: '{{start_date}}'
budgeted_cost: '{{budget}}'
- name: create-ga-property
type: call
call: ga.create-custom-dimension
with:
campaign_id: '{{create-sf-campaign.id}}'
campaign_name: '{{campaign_name}}'
- name: announce-launch
type: call
call: msteams.send-message
with:
channel_id: brand-marketing
text: 'New campaign launched: {{campaign_name}} for {{brand}}. Salesforce ID: {{create-sf-campaign.id}}. Budget: ${{budget}}. Start date: {{start_date}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://coca-cola.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: campaigns
path: /sobjects/Campaign
operations:
- name: create-campaign
method: POST
- type: http
namespace: ga
baseUri: https://analyticsadmin.googleapis.com/v1beta
authentication:
type: bearer
token: $secrets.google_analytics_token
resources:
- name: custom-dimensions
path: /properties/cocacola/customDimensions
operations:
- name: create-custom-dimension
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Pulls actual vs. planned spending by cost center from SAP S/4HANA and posts a variance summary to the Finance Microsoft Teams channel for monthly close review.
naftiko: '0.5'
info:
label: SAP Cost Center Budget Variance Report
description: Pulls actual vs. planned spending by cost center from SAP S/4HANA and posts a variance summary to the Finance Microsoft Teams channel for monthly close review.
tags:
- finance
- sap
- budgeting
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finance-reporting
port: 8080
tools:
- name: digest-budget-variance
description: Retrieve actual vs. planned cost center spending from SAP S/4HANA for the current fiscal period and post a variance digest to the Finance Teams channel. Use for monthly close reviews.
inputParameters:
- name: fiscal_period
in: body
type: string
description: Fiscal period in YYYYMM format, e.g. 202603.
steps:
- name: get-variance
type: call
call: sap.get-cost-center-variance
with:
fiscal_period: '{{fiscal_period}}'
- name: post-report
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_finance_channel_id
text: Budget Variance Report for period {{fiscal_period}} is ready. {{get-variance.total_cost_centers}} cost centers reviewed.
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-s4.sap.com/sap/opu/odata/sap/API_COSTCENTER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: cost-center-variance
path: /A_CostCenter
inputParameters:
- name: fiscal_period
in: query
operations:
- name: get-cost-center-variance
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Submits a compensation change request for an employee in Workday, routes it for manager and HR approval, and notifies all parties via Teams when the action is complete.
naftiko: '0.5'
info:
label: Workday Compensation Change Approval
description: Submits a compensation change request for an employee in Workday, routes it for manager and HR approval, and notifies all parties via Teams when the action is complete.
tags:
- hr
- compensation
- workday
- microsoft-teams
- approval
capability:
exposes:
- type: mcp
namespace: hr-comp
port: 8080
tools:
- name: submit-comp-change
description: Given a Workday employee ID, new base salary, and effective date, submit a compensation change request in Workday and notify the manager and HR partner via Teams.
inputParameters:
- name: 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: The new base salary amount in the employee's currency.
- name: effective_date
in: body
type: string
description: Effective date for the compensation change in ISO 8601 format.
steps:
- name: get-worker
type: call
call: workday.get-worker
with:
worker_id: '{{employee_id}}'
- name: submit-change
type: call
call: workday.submit-comp-change
with:
worker_id: '{{employee_id}}'
new_salary: '{{new_salary}}'
effective_date: '{{effective_date}}'
- name: notify-manager
type: call
call: msteams.send-message
with:
recipient_upn: '{{get-worker.manager_email}}'
text: A compensation change for {{get-worker.full_name}} (effective {{effective_date}}) has been submitted and is pending your approval in Workday.
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: /coca-cola/workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- name: submit-comp-change
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
Retrieves LinkedIn Sponsored Content campaign analytics for the past week and posts an engagement summary to the Marketing Microsoft Teams channel.
naftiko: '0.5'
info:
label: LinkedIn Sponsored Campaign Performance Digest
description: Retrieves LinkedIn Sponsored Content campaign analytics for the past week and posts an engagement summary to the Marketing Microsoft Teams channel.
tags:
- marketing
- linkedin
- social
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: marketing-reporting
port: 8080
tools:
- name: digest-linkedin-campaigns
description: Fetch LinkedIn Sponsored Content campaign performance metrics for the past 7 days and post an engagement digest to the Marketing Teams channel. Use for weekly social performance reviews.
inputParameters:
- name: account_id
in: body
type: string
description: The LinkedIn ad account ID (numeric).
steps:
- name: get-analytics
type: call
call: linkedin.get-campaign-analytics
with:
account_id: '{{account_id}}'
dateRange_start_day: '1'
dateRange_end_day: '7'
- name: post-digest
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_marketing_channel_id
text: 'LinkedIn Campaign Digest: {{get-analytics.total_impressions}} impressions, {{get-analytics.total_clicks}} clicks this week for account {{account_id}}.'
consumes:
- type: http
namespace: linkedin
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_day
in: query
- name: dateRange_end_day
in: query
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Triggers a refresh of the Coca-Cola bottling operations Power BI dataset and returns the refresh status.
naftiko: '0.5'
info:
label: Power BI Bottling Dashboard Refresh
description: Triggers a refresh of the Coca-Cola bottling operations Power BI dataset and returns the refresh status.
tags:
- analytics
- power-bi
- manufacturing
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: refresh-bottling-dashboard
description: Trigger a Power BI dataset refresh for the bottling operations dashboard. Returns refresh request ID and status.
inputParameters:
- name: dataset_id
in: body
type: string
description: The Power BI dataset ID for the bottling dashboard.
call: powerbi.trigger-refresh
with:
dataset_id: '{{dataset_id}}'
outputParameters:
- name: request_id
type: string
mapping: $.requestId
- name: status
type: string
mapping: $.status
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: trigger-refresh
method: POST
Retrieves metadata for a document from a SharePoint document library, returning file name, modified date, modified by, and file size.
naftiko: '0.5'
info:
label: SharePoint Document Retrieval
description: Retrieves metadata for a document from a SharePoint document library, returning file name, modified date, modified by, and file size.
tags:
- collaboration
- sharepoint
- document-management
capability:
exposes:
- type: mcp
namespace: documents
port: 8080
tools:
- name: get-document-metadata
description: Retrieve document metadata from SharePoint. Returns file name, last modified date, modified by, and file size.
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 in the document library.
call: sharepoint.get-file
with:
site_id: '{{site_id}}'
file_path: '{{file_path}}'
outputParameters:
- name: file_name
type: string
mapping: $.name
- name: modified_date
type: string
mapping: $.lastModifiedDateTime
- name: modified_by
type: string
mapping: $.lastModifiedBy.user.displayName
- name: file_size
type: string
mapping: $.size
consumes:
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: files
path: /sites/{{site_id}}/drive/root:/{{file_path}}
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: get-file
method: GET
Initiates a performance review cycle in Workday for a given employee population and notifies managers via Teams to complete evaluations by the deadline.
naftiko: '0.5'
info:
label: Workday Performance Review Cycle Kickoff
description: Initiates a performance review cycle in Workday for a given employee population and notifies managers via Teams to complete evaluations by the deadline.
tags:
- hr
- performance-management
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-performance
port: 8080
tools:
- name: kickoff-review-cycle
description: Start a performance review cycle in Workday for a defined employee group and post a notification to managers via Teams with the review deadline. Use for annual or mid-year performance cycle launches.
inputParameters:
- name: review_period
in: body
type: string
description: The review period label, e.g. 2026-Annual.
- name: due_date
in: body
type: string
description: Review completion deadline in ISO 8601 format.
steps:
- name: create-review-event
type: call
call: workday.create-review-event
with:
period: '{{review_period}}'
due_date: '{{due_date}}'
- name: notify-managers
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_hr_channel_id
text: Performance review cycle {{review_period}} is open. Please complete evaluations by {{due_date}}.
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: review-events
path: /coca-cola/performanceReviews
operations:
- name: create-review-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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Reports a plant safety incident by recording it in ServiceNow, updating the SAP plant maintenance log, notifying safety officers via Microsoft Teams, and creating a Workday worker safety record.
naftiko: '0.5'
info:
label: Plant Safety Incident Reporting
description: Reports a plant safety incident by recording it in ServiceNow, updating the SAP plant maintenance log, notifying safety officers via Microsoft Teams, and creating a Workday worker safety record.
tags:
- manufacturing
- servicenow
- sap
- microsoft-teams
- workday
capability:
exposes:
- type: mcp
namespace: safety
port: 8080
tools:
- name: report-safety-incident
description: 'Orchestrate safety incident reporting: create ServiceNow record, update SAP maintenance log, notify safety team, and update Workday.'
inputParameters:
- name: plant_code
in: body
type: string
description: The plant code where the incident occurred.
- name: worker_id
in: body
type: string
description: The Workday worker ID of the involved employee.
- name: incident_description
in: body
type: string
description: Description of the safety incident.
- name: severity
in: body
type: string
description: 'Severity level: low, medium, high, critical.'
steps:
- name: create-safety-record
type: call
call: servicenow.create-incident
with:
short_description: Plant safety incident at {{plant_code}}
description: '{{incident_description}}'
category: plant_safety
urgency: '{{severity}}'
assignment_group: Plant_Safety_{{plant_code}}
- name: update-maintenance-log
type: call
call: sap.create-notification
with:
plant: '{{plant_code}}'
notification_type: safety
description: '{{incident_description}}'
- name: get-worker
type: call
call: workday.get-worker
with:
worker_id: '{{worker_id}}'
- name: notify-safety-team
type: call
call: msteams.send-message
with:
channel_id: plant-safety
text: 'SAFETY INCIDENT at plant {{plant_code}}: {{incident_description}}. Severity: {{severity}}. Involved: {{get-worker.full_name}}. ServiceNow: {{create-safety-record.number}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://cocacola.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://coca-cola-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
operations:
- name: create-notification
method: POST
- 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: /coca-cola/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: channels
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- 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, bank details status, and contact information for supplier management.
naftiko: '0.5'
info:
label: SAP Vendor Master Data Lookup
description: Retrieves vendor master data from SAP S/4HANA by vendor ID, returning payment terms, bank details status, and contact information for supplier management.
tags:
- procurement
- sap
- vendor-management
capability:
exposes:
- type: mcp
namespace: vendor-mgmt
port: 8080
tools:
- name: get-vendor
description: Look up a SAP supplier/vendor record by vendor ID. Returns company name, payment terms, currency, and bank verification status. Use for supplier onboarding checks or payment processing.
inputParameters:
- name: vendor_id
in: body
type: string
description: The SAP vendor (supplier) ID, e.g. 1000012.
call: sap.get-vendor
with:
vendor_id: '{{vendor_id}}'
outputParameters:
- name: company_name
type: string
mapping: $.d.SupplierName
- name: payment_terms
type: string
mapping: $.d.PaymentTerms
- name: currency
type: string
mapping: $.d.Currency
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-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('{{vendor_id}}')
inputParameters:
- name: vendor_id
in: path
operations:
- name: get-vendor
method: GET
Retrieves batch details for a material from SAP S/4HANA, returning batch number, production date, shelf life expiry, and batch status.
naftiko: '0.5'
info:
label: SAP Batch Traceability Lookup
description: Retrieves batch details for a material from SAP S/4HANA, returning batch number, production date, shelf life expiry, and batch status.
tags:
- manufacturing
- sap
- quality
- traceability
capability:
exposes:
- type: mcp
namespace: quality
port: 8080
tools:
- name: get-batch-details
description: Look up batch traceability information in SAP. Returns batch number, production date, expiry date, and batch status.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number.
- name: batch_number
in: body
type: string
description: The SAP batch number.
call: sap.get-batch
with:
material_number: '{{material_number}}'
batch_number: '{{batch_number}}'
outputParameters:
- name: production_date
type: string
mapping: $.d.MfgDate
- name: expiry_date
type: string
mapping: $.d.ShelfLifeExpirationDate
- name: batch_status
type: string
mapping: $.d.BatchStatus
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-s4.sap.com/sap/opu/odata/sap/API_BATCH_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: batches
path: /A_Batch(Material='{{material_number}}',Batch='{{batch_number}}')
inputParameters:
- name: material_number
in: path
- name: batch_number
in: path
operations:
- name: get-batch
method: GET
Tracks distributor order fulfillment by pulling the sales order from SAP, checking delivery status, and updating the Salesforce account with fulfillment details.
naftiko: '0.5'
info:
label: Distributor Order Fulfillment Tracker
description: Tracks distributor order fulfillment by pulling the sales order from SAP, checking delivery status, and updating the Salesforce account with fulfillment details.
tags:
- distribution
- sap
- salesforce
- supply-chain
capability:
exposes:
- type: mcp
namespace: distribution
port: 8080
tools:
- name: track-distributor-order
description: 'Track a distributor order: pull SAP sales order, check delivery, and update Salesforce account.'
inputParameters:
- name: sales_order_number
in: body
type: string
description: The SAP sales order number.
- name: account_id
in: body
type: string
description: The Salesforce distributor account ID.
steps:
- name: get-sales-order
type: call
call: sap.get-sales-order
with:
sales_order_number: '{{sales_order_number}}'
- name: get-delivery-status
type: call
call: sap.get-delivery-by-order
with:
sales_order: '{{sales_order_number}}'
- name: update-sf-account
type: call
call: salesforce.update-account
with:
account_id: '{{account_id}}'
last_order_status: '{{get-sales-order.status}}'
last_delivery_status: '{{get-delivery-status.delivery_status}}'
last_delivery_date: '{{get-delivery-status.actual_goods_issue_date}}'
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-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('{{sales_order_number}}')
inputParameters:
- name: sales_order_number
in: path
operations:
- name: get-sales-order
method: GET
- name: deliveries
path: /A_SalesOrder('{{sales_order}}')/to_Delivery
inputParameters:
- name: sales_order
in: path
operations:
- name: get-delivery-by-order
method: GET
- type: http
namespace: salesforce
baseUri: https://coca-cola.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
Generates energy cost optimization reports by pulling plant energy data from SAP, comparing with utility rate data, and publishing the report to SharePoint.
naftiko: '0.5'
info:
label: Energy Cost Optimization Report
description: Generates energy cost optimization reports by pulling plant energy data from SAP, comparing with utility rate data, and publishing the report to SharePoint.
tags:
- manufacturing
- finance
- sap
- sharepoint
capability:
exposes:
- type: mcp
namespace: energy-optimization
port: 8080
tools:
- name: generate-energy-report
description: 'Generate energy cost report: pull SAP plant data, compare utility rates, and publish to SharePoint.'
inputParameters:
- name: plant_code
in: body
type: string
description: The plant code.
- name: period
in: body
type: string
description: The reporting period, e.g. 2026-03.
steps:
- name: get-energy-consumption
type: call
call: sap.get-plant-energy-consumption
with:
plant: '{{plant_code}}'
period: '{{period}}'
- name: get-energy-costs
type: call
call: sap.get-cost-center-actuals
with:
cost_center: energy-{{plant_code}}
period: '{{period}}'
- name: publish-report
type: call
call: sharepoint.upload-file
with:
site_id: operations
folder_path: Energy/Reports/{{period}}
file_name: energy-optimization-{{plant_code}}.json
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-s4.sap.com/sap/opu/odata/sap/API_PLANT_METRICS_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: energy
path: /PlantEnergyConsumption(Plant='{{plant}}',Period='{{period}}')
inputParameters:
- name: plant
in: path
- name: period
in: path
operations:
- name: get-plant-energy-consumption
method: GET
- name: cost-centers
path: /A_CostCenter('{{cost_center}}')/to_Actuals?$filter=Period eq '{{period}}'
inputParameters:
- name: cost_center
in: path
- name: period
in: query
operations:
- name: get-cost-center-actuals
method: GET
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: files
path: /sites/{{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
Retrieves all open job requisitions from Workday and publishes a digest to a Microsoft Teams HR channel for weekly staffing review.
naftiko: '0.5'
info:
label: Open Job Requisition Report
description: Retrieves all open job requisitions from Workday and publishes a digest to a Microsoft Teams HR channel for weekly staffing review.
tags:
- hr
- recruiting
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-recruiting
port: 8080
tools:
- name: digest-open-requisitions
description: Fetch all open job requisitions from Workday and post a summary digest to the HR staffing Microsoft Teams channel. Use for weekly recruiting pipeline reviews.
steps:
- name: get-requisitions
type: call
call: workday.list-job-requisitions
with:
status: Open
- name: post-digest
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_hr_channel_id
text: 'Weekly Open Requisitions: {{get-requisitions.total_count}} open roles across Coca-Cola.'
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: job-requisitions
path: /coca-cola/jobRequisitions
inputParameters:
- name: status
in: query
operations:
- name: list-job-requisitions
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves a journal entry from Oracle Cloud Financials by journal header ID, returning period, status, total debit, and total credit.
naftiko: '0.5'
info:
label: Oracle Cloud Financial Journal Entry Lookup
description: Retrieves a journal entry from Oracle Cloud Financials by journal header ID, returning period, status, total debit, and total credit.
tags:
- finance
- oracle-cloud
- general-ledger
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: get-journal-entry
description: Look up an Oracle Cloud Financials journal entry. Returns accounting period, status, total debit, and total credit amounts.
inputParameters:
- name: journal_header_id
in: body
type: string
description: The Oracle Cloud journal header ID.
call: oracle.get-journal
with:
journal_header_id: '{{journal_header_id}}'
outputParameters:
- name: period
type: string
mapping: $.AccountingPeriod
- name: status
type: string
mapping: $.Status
- name: total_debit
type: string
mapping: $.TotalDebitAmount
- name: total_credit
type: string
mapping: $.TotalCreditAmount
consumes:
- type: http
namespace: oracle
baseUri: https://coca-cola.oraclecloud.com/fscmRestApi/resources/v1
authentication:
type: basic
username: $secrets.oracle_user
password: $secrets.oracle_password
resources:
- name: journals
path: /journalHeaders/{{journal_header_id}}
inputParameters:
- name: journal_header_id
in: path
operations:
- name: get-journal
method: GET
Retrieves brand-level web analytics from Adobe Analytics, including page views, unique visitors, and average session duration.
naftiko: '0.5'
info:
label: Adobe Analytics Brand Performance
description: Retrieves brand-level web analytics from Adobe Analytics, including page views, unique visitors, and average session duration.
tags:
- marketing
- adobe-analytics
- brand-management
capability:
exposes:
- type: mcp
namespace: brand-analytics
port: 8080
tools:
- name: get-brand-performance
description: Fetch brand web performance metrics from Adobe Analytics. Returns page views, unique visitors, and average session duration.
inputParameters:
- name: report_suite_id
in: body
type: string
description: The Adobe Analytics report suite ID.
- name: brand_segment
in: body
type: string
description: The brand segment filter, e.g. coca-cola-classic.
call: adobe.get-report
with:
report_suite_id: '{{report_suite_id}}'
brand_segment: '{{brand_segment}}'
outputParameters:
- name: page_views
type: string
mapping: $.reportData.totals[0]
- name: unique_visitors
type: string
mapping: $.reportData.totals[1]
- name: avg_session_duration
type: string
mapping: $.reportData.totals[2]
consumes:
- type: http
namespace: adobe
baseUri: https://analytics.adobe.io/api/cocacola
authentication:
type: bearer
token: $secrets.adobe_analytics_token
resources:
- name: reports
path: /reports
operations:
- name: get-report
method: POST
Aggregates sustainability metrics by pulling energy consumption from SAP plant maintenance, water usage from environmental monitoring, and posting a consolidated ESG report to SharePoint.
naftiko: '0.5'
info:
label: Sustainability Reporting Aggregator
description: Aggregates sustainability metrics by pulling energy consumption from SAP plant maintenance, water usage from environmental monitoring, and posting a consolidated ESG report to SharePoint.
tags:
- manufacturing
- sap
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sustainability
port: 8080
tools:
- name: aggregate-sustainability-report
description: Aggregate sustainability data from SAP and environmental monitoring, then publish report to SharePoint and Teams.
inputParameters:
- name: plant_code
in: body
type: string
description: The plant code.
- name: reporting_period
in: body
type: string
description: The reporting period, e.g. 2026-Q1.
steps:
- name: get-energy-data
type: call
call: sap.get-plant-energy-consumption
with:
plant: '{{plant_code}}'
period: '{{reporting_period}}'
- name: get-water-usage
type: call
call: sap.get-plant-water-usage
with:
plant: '{{plant_code}}'
period: '{{reporting_period}}'
- name: upload-report
type: call
call: sharepoint.upload-file
with:
site_id: sustainability
folder_path: Reports/{{reporting_period}}
file_name: plant-{{plant_code}}-sustainability.json
- name: notify-esg-team
type: call
call: msteams.send-message
with:
channel_id: sustainability
text: 'Sustainability report for plant {{plant_code}} ({{reporting_period}}): Energy consumption: {{get-energy-data.total_kwh}} kWh. Water usage: {{get-water-usage.total_liters}} liters. Report uploaded to SharePoint.'
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-s4.sap.com/sap/opu/odata/sap/API_PLANT_METRICS_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: energy
path: /PlantEnergyConsumption(Plant='{{plant}}',Period='{{period}}')
inputParameters:
- name: plant
in: path
- name: period
in: path
operations:
- name: get-plant-energy-consumption
method: GET
- name: water
path: /PlantWaterUsage(Plant='{{plant}}',Period='{{period}}')
inputParameters:
- name: plant
in: path
- name: period
in: path
operations:
- name: get-plant-water-usage
method: GET
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: files
path: /sites/{{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
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channels
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors accounts receivable aging by pulling AR data from SAP, matching with Salesforce customer accounts, and alerting the collections team via Microsoft Teams.
naftiko: '0.5'
info:
label: Accounts Receivable Aging Alert
description: Monitors accounts receivable aging by pulling AR data from SAP, matching with Salesforce customer accounts, and alerting the collections team via Microsoft Teams.
tags:
- finance
- sap
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ar-management
port: 8080
tools:
- name: check-ar-aging
description: 'Check AR aging: pull SAP receivables, match Salesforce accounts, and alert collections team.'
inputParameters:
- name: company_code
in: body
type: string
description: The SAP company code.
- name: aging_bucket
in: body
type: string
description: 'The aging bucket to check: 30, 60, 90, 120.'
steps:
- name: get-ar-aging
type: call
call: sap.get-ar-aging-report
with:
company_code: '{{company_code}}'
aging_days: '{{aging_bucket}}'
- name: get-customer-accounts
type: call
call: salesforce.get-customer-list
with:
overdue_threshold: '{{aging_bucket}}'
- name: alert-collections
type: call
call: msteams.send-message
with:
channel_id: finance-collections
text: 'AR Aging Alert ({{aging_bucket}}+ days): Total overdue: ${{get-ar-aging.total_overdue}}. Customer count: {{get-ar-aging.customer_count}}. Top overdue: {{get-ar-aging.top_customer}}.'
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-s4.sap.com/sap/opu/odata/sap/API_AR_AGING_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: aging
path: /ARAgingReport(CompanyCode='{{company_code}}',AgingDays={{aging_days}})
inputParameters:
- name: company_code
in: path
- name: aging_days
in: path
operations:
- name: get-ar-aging-report
method: GET
- type: http
namespace: salesforce
baseUri: https://coca-cola.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: customers
path: /query?q=SELECT+Id,Name+FROM+Account+WHERE+Days_Overdue__c>=+{{overdue_threshold}}
inputParameters:
- name: overdue_threshold
in: query
operations:
- name: get-customer-list
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Converts a qualified Salesforce lead into an opportunity, creates an account if needed, and notifies the account owner via Teams.
naftiko: '0.5'
info:
label: Salesforce Lead-to-Opportunity Conversion
description: Converts a qualified Salesforce lead into an opportunity, creates an account if needed, and notifies the account owner via Teams.
tags:
- sales
- crm
- salesforce
- lead-management
capability:
exposes:
- type: mcp
namespace: sales-ops
port: 8080
tools:
- name: convert-lead
description: Given a Salesforce lead ID, convert the lead to an opportunity and account in Salesforce, then notify the assigned sales rep via Teams. Use for automated lead qualification workflows.
inputParameters:
- name: lead_id
in: body
type: string
description: The Salesforce Lead ID to convert.
steps:
- name: get-lead
type: call
call: salesforce-lead.get-lead
with:
lead_id: '{{lead_id}}'
- name: convert-lead
type: call
call: salesforce-convert.convert-lead
with:
lead_id: '{{lead_id}}'
convertedStatus: Qualified
- name: notify-owner
type: call
call: msteams.send-message
with:
recipient_upn: '{{get-lead.owner_email}}'
text: 'Lead {{get-lead.name}} has been converted to an opportunity. Account: {{convert-lead.accountId}}'
consumes:
- type: http
namespace: salesforce-lead
baseUri: https://cocacola.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: salesforce-convert
baseUri: https://cocacola.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: lead-convert
path: /sobjects/Lead/{{lead_id}}
inputParameters:
- name: lead_id
in: path
operations:
- name: convert-lead
method: PATCH
- 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 a shipment delay is detected, retrieves delivery details from SAP, updates the Salesforce opportunity, and escalates to the logistics team via Microsoft Teams.
naftiko: '0.5'
info:
label: Supply Chain Shipment Delay Escalation
description: When a shipment delay is detected, retrieves delivery details from SAP, updates the Salesforce opportunity, and escalates to the logistics team via Microsoft Teams.
tags:
- supply-chain
- sap
- salesforce
- microsoft-teams
- distribution
capability:
exposes:
- type: mcp
namespace: supply-chain
port: 8080
tools:
- name: escalate-shipment-delay
description: 'Orchestrate shipment delay escalation: pull SAP delivery details, update Salesforce opportunity, and notify logistics team.'
inputParameters:
- name: delivery_number
in: body
type: string
description: The SAP delivery document number.
- name: opportunity_id
in: body
type: string
description: The related Salesforce opportunity ID.
steps:
- name: get-delivery
type: call
call: sap.get-delivery
with:
delivery_number: '{{delivery_number}}'
- name: update-opportunity
type: call
call: salesforce.update-opportunity
with:
opportunity_id: '{{opportunity_id}}'
delivery_status: Delayed
delivery_notes: 'Shipment {{delivery_number}} delayed. Original GI date: {{get-delivery.planned_goods_issue_date}}'
- name: notify-logistics
type: call
call: msteams.send-message
with:
channel_id: logistics-alerts
text: 'Shipment delay alert: Delivery {{delivery_number}} to {{get-delivery.ship_to_party}} is delayed. Salesforce opportunity {{opportunity_id}} updated.'
consumes:
- type: http
namespace: sap
baseUri: https://coca-cola-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_number}}')
inputParameters:
- name: delivery_number
in: path
operations:
- name: get-delivery
method: GET
- type: http
namespace: salesforce
baseUri: https://coca-cola.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: update-opportunity
method: PATCH
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channels
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Handles shortages by checking SAP stock, identifying affected orders, and creating Ariba procurement requests.
naftiko: '0.5'
info:
label: Raw Material Shortage Alert Handler
description: Handles shortages by checking SAP stock, identifying affected orders, and creating Ariba procurement requests.
tags:
- supply-chain
- procurement
- sap
- manufacturing
capability:
exposes:
- type: mcp
namespace: supply-ops
port: 8080
tools:
- name: handle-shortage
description: Handle raw material shortage.
inputParameters:
- name: material_number
type: string
description: Material number.
- name: plant_code
type: string
description: Plant code.
- name: reorder_qty
type: number
description: Reorder quantity.
steps:
- name: check-stock
type: call
call: sap.get-stock
with:
material: '{{material_number}}'
plant: '{{plant_code}}'
- name: get-orders
type: call
call: sap.get-orders
with:
material: '{{material_number}}'
- name: create-req
type: call
call: ariba.create-requisition
with:
material: '{{material_number}}'
quantity: '{{reorder_qty}}'
consumes:
- type: http
namespace: sap
baseUri: https://colgatepalmolive-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: resource
path: /data
operations:
- name: get-stock
method: GET
- name: get-orders
method: GET
- 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
operations:
- name: get-supplier
method: GET
When an employee's role changes in Workday, updates their Okta application assignments to reflect the new role's access profile.
naftiko: '0.5'
info:
label: Workday Role Change Access Provisioning
description: When an employee's role changes in Workday, updates their Okta application assignments to reflect the new role's access profile.
tags:
- hr
- identity
- workday
- okta
- access-management
capability:
exposes:
- type: mcp
namespace: hr-identity
port: 8080
tools:
- name: sync-role-access
description: Given a Workday employee ID and new job profile, update Okta group memberships to match the new role's access entitlements.
inputParameters:
- name: employee_id
in: body
type: string
description: The Workday worker ID.
- name: new_job_profile
in: body
type: string
description: The new Workday job profile name.
steps:
- name: get-worker
type: call
call: workday.get-worker
with:
worker_id: '{{employee_id}}'
- name: assign-okta-group
type: call
call: okta.add-user-to-group
with:
userId: '{{get-worker.okta_user_id}}'
groupProfile: '{{new_job_profile}}'
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: /colgate-palmolive/workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: okta
baseUri: https://colgate-palmolive.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: group-members
path: /groups/{{groupProfile}}/users/{{userId}}
inputParameters:
- name: groupProfile
in: path
- name: userId
in: path
operations:
- name: add-user-to-group
method: PUT
Retrieves the sales opportunity pipeline from Salesforce for a business unit.
naftiko: '0.5'
info:
label: Salesforce Opportunity Pipeline Lookup
description: Retrieves the sales opportunity pipeline from Salesforce for a business unit.
tags:
- sales
- crm
- salesforce
- reporting
capability:
exposes:
- type: mcp
namespace: crm-sales
port: 8080
tools:
- name: get-pipeline
description: Look up Salesforce opportunity pipeline by business unit.
inputParameters:
- name: business_unit
type: string
description: Business unit name.
call: salesforce.get-pipeline
with:
bu: '{{business_unit}}'
outputParameters:
- name: total_value
type: string
mapping: $.totalSize
- name: opportunities
type: string
mapping: $.records
consumes:
- type: http
namespace: salesforce
baseUri: https://colgatepalmolive.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: sobjects
path: /sobjects
operations:
- name: query
method: GET
Retrieves Jira project backlog summary with issue counts by priority and status.
naftiko: '0.5'
info:
label: Jira Project Backlog Summary
description: Retrieves Jira project backlog summary with issue counts by priority and status.
tags:
- project-management
- operations
- jira
- reporting
capability:
exposes:
- type: mcp
namespace: project-ops
port: 8080
tools:
- name: get-backlog
description: Get Jira project backlog summary.
inputParameters:
- name: project_key
type: string
description: Jira project key.
call: jira.search-issues
with:
jql: project={{project_key}} AND status!=Done
outputParameters:
- name: total
type: string
mapping: $.total
- name: issues
type: string
mapping: $.issues
consumes:
- type: http
namespace: jira
baseUri: https://colgatepalmolive.atlassian.net/rest/api/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 web traffic metrics from Google Analytics for a brand website.
naftiko: '0.5'
info:
label: Google Analytics Web Traffic Report
description: Retrieves web traffic metrics from Google Analytics for a brand website.
tags:
- marketing
- analytics
- google-analytics
- web
capability:
exposes:
- type: mcp
namespace: web-analytics
port: 8080
tools:
- name: get-traffic
description: Fetch web traffic data from Google Analytics.
inputParameters:
- name: property_id
type: string
description: GA4 property ID.
- name: date_from
type: string
description: Start date.
- name: date_to
type: string
description: End date.
call: ga.run-report
with:
property: '{{property_id}}'
startDate: '{{date_from}}'
outputParameters:
- name: sessions
type: string
mapping: $.rows[0].metricValues[0].value
- name: conversion_rate
type: string
mapping: $.rows[0].metricValues[1].value
consumes:
- type: http
namespace: ga
baseUri: https://analyticsdata.googleapis.com/v1beta
authentication:
type: bearer
token: $secrets.google_analytics_token
resources:
- name: reports
path: /properties/runReport
operations:
- name: run-report
method: POST
Pulls current headcount by department and cost center from Workday and returns the structured dataset for workforce planning and finance reporting.
naftiko: '0.5'
info:
label: Workday Headcount Report Snapshot
description: Pulls current headcount by department and cost center from Workday and returns the structured dataset for workforce planning and finance reporting.
tags:
- hr
- finance
- workday
- reporting
- headcount
capability:
exposes:
- type: mcp
namespace: hr-reporting
port: 8080
tools:
- name: get-headcount-snapshot
description: Returns current active employee headcount grouped by department and cost center from Workday. Use for workforce planning, finance period close, and budget reviews.
call: workday.get-headcount
outputParameters:
- name: employees
type: array
mapping: $.data
items:
- name: employee_id
type: string
mapping: $.id
- name: full_name
type: string
mapping: $.name
- name: department
type: string
mapping: $.department
- name: cost_center
type: string
mapping: $.costCenter
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: /colgate-palmolive/workers
operations:
- name: get-headcount
method: GET
Tracks regulatory compliance from Jira submissions, SharePoint docs, and Power BI dashboard.
naftiko: '0.5'
info:
label: Regulatory Document Compliance Tracker
description: Tracks regulatory compliance from Jira submissions, SharePoint docs, and Power BI dashboard.
tags:
- regulatory
- quality
- jira
- sharepoint
- power-bi
capability:
exposes:
- type: mcp
namespace: regulatory-ops
port: 8080
tools:
- name: track-compliance
description: Track regulatory submission status.
inputParameters:
- name: submission_id
type: string
description: Jira submission key.
steps:
- name: get-status
type: call
call: jira.get-issue
with:
issue_key: '{{submission_id}}'
- name: check-docs
type: call
call: sharepoint.list-folder
with:
folder: '{{submission_id}}'
- name: refresh
type: call
call: powerbi.refresh-dataset
with:
datasetId: regulatory-tracker
consumes:
- type: http
namespace: jira
baseUri: https://colgatepalmolive.atlassian.net/rest/api/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: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: files
path: /sites/drive/items
operations:
- name: search-docs
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
operations:
- name: refresh-dataset
method: POST
Audits privileged Okta accounts against Workday employment, creating ServiceNow review tasks.
naftiko: '0.5'
info:
label: Okta Privileged Access Audit
description: Audits privileged Okta accounts against Workday employment, creating ServiceNow review tasks.
tags:
- security
- identity
- okta
- workday
- servicenow
capability:
exposes:
- type: mcp
namespace: security-audit
port: 8080
tools:
- name: audit-access
description: Audit privileged access.
inputParameters:
- name: role_type
type: string
description: Okta admin role type.
steps:
- name: get-admins
type: call
call: okta.list-admins
with:
role_type: '{{role_type}}'
- name: check-employment
type: call
call: workday.get-active
with:
emails: '{{get-admins.emails}}'
- name: create-review
type: call
call: servicenow.create-incident
with:
short_description: 'Access audit: {{role_type}}'
consumes:
- type: http
namespace: okta
baseUri: https://colgatepalmolive.okta.com/api/v1
authentication:
type: bearer
token: $secrets.okta_api_token
resources:
- name: users
path: /users
operations:
- name: get-user
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: /colgatepalmolive/workers
operations:
- name: get-worker
method: GET
- type: http
namespace: servicenow
baseUri: https://colgatepalmolive.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
Creates intercompany transfers in SAP, updates Snowflake forecasts, and notifies via Teams.
naftiko: '0.5'
info:
label: SAP Intercompany Transfer Workflow
description: Creates intercompany transfers in SAP, updates Snowflake forecasts, and notifies via Teams.
tags:
- supply-chain
- logistics
- sap
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: intercompany
port: 8080
tools:
- name: create-transfer
description: Create intercompany stock transfer.
inputParameters:
- name: material
type: string
description: Material.
- name: from_plant
type: string
description: Source plant.
- name: to_plant
type: string
description: Target plant.
- name: quantity
type: number
description: Quantity.
steps:
- name: transfer
type: call
call: sap.create-transfer
with:
material: '{{material}}'
from: '{{from_plant}}'
to: '{{to_plant}}'
- name: update
type: call
call: snowflake.execute-query
with:
warehouse: SC_WH
query: CALL update_forecast('{{to_plant}}', '{{material}}', {{quantity}})
- name: notify
type: call
call: msteams.send-message
with:
channel_id: logistics
text: 'Transfer: {{quantity}} of {{material}} from {{from_plant}} to {{to_plant}}'
consumes:
- type: http
namespace: sap
baseUri: https://colgatepalmolive-s4.sap.com/sap/opu/odata/sap/API_STOCK_TRANSFER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: resource
path: /data
operations:
- name: create-transfer
method: POST
- type: http
namespace: snowflake
baseUri: https://colgatepalmolive.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
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/channels/messages
operations:
- name: send-message
method: POST
Queries the Snowflake account usage schema to identify long-running and expensive queries, and posts a performance audit report to the data engineering Teams channel.
naftiko: '0.5'
info:
label: Snowflake Query Performance Audit
description: Queries the Snowflake account usage schema to identify long-running and expensive queries, and posts a performance audit report to the data engineering Teams channel.
tags:
- data
- analytics
- snowflake
- microsoft-teams
- monitoring
capability:
exposes:
- type: mcp
namespace: data-performance
port: 8080
tools:
- name: audit-query-performance
description: Given a time window and cost threshold, retrieve expensive Snowflake queries from account usage and post a top offenders report to the data engineering Teams channel.
inputParameters:
- name: hours_back
in: body
type: integer
description: Number of hours to look back for query history.
- name: credits_threshold
in: body
type: number
description: Minimum credits consumed to flag a query as expensive.
steps:
- name: get-expensive-queries
type: call
call: snowflake.get-query-history
with:
hoursBack: '{{hours_back}}'
creditsThreshold: '{{credits_threshold}}'
- name: post-audit-report
type: call
call: msteams.post-channel-message
with:
channelId: data-engineering
message: 'Snowflake query audit (last {{hours_back}}h): {{get-expensive-queries.queryCount}} expensive queries found. Top query: {{get-expensive-queries.topQuery}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://colgate-palmolive.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: query-history
path: /statements
operations:
- name: get-query-history
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/channels/{{channelId}}/messages
inputParameters:
- name: channelId
in: path
operations:
- name: post-channel-message
method: POST
When a high-priority ServiceNow incident is raised for a digital product, automatically creates a linked Jira bug and notifies the engineering team in Microsoft Teams.
naftiko: '0.5'
info:
label: ServiceNow Incident to Jira Bug Bridge
description: When a high-priority ServiceNow incident is raised for a digital product, automatically creates a linked Jira bug and notifies the engineering team in Microsoft Teams.
tags:
- itsm
- devops
- servicenow
- jira
- microsoft-teams
- incident-response
capability:
exposes:
- type: mcp
namespace: itsm-ops
port: 8080
tools:
- name: handle-p1-incident
description: Given a ServiceNow P1 incident number, create a linked Jira bug in the engineering project and post an alert to the engineering Teams channel.
inputParameters:
- name: incident_number
in: body
type: string
description: The ServiceNow incident number, e.g. INC0012345.
steps:
- name: get-incident
type: call
call: servicenow.get-incident
with:
number: '{{incident_number}}'
- name: create-jira-bug
type: call
call: jira.create-issue
with:
projectKey: ENG
issuetype: Bug
summary: '[P1 Incident] {{get-incident.short_description}}'
description: 'ServiceNow: {{incident_number}}
Impact: {{get-incident.impact}}
Description: {{get-incident.description}}'
- name: alert-engineering
type: call
call: msteams.post-channel-message
with:
channelId: engineering-alerts
message: 'P1 Incident {{incident_number}}: {{get-incident.short_description}} | Jira: {{create-jira-bug.key}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://colgate-palmolive.service-now.com/api/now
authentication:
type: basic
username: $secrets.snow_user
password: $secrets.snow_password
resources:
- name: incidents
path: /table/incident
inputParameters:
- name: number
in: query
operations:
- name: get-incident
method: GET
- type: http
namespace: jira
baseUri: https://colgate-palmolive.atlassian.net/rest/api/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/channels/{{channelId}}/messages
inputParameters:
- name: channelId
in: path
operations:
- name: post-channel-message
method: POST
Registers a new supplier in SAP Ariba, creates the corresponding vendor master record in SAP S/4HANA, and notifies procurement via Teams.
naftiko: '0.5'
info:
label: SAP Ariba Supplier Onboarding
description: Registers a new supplier in SAP Ariba, creates the corresponding vendor master record in SAP S/4HANA, and notifies procurement via Teams.
tags:
- procurement
- supplier-management
- sap-ariba
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: supplier-onboarding
port: 8080
tools:
- name: onboard-supplier
description: Given supplier details, register the supplier in SAP Ariba, create the vendor master in SAP S/4HANA, and notify the procurement team in Teams.
inputParameters:
- name: supplier_name
in: body
type: string
description: Legal name of the supplier.
- name: supplier_email
in: body
type: string
description: Primary contact email for the supplier.
- name: country_code
in: body
type: string
description: ISO 2-letter country code for the supplier's primary country.
steps:
- name: register-ariba
type: call
call: ariba.create-supplier
with:
name: '{{supplier_name}}'
email: '{{supplier_email}}'
country: '{{country_code}}'
- name: create-vendor-master
type: call
call: sap-erp.create-vendor
with:
companyName: '{{supplier_name}}'
aribaId: '{{register-ariba.supplierId}}'
country: '{{country_code}}'
- name: notify-procurement
type: call
call: msteams.post-channel-message
with:
channelId: procurement-team
message: 'New supplier onboarded: {{supplier_name}} | Ariba ID: {{register-ariba.supplierId}} | SAP Vendor: {{create-vendor-master.vendorId}}'
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
operations:
- name: create-supplier
method: POST
- type: http
namespace: sap-erp
baseUri: https://colgate-palmolive-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: vendors
path: /A_BusinessPartner
operations:
- name: create-vendor
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/channels/{{channelId}}/messages
inputParameters:
- name: channelId
in: path
operations:
- name: post-channel-message
method: POST
Generates media mix reports from Snowflake, refreshes Power BI, and posts summary to Teams.
naftiko: '0.5'
info:
label: Media Mix Optimization Report
description: Generates media mix reports from Snowflake, refreshes Power BI, and posts summary to Teams.
tags:
- marketing
- analytics
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: media-planning
port: 8080
tools:
- name: gen-media-report
description: Generate media mix optimization report.
inputParameters:
- name: brand
type: string
description: Brand.
- name: date_from
type: string
description: Start.
- name: date_to
type: string
description: End.
steps:
- name: get-data
type: call
call: snowflake.execute-query
with:
warehouse: MARKETING_WH
query: SELECT channel, roas FROM media WHERE brand='{{brand}}'
- name: refresh
type: call
call: powerbi.refresh-dataset
with:
datasetId: media-mix
- name: post
type: call
call: msteams.send-message
with:
channel_id: media
text: Media report for {{brand}} ready
consumes:
- type: http
namespace: snowflake
baseUri: https://colgatepalmolive.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: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /datasets
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: messages
path: /teams/channels/messages
operations:
- name: send-message
method: POST
When a Datadog monitor triggers a critical alert for a production service, automatically creates a ServiceNow P1 incident and pages the on-call team.
naftiko: '0.5'
info:
label: Datadog Alert to ServiceNow Incident
description: When a Datadog monitor triggers a critical alert for a production service, automatically creates a ServiceNow P1 incident and pages the on-call team.
tags:
- observability
- itsm
- datadog
- servicenow
- incident-response
capability:
exposes:
- type: mcp
namespace: observability-ops
port: 8080
tools:
- name: handle-datadog-alert
description: Given a Datadog monitor alert, create a ServiceNow P1 incident and post a notification to the on-call Teams channel.
inputParameters:
- name: monitor_id
in: body
type: string
description: The Datadog monitor ID that triggered the alert.
- name: monitor_name
in: body
type: string
description: The Datadog monitor name.
- name: alert_message
in: body
type: string
description: The alert message body from Datadog.
steps:
- name: get-monitor
type: call
call: datadog.get-monitor
with:
monitor_id: '{{monitor_id}}'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Datadog alert: {{monitor_name}}'
description: '{{alert_message}}
Monitor: {{monitor_id}}
Status: {{get-monitor.overall_state}}'
urgency: '1'
impact: '1'
- name: page-oncall
type: call
call: msteams.post-channel-message
with:
channelId: oncall-alerts
message: 'P1 Incident: {{monitor_name}} | ServiceNow: {{create-incident.number}} | Details: {{alert_message}}'
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/{{monitor_id}}
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
- type: http
namespace: servicenow
baseUri: https://colgate-palmolive.service-now.com/api/now
authentication:
type: basic
username: $secrets.snow_user
password: $secrets.snow_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/channels/{{channelId}}/messages
inputParameters:
- name: channelId
in: path
operations:
- name: post-channel-message
method: POST
Monitors budgets from SAP actuals, Snowflake plans, and alerts via Teams.
naftiko: '0.5'
info:
label: SAP Cost Center Budget Monitor
description: Monitors budgets from SAP actuals, Snowflake plans, and alerts via Teams.
tags:
- finance
- operations
- sap
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: budget-monitoring
port: 8080
tools:
- name: monitor-budget
description: Monitor cost center budget.
inputParameters:
- name: cost_center
type: string
description: Cost center.
- name: period
type: string
description: Period.
- name: threshold
type: number
description: Threshold pct.
steps:
- name: get-actuals
type: call
call: sap.get-actuals
with:
cc: '{{cost_center}}'
period: '{{period}}'
- name: get-plan
type: call
call: snowflake.execute-query
with:
warehouse: FINANCE_WH
query: SELECT planned FROM budget WHERE cc='{{cost_center}}'
- name: alert
type: call
call: msteams.send-message
with:
channel_id: finance
text: 'Budget: {{cost_center}} at {{get-plan.consumed_pct}}%'
consumes:
- type: http
namespace: sap
baseUri: https://colgatepalmolive-s4.sap.com/sap/opu/odata/sap/API_OPLACCTGDOCITEMCUBE_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: resource
path: /data
operations:
- name: get-actuals
method: GET
- type: http
namespace: snowflake
baseUri: https://colgatepalmolive.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
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/channels/messages
operations:
- name: send-message
method: POST
When Azure Cost Management detects a cost spike exceeding threshold, opens a ServiceNow ticket, tags the offending resources, and alerts the FinOps team in Teams.
naftiko: '0.5'
info:
label: Azure Cost Anomaly Responder
description: When Azure Cost Management detects a cost spike exceeding threshold, opens a ServiceNow ticket, tags the offending resources, and alerts the FinOps team in Teams.
tags:
- cloud
- finops
- azure
- servicenow
- microsoft-teams
- cost-management
capability:
exposes:
- type: mcp
namespace: cloud-finops
port: 8080
tools:
- name: handle-cost-anomaly
description: Given an Azure subscription ID and anomaly alert details, create a ServiceNow cost management ticket and post an alert to the FinOps Teams channel.
inputParameters:
- name: subscription_id
in: body
type: string
description: The Azure subscription ID where the anomaly was detected.
- name: anomaly_amount
in: body
type: number
description: The anomalous spend amount in USD.
- name: resource_group
in: body
type: string
description: The Azure resource group associated with the cost spike.
steps:
- name: get-cost-details
type: call
call: azure-cost.get-usage
with:
subscriptionId: '{{subscription_id}}'
resourceGroup: '{{resource_group}}'
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'Azure cost anomaly: {{resource_group}} +${{anomaly_amount}}'
category: cloud_cost
urgency: '2'
- name: alert-finops
type: call
call: msteams.post-channel-message
with:
channelId: finops-alerts
message: 'Cost anomaly detected in {{resource_group}}: +${{anomaly_amount}}. ServiceNow: {{create-ticket.number}}.'
consumes:
- type: http
namespace: azure-cost
baseUri: https://management.azure.com
authentication:
type: bearer
token: $secrets.azure_token
resources:
- name: usage
path: /subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroup}}/providers/Microsoft.CostManagement/query
inputParameters:
- name: subscriptionId
in: path
- name: resourceGroup
in: path
operations:
- name: get-usage
method: POST
- type: http
namespace: servicenow
baseUri: https://colgate-palmolive.service-now.com/api/now
authentication:
type: basic
username: $secrets.snow_user
password: $secrets.snow_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/channels/{{channelId}}/messages
inputParameters:
- name: channelId
in: path
operations:
- name: post-channel-message
method: POST
Compares current period payroll totals from Workday against the previous period and flags variances exceeding threshold for finance review.
naftiko: '0.5'
info:
label: Workday Payroll Variance Report
description: Compares current period payroll totals from Workday against the previous period and flags variances exceeding threshold for finance review.
tags:
- hr
- finance
- workday
- payroll
- reporting
capability:
exposes:
- type: mcp
namespace: payroll-reporting
port: 8080
tools:
- name: get-payroll-variance
description: Given a pay period and variance threshold percentage, retrieve Workday payroll totals for the current and prior period, identify variances, and return flagged entries.
inputParameters:
- name: pay_period
in: body
type: string
description: Pay period identifier in YYYY-MM format.
- name: variance_threshold
in: body
type: number
description: Percentage threshold above which a variance is flagged, e.g. 5 for 5%.
call: workday.get-payroll-results
with:
payPeriod: '{{pay_period}}'
outputParameters:
- name: total_gross_pay
type: number
mapping: $.totals.grossPay
- name: total_net_pay
type: number
mapping: $.totals.netPay
- name: period
type: string
mapping: $.payPeriod
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: payroll-results
path: /colgate-palmolive/payrollResults
inputParameters:
- name: payPeriod
in: query
operations:
- name: get-payroll-results
method: GET
Retrieves the current hiring pipeline status for an open Workday job requisition and summarizes candidate stage counts for recruiters.
naftiko: '0.5'
info:
label: Workday Recruiting Candidate Status Tracker
description: Retrieves the current hiring pipeline status for an open Workday job requisition and summarizes candidate stage counts for recruiters.
tags:
- hr
- recruiting
- workday
- reporting
capability:
exposes:
- type: mcp
namespace: recruiting
port: 8080
tools:
- name: get-requisition-pipeline
description: Given a Workday job requisition ID, return a summary of candidates by stage including screened, interviewed, offered, and rejected counts.
inputParameters:
- name: requisition_id
in: body
type: string
description: The Workday job requisition ID.
call: workday.get-job-requisition
with:
requisitionId: '{{requisition_id}}'
outputParameters:
- name: job_title
type: string
mapping: $.jobRequisition.jobTitle
- name: total_candidates
type: number
mapping: $.jobRequisition.candidateCount
- name: stage_summary
type: string
mapping: $.jobRequisition.stageSummary
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: job-requisitions
path: /colgate-palmolive/jobRequisitions/{{requisitionId}}
inputParameters:
- name: requisitionId
in: path
operations:
- name: get-job-requisition
method: GET
When an expense report is submitted in SAP Concur, validates the amount against policy limits and routes for manager approval via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Concur Expense Report Approval
description: When an expense report is submitted in SAP Concur, validates the amount against policy limits and routes for manager approval via Microsoft Teams.
tags:
- finance
- expense-management
- sap-concur
- microsoft-teams
- approval
capability:
exposes:
- type: mcp
namespace: expense-approval
port: 8080
tools:
- name: approve-expense-report
description: Given an SAP Concur expense report ID, validate the total against company policy and send an approval request card to the submitter's manager in Teams.
inputParameters:
- name: report_id
in: body
type: string
description: The SAP Concur expense report ID.
- name: manager_email
in: body
type: string
description: Email address of the approving manager.
steps:
- name: get-report
type: call
call: concur.get-expense-report
with:
reportId: '{{report_id}}'
- name: send-approval
type: call
call: msteams.post-message
with:
recipient: '{{manager_email}}'
message: 'Expense approval needed: Report {{report_id}} for {{get-report.Total}} {{get-report.CurrencyCode}} submitted by {{get-report.OwnerName}}.'
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/{{reportId}}
inputParameters:
- name: reportId
in: path
operations:
- name: get-expense-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: /chats/messages
operations:
- name: post-message
method: POST
Retrieves a list of Okta users with privileged application assignments for a quarterly access review and posts the report to SharePoint.
naftiko: '0.5'
info:
label: Okta User Access Review
description: Retrieves a list of Okta users with privileged application assignments for a quarterly access review and posts the report to SharePoint.
tags:
- identity
- security
- okta
- sharepoint
- access-management
capability:
exposes:
- type: mcp
namespace: identity-ops
port: 8080
tools:
- name: run-access-review
description: Given an Okta group ID, retrieve all active members and their application assignments, then upload the access review report to SharePoint.
inputParameters:
- name: group_id
in: body
type: string
description: The Okta group ID to review.
- name: sharepoint_site_id
in: body
type: string
description: The SharePoint site ID where the report should be uploaded.
steps:
- name: get-group-members
type: call
call: okta.get-group-members
with:
groupId: '{{group_id}}'
- name: upload-report
type: call
call: sharepoint.create-file
with:
siteId: '{{sharepoint_site_id}}'
fileName: access-review-{{group_id}}.json
content: '{{get-group-members.members}}'
consumes:
- type: http
namespace: okta
baseUri: https://colgate-palmolive.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: group-members
path: /groups/{{groupId}}/users
inputParameters:
- name: groupId
in: path
operations:
- name: get-group-members
method: GET
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: files
path: /sites/{{siteId}}/drive/root/children
inputParameters:
- name: siteId
in: path
operations:
- name: create-file
method: POST
Checks the status of Snowflake data pipelines and tasks, surfaces any failures, and creates ServiceNow incidents for failed jobs requiring manual intervention.
naftiko: '0.5'
info:
label: Snowflake Data Pipeline Health Monitor
description: Checks the status of Snowflake data pipelines and tasks, surfaces any failures, and creates ServiceNow incidents for failed jobs requiring manual intervention.
tags:
- data
- analytics
- snowflake
- servicenow
- monitoring
capability:
exposes:
- type: mcp
namespace: data-ops
port: 8080
tools:
- name: check-pipeline-health
description: Given a Snowflake task name, retrieve task execution history, identify failures, and open a ServiceNow incident if the failure count exceeds threshold.
inputParameters:
- name: task_name
in: body
type: string
description: The Snowflake task name to check.
- name: failure_threshold
in: body
type: integer
description: Number of consecutive failures before opening an incident.
steps:
- name: get-task-history
type: call
call: snowflake.get-task-history
with:
taskName: '{{task_name}}'
- name: open-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Snowflake task failure: {{task_name}}'
category: data_pipeline
description: 'Task {{task_name}} has exceeded failure threshold. Last error: {{get-task-history.error_message}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://colgate-palmolive.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: task-history
path: /databases/tasks/{{taskName}}/executions
inputParameters:
- name: taskName
in: path
operations:
- name: get-task-history
method: GET
- type: http
namespace: servicenow
baseUri: https://colgate-palmolive.service-now.com/api/now
authentication:
type: basic
username: $secrets.snow_user
password: $secrets.snow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
Aggregates demand signals from Salesforce opportunity pipeline and SAP inventory positions to produce a consolidated supply chain outlook report.
naftiko: '0.5'
info:
label: Supply Chain Demand Signal Aggregator
description: Aggregates demand signals from Salesforce opportunity pipeline and SAP inventory positions to produce a consolidated supply chain outlook report.
tags:
- supply-chain
- finance
- salesforce
- sap
- reporting
capability:
exposes:
- type: mcp
namespace: supply-chain-reporting
port: 8080
tools:
- name: get-demand-outlook
description: Given a product family code and planning horizon, retrieve open Salesforce pipeline opportunities and SAP inventory positions to produce a demand vs. supply summary.
inputParameters:
- name: product_family
in: body
type: string
description: The Salesforce product family code, e.g. ORAL_CARE.
- name: horizon_weeks
in: body
type: integer
description: Planning horizon in weeks.
steps:
- name: get-pipeline
type: call
call: salesforce.get-opportunities-by-product
with:
productFamily: '{{product_family}}'
- name: get-inventory
type: call
call: sap-inventory.get-stock-overview
with:
productFamily: '{{product_family}}'
- name: post-outlook
type: call
call: msteams.post-channel-message
with:
channelId: supply-chain-team
message: 'Demand outlook for {{product_family}} ({{horizon_weeks}}w): Pipeline={{get-pipeline.totalValue}}, On-hand stock={{get-inventory.totalUnits}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://colgate-palmolive.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /sobjects/Opportunity
inputParameters:
- name: productFamily
in: query
operations:
- name: get-opportunities-by-product
method: GET
- type: http
namespace: sap-inventory
baseUri: https://colgate-palmolive-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: productFamily
in: query
operations:
- name: get-stock-overview
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/channels/{{channelId}}/messages
inputParameters:
- name: channelId
in: path
operations:
- name: post-channel-message
method: POST
Analyzes costing variances between SAP standard and Snowflake actual costs, creating Jira reviews.
naftiko: '0.5'
info:
label: Product Costing Variance Analyzer
description: Analyzes costing variances between SAP standard and Snowflake actual costs, creating Jira reviews.
tags:
- finance
- manufacturing
- sap
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: cost-analytics
port: 8080
tools:
- name: analyze-variance
description: Analyze product costing variances.
inputParameters:
- name: material_number
type: string
description: Material number.
- name: period
type: string
description: Period.
steps:
- name: get-standard
type: call
call: sap.get-cost
with:
material: '{{material_number}}'
- name: get-actual
type: call
call: snowflake.execute-query
with:
warehouse: FINANCE_WH
query: SELECT actual_cost FROM costs WHERE material='{{material_number}}'
- name: create-review
type: call
call: jira.create-issue
with:
project_key: FIN
summary: 'Variance: {{material_number}} ({{period}})'
consumes:
- type: http
namespace: sap
baseUri: https://colgatepalmolive-s4.sap.com/sap/opu/odata/sap/API_PRODUCT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: resource
path: /data
operations:
- name: get-cost
method: GET
- type: http
namespace: snowflake
baseUri: https://colgatepalmolive.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: jira
baseUri: https://colgatepalmolive.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Tracks GMP training compliance by pulling Workday certifications, checking overdue trainings in Snowflake, and creating ServiceNow remediation tasks.
naftiko: '0.5'
info:
label: GMP Training Compliance Tracker
description: Tracks GMP training compliance by pulling Workday certifications, checking overdue trainings in Snowflake, and creating ServiceNow remediation tasks.
tags:
- quality
- manufacturing
- workday
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: gmp-compliance
port: 8080
tools:
- name: track-gmp-compliance
description: Track GMP training compliance across the workforce.
inputParameters:
- name: plant_code
type: string
description: Plant code.
- name: department
type: string
description: Department name.
steps:
- name: get-certifications
type: call
call: workday.get-certifications
with:
plant: '{{plant_code}}'
department: '{{department}}'
- name: check-overdue
type: call
call: snowflake.execute-query
with:
warehouse: HR_WH
query: SELECT employee_id, training, days_overdue FROM gmp_compliance WHERE plant='{{plant_code}}' AND overdue=true
- name: create-remediation
type: call
call: servicenow.create-incident
with:
short_description: 'GMP training overdue: {{plant_code}} {{department}}'
description: '{{check-overdue.count}} employees with overdue GMP training'
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: certifications
path: /colgatepalmolive/certifications
operations:
- name: get-certifications
method: GET
- type: http
namespace: snowflake
baseUri: https://colgatepalmolive.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
baseUri: https://colgatepalmolive.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 supplier scorecards from Ariba delivery data, Snowflake quality metrics, and posts to Teams.
naftiko: '0.5'
info:
label: Supplier Performance Scorecard Generator
description: Generates supplier scorecards from Ariba delivery data, Snowflake quality metrics, and posts to Teams.
tags:
- procurement
- supply-chain
- sap
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: procurement-analytics
port: 8080
tools:
- name: generate-scorecard
description: Generate supplier performance scorecard.
inputParameters:
- name: supplier_id
type: string
description: Ariba supplier ID.
- name: period
type: string
description: Period.
steps:
- name: get-delivery
type: call
call: ariba.get-performance
with:
supplier_id: '{{supplier_id}}'
period: '{{period}}'
- name: get-quality
type: call
call: snowflake.execute-query
with:
warehouse: PROCUREMENT_WH
query: SELECT defect_rate FROM supplier_quality WHERE supplier='{{supplier_id}}'
- name: post
type: call
call: msteams.send-message
with:
channel_id: procurement
text: 'Supplier {{supplier_id}}: OTD {{get-delivery.on_time_rate}}%'
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
operations:
- name: get-supplier
method: GET
- type: http
namespace: snowflake
baseUri: https://colgatepalmolive.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
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/channels/messages
operations:
- name: send-message
method: POST
Queries Snowflake for retail POS analytics including velocity, distribution, and share data.
naftiko: '0.5'
info:
label: Snowflake Retail POS Analytics Query
description: Queries Snowflake for retail POS analytics including velocity, distribution, and share data.
tags:
- analytics
- sales
- snowflake
- retail
capability:
exposes:
- type: mcp
namespace: retail-analytics
port: 8080
tools:
- name: query-pos-data
description: Query Snowflake retail POS data for a category and retailer.
inputParameters:
- name: category
type: string
description: Product category.
- name: retailer
type: string
description: Retail account.
- name: date_from
type: string
description: Start date.
call: snowflake.execute-query
with:
warehouse: RETAIL_ANALYTICS_WH
query: SELECT * FROM pos WHERE category='{{category}}'
outputParameters:
- name: data
type: string
mapping: $.data
consumes:
- type: http
namespace: snowflake
baseUri: https://colgatepalmolive.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
Retrieves actual spending for a cost center from SAP for a fiscal period.
naftiko: '0.5'
info:
label: SAP Cost Center Actuals Lookup
description: Retrieves actual spending for a cost center from SAP for a fiscal period.
tags:
- finance
- operations
- sap
- erp
capability:
exposes:
- type: mcp
namespace: finance-reporting
port: 8080
tools:
- name: get-actuals
description: Look up cost center actuals in SAP.
inputParameters:
- name: cost_center
type: string
description: SAP cost center ID.
- name: period
type: string
description: Fiscal period.
call: sap.get-actuals
with:
cost_center: '{{cost_center}}'
period: '{{period}}'
outputParameters:
- name: total
type: string
mapping: $.d.TotalAmount
- name: currency
type: string
mapping: $.d.Currency
consumes:
- type: http
namespace: sap
baseUri: https://colgatepalmolive-s4.sap.com/sap/opu/odata/sap/API_OPLACCTGDOCITEMCUBE_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: resource
path: /data
operations:
- name: get-actuals
method: GET
Audits planogram compliance from Salesforce visits, Snowflake metrics, and Jira follow-ups.
naftiko: '0.5'
info:
label: Retail Planogram Compliance Audit
description: Audits planogram compliance from Salesforce visits, Snowflake metrics, and Jira follow-ups.
tags:
- sales
- retail
- salesforce
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: retail-compliance
port: 8080
tools:
- name: audit-planogram
description: Audit planogram compliance.
inputParameters:
- name: region
type: string
description: Region.
- name: audit_week
type: string
description: Audit week.
steps:
- name: get-visits
type: call
call: salesforce.get-visits
with:
region: '{{region}}'
- name: get-compliance
type: call
call: snowflake.execute-query
with:
warehouse: RETAIL_WH
query: SELECT score FROM planogram WHERE region='{{region}}'
- name: create-followup
type: call
call: jira.create-issue
with:
project_key: RETAIL
summary: 'Planogram: {{region}} week {{audit_week}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://colgatepalmolive.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: sobjects
path: /sobjects
operations:
- name: query
method: GET
- type: http
namespace: snowflake
baseUri: https://colgatepalmolive.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: jira
baseUri: https://colgatepalmolive.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Orchestrates shelf audits from Salesforce data, Snowflake compliance, and Jira follow-ups.
naftiko: '0.5'
info:
label: Retail Shelf Audit Orchestrator
description: Orchestrates shelf audits from Salesforce data, Snowflake compliance, and Jira follow-ups.
tags:
- sales
- retail
- salesforce
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: retail-ops
port: 8080
tools:
- name: run-audit
description: Orchestrate retail shelf audit.
inputParameters:
- name: account_id
type: string
description: Salesforce account ID.
- name: audit_period
type: string
description: Period.
steps:
- name: get-account
type: call
call: salesforce.get-account
with:
account_id: '{{account_id}}'
- name: get-compliance
type: call
call: snowflake.execute-query
with:
warehouse: RETAIL_WH
query: SELECT score FROM audit WHERE account='{{account_id}}'
- name: create-followup
type: call
call: jira.create-issue
with:
project_key: RETAIL
summary: 'Audit: {{get-account.name}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://colgatepalmolive.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: sobjects
path: /sobjects
operations:
- name: query
method: GET
- type: http
namespace: snowflake
baseUri: https://colgatepalmolive.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: jira
baseUri: https://colgatepalmolive.atlassian.net/rest/api/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 product shelf life by checking SAP batch expiry dates, identifying at-risk inventory in Snowflake, and alerting supply chain via Teams.
naftiko: '0.5'
info:
label: Product Shelf Life Monitoring
description: Monitors product shelf life by checking SAP batch expiry dates, identifying at-risk inventory in Snowflake, and alerting supply chain via Teams.
tags:
- quality
- supply-chain
- sap
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: shelf-life
port: 8080
tools:
- name: monitor-shelf-life
description: Monitor product shelf life and alert on expiring inventory.
inputParameters:
- name: plant_code
type: string
description: SAP plant code.
- name: days_threshold
type: number
description: Days until expiry threshold.
steps:
- name: get-expiring
type: call
call: sap.get-expiring-batches
with:
plant: '{{plant_code}}'
threshold: '{{days_threshold}}'
- name: get-inventory-value
type: call
call: snowflake.execute-query
with:
warehouse: SC_WH
query: SELECT sum(value) FROM inventory WHERE plant='{{plant_code}}' AND days_to_expiry<={{days_threshold}}
- name: alert-team
type: call
call: msteams.send-message
with:
channel_id: supply-chain
text: 'Shelf life alert: {{get-expiring.count}} batches expiring within {{days_threshold}} days at {{plant_code}}'
consumes:
- type: http
namespace: sap
baseUri: https://colgatepalmolive-s4.sap.com/sap/opu/odata/sap/API_BATCH_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: batches
path: /data
operations:
- name: get-expiring-batches
method: GET
- type: http
namespace: snowflake
baseUri: https://colgatepalmolive.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
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/channels/messages
operations:
- name: send-message
method: POST
When a purchase requisition is submitted in SAP Ariba, validates budget availability in SAP S/4HANA and routes the approval to the appropriate manager via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Ariba Requisition Approval
description: When a purchase requisition is submitted in SAP Ariba, validates budget availability in SAP S/4HANA and routes the approval to the appropriate manager via Microsoft Teams.
tags:
- procurement
- finance
- sap-ariba
- sap
- microsoft-teams
- approval
capability:
exposes:
- type: mcp
namespace: procurement-approval
port: 8080
tools:
- name: approve-requisition
description: Given an Ariba requisition ID, check budget in SAP S/4HANA and send an approval card to the responsible manager in Microsoft Teams.
inputParameters:
- name: requisition_id
in: body
type: string
description: The SAP Ariba requisition ID.
- name: manager_email
in: body
type: string
description: The Microsoft Teams UPN of the approving manager.
steps:
- name: get-requisition
type: call
call: ariba.get-requisition
with:
requisitionId: '{{requisition_id}}'
- name: check-budget
type: call
call: sap-finance.check-budget
with:
cost_center: '{{get-requisition.costCenter}}'
amount: '{{get-requisition.totalAmount}}'
- name: send-approval-card
type: call
call: msteams.post-message
with:
recipient: '{{manager_email}}'
message: 'Approval needed: Requisition {{requisition_id}} for {{get-requisition.totalAmount}} {{get-requisition.currency}}. Budget status: {{check-budget.status}}.'
consumes:
- type: http
namespace: ariba
baseUri: https://openapi.ariba.com/api/purchase-requisitions/v1
authentication:
type: bearer
token: $secrets.ariba_token
resources:
- name: requisitions
path: /requisitions/{{requisitionId}}
inputParameters:
- name: requisitionId
in: path
operations:
- name: get-requisition
method: GET
- type: http
namespace: sap-finance
baseUri: https://colgate-palmolive-s4.sap.com/sap/opu/odata/sap/API_COSTCENTER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: budgets
path: /A_CostCenter('{{cost_center}}')
inputParameters:
- name: cost_center
in: path
operations:
- name: check-budget
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /chats/messages
operations:
- name: post-message
method: POST
Handles releases by checking Azure DevOps pipeline, ServiceNow change, and notifying Teams.
naftiko: '0.5'
info:
label: Azure DevOps Release Approval Handler
description: Handles releases by checking Azure DevOps pipeline, ServiceNow change, and notifying Teams.
tags:
- operations
- devops
- azure-devops
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: release-mgmt
port: 8080
tools:
- name: handle-release
description: Handle release approval.
inputParameters:
- name: pipeline_id
type: string
description: Pipeline ID.
- name: change_request
type: string
description: Change request.
steps:
- name: get-pipeline
type: call
call: azuredevops.get-run
with:
pipeline_id: '{{pipeline_id}}'
- name: validate
type: call
call: servicenow.get-change
with:
number: '{{change_request}}'
- name: notify
type: call
call: msteams.send-message
with:
channel_id: releases
text: 'Release: Pipeline {{pipeline_id}} ({{get-pipeline.status}})'
consumes:
- type: http
namespace: azuredevops
baseUri: https://dev.azure.com/colgatepalmolive
authentication:
type: bearer
token: $secrets.azure_devops_token
resources:
- name: pipelines
path: /_apis/pipelines
operations:
- name: get-run
method: GET
- type: http
namespace: servicenow
baseUri: https://colgatepalmolive.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/channels/messages
operations:
- name: send-message
method: POST
Analyzes consumer reviews from Snowflake, creates Jira tasks, and posts summary to Teams.
naftiko: '0.5'
info:
label: Consumer Review Analysis Pipeline
description: Analyzes consumer reviews from Snowflake, creates Jira tasks, and posts summary to Teams.
tags:
- marketing
- quality
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: consumer-insights
port: 8080
tools:
- name: analyze-reviews
description: Analyze consumer reviews for complaint trends.
inputParameters:
- name: product_line
type: string
description: Product line.
- name: period_days
type: number
description: Lookback days.
steps:
- name: get-reviews
type: call
call: snowflake.execute-query
with:
warehouse: CONSUMER_WH
query: SELECT topic, count FROM reviews WHERE product='{{product_line}}'
- name: create-task
type: call
call: jira.create-issue
with:
project_key: PROD
summary: 'Reviews: {{product_line}}'
- name: post
type: call
call: msteams.send-message
with:
channel_id: insights
text: Review analysis for {{product_line}} complete
consumes:
- type: http
namespace: snowflake
baseUri: https://colgatepalmolive.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: jira
baseUri: https://colgatepalmolive.atlassian.net/rest/api/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: /teams/channels/messages
operations:
- name: send-message
method: POST
On a GitHub Actions workflow failure on a protected branch, creates a Jira bug, posts a failure summary to the engineering Teams channel, and logs the incident in Datadog.
naftiko: '0.5'
info:
label: GitHub CI/CD Pipeline Failure Handler
description: On a GitHub Actions workflow failure on a protected branch, creates a Jira bug, posts a failure summary to the engineering Teams channel, and logs the incident in Datadog.
tags:
- devops
- cicd
- github
- jira
- datadog
- incident-response
capability:
exposes:
- type: mcp
namespace: devops-cicd
port: 8080
tools:
- name: handle-pipeline-failure
description: Given a GitHub Actions workflow failure event, create a Jira bug, log a Datadog event, and alert the engineering Teams channel with full context.
inputParameters:
- name: repo
in: body
type: string
description: The GitHub repository name in owner/repo format.
- name: workflow_name
in: body
type: string
description: The name of the failed GitHub Actions workflow.
- name: branch
in: body
type: string
description: The branch on which the failure occurred.
- name: run_id
in: body
type: string
description: The GitHub Actions workflow run ID.
steps:
- name: get-run-details
type: call
call: github.get-workflow-run
with:
repo: '{{repo}}'
run_id: '{{run_id}}'
- name: create-jira-bug
type: call
call: jira.create-issue
with:
projectKey: ENG
issuetype: Bug
summary: '[CI Failure] {{repo}} / {{branch}} — {{workflow_name}}'
description: 'Run: {{run_id}}
Branch: {{branch}}
Conclusion: {{get-run-details.conclusion}}'
- name: log-datadog-event
type: call
call: datadog.create-event
with:
title: 'CI Failure: {{repo}} {{workflow_name}}'
text: 'Branch: {{branch}}, Run: {{run_id}}'
alert_type: error
- name: alert-team
type: call
call: msteams.post-channel-message
with:
channelId: engineering-alerts
message: 'CI Failure: {{repo}} | Branch: {{branch}} | Workflow: {{workflow_name}} | Jira: {{create-jira-bug.key}}'
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://colgate-palmolive.atlassian.net/rest/api/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/channels/{{channelId}}/messages
inputParameters:
- name: channelId
in: path
operations:
- name: post-channel-message
method: POST
Generates TPE by pulling Salesforce promotions, Snowflake sales, and refreshing Power BI.
naftiko: '0.5'
info:
label: Trade Promotion Effectiveness Report
description: Generates TPE by pulling Salesforce promotions, Snowflake sales, and refreshing Power BI.
tags:
- sales
- marketing
- salesforce
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: trade-analytics
port: 8080
tools:
- name: generate-tpe
description: Generate trade promotion effectiveness report.
inputParameters:
- name: promotion_id
type: string
description: Salesforce promotion ID.
- name: date_from
type: string
description: Start date.
- name: date_to
type: string
description: End date.
steps:
- name: get-promo
type: call
call: salesforce.get-promotion
with:
promotion_id: '{{promotion_id}}'
- name: get-sales
type: call
call: snowflake.execute-query
with:
warehouse: SALES_WH
query: SELECT revenue FROM pos WHERE promo='{{promotion_id}}'
- name: refresh
type: call
call: powerbi.refresh-dataset
with:
datasetId: trade-promotion-effectiveness
consumes:
- type: http
namespace: salesforce
baseUri: https://colgatepalmolive.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: sobjects
path: /sobjects
operations:
- name: query
method: GET
- type: http
namespace: snowflake
baseUri: https://colgatepalmolive.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: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /datasets
operations:
- name: refresh-dataset
method: POST
Tracks fulfillment from Salesforce order, SAP picking, and updates ServiceNow customer ticket.
naftiko: '0.5'
info:
label: E-commerce Order Fulfillment Tracker
description: Tracks fulfillment from Salesforce order, SAP picking, and updates ServiceNow customer ticket.
tags:
- ecommerce
- supply-chain
- salesforce
- sap
- servicenow
capability:
exposes:
- type: mcp
namespace: ecom-fulfillment
port: 8080
tools:
- name: track-fulfillment
description: Track e-commerce order fulfillment.
inputParameters:
- name: order_id
type: string
description: Salesforce order ID.
- name: ticket_id
type: string
description: ServiceNow ticket.
steps:
- name: get-order
type: call
call: salesforce.get-order
with:
order_id: '{{order_id}}'
- name: check-picking
type: call
call: sap.get-delivery
with:
order: '{{get-order.sap_order}}'
- name: update-ticket
type: call
call: servicenow.update-incident
with:
number: '{{ticket_id}}'
comment: 'Status: {{get-order.status}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://colgatepalmolive.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: sobjects
path: /sobjects
operations:
- name: query
method: GET
- type: http
namespace: sap
baseUri: https://colgatepalmolive-s4.sap.com/sap/opu/odata/sap/API_OUTBOUND_DELIVERY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: resource
path: /data
operations:
- name: get-delivery
method: GET
- type: http
namespace: servicenow
baseUri: https://colgatepalmolive.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 engagement metrics for Colgate-Palmolive's LinkedIn brand campaigns and publishes a weekly performance digest to the marketing Teams channel.
naftiko: '0.5'
info:
label: LinkedIn Brand Campaign Digest
description: Retrieves engagement metrics for Colgate-Palmolive's LinkedIn brand campaigns and publishes a weekly performance digest to the marketing Teams channel.
tags:
- marketing
- social
- linkedin
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: social-reporting
port: 8080
tools:
- name: digest-linkedin-performance
description: Given a LinkedIn campaign ID and date range, retrieve engagement metrics and post a performance digest to the marketing Teams channel.
inputParameters:
- name: campaign_id
in: body
type: string
description: The LinkedIn campaign ID.
- 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.
steps:
- name: get-campaign-stats
type: call
call: linkedin.get-campaign-analytics
with:
campaignId: '{{campaign_id}}'
startDate: '{{start_date}}'
endDate: '{{end_date}}'
- name: post-digest
type: call
call: msteams.post-channel-message
with:
channelId: marketing-team
message: 'LinkedIn Campaign {{campaign_id}} ({{start_date}} to {{end_date}}): Impressions={{get-campaign-stats.impressions}}, Clicks={{get-campaign-stats.clicks}}, Engagement={{get-campaign-stats.engagementRate}}'
consumes:
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: campaign-analytics
path: /adAnalytics
inputParameters:
- name: campaignId
in: query
- name: startDate
in: query
- name: endDate
in: query
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/channels/{{channelId}}/messages
inputParameters:
- name: channelId
in: path
operations:
- name: post-channel-message
method: POST
Creates a standard ServiceNow change request for planned maintenance, associates it with affected CI records, and sends pre-change notifications via Microsoft Teams.
naftiko: '0.5'
info:
label: ServiceNow Change Request Automation
description: Creates a standard ServiceNow change request for planned maintenance, associates it with affected CI records, and sends pre-change notifications via Microsoft Teams.
tags:
- itsm
- change-management
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: change-management
port: 8080
tools:
- name: open-change-request
description: Given a change description, affected configuration items, and planned window, create a ServiceNow standard change request and notify stakeholders in Teams.
inputParameters:
- name: change_description
in: body
type: string
description: Description of the planned change.
- name: affected_ci
in: body
type: string
description: Comma-separated list of affected configuration item names.
- name: planned_start
in: body
type: string
description: Planned change start datetime in ISO 8601 format.
- name: planned_end
in: body
type: string
description: Planned change end datetime in ISO 8601 format.
steps:
- name: create-change
type: call
call: servicenow.create-change
with:
short_description: '{{change_description}}'
type: standard
start_date: '{{planned_start}}'
end_date: '{{planned_end}}'
cmdb_ci: '{{affected_ci}}'
- name: notify-stakeholders
type: call
call: msteams.post-channel-message
with:
channelId: it-operations
message: 'Change request {{create-change.number}} opened: {{change_description}} | Window: {{planned_start}} to {{planned_end}} | CIs: {{affected_ci}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://colgate-palmolive.service-now.com/api/now
authentication:
type: basic
username: $secrets.snow_user
password: $secrets.snow_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/channels/{{channelId}}/messages
inputParameters:
- name: channelId
in: path
operations:
- name: post-channel-message
method: POST
Analyzes warehouse capacity from SAP, demand from Snowflake, and refreshes Power BI dashboard.
naftiko: '0.5'
info:
label: Warehouse Capacity Planning Orchestrator
description: Analyzes warehouse capacity from SAP, demand from Snowflake, and refreshes Power BI dashboard.
tags:
- supply-chain
- logistics
- sap
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: warehouse-planning
port: 8080
tools:
- name: plan-capacity
description: Analyze warehouse capacity.
inputParameters:
- name: warehouse_id
type: string
description: Warehouse number.
- name: weeks
type: number
description: Forecast weeks.
steps:
- name: get-util
type: call
call: sap.get-warehouse-stock
with:
warehouse: '{{warehouse_id}}'
- name: get-forecast
type: call
call: snowflake.execute-query
with:
warehouse: SC_WH
query: SELECT pallets FROM forecast WHERE id='{{warehouse_id}}'
- name: refresh
type: call
call: powerbi.refresh-dataset
with:
datasetId: warehouse-capacity
consumes:
- type: http
namespace: sap
baseUri: https://colgatepalmolive-s4.sap.com/sap/opu/odata/sap/API_WAREHOUSE_STOCK_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: resource
path: /data
operations:
- name: get-warehouse-stock
method: GET
- type: http
namespace: snowflake
baseUri: https://colgatepalmolive.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: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /datasets
operations:
- name: refresh-dataset
method: POST
Initiates CM audit from Ariba supplier data, Jira tasks, and SharePoint checklists.
naftiko: '0.5'
info:
label: Contract Manufacturer Quality Audit
description: Initiates CM audit from Ariba supplier data, Jira tasks, and SharePoint checklists.
tags:
- quality
- procurement
- sap
- jira
- sharepoint
capability:
exposes:
- type: mcp
namespace: quality-audit
port: 8080
tools:
- name: initiate-audit
description: Start contract manufacturer quality audit.
inputParameters:
- name: supplier_id
type: string
description: Supplier ID.
- name: audit_type
type: string
description: Audit type.
steps:
- name: get-supplier
type: call
call: ariba.get-supplier
with:
supplier_id: '{{supplier_id}}'
- name: create-task
type: call
call: jira.create-issue
with:
project_key: QAUDIT
summary: 'CM Audit: {{get-supplier.name}}'
- name: share-checklist
type: call
call: sharepoint.copy-template
with:
template: audit-{{audit_type}}
destination: audits/{{supplier_id}}
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
operations:
- name: get-supplier
method: GET
- type: http
namespace: jira
baseUri: https://colgatepalmolive.atlassian.net/rest/api/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: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: files
path: /sites/drive/items
operations:
- name: search-docs
method: GET
Returns the current paid time off and vacation accrual balances for an employee from Workday, for use in absence planning and manager approvals.
naftiko: '0.5'
info:
label: Workday Time-Off Balance Lookup
description: Returns the current paid time off and vacation accrual balances for an employee from Workday, for use in absence planning and manager approvals.
tags:
- hr
- workday
- absence-management
capability:
exposes:
- type: mcp
namespace: hr-absence
port: 8080
tools:
- name: get-time-off-balance
description: Given a Workday employee ID, return current accrued vacation, PTO, and sick leave balances. Use when an employee or manager needs to verify available time-off before approving a request.
inputParameters:
- name: employee_id
in: body
type: string
description: The Workday worker ID.
call: workday.get-leave-balance
with:
worker_id: '{{employee_id}}'
outputParameters:
- name: vacation_days
type: number
mapping: $.leaveBalances.vacation
- name: pto_days
type: number
mapping: $.leaveBalances.pto
- name: sick_days
type: number
mapping: $.leaveBalances.sick
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: leave-balances
path: /colgate-palmolive/workers/{{worker_id}}/leaveBalance
inputParameters:
- name: worker_id
in: path
operations:
- name: get-leave-balance
method: GET
Retrieves headcount data from Workday by department including active employees and open positions.
naftiko: '0.5'
info:
label: Workday Headcount Report Lookup
description: Retrieves headcount data from Workday by department including active employees and open positions.
tags:
- hr
- workforce
- workday
- reporting
capability:
exposes:
- type: mcp
namespace: hr-reporting
port: 8080
tools:
- name: get-headcount
description: Get headcount report from Workday by department.
inputParameters:
- name: department
type: string
description: Department name.
call: workday.get-headcount
with:
department: '{{department}}'
outputParameters:
- name: active_count
type: string
mapping: $.headcount.active
- name: open_positions
type: string
mapping: $.headcount.open
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: /colgatepalmolive/workers
operations:
- name: get-worker
method: GET
Traces affected batch in SAP, creates ServiceNow incident, and alerts quality team via Teams.
naftiko: '0.5'
info:
label: Product Recall Investigation Orchestrator
description: Traces affected batch in SAP, creates ServiceNow incident, and alerts quality team via Teams.
tags:
- quality
- supply-chain
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: quality-ops
port: 8080
tools:
- name: investigate-recall
description: Orchestrate product recall investigation.
inputParameters:
- name: batch_number
type: string
description: Batch number.
- name: material_number
type: string
description: Material number.
- name: severity
type: string
description: Severity level.
steps:
- name: trace-batch
type: call
call: sap.get-batch-details
with:
batch: '{{batch_number}}'
material: '{{material_number}}'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Recall: batch {{batch_number}}'
urgency: '{{severity}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: quality-alerts
text: 'RECALL: Batch {{batch_number}}. Incident: {{create-incident.number}}'
consumes:
- type: http
namespace: sap
baseUri: https://colgatepalmolive-s4.sap.com/sap/opu/odata/sap/API_BATCH_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: resource
path: /data
operations:
- name: get-batch-details
method: GET
- type: http
namespace: servicenow
baseUri: https://colgatepalmolive.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/channels/messages
operations:
- name: send-message
method: POST
Generates maintenance reports from SAP orders, Snowflake equipment history, and posts to Teams.
naftiko: '0.5'
info:
label: Plant Maintenance Schedule Report
description: Generates maintenance reports from SAP orders, Snowflake equipment history, and posts to Teams.
tags:
- manufacturing
- operations
- sap
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: maintenance-reporting
port: 8080
tools:
- name: gen-schedule
description: Generate maintenance schedule report.
inputParameters:
- name: plant_code
type: string
description: Plant code.
- name: weeks
type: number
description: Weeks ahead.
steps:
- name: get-orders
type: call
call: sap.get-orders
with:
plant: '{{plant_code}}'
- name: get-history
type: call
call: snowflake.execute-query
with:
warehouse: MFG_WH
query: SELECT mtbf FROM equipment WHERE plant='{{plant_code}}'
- name: post
type: call
call: msteams.send-message
with:
channel_id: maintenance
text: 'Maintenance for {{plant_code}}: {{get-orders.count}} orders'
consumes:
- type: http
namespace: sap
baseUri: https://colgatepalmolive-s4.sap.com/sap/opu/odata/sap/API_MAINTENANCEORDER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: resource
path: /data
operations:
- name: get-orders
method: GET
- type: http
namespace: snowflake
baseUri: https://colgatepalmolive.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
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/channels/messages
operations:
- name: send-message
method: POST
Enriches talent pipeline from Workday requisitions, LinkedIn data, and Jira sourcing tasks.
naftiko: '0.5'
info:
label: LinkedIn Talent Pipeline Enrichment
description: Enriches talent pipeline from Workday requisitions, LinkedIn data, and Jira sourcing tasks.
tags:
- hr
- recruiting
- workday
- linkedin
- jira
capability:
exposes:
- type: mcp
namespace: talent-acquisition
port: 8080
tools:
- name: enrich-pipeline
description: Enrich talent pipeline.
inputParameters:
- name: department
type: string
description: Department.
steps:
- name: get-reqs
type: call
call: workday.get-positions
with:
department: '{{department}}'
- name: create-tasks
type: call
call: jira.create-issue
with:
project_key: RECRUIT
summary: 'Sourcing: {{department}}'
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: /colgatepalmolive/workers
operations:
- name: get-worker
method: GET
- type: http
namespace: jira
baseUri: https://colgatepalmolive.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Syncs demand forecasts from Snowflake with SAP inventory and creates planned production orders.
naftiko: '0.5'
info:
label: Demand Forecast to Production Sync
description: Syncs demand forecasts from Snowflake with SAP inventory and creates planned production orders.
tags:
- supply-chain
- manufacturing
- snowflake
- sap
- planning
capability:
exposes:
- type: mcp
namespace: demand-planning
port: 8080
tools:
- name: sync-demand
description: Synchronize demand forecasts with production planning.
inputParameters:
- name: category
type: string
description: Product category.
- name: plant_code
type: string
description: Plant code.
- name: weeks
type: number
description: Planning weeks.
steps:
- name: get-forecast
type: call
call: snowflake.execute-query
with:
warehouse: DEMAND_WH
query: SELECT sku, units FROM forecast WHERE category='{{category}}'
- name: check-stock
type: call
call: sap.get-stock
with:
plant: '{{plant_code}}'
category: '{{category}}'
- name: create-orders
type: call
call: sap.create-planned-order
with:
plant: '{{plant_code}}'
data: '{{get-forecast.data}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://colgatepalmolive.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: sap
baseUri: https://colgatepalmolive-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: resource
path: /data
operations:
- name: get-stock
method: GET
- name: create-planned-order
method: POST
Checks Azure AD group memberships for a user to validate access rights.
naftiko: '0.5'
info:
label: Azure AD User Group Membership Check
description: Checks Azure AD group memberships for a user to validate access rights.
tags:
- security
- identity
- azure-active-directory
- access
capability:
exposes:
- type: mcp
namespace: identity
port: 8080
tools:
- name: check-groups
description: List Azure AD group memberships for access validation.
inputParameters:
- name: user_upn
type: string
description: User principal name.
call: azuread.get-member-of
with:
upn: '{{user_upn}}'
outputParameters:
- name: groups
type: string
mapping: $.value
consumes:
- type: http
namespace: azuread
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: member-of
path: /users/memberOf
operations:
- name: get-member-of
method: GET
Scans GitHub Dependabot alerts for critical vulnerabilities, creates Jira security tickets, and notifies the security team in Microsoft Teams.
naftiko: '0.5'
info:
label: GitHub Security Vulnerability Triage
description: Scans GitHub Dependabot alerts for critical vulnerabilities, creates Jira security tickets, and notifies the security team in Microsoft Teams.
tags:
- security
- devops
- github
- jira
- microsoft-teams
- vulnerability-management
capability:
exposes:
- type: mcp
namespace: security-ops
port: 8080
tools:
- name: triage-vulnerability-alerts
description: Given a GitHub repository, retrieve critical Dependabot security alerts, create Jira security tickets for each, and post a summary to the security Teams channel.
inputParameters:
- name: repo
in: body
type: string
description: GitHub repository in owner/repo format.
steps:
- name: get-alerts
type: call
call: github.get-dependabot-alerts
with:
repo: '{{repo}}'
severity: critical
- name: create-security-ticket
type: call
call: jira.create-issue
with:
projectKey: SEC
issuetype: Security
summary: 'Critical vulnerability: {{get-alerts.advisory_summary}}'
description: 'Package: {{get-alerts.package_name}}
CVSS: {{get-alerts.cvss_score}}
Repo: {{repo}}'
- name: notify-security
type: call
call: msteams.post-channel-message
with:
channelId: security-team
message: 'Critical vulnerability in {{repo}}: {{get-alerts.advisory_summary}} | Jira: {{create-security-ticket.key}}'
consumes:
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: dependabot-alerts
path: /repos/{{repo}}/dependabot/alerts
inputParameters:
- name: repo
in: path
- name: severity
in: query
operations:
- name: get-dependabot-alerts
method: GET
- type: http
namespace: jira
baseUri: https://colgate-palmolive.atlassian.net/rest/api/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/channels/{{channelId}}/messages
inputParameters:
- name: channelId
in: path
operations:
- name: post-channel-message
method: POST
At month end, retrieves the SAP S/4HANA period close status for all entities, checks for open items, and posts the close checklist status to the finance Teams channel.
naftiko: '0.5'
info:
label: SAP Finance Period Close Checklist
description: At month end, retrieves the SAP S/4HANA period close status for all entities, checks for open items, and posts the close checklist status to the finance Teams channel.
tags:
- finance
- erp
- sap
- microsoft-teams
- period-close
capability:
exposes:
- type: mcp
namespace: finance-close
port: 8080
tools:
- name: check-period-close-status
description: Given a fiscal year and period, retrieve the SAP period close status for all company codes and post the consolidated status report to the finance Teams channel.
inputParameters:
- name: fiscal_year
in: body
type: string
description: The fiscal year, e.g. 2025.
- name: fiscal_period
in: body
type: string
description: The fiscal period number, e.g. 03 for March.
steps:
- name: get-close-status
type: call
call: sap-finance.get-period-status
with:
fiscalYear: '{{fiscal_year}}'
fiscalPeriod: '{{fiscal_period}}'
- name: post-status
type: call
call: msteams.post-channel-message
with:
channelId: finance-team
message: 'Period close status FY{{fiscal_year}} P{{fiscal_period}}: Open items={{get-close-status.openItems}}, Blocked postings={{get-close-status.blockedPostings}}'
consumes:
- type: http
namespace: sap-finance
baseUri: https://colgate-palmolive-s4.sap.com/sap/opu/odata/sap/API_FIGL_PERIOD_LOCK_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: period-status
path: /A_AccountingPeriodLock
inputParameters:
- name: fiscalYear
in: query
- name: fiscalPeriod
in: query
operations:
- name: get-period-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/channels/{{channelId}}/messages
inputParameters:
- name: channelId
in: path
operations:
- name: post-channel-message
method: POST
Tracks shipments from SAP delivery docs and updates Salesforce orders with tracking info.
naftiko: '0.5'
info:
label: SAP Transport Shipment Tracker
description: Tracks shipments from SAP delivery docs and updates Salesforce orders with tracking info.
tags:
- supply-chain
- logistics
- sap
- salesforce
capability:
exposes:
- type: mcp
namespace: logistics-tracking
port: 8080
tools:
- name: track-shipment
description: Track outbound shipment.
inputParameters:
- name: delivery_number
type: string
description: SAP delivery number.
- name: sf_order_id
type: string
description: Salesforce order ID.
steps:
- name: get-delivery
type: call
call: sap.get-delivery
with:
delivery: '{{delivery_number}}'
- name: update-order
type: call
call: salesforce.update-order
with:
order_id: '{{sf_order_id}}'
tracking: '{{get-delivery.tracking}}'
consumes:
- type: http
namespace: sap
baseUri: https://colgatepalmolive-s4.sap.com/sap/opu/odata/sap/API_OUTBOUND_DELIVERY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: resource
path: /data
operations:
- name: get-delivery
method: GET
- type: http
namespace: salesforce
baseUri: https://colgatepalmolive.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: sobjects
path: /sobjects
operations:
- name: query
method: GET
Queries Snowflake for supply chain KPIs including fill rate, OTIF, and inventory turns.
naftiko: '0.5'
info:
label: Snowflake Supply Chain KPI Query
description: Queries Snowflake for supply chain KPIs including fill rate, OTIF, and inventory turns.
tags:
- supply-chain
- analytics
- snowflake
- reporting
capability:
exposes:
- type: mcp
namespace: sc-analytics
port: 8080
tools:
- name: query-sc-kpis
description: Query supply chain KPIs from Snowflake.
inputParameters:
- name: region
type: string
description: Region code.
- name: period
type: string
description: Period.
call: snowflake.execute-query
with:
warehouse: SC_ANALYTICS_WH
query: SELECT fill_rate, otif FROM sc_kpis WHERE region='{{region}}'
outputParameters:
- name: fill_rate
type: string
mapping: $.data[0].fill_rate
- name: otif
type: string
mapping: $.data[0].otif
consumes:
- type: http
namespace: snowflake
baseUri: https://colgatepalmolive.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
Checks packaging sustainability from SAP BOM, Snowflake compliance data, and creates Jira tasks.
naftiko: '0.5'
info:
label: Packaging Sustainability Compliance Check
description: Checks packaging sustainability from SAP BOM, Snowflake compliance data, and creates Jira tasks.
tags:
- sustainability
- quality
- sap
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: sustainability
port: 8080
tools:
- name: check-packaging
description: Verify packaging sustainability compliance.
inputParameters:
- name: material_number
type: string
description: Material number.
- name: plant_code
type: string
description: Plant code.
steps:
- name: get-bom
type: call
call: sap.get-bom
with:
material: '{{material_number}}'
plant: '{{plant_code}}'
- name: check
type: call
call: snowflake.execute-query
with:
warehouse: SUSTAINABILITY_WH
query: SELECT recyclable_pct FROM packaging WHERE material IN ({{get-bom.components}})
- name: create-task
type: call
call: jira.create-issue
with:
project_key: SUSTAIN
summary: 'Packaging: {{material_number}}'
consumes:
- type: http
namespace: sap
baseUri: https://colgatepalmolive-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: resource
path: /data
operations:
- name: get-bom
method: GET
- type: http
namespace: snowflake
baseUri: https://colgatepalmolive.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: jira
baseUri: https://colgatepalmolive.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Calculates a customer health score from Salesforce case history and product usage data, then updates the account record for proactive retention management.
naftiko: '0.5'
info:
label: Salesforce Customer Health Score Updater
description: Calculates a customer health score from Salesforce case history and product usage data, then updates the account record for proactive retention management.
tags:
- crm
- customer-success
- salesforce
- reporting
capability:
exposes:
- type: mcp
namespace: customer-success
port: 8080
tools:
- name: update-health-score
description: Given a Salesforce account ID, retrieve open cases and usage data, compute a health score, and update the account record with the latest score.
inputParameters:
- name: account_id
in: body
type: string
description: The Salesforce account record ID.
steps:
- name: get-account-cases
type: call
call: salesforce.get-account-cases
with:
accountId: '{{account_id}}'
- name: update-account
type: call
call: salesforce-update.update-account
with:
accountId: '{{account_id}}'
healthScore: '{{get-account-cases.healthIndicator}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://colgate-palmolive.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: cases
path: /sobjects/Account/{{accountId}}/Cases
inputParameters:
- name: accountId
in: path
operations:
- name: get-account-cases
method: GET
- type: http
namespace: salesforce-update
baseUri: https://colgate-palmolive.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /sobjects/Account/{{accountId}}
inputParameters:
- name: accountId
in: path
operations:
- name: update-account
method: PATCH
Uses Anthropic Claude to summarize product compliance documents stored in SharePoint and posts the summary to the relevant product team channel in Microsoft Teams.
naftiko: '0.5'
info:
label: Intelligent Document Summarization
description: Uses Anthropic Claude to summarize product compliance documents stored in SharePoint and posts the summary to the relevant product team channel in Microsoft Teams.
tags:
- ai
- automation
- anthropic
- sharepoint
- microsoft-teams
- document-management
capability:
exposes:
- type: mcp
namespace: ai-docs
port: 8080
tools:
- name: summarize-compliance-document
description: Given a SharePoint file path and target Teams channel, retrieve the document content, send it to Claude for summarization, and post the summary to the Teams channel.
inputParameters:
- name: site_id
in: body
type: string
description: The SharePoint site ID containing the document.
- name: file_path
in: body
type: string
description: The relative file path in SharePoint.
- name: teams_channel_id
in: body
type: string
description: The Teams channel ID to post the summary to.
steps:
- name: get-document
type: call
call: sharepoint.get-file-content
with:
siteId: '{{site_id}}'
filePath: '{{file_path}}'
- name: summarize
type: call
call: anthropic.create-message
with:
model: claude-3-5-sonnet-20241022
content: 'Summarize this compliance document in 3-5 key bullet points: {{get-document.content}}'
- name: post-summary
type: call
call: msteams.post-channel-message
with:
channelId: '{{teams_channel_id}}'
message: 'Document summary for {{file_path}}:
{{summarize.content}}'
consumes:
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: files
path: /sites/{{siteId}}/drive/root:{{filePath}}:/content
inputParameters:
- name: siteId
in: path
- name: filePath
in: path
operations:
- name: get-file-content
method: GET
- 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
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/channels/{{channelId}}/messages
inputParameters:
- name: channelId
in: path
operations:
- name: post-channel-message
method: POST
Coordinates a product launch by publishing content to LinkedIn and retrieving early engagement metrics to share with the brand team in Microsoft Teams.
naftiko: '0.5'
info:
label: Product Launch Social Media Coordinator
description: Coordinates a product launch by publishing content to LinkedIn and retrieving early engagement metrics to share with the brand team in Microsoft Teams.
tags:
- marketing
- social
- linkedin
- microsoft-teams
- product-launch
capability:
exposes:
- type: mcp
namespace: product-launch
port: 8080
tools:
- name: publish-launch-content
description: Given a LinkedIn organization ID and post content, publish the launch post and then retrieve initial engagement metrics, posting the result to the brand Teams channel.
inputParameters:
- name: org_id
in: body
type: string
description: The LinkedIn organization ID for Colgate-Palmolive.
- name: post_content
in: body
type: string
description: The content text for the LinkedIn post.
steps:
- name: publish-post
type: call
call: linkedin.create-post
with:
organizationId: '{{org_id}}'
text: '{{post_content}}'
- name: notify-brand-team
type: call
call: msteams.post-channel-message
with:
channelId: brand-team
message: 'Product launch post published on LinkedIn. Post ID: {{publish-post.id}}.'
consumes:
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: shares
path: /ugcPosts
operations:
- name: create-post
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/channels/{{channelId}}/messages
inputParameters:
- name: channelId
in: path
operations:
- name: post-channel-message
method: POST
Optimizes scheduling from Snowflake demand, SAP capacity, and Jira schedule proposals.
naftiko: '0.5'
info:
label: Production Scheduling Optimizer
description: Optimizes scheduling from Snowflake demand, SAP capacity, and Jira schedule proposals.
tags:
- manufacturing
- supply-chain
- snowflake
- sap
- jira
capability:
exposes:
- type: mcp
namespace: production-planning
port: 8080
tools:
- name: optimize-schedule
description: Optimize production scheduling.
inputParameters:
- name: plant_code
type: string
description: Plant code.
- name: period
type: string
description: Period.
steps:
- name: get-demand
type: call
call: snowflake.execute-query
with:
warehouse: DEMAND_WH
query: SELECT sku, units FROM demand WHERE plant='{{plant_code}}'
- name: get-capacity
type: call
call: sap.get-capacity
with:
plant: '{{plant_code}}'
- name: create-schedule
type: call
call: jira.create-issue
with:
project_key: PROD
summary: 'Schedule: {{plant_code}} {{period}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://colgatepalmolive.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: sap
baseUri: https://colgatepalmolive-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: resource
path: /data
operations:
- name: get-capacity
method: GET
- type: http
namespace: jira
baseUri: https://colgatepalmolive.atlassian.net/rest/api/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 brand sentiment from Snowflake, creates Salesforce cases, and alerts brand management via Teams.
naftiko: '0.5'
info:
label: Brand Sentiment Monitoring Responder
description: Monitors brand sentiment from Snowflake, creates Salesforce cases, and alerts brand management via Teams.
tags:
- marketing
- social
- snowflake
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: brand-monitoring
port: 8080
tools:
- name: respond-sentiment
description: Monitor brand sentiment and respond to negative trends.
inputParameters:
- name: brand_name
type: string
description: Brand name.
- name: threshold
type: number
description: Negative threshold pct.
steps:
- name: get-sentiment
type: call
call: snowflake.execute-query
with:
warehouse: SOCIAL_WH
query: SELECT negative_pct FROM sentiment WHERE brand='{{brand_name}}'
- name: create-case
type: call
call: salesforce.create-case
with:
Subject: 'Sentiment alert: {{brand_name}}'
- name: alert
type: call
call: msteams.send-message
with:
channel_id: brand-mgmt
text: 'SENTIMENT: {{brand_name}} negative at {{get-sentiment.negative_pct}}%'
consumes:
- type: http
namespace: snowflake
baseUri: https://colgatepalmolive.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://colgatepalmolive.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: sobjects
path: /sobjects
operations:
- name: query
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/channels/messages
operations:
- name: send-message
method: POST
Handles line downtime by creating ServiceNow incident, updating SAP status, and alerting operations via Teams.
naftiko: '0.5'
info:
label: Manufacturing Line Downtime Handler
description: Handles line downtime by creating ServiceNow incident, updating SAP status, and alerting operations via Teams.
tags:
- manufacturing
- operations
- servicenow
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: mfg-ops
port: 8080
tools:
- name: handle-downtime
description: Respond to manufacturing line downtime.
inputParameters:
- name: production_line
type: string
description: Line ID.
- name: plant_code
type: string
description: Plant code.
- name: reason
type: string
description: Downtime reason.
steps:
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Line down: {{production_line}}'
urgency: '1'
- name: update-sap
type: call
call: sap.update-status
with:
plant: '{{plant_code}}'
line: '{{production_line}}'
- name: alert-ops
type: call
call: msteams.send-message
with:
channel_id: plant-ops
text: 'LINE DOWN: {{production_line}}. Reason: {{reason}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://colgatepalmolive.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://colgatepalmolive-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: resource
path: /data
operations:
- name: update-status
method: PATCH
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/channels/messages
operations:
- name: send-message
method: POST
Routes complaints to quality by tracing batch in SAP, creating Jira investigation, and updating ServiceNow.
naftiko: '0.5'
info:
label: Customer Complaint Quality Investigation
description: Routes complaints to quality by tracing batch in SAP, creating Jira investigation, and updating ServiceNow.
tags:
- quality
- customer-service
- sap
- jira
- servicenow
capability:
exposes:
- type: mcp
namespace: complaint-quality
port: 8080
tools:
- name: route-complaint
description: Route customer complaint to quality investigation.
inputParameters:
- name: ticket_id
type: string
description: ServiceNow ticket.
- name: batch_number
type: string
description: Batch number.
- name: material_number
type: string
description: Material number.
steps:
- name: trace
type: call
call: sap.get-batch
with:
batch: '{{batch_number}}'
material: '{{material_number}}'
- name: create-inv
type: call
call: jira.create-issue
with:
project_key: QUAL
summary: 'Complaint: batch {{batch_number}}'
- name: update
type: call
call: servicenow.update-incident
with:
number: '{{ticket_id}}'
comment: 'Investigation: {{create-inv.key}}'
consumes:
- type: http
namespace: sap
baseUri: https://colgatepalmolive-s4.sap.com/sap/opu/odata/sap/API_BATCH_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: resource
path: /data
operations:
- name: get-batch
method: GET
- type: http
namespace: jira
baseUri: https://colgatepalmolive.atlassian.net/rest/api/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: servicenow
baseUri: https://colgatepalmolive.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 learning paths from Workday skills, matches with training, and creates Jira development plans.
naftiko: '0.5'
info:
label: Employee Learning Path Generator
description: Generates learning paths from Workday skills, matches with training, and creates Jira development plans.
tags:
- hr
- training
- workday
- jira
capability:
exposes:
- type: mcp
namespace: hr-learning
port: 8080
tools:
- name: generate-path
description: Create personalized learning path.
inputParameters:
- name: employee_id
type: string
description: Employee ID.
- name: target_role
type: string
description: Target role.
steps:
- name: get-skills
type: call
call: workday.get-skills
with:
worker_id: '{{employee_id}}'
- name: create-plan
type: call
call: jira.create-issue
with:
project_key: LEARN
summary: 'Learning: {{target_role}} for {{employee_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
path: /colgatepalmolive/workers
operations:
- name: get-worker
method: GET
- type: http
namespace: jira
baseUri: https://colgatepalmolive.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Handles contractor expiry by checking Okta, Workday dates, and creating ServiceNow tasks.
naftiko: '0.5'
info:
label: Contractor Access Expiry Handler
description: Handles contractor expiry by checking Okta, Workday dates, and creating ServiceNow tasks.
tags:
- security
- identity
- okta
- workday
- servicenow
capability:
exposes:
- type: mcp
namespace: access-lifecycle
port: 8080
tools:
- name: handle-expiry
description: Handle contractor access expiry.
inputParameters:
- name: contractor_email
type: string
description: Contractor email.
steps:
- name: get-okta
type: call
call: okta.get-user
with:
email: '{{contractor_email}}'
- name: check-wd
type: call
call: workday.get-worker
with:
email: '{{contractor_email}}'
- name: create-task
type: call
call: servicenow.create-incident
with:
short_description: 'Expiry: {{contractor_email}}'
consumes:
- type: http
namespace: okta
baseUri: https://colgatepalmolive.okta.com/api/v1
authentication:
type: bearer
token: $secrets.okta_api_token
resources:
- name: users
path: /users
operations:
- name: get-user
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: /colgatepalmolive/workers
operations:
- name: get-worker
method: GET
- type: http
namespace: servicenow
baseUri: https://colgatepalmolive.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 completed sprint data from Jira, calculates team velocity metrics, and posts the sprint review summary to the engineering Teams channel.
naftiko: '0.5'
info:
label: Jira Sprint Velocity Report
description: Pulls completed sprint data from Jira, calculates team velocity metrics, and posts the sprint review summary to the engineering Teams channel.
tags:
- devops
- engineering
- jira
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: engineering-reporting
port: 8080
tools:
- name: publish-sprint-velocity
description: Given a Jira board ID and sprint ID, retrieve completed story points and issues, then post a velocity summary to the engineering Teams channel.
inputParameters:
- name: board_id
in: body
type: string
description: The Jira software board ID.
- name: sprint_id
in: body
type: string
description: The Jira sprint ID to report on.
steps:
- name: get-sprint-issues
type: call
call: jira.get-sprint-issues
with:
boardId: '{{board_id}}'
sprintId: '{{sprint_id}}'
- name: post-velocity
type: call
call: msteams.post-channel-message
with:
channelId: engineering-team
message: 'Sprint {{sprint_id}} complete: {{get-sprint-issues.completedIssues}} issues, {{get-sprint-issues.completedPoints}} story points delivered.'
consumes:
- type: http
namespace: jira
baseUri: https://colgate-palmolive.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: sprint-issues
path: /board/{{boardId}}/sprint/{{sprintId}}/issue
inputParameters:
- name: boardId
in: path
- name: sprintId
in: path
operations:
- name: get-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/channels/{{channelId}}/messages
inputParameters:
- name: channelId
in: path
operations:
- name: post-channel-message
method: POST
Analyzes returns from SAP, Snowflake quality data, and creates Jira improvement tasks.
naftiko: '0.5'
info:
label: Customer Returns Analysis
description: Analyzes returns from SAP, Snowflake quality data, and creates Jira improvement tasks.
tags:
- quality
- sales
- sap
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: returns-analytics
port: 8080
tools:
- name: analyze-returns
description: Analyze customer return patterns.
inputParameters:
- name: material_number
type: string
description: Material.
- name: period
type: string
description: Period.
steps:
- name: get-returns
type: call
call: sap.get-returns
with:
material: '{{material_number}}'
- name: get-quality
type: call
call: snowflake.execute-query
with:
warehouse: QUALITY_WH
query: SELECT reason FROM returns WHERE material='{{material_number}}'
- name: create-task
type: call
call: jira.create-issue
with:
project_key: QUAL
summary: 'Returns: {{material_number}}'
consumes:
- type: http
namespace: sap
baseUri: https://colgatepalmolive-s4.sap.com/sap/opu/odata/sap/API_RETURNS_DELIVERY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: resource
path: /data
operations:
- name: get-returns
method: GET
- type: http
namespace: snowflake
baseUri: https://colgatepalmolive.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: jira
baseUri: https://colgatepalmolive.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Processes credit memos by validating SAP invoice, creating credit doc, and updating Salesforce account.
naftiko: '0.5'
info:
label: SAP Credit Memo Processing
description: Processes credit memos by validating SAP invoice, creating credit doc, and updating Salesforce account.
tags:
- finance
- sales
- sap
- salesforce
capability:
exposes:
- type: mcp
namespace: finance-ar
port: 8080
tools:
- name: process-credit-memo
description: Process credit memo.
inputParameters:
- name: invoice_number
type: string
description: Invoice number.
- name: credit_amount
type: number
description: Credit amount.
- name: reason
type: string
description: Reason.
steps:
- name: validate
type: call
call: sap.get-invoice
with:
invoice: '{{invoice_number}}'
- name: create-credit
type: call
call: sap.create-credit-memo
with:
reference: '{{invoice_number}}'
amount: '{{credit_amount}}'
- name: update-account
type: call
call: salesforce.update-account
with:
id: '{{validate.customer_id}}'
credit: '{{credit_amount}}'
consumes:
- type: http
namespace: sap
baseUri: https://colgatepalmolive-s4.sap.com/sap/opu/odata/sap/API_BILLING_DOCUMENT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: resource
path: /data
operations:
- name: get-invoice
method: GET
- name: create-credit-memo
method: POST
- type: http
namespace: salesforce
baseUri: https://colgatepalmolive.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: sobjects
path: /sobjects
operations:
- name: query
method: GET
Monitors cold chain temperatures from Snowflake IoT data, flags excursions, and creates ServiceNow incidents for out-of-range events.
naftiko: '0.5'
info:
label: Cold Chain Temperature Monitoring
description: Monitors cold chain temperatures from Snowflake IoT data, flags excursions, and creates ServiceNow incidents for out-of-range events.
tags:
- supply-chain
- quality
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: cold-chain
port: 8080
tools:
- name: monitor-cold-chain
description: Monitor cold chain temperature excursions and create incidents.
inputParameters:
- name: shipment_id
type: string
description: Shipment tracking ID.
- name: max_temp
type: number
description: Maximum allowed temperature in Celsius.
steps:
- name: get-temps
type: call
call: snowflake.execute-query
with:
warehouse: IOT_WH
query: SELECT timestamp, temp_celsius FROM cold_chain WHERE shipment='{{shipment_id}}' AND temp_celsius>{{max_temp}}
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Cold chain excursion: shipment {{shipment_id}}'
description: '{{get-temps.excursion_count}} temperature excursions above {{max_temp}}C'
- name: alert-team
type: call
call: msteams.send-message
with:
channel_id: quality-alerts
text: 'COLD CHAIN ALERT: Shipment {{shipment_id}} had {{get-temps.excursion_count}} excursions'
consumes:
- type: http
namespace: snowflake
baseUri: https://colgatepalmolive.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
baseUri: https://colgatepalmolive.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/channels/messages
operations:
- name: send-message
method: POST
Performs three-way match between SAP PO, goods receipt, and invoice, routing exceptions to ServiceNow.
naftiko: '0.5'
info:
label: Vendor Invoice Three-Way Match
description: Performs three-way match between SAP PO, goods receipt, and invoice, routing exceptions to ServiceNow.
tags:
- finance
- procurement
- sap
- servicenow
capability:
exposes:
- type: mcp
namespace: ap-automation
port: 8080
tools:
- name: three-way-match
description: Perform three-way match for vendor invoice.
inputParameters:
- name: invoice_number
type: string
description: Invoice number.
- name: po_number
type: string
description: PO number.
steps:
- name: get-po
type: call
call: sap.get-po
with:
po_number: '{{po_number}}'
- name: get-receipt
type: call
call: sap.get-receipt
with:
po_number: '{{po_number}}'
- name: create-exception
type: call
call: servicenow.create-incident
with:
short_description: 'Mismatch: {{invoice_number}} vs PO {{po_number}}'
consumes:
- type: http
namespace: sap
baseUri: https://colgatepalmolive-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: resource
path: /data
operations:
- name: get-po
method: GET
- name: get-receipt
method: GET
- type: http
namespace: servicenow
baseUri: https://colgatepalmolive.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
Orchestrates monthly close by running SAP tasks, validating Snowflake balances, and posting status to Teams.
naftiko: '0.5'
info:
label: SAP Financial Period Close Orchestrator
description: Orchestrates monthly close by running SAP tasks, validating Snowflake balances, and posting status to Teams.
tags:
- finance
- operations
- sap
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finance-close
port: 8080
tools:
- name: close-period
description: Orchestrate financial period close.
inputParameters:
- name: period
type: string
description: Fiscal period.
- name: company_code
type: string
description: Company code.
steps:
- name: check-items
type: call
call: sap.get-open-items
with:
code: '{{company_code}}'
period: '{{period}}'
- name: validate
type: call
call: snowflake.execute-query
with:
warehouse: FINANCE_WH
query: SELECT * FROM recon WHERE code='{{company_code}}'
- name: post
type: call
call: msteams.send-message
with:
channel_id: finance-close
text: 'Period {{period}}: Open items {{check-items.count}}'
consumes:
- type: http
namespace: sap
baseUri: https://colgatepalmolive-s4.sap.com/sap/opu/odata/sap/API_OPLACCTGDOCITEMCUBE_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: resource
path: /data
operations:
- name: get-open-items
method: GET
- type: http
namespace: snowflake
baseUri: https://colgatepalmolive.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
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/channels/messages
operations:
- name: send-message
method: POST
Tracks distributor orders from Salesforce through SAP fulfillment and posts cash collection status to the finance Teams channel.
naftiko: '0.5'
info:
label: Distributor Order to Cash Tracker
description: Tracks distributor orders from Salesforce through SAP fulfillment and posts cash collection status to the finance Teams channel.
tags:
- sales
- finance
- salesforce
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: order-to-cash
port: 8080
tools:
- name: track-order-to-cash
description: Track distributor order through fulfillment and collection.
inputParameters:
- name: order_id
type: string
description: Salesforce order ID.
steps:
- name: get-order
type: call
call: salesforce.get-order
with:
order_id: '{{order_id}}'
- name: get-fulfillment
type: call
call: sap.get-delivery-status
with:
order: '{{get-order.sap_reference}}'
- name: post-status
type: call
call: msteams.send-message
with:
channel_id: finance-ar
text: 'Order {{order_id}}: Fulfillment {{get-fulfillment.status}}. Invoice: {{get-fulfillment.invoice_number}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://colgatepalmolive.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: orders
path: /sobjects/Order
operations:
- name: get-order
method: GET
- type: http
namespace: sap
baseUri: https://colgatepalmolive-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: /data
operations:
- name: get-delivery-status
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/channels/messages
operations:
- name: send-message
method: POST
Releases production batch after QA by checking SAP inspection, updating status, and notifying logistics via Teams.
naftiko: '0.5'
info:
label: Production Batch Release Workflow
description: Releases production batch after QA by checking SAP inspection, updating status, and notifying logistics via Teams.
tags:
- manufacturing
- quality
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: batch-release
port: 8080
tools:
- name: release-batch
description: Release production batch after QA.
inputParameters:
- name: batch_number
type: string
description: Batch number.
- name: material_number
type: string
description: Material number.
steps:
- name: check-qa
type: call
call: sap.get-inspection
with:
batch: '{{batch_number}}'
material: '{{material_number}}'
- name: release
type: call
call: sap.update-batch
with:
batch: '{{batch_number}}'
status: RELEASED
- name: notify
type: call
call: msteams.send-message
with:
channel_id: logistics
text: 'Batch {{batch_number}} released. QA: {{check-qa.decision}}'
consumes:
- type: http
namespace: sap
baseUri: https://colgatepalmolive-s4.sap.com/sap/opu/odata/sap/API_INSPECTIONLOT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: resource
path: /data
operations:
- name: get-inspection
method: GET
- name: update-batch
method: PATCH
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/channels/messages
operations:
- name: send-message
method: POST
Searches SharePoint for documents matching a keyword.
naftiko: '0.5'
info:
label: SharePoint Document Search
description: Searches SharePoint for documents matching a keyword.
tags:
- operations
- documents
- sharepoint
- search
capability:
exposes:
- type: mcp
namespace: doc-management
port: 8080
tools:
- name: search-docs
description: Search SharePoint for documents.
inputParameters:
- name: keyword
type: string
description: Search keyword.
- name: site_id
type: string
description: SharePoint site ID.
call: sharepoint.search
with:
siteId: '{{site_id}}'
query: '{{keyword}}'
outputParameters:
- name: results
type: string
mapping: $.value
consumes:
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: files
path: /sites/drive/items
operations:
- name: search-docs
method: GET
Retrieves product recipe details from SAP including ingredients, process parameters, and yield specifications.
naftiko: '0.5'
info:
label: SAP Recipe Management Lookup
description: Retrieves product recipe details from SAP including ingredients, process parameters, and yield specifications.
tags:
- manufacturing
- r-and-d
- sap
- erp
capability:
exposes:
- type: mcp
namespace: recipe-mgmt
port: 8080
tools:
- name: get-recipe
description: Look up a product recipe in SAP by material number. Returns ingredients, process steps, and yield.
inputParameters:
- name: material_number
type: string
description: SAP material number.
call: sap.get-recipe
with:
material: '{{material_number}}'
outputParameters:
- name: recipe_id
type: string
mapping: $.d.RecipeId
- name: ingredients
type: string
mapping: $.d.Ingredients
- name: yield_pct
type: string
mapping: $.d.PlannedYield
consumes:
- type: http
namespace: sap
baseUri: https://colgatepalmolive-s4.sap.com/sap/opu/odata/sap/API_RECIPE_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: recipes
path: /A_Recipe
operations:
- name: get-recipe
method: GET
Monitors e-commerce pricing from Snowflake, flags MAP violations, creates Salesforce cases, alerts Teams.
naftiko: '0.5'
info:
label: Digital Shelf Price Monitor
description: Monitors e-commerce pricing from Snowflake, flags MAP violations, creates Salesforce cases, alerts Teams.
tags:
- ecommerce
- sales
- snowflake
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: pricing-ops
port: 8080
tools:
- name: monitor-pricing
description: Monitor digital shelf pricing for MAP violations.
inputParameters:
- name: brand
type: string
description: Brand name.
- name: marketplace
type: string
description: Marketplace.
steps:
- name: get-prices
type: call
call: snowflake.execute-query
with:
warehouse: ECOM_WH
query: SELECT sku, price FROM shelf WHERE brand='{{brand}}'
- name: create-case
type: call
call: salesforce.create-case
with:
Subject: 'MAP violation: {{brand}} on {{marketplace}}'
- name: notify
type: call
call: msteams.send-message
with:
channel_id: pricing
text: 'MAP alert: {{brand}} on {{marketplace}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://colgatepalmolive.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://colgatepalmolive.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: sobjects
path: /sobjects
operations:
- name: query
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/channels/messages
operations:
- name: send-message
method: POST
Retrieves Meta Ads campaign performance metrics for a campaign and date range.
naftiko: '0.5'
info:
label: Meta Ad Campaign Performance Lookup
description: Retrieves Meta Ads campaign performance metrics for a campaign and date range.
tags:
- marketing
- social
- meta
- reporting
capability:
exposes:
- type: mcp
namespace: social-ads
port: 8080
tools:
- name: get-campaign-insights
description: Fetch Meta Ads campaign insights.
inputParameters:
- name: campaign_id
type: string
description: Meta campaign ID.
- name: date_from
type: string
description: Start date.
- name: date_to
type: string
description: End date.
call: meta.get-insights
with:
campaign_id: '{{campaign_id}}'
since: '{{date_from}}'
outputParameters:
- name: impressions
type: string
mapping: $.data[0].impressions
- name: spend
type: string
mapping: $.data[0].spend
consumes:
- type: http
namespace: meta
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.meta_token
resources:
- name: campaigns
path: /campaigns
operations:
- name: get-insights
method: GET
Compiles competitive intelligence from Snowflake Circana data, updates Salesforce, and posts digest to Teams.
naftiko: '0.5'
info:
label: Competitive Market Intelligence Digest
description: Compiles competitive intelligence from Snowflake Circana data, updates Salesforce, and posts digest to Teams.
tags:
- marketing
- analytics
- snowflake
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: market-intelligence
port: 8080
tools:
- name: generate-digest
description: Generate competitive market intelligence digest.
inputParameters:
- name: category
type: string
description: Product category.
- name: period
type: string
description: Period.
steps:
- name: get-data
type: call
call: snowflake.execute-query
with:
warehouse: MARKET_WH
query: SELECT brand, share FROM circana WHERE category='{{category}}'
- name: update-sf
type: call
call: salesforce.update-report
with:
category: '{{category}}'
- name: post
type: call
call: msteams.send-message
with:
channel_id: market-intel
text: Market digest for {{category}} ready
consumes:
- type: http
namespace: snowflake
baseUri: https://colgatepalmolive.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://colgatepalmolive.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: sobjects
path: /sobjects
operations:
- name: query
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/channels/messages
operations:
- name: send-message
method: POST
Orchestrates NPD gate reviews by pulling project status from Jira, financial projections from Snowflake, and posting review summary to Teams.
naftiko: '0.5'
info:
label: New Product Development Gate Review
description: Orchestrates NPD gate reviews by pulling project status from Jira, financial projections from Snowflake, and posting review summary to Teams.
tags:
- r-and-d
- innovation
- jira
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: npd-gates
port: 8080
tools:
- name: conduct-gate-review
description: Conduct NPD gate review by gathering project status and financials.
inputParameters:
- name: project_key
type: string
description: Jira project key for NPD.
- name: gate_number
type: number
description: Gate review number.
steps:
- name: get-project-status
type: call
call: jira.get-issue
with:
issue_key: '{{project_key}}'
- name: get-financials
type: call
call: snowflake.execute-query
with:
warehouse: FINANCE_WH
query: SELECT npv, roi_pct, payback_months FROM npd_financials WHERE project='{{project_key}}'
- name: post-review
type: call
call: msteams.send-message
with:
channel_id: npd-reviews
text: 'Gate {{gate_number}} review for {{project_key}}: NPV ${{get-financials.npv}}, ROI {{get-financials.roi_pct}}%'
consumes:
- type: http
namespace: jira
baseUri: https://colgatepalmolive.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: get-issue
method: GET
- type: http
namespace: snowflake
baseUri: https://colgatepalmolive.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
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/channels/messages
operations:
- name: send-message
method: POST
Generates diversity metrics from Workday, enriches with Snowflake analytics, refreshes Power BI.
naftiko: '0.5'
info:
label: Workday Diversity Metrics Report
description: Generates diversity metrics from Workday, enriches with Snowflake analytics, refreshes Power BI.
tags:
- hr
- analytics
- workday
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: hr-analytics
port: 8080
tools:
- name: generate-diversity
description: Generate workforce diversity metrics.
inputParameters:
- name: business_unit
type: string
description: Business unit.
- name: period
type: string
description: Period.
steps:
- name: get-demo
type: call
call: workday.get-demographics
with:
bu: '{{business_unit}}'
- name: get-analytics
type: call
call: snowflake.execute-query
with:
warehouse: HR_WH
query: SELECT diversity_index FROM metrics WHERE bu='{{business_unit}}'
- name: refresh
type: call
call: powerbi.refresh-dataset
with:
datasetId: diversity-dashboard
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: /colgatepalmolive/workers
operations:
- name: get-worker
method: GET
- type: http
namespace: snowflake
baseUri: https://colgatepalmolive.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: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /datasets
operations:
- name: refresh-dataset
method: POST
Creates maintenance orders in SAP from ServiceNow requests and notifies team via Teams.
naftiko: '0.5'
info:
label: SAP Maintenance Order Creation
description: Creates maintenance orders in SAP from ServiceNow requests and notifies team via Teams.
tags:
- manufacturing
- operations
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: plant-maintenance
port: 8080
tools:
- name: create-order
description: Create maintenance order.
inputParameters:
- name: snow_ticket
type: string
description: ServiceNow ticket.
- name: equipment_id
type: string
description: Equipment ID.
- name: priority
type: string
description: Priority.
steps:
- name: get-request
type: call
call: servicenow.get-request
with:
number: '{{snow_ticket}}'
- name: create-order
type: call
call: sap.create-order
with:
equipment: '{{equipment_id}}'
priority: '{{priority}}'
- name: notify
type: call
call: msteams.send-message
with:
channel_id: maintenance
text: 'Maintenance order for {{equipment_id}}. Priority: {{priority}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://colgatepalmolive.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://colgatepalmolive-s4.sap.com/sap/opu/odata/sap/API_MAINTENANCEORDER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: resource
path: /data
operations:
- name: create-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: /teams/channels/messages
operations:
- name: send-message
method: POST
Monitors plant energy from Snowflake IoT data, creates ServiceNow tasks, and alerts via Teams.
naftiko: '0.5'
info:
label: Plant Energy Consumption Monitor
description: Monitors plant energy from Snowflake IoT data, creates ServiceNow tasks, and alerts via Teams.
tags:
- manufacturing
- sustainability
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: energy-monitoring
port: 8080
tools:
- name: monitor-energy
description: Monitor plant energy against targets.
inputParameters:
- name: plant_code
type: string
description: Plant code.
- name: date
type: string
description: Date.
steps:
- name: get-data
type: call
call: snowflake.execute-query
with:
warehouse: IOT_WH
query: SELECT kwh FROM energy WHERE plant='{{plant_code}}'
- name: create-task
type: call
call: servicenow.create-incident
with:
short_description: 'Energy anomaly: {{plant_code}}'
- name: alert
type: call
call: msteams.send-message
with:
channel_id: sustainability
text: 'Energy alert: {{plant_code}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://colgatepalmolive.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
baseUri: https://colgatepalmolive.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/channels/messages
operations:
- name: send-message
method: POST
Assesses risk from Snowflake supplier data, Ariba status, and posts alerts to Teams.
naftiko: '0.5'
info:
label: Supply Chain Risk Assessment
description: Assesses risk from Snowflake supplier data, Ariba status, and posts alerts to Teams.
tags:
- supply-chain
- procurement
- snowflake
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: supply-risk
port: 8080
tools:
- name: assess-risk
description: Assess supply chain risk.
inputParameters:
- name: material_group
type: string
description: Material group.
steps:
- name: get-data
type: call
call: snowflake.execute-query
with:
warehouse: SC_WH
query: SELECT supplier, share FROM concentration WHERE group='{{material_group}}'
- name: get-risk
type: call
call: ariba.get-risk
with:
group: '{{material_group}}'
- name: post
type: call
call: msteams.send-message
with:
channel_id: supply-risk
text: 'Risk for {{material_group}}: Top share {{get-data.top_share}}%'
consumes:
- type: http
namespace: snowflake
baseUri: https://colgatepalmolive.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: ariba
baseUri: https://openapi.ariba.com/api/supplier-management/v1
authentication:
type: bearer
token: $secrets.ariba_token
resources:
- name: suppliers
path: /suppliers
operations:
- name: get-supplier
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/channels/messages
operations:
- name: send-message
method: POST
Verifies allergen declarations by checking SAP BOM ingredients, querying Snowflake allergen database, and creating Jira review tasks for discrepancies.
naftiko: '0.5'
info:
label: Food Safety Allergen Verification
description: Verifies allergen declarations by checking SAP BOM ingredients, querying Snowflake allergen database, and creating Jira review tasks for discrepancies.
tags:
- quality
- food-safety
- sap
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: food-safety
port: 8080
tools:
- name: verify-allergens
description: Verify allergen declarations against BOM and regulatory database.
inputParameters:
- name: material_number
type: string
description: SAP material number.
- name: market
type: string
description: Target market country code.
steps:
- name: get-ingredients
type: call
call: sap.get-bom
with:
material: '{{material_number}}'
- name: check-allergens
type: call
call: snowflake.execute-query
with:
warehouse: FOOD_SAFETY_WH
query: SELECT allergen, status FROM allergen_db WHERE ingredient IN ({{get-ingredients.components}}) AND market='{{market}}'
- name: create-review
type: call
call: jira.create-issue
with:
project_key: FSAFETY
summary: 'Allergen verification: {{material_number}} for {{market}}'
consumes:
- type: http
namespace: sap
baseUri: https://colgatepalmolive-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: /data
operations:
- name: get-bom
method: GET
- type: http
namespace: snowflake
baseUri: https://colgatepalmolive.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: jira
baseUri: https://colgatepalmolive.atlassian.net/rest/api/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 a new lead is created in Salesforce, enriches the record with ZoomInfo company data and assigns it to the correct sales territory owner.
naftiko: '0.5'
info:
label: Salesforce Lead Enrichment
description: When a new lead is created in Salesforce, enriches the record with ZoomInfo company data and assigns it to the correct sales territory owner.
tags:
- crm
- sales
- salesforce
- zoominfo
- lead-management
capability:
exposes:
- type: mcp
namespace: crm-leads
port: 8080
tools:
- name: enrich-lead
description: Given a Salesforce lead ID, fetch company firmographics from ZoomInfo and update the Salesforce record with enriched data and territory assignment.
inputParameters:
- name: lead_id
in: body
type: string
description: The Salesforce lead record ID.
steps:
- name: get-lead
type: call
call: salesforce.get-lead
with:
lead_id: '{{lead_id}}'
- name: enrich-company
type: call
call: zoominfo.search-company
with:
companyName: '{{get-lead.Company}}'
website: '{{get-lead.Website}}'
- name: update-lead
type: call
call: salesforce-update.update-lead
with:
lead_id: '{{lead_id}}'
AnnualRevenue: '{{enrich-company.revenue}}'
NumberOfEmployees: '{{enrich-company.employeeCount}}'
Industry: '{{enrich-company.industry}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://colgate-palmolive.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
- type: http
namespace: zoominfo
baseUri: https://api.zoominfo.com/search
authentication:
type: bearer
token: $secrets.zoominfo_token
resources:
- name: companies
path: /company
operations:
- name: search-company
method: POST
- type: http
namespace: salesforce-update
baseUri: https://colgate-palmolive.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: update-lead
method: PATCH
Triggers a scheduled Power BI dataset refresh after Snowflake pipeline completion and posts the refresh status to the analytics Teams channel.
naftiko: '0.5'
info:
label: Power BI Report Refresh Trigger
description: Triggers a scheduled Power BI dataset refresh after Snowflake pipeline completion and posts the refresh status to the analytics Teams channel.
tags:
- data
- analytics
- power-bi
- snowflake
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: bi-reporting
port: 8080
tools:
- name: trigger-report-refresh
description: Given a Power BI dataset ID, trigger a dataset refresh and post the completion status to the analytics Teams channel.
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:
workspaceId: '{{workspace_id}}'
datasetId: '{{dataset_id}}'
- name: notify-analytics
type: call
call: msteams.post-channel-message
with:
channelId: analytics-team
message: Power BI dataset {{dataset_id}} refresh triggered in workspace {{workspace_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/{{workspaceId}}/datasets/{{datasetId}}/refreshes
inputParameters:
- name: workspaceId
in: path
- name: datasetId
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/channels/{{channelId}}/messages
inputParameters:
- name: channelId
in: path
operations:
- name: post-channel-message
method: POST
Retrieves vendor payment terms and credit limit from SAP.
naftiko: '0.5'
info:
label: SAP Vendor Payment Terms Lookup
description: Retrieves vendor payment terms and credit limit from SAP.
tags:
- finance
- procurement
- sap
- erp
capability:
exposes:
- type: mcp
namespace: erp-finance
port: 8080
tools:
- name: get-payment-terms
description: Look up vendor payment terms in SAP.
inputParameters:
- name: vendor_number
type: string
description: SAP vendor number.
call: sap.get-vendor-terms
with:
vendor: '{{vendor_number}}'
outputParameters:
- name: payment_terms
type: string
mapping: $.d.PaymentTerms
- name: credit_limit
type: string
mapping: $.d.CreditLimit
consumes:
- type: http
namespace: sap
baseUri: https://colgatepalmolive-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: resource
path: /data
operations:
- name: get-vendor-terms
method: GET
Posts warehouse transfers in SAP, updates Snowflake inventory, and confirms via Teams.
naftiko: '0.5'
info:
label: SAP Warehouse Transfer Posting
description: Posts warehouse transfers in SAP, updates Snowflake inventory, and confirms via Teams.
tags:
- supply-chain
- logistics
- sap
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: warehouse-ops
port: 8080
tools:
- name: post-transfer
description: Post warehouse transfer.
inputParameters:
- name: material
type: string
description: Material.
- name: from_loc
type: string
description: Source.
- name: to_loc
type: string
description: Target.
- name: quantity
type: number
description: Quantity.
steps:
- name: transfer
type: call
call: sap.post-transfer
with:
material: '{{material}}'
from: '{{from_loc}}'
- name: update
type: call
call: snowflake.execute-query
with:
warehouse: SC_WH
query: CALL update_inv('{{material}}', {{quantity}})
- name: confirm
type: call
call: msteams.send-message
with:
channel_id: warehouse
text: 'Transfer: {{quantity}} of {{material}} to {{to_loc}}'
consumes:
- type: http
namespace: sap
baseUri: https://colgatepalmolive-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_DOCUMENT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: resource
path: /data
operations:
- name: post-transfer
method: POST
- type: http
namespace: snowflake
baseUri: https://colgatepalmolive.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
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/channels/messages
operations:
- name: send-message
method: POST
Onboards new SKU by creating SAP material, Salesforce product, and notifying supply chain via Teams.
naftiko: '0.5'
info:
label: New SKU Onboarding Workflow
description: Onboards new SKU by creating SAP material, Salesforce product, and notifying supply chain via Teams.
tags:
- supply-chain
- sales
- sap
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sku-management
port: 8080
tools:
- name: onboard-sku
description: Orchestrate new SKU onboarding.
inputParameters:
- name: sku_name
type: string
description: Product name.
- name: category
type: string
description: Category.
- name: unit_cost
type: number
description: Unit cost.
steps:
- name: create-material
type: call
call: sap.create-material
with:
description: '{{sku_name}}'
group: '{{category}}'
- name: create-product
type: call
call: salesforce.create-product
with:
Name: '{{sku_name}}'
ProductCode: '{{create-material.number}}'
- name: notify
type: call
call: msteams.send-message
with:
channel_id: supply-chain
text: 'New SKU: {{sku_name}} ({{create-material.number}})'
consumes:
- type: http
namespace: sap
baseUri: https://colgatepalmolive-s4.sap.com/sap/opu/odata/sap/API_PRODUCT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: resource
path: /data
operations:
- name: create-material
method: POST
- type: http
namespace: salesforce
baseUri: https://colgatepalmolive.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: sobjects
path: /sobjects
operations:
- name: query
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/channels/messages
operations:
- name: send-message
method: POST
Analyzes yield from SAP planned vs actual, Snowflake waste trends, and creates Jira improvement tasks.
naftiko: '0.5'
info:
label: Production Yield Analysis
description: Analyzes yield from SAP planned vs actual, Snowflake waste trends, and creates Jira improvement tasks.
tags:
- manufacturing
- quality
- sap
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: production-analytics
port: 8080
tools:
- name: analyze-yield
description: Analyze production yield.
inputParameters:
- name: line
type: string
description: Production line.
- name: plant_code
type: string
description: Plant code.
- name: period
type: string
description: Period.
steps:
- name: get-yield
type: call
call: sap.get-confirmations
with:
plant: '{{plant_code}}'
line: '{{line}}'
- name: get-waste
type: call
call: snowflake.execute-query
with:
warehouse: MFG_WH
query: SELECT waste_pct FROM waste WHERE line='{{line}}'
- name: create-task
type: call
call: jira.create-issue
with:
project_key: MFG
summary: 'Yield: {{line}} ({{period}})'
consumes:
- type: http
namespace: sap
baseUri: https://colgatepalmolive-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: resource
path: /data
operations:
- name: get-confirmations
method: GET
- type: http
namespace: snowflake
baseUri: https://colgatepalmolive.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: jira
baseUri: https://colgatepalmolive.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Triggers a Terraform Cloud workspace run to provision or update cloud infrastructure, monitors the run result, and creates a ServiceNow change record.
naftiko: '0.5'
info:
label: Terraform Cloud Workspace Provisioning
description: Triggers a Terraform Cloud workspace run to provision or update cloud infrastructure, monitors the run result, and creates a ServiceNow change record.
tags:
- cloud
- infrastructure
- terraform
- servicenow
- change-management
capability:
exposes:
- type: mcp
namespace: infra-provisioning
port: 8080
tools:
- name: trigger-terraform-run
description: Given a Terraform Cloud workspace ID and message, trigger a plan and apply run, then create a ServiceNow change record documenting the infrastructure change.
inputParameters:
- name: workspace_id
in: body
type: string
description: The Terraform Cloud workspace ID.
- name: change_description
in: body
type: string
description: Description of the infrastructure change being applied.
steps:
- name: create-run
type: call
call: terraform.create-run
with:
workspaceId: '{{workspace_id}}'
message: '{{change_description}}'
- name: create-change-record
type: call
call: servicenow.create-change
with:
short_description: 'Terraform infra change: {{change_description}}'
description: 'Workspace: {{workspace_id}}
Run ID: {{create-run.runId}}'
category: Infrastructure
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: servicenow
baseUri: https://colgate-palmolive.service-now.com/api/now
authentication:
type: basic
username: $secrets.snow_user
password: $secrets.snow_password
resources:
- name: changes
path: /table/change_request
operations:
- name: create-change
method: POST
When Adobe Analytics detects a traffic anomaly on a Colgate-Palmolive digital property, creates a ServiceNow ticket and notifies the digital team in Teams.
naftiko: '0.5'
info:
label: Adobe Analytics Anomaly Triage
description: When Adobe Analytics detects a traffic anomaly on a Colgate-Palmolive digital property, creates a ServiceNow ticket and notifies the digital team in Teams.
tags:
- marketing
- analytics
- adobe-analytics
- servicenow
- microsoft-teams
- monitoring
capability:
exposes:
- type: mcp
namespace: digital-monitoring
port: 8080
tools:
- name: handle-analytics-anomaly
description: Given an Adobe Analytics report suite ID and anomaly description, create a ServiceNow ticket for investigation and alert the digital team in Teams.
inputParameters:
- name: report_suite_id
in: body
type: string
description: The Adobe Analytics report suite ID where the anomaly occurred.
- name: anomaly_description
in: body
type: string
description: Description of the detected anomaly.
- name: metric
in: body
type: string
description: The metric that anomaly was detected on, e.g. visits, revenue.
steps:
- name: get-anomaly-data
type: call
call: adobe-analytics.get-anomaly-report
with:
reportSuiteId: '{{report_suite_id}}'
metric: '{{metric}}'
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'Analytics anomaly on {{report_suite_id}}: {{anomaly_description}}'
category: digital_analytics
description: 'Metric: {{metric}}
Anomaly: {{anomaly_description}}
Value: {{get-anomaly-data.currentValue}}'
- name: notify-digital-team
type: call
call: msteams.post-channel-message
with:
channelId: digital-team
message: 'Analytics anomaly detected on {{report_suite_id}}: {{anomaly_description}} | ServiceNow: {{create-ticket.number}}'
consumes:
- type: http
namespace: adobe-analytics
baseUri: https://analytics.adobe.io/api
authentication:
type: bearer
token: $secrets.adobe_analytics_token
resources:
- name: anomaly-detection
path: /anomalyDetection/suites/{{reportSuiteId}}
inputParameters:
- name: reportSuiteId
in: path
operations:
- name: get-anomaly-report
method: POST
- type: http
namespace: servicenow
baseUri: https://colgate-palmolive.service-now.com/api/now
authentication:
type: basic
username: $secrets.snow_user
password: $secrets.snow_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/channels/{{channelId}}/messages
inputParameters:
- name: channelId
in: path
operations:
- name: post-channel-message
method: POST
Coordinates launch by creating Salesforce campaign, Meta ads, and notifying marketing via Teams.
naftiko: '0.5'
info:
label: Marketing Campaign Launch Coordinator
description: Coordinates launch by creating Salesforce campaign, Meta ads, and notifying marketing via Teams.
tags:
- marketing
- campaigns
- salesforce
- meta
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: campaign-ops
port: 8080
tools:
- name: launch-campaign
description: Orchestrate marketing campaign launch.
inputParameters:
- name: campaign_name
type: string
description: Campaign name.
- name: brand
type: string
description: Brand.
- name: start_date
type: string
description: Start date.
- name: budget
type: number
description: Budget USD.
steps:
- name: create-campaign
type: call
call: salesforce.create-campaign
with:
Name: '{{campaign_name}}'
Brand: '{{brand}}'
- name: activate-ads
type: call
call: meta.activate
with:
name: '{{campaign_name}}'
status: ACTIVE
- name: notify
type: call
call: msteams.send-message
with:
channel_id: marketing
text: Campaign '{{campaign_name}}' launched for {{brand}}
consumes:
- type: http
namespace: salesforce
baseUri: https://colgatepalmolive.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: sobjects
path: /sobjects
operations:
- name: query
method: GET
- type: http
namespace: meta
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.meta_token
resources:
- name: campaigns
path: /campaigns
operations:
- name: get-insights
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/channels/messages
operations:
- name: send-message
method: POST
Fetches approved open job requisitions from Workday Recruiting and publishes them to the General Mills LinkedIn company page.
naftiko: '0.5'
info:
label: Workday Open Requisition to LinkedIn Publisher
description: Fetches approved open job requisitions from Workday Recruiting and publishes them to the General Mills LinkedIn company page.
tags:
- hr
- recruiting
- workday
- linkedin
capability:
exposes:
- type: mcp
namespace: talent-publishing
port: 8080
tools:
- name: publish-job-to-linkedin
description: Given a Workday job requisition ID, fetch job details from Workday and post the role to the General Mills LinkedIn company page. Use when a recruiter approves a role for external publication.
inputParameters:
- name: requisition_id
in: body
type: string
description: The Workday job requisition ID to publish.
steps:
- name: get-requisition
type: call
call: workday-jobs.get-job-requisition
with:
requisition_id: '{{requisition_id}}'
- name: post-to-linkedin
type: call
call: linkedin-jobs.create-job-posting
with:
title: '{{get-requisition.job_title}}'
description: '{{get-requisition.job_description}}'
location: '{{get-requisition.location}}'
company_id: $secrets.linkedin_gm_company_id
consumes:
- type: http
namespace: workday-jobs
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: job-requisitions
path: /generalmills/jobRequisitions/{{requisition_id}}
inputParameters:
- name: requisition_id
in: path
operations:
- name: get-job-requisition
method: GET
- type: http
namespace: linkedin-jobs
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
Exports current General Mills headcount grouped by department and cost center from Workday for quarterly workforce planning and executive reporting.
naftiko: '0.5'
info:
label: Workday Headcount Export for Finance
description: Exports current General Mills headcount grouped by department and cost center from Workday for quarterly workforce planning and executive reporting.
tags:
- hr
- reporting
- workday
- headcount
- finance
capability:
exposes:
- type: mcp
namespace: hr-reporting
port: 8080
tools:
- name: get-headcount-by-department
description: Returns active General Mills employees grouped by department and cost center from Workday. Use for headcount planning, budget reviews, and HR analytics.
call: workday-hcm.headcount-export
outputParameters:
- name: employees
type: array
mapping: $.data
- name: total_count
type: number
mapping: $.total
consumes:
- type: http
namespace: workday-hcm
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers-export
path: /generalmills/workers
inputParameters:
- name: format
in: query
value: json
operations:
- name: headcount-export
method: GET
Triggers a Terraform Cloud plan-and-apply run for a General Mills infrastructure workspace following an approved change request.
naftiko: '0.5'
info:
label: Terraform Cloud Infrastructure Run
description: Triggers a Terraform Cloud plan-and-apply run for a General Mills infrastructure workspace following an approved change request.
tags:
- cloud
- infrastructure
- terraform
- devops
capability:
exposes:
- type: mcp
namespace: infra-provisioning
port: 8080
tools:
- name: trigger-terraform-run
description: Given a Terraform Cloud workspace ID and run message, trigger a new plan-and-apply run. Use when deploying approved General Mills infrastructure changes to cloud environments.
inputParameters:
- name: workspace_id
in: body
type: string
description: The Terraform Cloud workspace ID (e.g., ws-xxxxxxxxxxxxxxxx).
- name: message
in: body
type: string
description: Human-readable message describing the reason for this run.
call: terraform-cloud.create-run
with:
workspace_id: '{{workspace_id}}'
message: '{{message}}'
outputParameters:
- name: run_id
type: string
mapping: $.data.id
- name: status
type: string
mapping: $.data.attributes.status
consumes:
- type: http
namespace: terraform-cloud
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
Queries Microsoft Graph for General Mills Microsoft 365 license assignments and consumption for IT cost allocation and renewal planning.
naftiko: '0.5'
info:
label: Microsoft 365 License Utilization Report
description: Queries Microsoft Graph for General Mills Microsoft 365 license assignments and consumption for IT cost allocation and renewal planning.
tags:
- identity
- microsoft-365
- reporting
- it-finance
capability:
exposes:
- type: mcp
namespace: m365-reporting
port: 8080
tools:
- name: get-license-utilization
description: Query Microsoft Graph for all subscribed Microsoft 365 SKUs and consumed unit counts. Use for monthly IT license chargeback, compliance audits, and renewal planning at General Mills.
call: msgraph-lic.get-subscribed-skus
outputParameters:
- name: skus
type: array
mapping: $.value
consumes:
- type: http
namespace: msgraph-lic
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: subscribed-skus
path: /subscribedSkus
operations:
- name: get-subscribed-skus
method: GET
When a Workday role change is approved, updates Azure AD group membership to reflect the new role and notifies the employee via Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Role Change Access Provisioner
description: When a Workday role change is approved, updates Azure AD group membership to reflect the new role and notifies the employee via Microsoft Teams.
tags:
- hr
- identity
- workday
- azure-ad
- microsoft-teams
- role-change
capability:
exposes:
- type: mcp
namespace: hr-role-change
port: 8080
tools:
- name: sync-role-change
description: Given a Workday employee ID, new role, and Azure AD group ID, update group membership and send a Teams notification to the employee. Use when an internal transfer or promotion is finalized in Workday at General Mills.
inputParameters:
- name: employee_id
in: body
type: string
description: The Workday worker ID of the employee changing roles.
- name: new_role
in: body
type: string
description: The new job title.
- name: new_ad_group
in: body
type: string
description: Azure AD group ID for the new role's access.
steps:
- name: get-worker
type: call
call: workday-role.get-worker
with:
worker_id: '{{employee_id}}'
- name: add-to-group
type: call
call: azure-ad-role.add-group-member
with:
group_id: '{{new_ad_group}}'
user_id: '{{get-worker.azure_object_id}}'
- name: notify-employee
type: call
call: msteams-role.send-message
with:
recipient_upn: '{{get-worker.work_email}}'
text: Your role has been updated to {{new_role}}. Your system access has been provisioned. Welcome to your new position!
consumes:
- type: http
namespace: workday-role
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers
path: /generalmills/workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: azure-ad-role
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.azure_ad_token
resources:
- name: group-members
path: /groups/{{group_id}}/members/$ref
inputParameters:
- name: group_id
in: path
operations:
- name: add-group-member
method: POST
- type: http
namespace: msteams-role
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: chats
path: /chats
operations:
- name: send-message
method: POST
Updates a Salesforce customer account record with new contact, industry, or revenue information from the General Mills CRM team.
naftiko: '0.5'
info:
label: Salesforce Customer Account Update
description: Updates a Salesforce customer account record with new contact, industry, or revenue information from the General Mills CRM team.
tags:
- crm
- sales
- salesforce
capability:
exposes:
- type: mcp
namespace: crm-accounts
port: 8080
tools:
- name: update-customer-account
description: Given a Salesforce account ID and updated attributes, patch the account record. Use when CRM operations refreshes retailer or distributor account data for the General Mills sales team.
inputParameters:
- name: account_id
in: body
type: string
description: The Salesforce account ID (18-character SFDC ID).
- name: industry
in: body
type: string
description: Updated industry classification.
- name: annual_revenue
in: body
type: number
description: Updated annual revenue estimate.
- name: phone
in: body
type: string
description: Updated main phone number for the account.
call: salesforce-crm.update-account
with:
account_id: '{{account_id}}'
industry: '{{industry}}'
annual_revenue: '{{annual_revenue}}'
phone: '{{phone}}'
outputParameters:
- name: success
type: boolean
mapping: $.success
consumes:
- type: http
namespace: salesforce-crm
baseUri: https://generalmills.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
Escalates a ServiceNow incident to P1, assigns the on-call engineering group, and broadcasts an alert to the General Mills IT operations Microsoft Teams channel.
naftiko: '0.5'
info:
label: ServiceNow P1 Incident Escalation
description: Escalates a ServiceNow incident to P1, assigns the on-call engineering group, and broadcasts an alert to the General Mills IT operations Microsoft Teams channel.
tags:
- itsm
- incident-response
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: it-incident-ops
port: 8080
tools:
- name: escalate-to-p1
description: Given a ServiceNow incident number and escalation reason, update priority to P1, reassign to the on-call group, and post a critical alert to the IT operations Teams channel. Use when an incident is confirmed as business-critical at General Mills.
inputParameters:
- name: incident_number
in: body
type: string
description: The ServiceNow incident number (e.g., INC0012345).
- name: escalation_reason
in: body
type: string
description: Reason for the P1 escalation.
steps:
- name: update-incident
type: call
call: servicenow-itsm.patch-incident
with:
number: '{{incident_number}}'
priority: '1'
assignment_group: GM_IT_Critical_OnCall
work_notes: 'P1 escalation: {{escalation_reason}}'
- name: alert-it-ops
type: call
call: msteams-itsm.send-message
with:
channel_id: $secrets.teams_it_ops_channel_id
text: 'P1 ESCALATION: {{incident_number}} — {{escalation_reason}}. Assigned to GM IT Critical On-Call. Immediate response required.'
consumes:
- type: http
namespace: servicenow-itsm
baseUri: https://generalmills.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident/{{number}}
inputParameters:
- name: number
in: path
operations:
- name: patch-incident
method: PATCH
- type: http
namespace: msteams-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
Fetches LinkedIn campaign performance analytics for General Mills brand pages and posts a summary to the marketing Microsoft Teams channel.
naftiko: '0.5'
info:
label: LinkedIn Brand Campaign Performance Digest
description: Fetches LinkedIn campaign performance analytics for General Mills brand pages and posts a summary to the marketing Microsoft Teams channel.
tags:
- marketing
- linkedin
- microsoft-teams
- reporting
- social
capability:
exposes:
- type: mcp
namespace: social-reporting
port: 8080
tools:
- name: digest-linkedin-campaign
description: Given a LinkedIn campaign ID and date range, fetch impressions, clicks, and engagement metrics and post a performance summary to the marketing Teams channel. Use for weekly brand and campaign performance reviews.
inputParameters:
- name: campaign_id
in: body
type: string
description: The LinkedIn campaign ID to retrieve analytics for.
- name: start_date
in: body
type: string
description: Report start date in YYYY-MM-DD format.
- name: end_date
in: body
type: string
description: Report end date in YYYY-MM-DD format.
steps:
- name: get-analytics
type: call
call: linkedin-analytics.get-campaign-stats
with:
campaign_id: '{{campaign_id}}'
start_date: '{{start_date}}'
end_date: '{{end_date}}'
- name: post-summary
type: call
call: msteams-marketing.send-message
with:
channel_id: $secrets.teams_marketing_channel_id
text: 'LinkedIn Campaign {{campaign_id}} ({{start_date}} — {{end_date}}): Impressions={{get-analytics.impressions}}, Clicks={{get-analytics.clicks}}, CTR={{get-analytics.ctr}}%.'
consumes:
- type: http
namespace: linkedin-analytics
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: campaign-analytics
path: /adAnalyticsV2
inputParameters:
- name: q
in: query
value: analytics
- name: pivot
in: query
value: CAMPAIGN
operations:
- name: get-campaign-stats
method: GET
- type: http
namespace: msteams-marketing
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
Reviews private label contracts by pulling data from Salesforce, checking pricing in SAP, and creating Jira approval tasks.
naftiko: '0.5'
info:
label: Private Label Contract Review Workflow
description: Reviews private label contracts by pulling data from Salesforce, checking pricing in SAP, and creating Jira approval tasks.
tags:
- sales
- procurement
- salesforce
- sap
- jira
capability:
exposes:
- type: mcp
namespace: contract-mgmt
port: 8080
tools:
- name: review-pl-contract
description: Review a private label contract across CRM, ERP, and project systems.
inputParameters:
- name: contract_id
type: string
description: Salesforce contract ID.
steps:
- name: get-contract
type: call
call: salesforce.get-contract
with:
contract_id: '{{contract_id}}'
- name: check-pricing
type: call
call: sap.get-pricing
with:
customer: '{{get-contract.customer_id}}'
materials: '{{get-contract.product_list}}'
- name: create-approval
type: call
call: jira.create-issue
with:
project_key: CONTRACTS
summary: 'PL Contract Review: {{get-contract.customer_name}}'
description: 'Contract value: {{get-contract.total_value}}. Margin: {{check-pricing.margin_pct}}%'
consumes:
- type: http
namespace: salesforce
baseUri: https://generalmills.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: contracts
path: /sobjects/Contract
operations:
- name: get-contract
method: GET
- type: http
namespace: sap
baseUri: https://generalmills-s4.sap.com/sap/opu/odata/sap/API_SALES_ORDER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: pricing
path: /data
operations:
- name: get-pricing
method: GET
- type: http
namespace: jira
baseUri: https://generalmills.atlassian.net/rest/api/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 SAP S/4HANA for procurement and operating spend by cost center for a fiscal period for General Mills financial close and budget variance reporting.
naftiko: '0.5'
info:
label: SAP Cost Center Spend Report
description: Queries SAP S/4HANA for procurement and operating spend by cost center for a fiscal period for General Mills financial close and budget variance reporting.
tags:
- finance
- erp
- sap
- reporting
capability:
exposes:
- type: mcp
namespace: finance-reporting
port: 8080
tools:
- name: get-spend-by-cost-center
description: Given a fiscal year, period, and optional cost center code, return total spend actuals from SAP S/4HANA. Use for monthly budget variance reviews, quarterly financial close, and executive cost reporting.
inputParameters:
- name: fiscal_year
in: body
type: string
description: The SAP fiscal year (e.g., 2025).
- name: period
in: body
type: string
description: The fiscal period number (1-12).
- name: cost_center
in: body
type: string
description: Optional SAP cost center code to filter results.
call: sap-cca.get-cost-center-actuals
with:
fiscal_year: '{{fiscal_year}}'
period: '{{period}}'
cost_center: '{{cost_center}}'
outputParameters:
- name: total_actuals
type: number
mapping: $.d.results[0].AmountInCoCodeCurrency
- name: currency
type: string
mapping: $.d.results[0].CompanyCodeCurrency
consumes:
- type: http
namespace: sap-cca
baseUri: https://generalmills-s4.sap.com/sap/opu/odata/sap/FAC_COSTCENTER_0001
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: cost-center-actuals
path: /CostCenterActuals
inputParameters:
- name: fiscal_year
in: query
- name: period
in: query
- name: cost_center
in: query
operations:
- name: get-cost-center-actuals
method: GET
Triggers store-level replenishment by querying Snowflake POS data, checking SAP DC inventory, and creating Salesforce replenishment orders.
naftiko: '0.5'
info:
label: Store Level Inventory Replenishment
description: Triggers store-level replenishment by querying Snowflake POS data, checking SAP DC inventory, and creating Salesforce replenishment orders.
tags:
- supply-chain
- sales
- snowflake
- sap
- salesforce
capability:
exposes:
- type: mcp
namespace: replenishment
port: 8080
tools:
- name: trigger-replenishment
description: Trigger store replenishment based on POS velocity and DC inventory.
inputParameters:
- name: retailer
type: string
description: Retailer account name.
- name: region
type: string
description: Sales region.
steps:
- name: get-pos-velocity
type: call
call: snowflake.execute-query
with:
warehouse: RETAIL_WH
query: SELECT sku, velocity, weeks_of_supply FROM pos WHERE retailer='{{retailer}}' AND region='{{region}}' AND weeks_of_supply<2
- name: check-dc-stock
type: call
call: sap.get-dc-inventory
with:
region: '{{region}}'
skus: '{{get-pos-velocity.skus}}'
- name: create-order
type: call
call: salesforce.create-replenishment
with:
retailer: '{{retailer}}'
items: '{{get-pos-velocity.data}}'
available: '{{check-dc-stock.levels}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://generalmills.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: sap
baseUri: https://generalmills-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: /data
operations:
- name: get-dc-inventory
method: GET
- type: http
namespace: salesforce
baseUri: https://generalmills.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: orders
path: /sobjects/Order
operations:
- name: create-replenishment
method: POST
Tracks waste reduction initiatives by pulling manufacturing waste data from Snowflake, comparing to targets, and posting progress to Teams.
naftiko: '0.5'
info:
label: Waste Reduction Initiative Tracker
description: Tracks waste reduction initiatives by pulling manufacturing waste data from Snowflake, comparing to targets, and posting progress to Teams.
tags:
- manufacturing
- sustainability
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: waste-reduction
port: 8080
tools:
- name: track-waste-reduction
description: Track waste reduction progress against targets.
inputParameters:
- name: plant_code
type: string
description: Plant code.
- name: initiative_id
type: string
description: Jira initiative key.
steps:
- name: get-waste-data
type: call
call: snowflake.execute-query
with:
warehouse: MFG_WH
query: SELECT waste_type, current_pct, target_pct FROM waste_tracking WHERE plant='{{plant_code}}'
- name: update-initiative
type: call
call: jira.update-issue
with:
issue_key: '{{initiative_id}}'
comment: 'Current waste: {{get-waste-data.current_total}}%. Target: {{get-waste-data.target_total}}%'
- name: post-progress
type: call
call: msteams.send-message
with:
channel_id: sustainability
text: 'Waste reduction at {{plant_code}}: {{get-waste-data.current_total}}% (target: {{get-waste-data.target_total}}%)'
consumes:
- type: http
namespace: snowflake
baseUri: https://generalmills.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: jira
baseUri: https://generalmills.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: update-issue
method: PUT
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/channels/messages
operations:
- name: send-message
method: POST
Opens a Salesforce case for a retail trade promotion request linked to the customer account, enabling the General Mills trade marketing team to track promotions.
naftiko: '0.5'
info:
label: Salesforce Trade Promotion Case Creator
description: Opens a Salesforce case for a retail trade promotion request linked to the customer account, enabling the General Mills trade marketing team to track promotions.
tags:
- crm
- marketing
- salesforce
- trade-promotion
capability:
exposes:
- type: mcp
namespace: trade-marketing
port: 8080
tools:
- name: create-promotion-case
description: Given a Salesforce account ID, promotion type, and start/end dates, create a Salesforce case to track a retail trade promotion. Use when General Mills trade marketing initiates a promotional program with a retail partner.
inputParameters:
- name: account_id
in: body
type: string
description: The Salesforce retailer account ID.
- name: promotion_type
in: body
type: string
description: Type of promotion (e.g., price reduction, display feature, coupon).
- name: start_date
in: body
type: string
description: Promotion start date in YYYY-MM-DD format.
- name: end_date
in: body
type: string
description: Promotion end date in YYYY-MM-DD format.
call: salesforce-promo.create-case
with:
account_id: '{{account_id}}'
subject: 'Trade Promotion: {{promotion_type}} ({{start_date}} to {{end_date}})'
type: Trade Promotion
outputParameters:
- name: case_number
type: string
mapping: $.caseNumber
- name: case_id
type: string
mapping: $.id
consumes:
- type: http
namespace: salesforce-promo
baseUri: https://generalmills.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
Checks nutrition label compliance by pulling recipe data from SAP, validating against regulatory requirements in Snowflake, and creating Jira tasks.
naftiko: '0.5'
info:
label: Nutrition Label Compliance Check
description: Checks nutrition label compliance by pulling recipe data from SAP, validating against regulatory requirements in Snowflake, and creating Jira tasks.
tags:
- quality
- regulatory
- sap
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: label-compliance
port: 8080
tools:
- name: check-nutrition-label
description: Check nutrition label compliance against regulations.
inputParameters:
- name: material_number
type: string
description: SAP material number.
- name: target_market
type: string
description: Target market country code.
steps:
- name: get-recipe
type: call
call: sap.get-recipe
with:
material: '{{material_number}}'
- name: check-regs
type: call
call: snowflake.execute-query
with:
warehouse: REGULATORY_WH
query: SELECT requirement, compliant FROM label_regs WHERE market='{{target_market}}' AND material='{{material_number}}'
- name: create-task
type: call
call: jira.create-issue
with:
project_key: REGULATORY
summary: 'Label compliance: {{material_number}} for {{target_market}}'
description: 'Non-compliant items: {{check-regs.non_compliant_count}}'
consumes:
- type: http
namespace: sap
baseUri: https://generalmills-s4.sap.com/sap/opu/odata/sap/API_RECIPE_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: recipes
path: /data
operations:
- name: get-recipe
method: GET
- type: http
namespace: snowflake
baseUri: https://generalmills.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: jira
baseUri: https://generalmills.atlassian.net/rest/api/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 ServiceNow for the status of the latest scheduled backup job and alerts the General Mills IT operations Teams channel if backup failed or is overdue.
naftiko: '0.5'
info:
label: ServiceNow Backup Verification Check
description: Queries ServiceNow for the status of the latest scheduled backup job and alerts the General Mills IT operations Teams channel if backup failed or is overdue.
tags:
- itsm
- operations
- servicenow
- microsoft-teams
- backup
capability:
exposes:
- type: mcp
namespace: backup-verification
port: 8080
tools:
- name: verify-backup-status
description: Query ServiceNow for the latest backup job record and post a Teams alert summarizing status. Use as part of daily General Mills IT operations checks.
inputParameters:
- name: backup_job_name
in: body
type: string
description: The ServiceNow scheduled job name for the backup to verify.
steps:
- name: get-backup-record
type: call
call: servicenow-bkp.get-backup-record
with:
job_name: '{{backup_job_name}}'
- name: post-status
type: call
call: msteams-bkp.send-message
with:
channel_id: $secrets.teams_it_ops_channel_id
text: 'Backup Check — {{backup_job_name}}: Status={{get-backup-record.status}}, Last run={{get-backup-record.last_run_date}}. Investigate if status is not ''Success''.'
consumes:
- type: http
namespace: servicenow-bkp
baseUri: https://generalmills.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: backup-records
path: /table/scheduled_job
inputParameters:
- name: job_name
in: query
operations:
- name: get-backup-record
method: GET
- type: http
namespace: msteams-bkp
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
Fetches critical Dependabot security alerts for a General Mills GitHub repository and creates Jira security issues for each unresolved vulnerability.
naftiko: '0.5'
info:
label: GitHub Repository Security Alert Triage
description: Fetches critical Dependabot security alerts for a General Mills GitHub repository and creates Jira security issues for each unresolved vulnerability.
tags:
- security
- devops
- github
- jira
capability:
exposes:
- type: mcp
namespace: security-triage
port: 8080
tools:
- name: triage-dependabot-alerts
description: Given a GitHub repository and Jira project key, fetch all open critical Dependabot alerts and create a Jira security issue for each. Use during General Mills security triage cycles or in response to vulnerability disclosures.
inputParameters:
- name: repo
in: body
type: string
description: The GitHub repository in owner/repo format.
- name: jira_project_key
in: body
type: string
description: The Jira project key for security issues (e.g., SEC).
steps:
- name: get-alerts
type: call
call: github-sec.list-dependabot-alerts
with:
repo: '{{repo}}'
severity: critical
state: open
- name: create-security-issue
type: call
call: jira-sec.create-issue
with:
project_key: '{{jira_project_key}}'
issuetype: Security
summary: 'Critical Dependabot alerts in {{repo}}: {{get-alerts.total_count}} open'
description: 'Repository: {{repo}}
Open critical vulnerabilities: {{get-alerts.total_count}}
Review: https://github.com/{{repo}}/security/dependabot'
consumes:
- type: http
namespace: github-sec
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: dependabot-alerts
path: /repos/{{repo}}/dependabot/alerts
inputParameters:
- name: repo
in: path
- name: severity
in: query
- name: state
in: query
operations:
- name: list-dependabot-alerts
method: GET
- type: http
namespace: jira-sec
baseUri: https://generalmills.atlassian.net/rest/api/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 employee time off balances from Workday.
naftiko: '0.5'
info:
label: Workday Time Off Balance Lookup
description: Retrieves employee time off balances from Workday.
tags:
- hr
- workforce
- workday
- time-off
capability:
exposes:
- type: mcp
namespace: hr-time-mgmt
port: 8080
tools:
- name: get-time-off
description: Look up time off balances in Workday.
inputParameters:
- name: employee_id
type: string
description: Workday employee ID.
call: workday.get-time-off
with:
worker_id: '{{employee_id}}'
outputParameters:
- name: vacation
type: string
mapping: $.balance.vacation
- name: sick
type: string
mapping: $.balance.sick
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: /generalmills/workers
operations:
- name: get-worker
method: GET
Monitors co-manufacturer production by pulling Snowflake output data, comparing against SAP planned orders, and posting status to Teams.
naftiko: '0.5'
info:
label: Co-Manufacturer Production Monitoring
description: Monitors co-manufacturer production by pulling Snowflake output data, comparing against SAP planned orders, and posting status to Teams.
tags:
- manufacturing
- supply-chain
- snowflake
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: co-mfg
port: 8080
tools:
- name: monitor-co-mfg
description: Monitor co-manufacturer production output against plans.
inputParameters:
- name: co_mfg_id
type: string
description: Co-manufacturer identifier.
- name: period
type: string
description: Production period.
steps:
- name: get-output
type: call
call: snowflake.execute-query
with:
warehouse: MFG_WH
query: SELECT sku, actual_units, planned_units FROM co_mfg_output WHERE mfg_id='{{co_mfg_id}}' AND period='{{period}}'
- name: get-orders
type: call
call: sap.get-orders
with:
supplier: '{{co_mfg_id}}'
period: '{{period}}'
- name: post-status
type: call
call: msteams.send-message
with:
channel_id: co-manufacturing
text: 'Co-mfg {{co_mfg_id}} ({{period}}): Actual {{get-output.total_units}} vs planned {{get-orders.planned_units}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://generalmills.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: sap
baseUri: https://generalmills-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: /data
operations:
- name: get-orders
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/channels/messages
operations:
- name: send-message
method: POST
Fetches all open Jira issues in the current sprint for a General Mills engineering project and posts a backlog status summary to the engineering Microsoft Teams channel.
naftiko: '0.5'
info:
label: Jira Sprint Backlog Health Digest
description: Fetches all open Jira issues in the current sprint for a General Mills engineering project and posts a backlog status summary to the engineering Microsoft Teams channel.
tags:
- devops
- jira
- microsoft-teams
- reporting
- engineering
capability:
exposes:
- type: mcp
namespace: devops-reporting
port: 8080
tools:
- name: digest-sprint-backlog
description: Given a Jira project key and Teams channel, query open sprint issues and post a backlog health summary. Use for daily stand-up prep or sprint review briefings at General Mills.
inputParameters:
- name: project_key
in: body
type: string
description: The Jira project key (e.g., TECH, GMILS).
- name: 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-sprint.search-issues
with:
jql: project={{project_key}} AND sprint in openSprints() ORDER BY status ASC
- name: post-digest
type: call
call: msteams-sprint.send-message
with:
channel_id: '{{channel_id}}'
text: 'Sprint Backlog ({{project_key}}): {{get-issues.total}} open — To Do: {{get-issues.todo_count}}, In Progress: {{get-issues.inprogress_count}}, In Review: {{get-issues.review_count}}.'
consumes:
- type: http
namespace: jira-sprint
baseUri: https://generalmills.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issue-search
path: /search
inputParameters:
- name: jql
in: query
operations:
- name: search-issues
method: GET
- type: http
namespace: msteams-sprint
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 ServiceNow change request for a planned General Mills IT or infrastructure change with risk-based routing.
naftiko: '0.5'
info:
label: ServiceNow Change Request Creation
description: Creates a ServiceNow change request for a planned General Mills IT or infrastructure change with risk-based routing.
tags:
- itsm
- change-management
- servicenow
capability:
exposes:
- type: mcp
namespace: change-mgmt
port: 8080
tools:
- name: create-change-request
description: Given change description, risk level, and implementation window, create a ServiceNow change request. Use when planning IT, application, or infrastructure changes in the General Mills environment.
inputParameters:
- name: short_description
in: body
type: string
description: Brief description of the change.
- name: risk
in: body
type: string
description: 'Risk level: low, medium, or high.'
- name: start_date
in: body
type: string
description: Planned implementation start in ISO 8601 format.
- name: end_date
in: body
type: string
description: Planned implementation end in ISO 8601 format.
call: servicenow-chg.create-change
with:
short_description: '{{short_description}}'
risk: '{{risk}}'
start_date: '{{start_date}}'
end_date: '{{end_date}}'
outputParameters:
- name: change_number
type: string
mapping: $.result.number
- name: state
type: string
mapping: $.result.state
consumes:
- type: http
namespace: servicenow-chg
baseUri: https://generalmills.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
Creates a new SAP purchase order for a General Mills procurement request, links it to the appropriate cost center, and notifies the requester via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Purchase Order Creation
description: Creates a new SAP purchase order for a General Mills procurement request, links it to the appropriate cost center, and notifies the requester via Microsoft Teams.
tags:
- finance
- procurement
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: procurement-ops
port: 8080
tools:
- name: create-purchase-order
description: Given supplier ID, cost center, item description, and amount, create a SAP S/4HANA purchase order and send a confirmation to the requester via Microsoft Teams. Use when fulfilling General Mills procurement requests.
inputParameters:
- name: supplier_id
in: body
type: string
description: The SAP vendor/supplier number.
- name: cost_center
in: body
type: string
description: The SAP cost center to charge the purchase to.
- name: item_description
in: body
type: string
description: Description of the goods or services being purchased.
- name: amount
in: body
type: number
description: Total purchase order value.
- name: requester_upn
in: body
type: string
description: Microsoft Teams UPN of the procurement requester.
steps:
- name: create-po
type: call
call: sap-create-po.create-purchase-order
with:
supplier_id: '{{supplier_id}}'
cost_center: '{{cost_center}}'
item_description: '{{item_description}}'
amount: '{{amount}}'
- name: notify-requester
type: call
call: msteams-procure.send-message
with:
recipient_upn: '{{requester_upn}}'
text: 'Purchase order {{create-po.po_number}} created for ${{amount}} against cost center {{cost_center}}. Status: {{create-po.status}}.'
consumes:
- type: http
namespace: sap-create-po
baseUri: https://generalmills-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: msteams-procure
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: chats
path: /chats
operations:
- name: send-message
method: POST
Triggers a Power BI dataset refresh and posts a dashboard link to the General Mills executive leadership Microsoft Teams channel before leadership briefings.
naftiko: '0.5'
info:
label: Power BI Executive Reporting Digest
description: Triggers a Power BI dataset refresh and posts a dashboard link to the General Mills executive leadership Microsoft Teams channel before leadership briefings.
tags:
- reporting
- power-bi
- microsoft-teams
- executive
capability:
exposes:
- type: mcp
namespace: exec-reporting
port: 8080
tools:
- name: publish-exec-dashboard
description: Given Power BI workspace and dataset IDs and a dashboard URL, trigger a refresh and post the dashboard link to the executive Teams channel. Use before weekly leadership briefings or board reporting cycles.
inputParameters:
- name: workspace_id
in: body
type: string
description: The Power BI workspace ID.
- name: dataset_id
in: body
type: string
description: The Power BI dataset ID to refresh.
- name: dashboard_url
in: body
type: string
description: The Power BI dashboard URL to share with leadership.
steps:
- name: refresh-dataset
type: call
call: powerbi-exec.refresh-dataset
with:
workspace_id: '{{workspace_id}}'
dataset_id: '{{dataset_id}}'
- name: post-link
type: call
call: msteams-exec.send-message
with:
channel_id: $secrets.teams_exec_channel_id
text: 'Executive dashboard refreshed and ready for review: {{dashboard_url}} (Request ID: {{refresh-dataset.requestId}})'
consumes:
- type: http
namespace: powerbi-exec
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-exec
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 Azure Cost Management for General Mills subscription spend anomalies and posts an alert to the FinOps Microsoft Teams channel when thresholds are exceeded.
naftiko: '0.5'
info:
label: Azure Cost Anomaly Alert Handler
description: Queries Azure Cost Management for General Mills subscription spend anomalies and posts an alert to the FinOps Microsoft Teams channel when thresholds are exceeded.
tags:
- cloud
- finops
- azure
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: cloud-finops
port: 8080
tools:
- name: handle-cost-anomaly
description: Given an Azure subscription ID and spend threshold, query Azure Cost Management and post an alert to the FinOps Teams channel if the threshold is exceeded. Use when responding to Azure cost anomaly notifications.
inputParameters:
- name: subscription_id
in: body
type: string
description: The Azure subscription ID to audit.
- name: threshold_usd
in: body
type: number
description: Spend threshold in USD; alert fires when current spend exceeds this.
steps:
- name: get-spend
type: call
call: azure-cost.query-usage
with:
subscription_id: '{{subscription_id}}'
- name: alert-finops
type: call
call: msteams-finops.send-message
with:
channel_id: $secrets.teams_finops_channel_id
text: Azure Cost Alert — Subscription {{subscription_id}} at {{get-spend.total_cost}} {{get-spend.currency}} has crossed the ${{threshold_usd}} threshold. Review the billing dashboard.
consumes:
- type: http
namespace: azure-cost
baseUri: https://management.azure.com/subscriptions
authentication:
type: bearer
token: $secrets.azure_management_token
resources:
- name: cost-query
path: /{{subscription_id}}/providers/Microsoft.CostManagement/query
inputParameters:
- name: subscription_id
in: path
operations:
- name: query-usage
method: POST
- type: http
namespace: msteams-finops
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
Lists members of privileged Azure AD groups for General Mills quarterly access certifications and writes results to a SharePoint audit list.
naftiko: '0.5'
info:
label: Azure AD Privileged Access Review
description: Lists members of privileged Azure AD groups for General Mills quarterly access certifications and writes results to a SharePoint audit list.
tags:
- identity
- security
- azure-ad
- access-review
capability:
exposes:
- type: mcp
namespace: access-review
port: 8080
tools:
- name: run-access-review
description: Given an Azure AD group ID and SharePoint site and list IDs, retrieve all group members and write them to the SharePoint access review list. Use quarterly for privileged access certification at General Mills.
inputParameters:
- name: group_id
in: body
type: string
description: The Azure AD group ID to audit.
- name: sharepoint_site_id
in: body
type: string
description: The SharePoint site ID for audit records.
- name: sharepoint_list_id
in: body
type: string
description: The SharePoint list ID for the review entries.
steps:
- name: list-members
type: call
call: azure-ad-review.list-group-members
with:
group_id: '{{group_id}}'
- name: write-audit-record
type: call
call: sharepoint-audit.create-list-item
with:
site_id: '{{sharepoint_site_id}}'
list_id: '{{sharepoint_list_id}}'
members: '{{list-members.value}}'
consumes:
- type: http
namespace: azure-ad-review
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.azure_ad_token
resources:
- name: group-members
path: /groups/{{group_id}}/members
inputParameters:
- name: group_id
in: path
operations:
- name: list-group-members
method: GET
- type: http
namespace: sharepoint-audit
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: list-items
path: /sites/{{site_id}}/lists/{{list_id}}/items
inputParameters:
- name: site_id
in: path
- name: list_id
in: path
operations:
- name: create-list-item
method: POST
Looks up a General Mills SAP S/4HANA purchase order by number and returns header status, vendor, total value, and currency.
naftiko: '0.5'
info:
label: SAP S/4HANA Purchase Order Lookup
description: Looks up a General Mills SAP S/4HANA purchase order by number and returns header status, vendor, total value, and currency.
tags:
- finance
- erp
- sap
- procurement
capability:
exposes:
- type: mcp
namespace: erp-procurement
port: 8080
tools:
- name: get-purchase-order
description: Given a SAP PO number, return status, vendor name, total value, and currency. Use when auditing procurement spend, resolving supplier invoicing queries, or preparing for financial close.
inputParameters:
- name: po_number
in: body
type: string
description: The SAP S/4HANA purchase order number.
call: sap-s4.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: number
mapping: $.d.TotalAmount
- name: currency
type: string
mapping: $.d.TransactionCurrency
consumes:
- type: http
namespace: sap-s4
baseUri: https://generalmills-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
When a GitHub Actions workflow fails on the main branch, creates a Jira bug and posts an alert to the engineering Microsoft Teams channel.
naftiko: '0.5'
info:
label: GitHub Actions CI Failure Handler
description: When a GitHub Actions workflow fails on the main branch, creates a Jira bug and posts an alert to the engineering Microsoft Teams channel.
tags:
- devops
- cicd
- github
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: devops-cicd
port: 8080
tools:
- name: handle-pipeline-failure
description: Given a GitHub Actions failure event, create a Jira Bug and post an alert to the engineering Teams channel. Use when a protected-branch workflow fails at General Mills.
inputParameters:
- name: repo
in: body
type: string
description: The GitHub repository in owner/repo format.
- name: workflow_name
in: body
type: string
description: The name of the failed GitHub Actions workflow.
- name: run_id
in: body
type: string
description: The GitHub Actions run ID.
- name: branch
in: body
type: string
description: The branch the workflow ran on.
- name: run_url
in: body
type: string
description: Direct URL to the failed workflow run.
steps:
- name: create-jira-bug
type: call
call: jira.create-issue
with:
project_key: ENG
issuetype: Bug
summary: '[CI] {{repo}} / {{branch}} — {{workflow_name}} failed'
description: 'Run {{run_id}} failed on {{branch}}.
Workflow: {{workflow_name}}
URL: {{run_url}}'
- name: notify-engineering
type: call
call: msteams-eng.send-message
with:
channel_id: $secrets.teams_engineering_channel_id
text: 'CI Failure: {{repo}} ({{branch}}) — {{workflow_name}} | Jira: {{create-jira-bug.key}} | Run: {{run_url}}'
consumes:
- type: http
namespace: jira
baseUri: https://generalmills.atlassian.net/rest/api/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-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: send-message
method: POST
Fetches open Salesforce opportunities above a threshold for a General Mills sales region and posts a pipeline summary to the sales Microsoft Teams channel.
naftiko: '0.5'
info:
label: Salesforce Opportunity Pipeline Digest
description: Fetches open Salesforce opportunities above a threshold for a General Mills sales region and posts a pipeline summary to the sales Microsoft Teams channel.
tags:
- crm
- sales
- salesforce
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: crm-pipeline
port: 8080
tools:
- name: digest-opportunity-pipeline
description: Given a sales region and minimum deal value, query Salesforce for open opportunities and post a pipeline summary to the sales Teams channel. Use for weekly pipeline reviews and sales leadership briefings.
inputParameters:
- name: region
in: body
type: string
description: Sales region to filter opportunities (e.g., North America, EMEA).
- name: min_amount
in: body
type: number
description: Minimum opportunity value in USD to include.
steps:
- name: query-pipeline
type: call
call: salesforce-pipeline.query-opportunities
with:
region: '{{region}}'
min_amount: '{{min_amount}}'
- name: post-summary
type: call
call: msteams-pipeline.send-message
with:
channel_id: $secrets.teams_sales_channel_id
text: 'Sales Pipeline ({{region}}, >${{min_amount}}): {{query-pipeline.total_count}} opportunities totaling ${{query-pipeline.total_value}}.'
consumes:
- type: http
namespace: salesforce-pipeline
baseUri: https://generalmills.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: msteams-pipeline
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
Returns approval status and date coverage for a General Mills employee time-off request from Workday.
naftiko: '0.5'
info:
label: Workday Time-Off Request Status Lookup
description: Returns approval status and date coverage for a General Mills employee time-off request from Workday.
tags:
- hr
- workday
- time-off
capability:
exposes:
- type: mcp
namespace: hr-time
port: 8080
tools:
- name: get-time-off-request
description: Given a Workday worker ID and time-off request ID, return current approval status and covered dates. Use when employees or managers need to verify leave approval status.
inputParameters:
- name: worker_id
in: body
type: string
description: The Workday worker ID of the employee.
- name: request_id
in: body
type: string
description: The Workday time-off request ID.
call: workday-pto.get-time-off-request
with:
worker_id: '{{worker_id}}'
request_id: '{{request_id}}'
outputParameters:
- name: status
type: string
mapping: $.data.overallStatus
- name: start_date
type: string
mapping: $.data.startDate
- name: end_date
type: string
mapping: $.data.endDate
consumes:
- type: http
namespace: workday-pto
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: time-off-requests
path: /generalmills/workers/{{worker_id}}/timeOffRequests/{{request_id}}
inputParameters:
- name: worker_id
in: path
- name: request_id
in: path
operations:
- name: get-time-off-request
method: GET
When a Salesforce opportunity closes as Closed-Won, opens a ServiceNow customer onboarding ticket and notifies the account owner via Microsoft Teams.
naftiko: '0.5'
info:
label: Salesforce Customer Onboarding Trigger
description: When a Salesforce opportunity closes as Closed-Won, opens a ServiceNow customer onboarding ticket and notifies the account owner via Microsoft Teams.
tags:
- crm
- sales
- salesforce
- servicenow
- customer-onboarding
capability:
exposes:
- type: mcp
namespace: customer-onboarding
port: 8080
tools:
- name: trigger-customer-onboarding
description: Given a Salesforce opportunity ID, retrieve account details, open a ServiceNow onboarding ticket, and notify the account owner via Teams. Use when a new General Mills retail or food service customer deal is closed.
inputParameters:
- name: opportunity_id
in: body
type: string
description: The Salesforce opportunity ID that was closed-won.
steps:
- name: get-opportunity
type: call
call: salesforce-won.get-opportunity
with:
opportunity_id: '{{opportunity_id}}'
- name: open-onboard-ticket
type: call
call: servicenow-won.create-incident
with:
category: customer_onboarding
short_description: 'New customer onboarding: {{get-opportunity.account_name}}'
description: Opportunity {{opportunity_id}}, value ${{get-opportunity.amount}}, closed {{get-opportunity.close_date}}
- name: notify-owner
type: call
call: msteams-won.send-message
with:
recipient_upn: '{{get-opportunity.owner_email}}'
text: 'Opportunity {{opportunity_id}} ({{get-opportunity.account_name}}) is Closed-Won! Onboarding ticket: {{open-onboard-ticket.number}}. Implementation begins.'
consumes:
- type: http
namespace: salesforce-won
baseUri: https://generalmills.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: servicenow-won
baseUri: https://generalmills.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-won
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: chats
path: /chats
operations:
- name: send-message
method: POST
Submits a supplier invoice to SAP S/4HANA accounts payable, links it to the PO, and notifies the approving manager via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Supplier Invoice Submission
description: Submits a supplier invoice to SAP S/4HANA accounts payable, links it to the PO, and notifies the approving manager via Microsoft Teams.
tags:
- finance
- accounts-payable
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ap-processing
port: 8080
tools:
- name: submit-supplier-invoice
description: Given invoice details and a linked SAP PO number, create the invoice record in SAP S/4HANA and notify the finance manager in Microsoft Teams for approval. Use during General Mills accounts-payable processing.
inputParameters:
- name: po_number
in: body
type: string
description: The SAP PO number this invoice is billed against.
- name: invoice_number
in: body
type: string
description: The supplier invoice number.
- name: amount
in: body
type: number
description: Invoice total in the PO currency.
- name: approver_upn
in: body
type: string
description: Microsoft Teams UPN of the finance approver.
steps:
- name: create-invoice
type: call
call: sap-ap.create-supplier-invoice
with:
po_number: '{{po_number}}'
invoice_number: '{{invoice_number}}'
amount: '{{amount}}'
- name: notify-approver
type: call
call: msteams-ap.send-message
with:
recipient_upn: '{{approver_upn}}'
text: 'Invoice {{invoice_number}} for SAP PO {{po_number}} (${{amount}}) has been submitted. Invoice ID: {{create-invoice.invoice_id}}. Please review and approve in SAP.'
consumes:
- type: http
namespace: sap-ap
baseUri: https://generalmills-s4.sap.com/sap/opu/odata/sap/API_SUPPLIERINVOICE_PROCESS_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: supplier-invoices
path: /A_SupplierInvoice
operations:
- name: create-supplier-invoice
method: POST
- type: http
namespace: msteams-ap
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: chats
path: /chats
operations:
- name: send-message
method: POST
Triggers an on-demand Power BI dataset refresh for General Mills consumer brand performance dashboards used by the marketing and finance teams.
naftiko: '0.5'
info:
label: Power BI Consumer Brand Dashboard Refresh
description: Triggers an on-demand Power BI dataset refresh for General Mills consumer brand performance dashboards used by the marketing and finance teams.
tags:
- data
- analytics
- power-bi
- marketing
- reporting
capability:
exposes:
- type: mcp
namespace: brand-analytics
port: 8080
tools:
- name: refresh-brand-dashboard
description: Given a Power BI workspace ID and dataset ID, trigger an on-demand dataset refresh. Use when consumer brand or retail sales data must be reflected in dashboards outside the scheduled refresh window.
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 refresh.
call: powerbi.refresh-dataset
with:
workspace_id: '{{workspace_id}}'
dataset_id: '{{dataset_id}}'
outputParameters:
- name: request_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: 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
Updates product pricing in SAP, syncs to BigCommerce storefront, logs changes in Snowflake audit trail, and notifies sales teams via Microsoft Teams.
naftiko: '0.5'
info:
label: Global Pricing Update Orchestrator
description: Updates product pricing in SAP, syncs to BigCommerce storefront, logs changes in Snowflake audit trail, and notifies sales teams via Microsoft Teams.
tags:
- pricing
- sap
- bigcommerce
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: pricing-update
port: 8080
tools:
- name: update-pricing
description: Orchestrate global pricing update across SAP, BigCommerce, Snowflake, and Teams.
inputParameters:
- name: product_sku
in: body
type: string
description: The product SKU.
- name: new_price
in: body
type: string
description: The new price.
- name: region
in: body
type: string
description: The pricing region.
steps:
- name: update-sap-price
type: call
call: sap.update-pricing
with:
sku: '{{product_sku}}'
price: '{{new_price}}'
region: '{{region}}'
- name: sync-storefront
type: call
call: bigcommerce.update-product-price
with:
sku: '{{product_sku}}'
price: '{{new_price}}'
- name: log-change
type: call
call: snowflake.insert-audit
with:
table: PRICING_AUDIT
sku: '{{product_sku}}'
new_price: '{{new_price}}'
region: '{{region}}'
- name: notify-sales
type: call
call: msteams.send-message
with:
channel_id: sales-team
text: 'Pricing updated for {{product_sku}} in {{region}}: ${{new_price}}'
consumes:
- type: http
namespace: sap
baseUri: https://hasbro-s4.sap.com/sap/opu/odata/sap/ZPRICING_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: pricing
path: /PricingSet('{{sku}}')
inputParameters:
- name: sku
in: path
operations:
- name: update-pricing
method: PATCH
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/hasbro/v3
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: products
path: /catalog/products
operations:
- name: update-product-price
method: PUT
- type: http
namespace: snowflake
baseUri: https://hasbro.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: insert-audit
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/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Creates a Facebook ad campaign, syncs audience from Salesforce, uploads creative assets from Box, and tracks performance in Google Sheets.
naftiko: '0.5'
info:
label: Facebook Ad Campaign Orchestrator
description: Creates a Facebook ad campaign, syncs audience from Salesforce, uploads creative assets from Box, and tracks performance in Google Sheets.
tags:
- advertising
- facebook
- salesforce
- box
- google-sheets
capability:
exposes:
- type: mcp
namespace: fb-ad-campaign
port: 8080
tools:
- name: launch-ad-campaign
description: Orchestrate Facebook ad campaign across Facebook, Salesforce, Box, and Google Sheets.
inputParameters:
- name: campaign_name
in: body
type: string
description: The campaign name.
- name: budget
in: body
type: string
description: The daily budget.
steps:
- name: create-campaign
type: call
call: facebook.create-campaign
with:
name: '{{campaign_name}}'
daily_budget: '{{budget}}'
objective: BRAND_AWARENESS
- name: sync-audience
type: call
call: salesforce.get-audience
with:
segment: toy-buyers
- name: upload-creatives
type: call
call: box.get-folder-items
with:
folder_id: ad-creatives
- name: setup-tracking
type: call
call: gsheets.create-sheet
with:
spreadsheet_id: ad-performance
title: '{{campaign_name}}'
consumes:
- type: http
namespace: facebook
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.facebook_token
resources:
- name: campaigns
path: /act_hasbro/campaigns
operations:
- name: create-campaign
method: POST
- type: http
namespace: salesforce
baseUri: https://hasbro.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: audiences
path: /sobjects/Campaign
operations:
- name: get-audience
method: GET
- type: http
namespace: box
baseUri: https://api.box.com/2.0
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: folders
path: /folders/{{folder_id}}/items
inputParameters:
- name: folder_id
in: path
operations:
- name: get-folder-items
method: GET
- type: http
namespace: gsheets
baseUri: https://sheets.googleapis.com/v4/spreadsheets
authentication:
type: bearer
token: $secrets.google_token
resources:
- name: sheets
path: /{{spreadsheet_id}}/sheets
inputParameters:
- name: spreadsheet_id
in: path
operations:
- name: create-sheet
method: POST
Sends a formatted email via Microsoft Outlook.
naftiko: '0.5'
info:
label: Microsoft Outlook Email Sender
description: Sends a formatted email via Microsoft Outlook.
tags:
- communications
- email
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: email-sending
port: 8080
tools:
- name: send-email
description: Send an email via Microsoft Outlook.
inputParameters:
- name: to_address
in: body
type: string
description: Recipient email.
- name: subject
in: body
type: string
description: Email subject.
- name: body_text
in: body
type: string
description: Email body.
call: outlook.send-mail
with:
to: '{{to_address}}'
subject: '{{subject}}'
body: '{{body_text}}'
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
Triggers a Unity Cloud Build for a Hasbro digital game, waits for completion, uploads the artifact to Amazon S3, and notifies the game dev team in Microsoft Teams.
naftiko: '0.5'
info:
label: Unity Game Build Pipeline
description: Triggers a Unity Cloud Build for a Hasbro digital game, waits for completion, uploads the artifact to Amazon S3, and notifies the game dev team in Microsoft Teams.
tags:
- gaming
- development
- unity
- amazon-s3
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: game-builds
port: 8080
tools:
- name: trigger-game-build
description: Trigger a Unity Cloud Build and distribute the artifact.
inputParameters:
- name: project_id
in: body
type: string
description: The Unity Cloud project ID.
- name: build_target
in: body
type: string
description: The build target (e.g. ios, android, webgl).
steps:
- name: start-build
type: call
call: unity.start-build
with:
project_id: '{{project_id}}'
build_target: '{{build_target}}'
- name: upload-artifact
type: call
call: s3.put-object
with:
bucket: hasbro-game-builds
key: '{{project_id}}/{{build_target}}/{{start-build.build_number}}.zip'
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: game-dev
text: 'Unity build #{{start-build.build_number}} for {{project_id}} ({{build_target}}) complete. S3: s3://hasbro-game-builds/{{project_id}}/{{build_target}}/{{start-build.build_number}}.zip'
consumes:
- type: http
namespace: unity
baseUri: https://build-api.cloud.unity3d.com/api/v1
authentication:
type: bearer
token: $secrets.unity_token
resources:
- name: builds
path: /orgs/hasbro/projects/{{project_id}}/buildtargets/{{build_target}}/builds
inputParameters:
- name: project_id
in: path
- name: build_target
in: path
operations:
- name: start-build
method: POST
- type: http
namespace: s3
baseUri: https://s3.amazonaws.com
authentication:
type: aws-sigv4
accessKeyId: $secrets.aws_access_key
secretAccessKey: $secrets.aws_secret_key
resources:
- name: objects
path: /{{bucket}}/{{key}}
inputParameters:
- name: bucket
in: path
- name: key
in: path
operations:
- name: put-object
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/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
On trade show registration, creates a Salesforce campaign, schedules meetings via Zoom, uploads booth materials to SharePoint, and sends invitations via MailChimp.
naftiko: '0.5'
info:
label: Trade Show Event Coordinator
description: On trade show registration, creates a Salesforce campaign, schedules meetings via Zoom, uploads booth materials to SharePoint, and sends invitations via MailChimp.
tags:
- events
- salesforce
- zoom
- sharepoint
- mailchimp
capability:
exposes:
- type: mcp
namespace: trade-show
port: 8080
tools:
- name: coordinate-trade-show
description: Orchestrate trade show coordination across Salesforce, Zoom, SharePoint, and MailChimp.
inputParameters:
- name: event_name
in: body
type: string
description: The trade show event name.
- name: event_date
in: body
type: string
description: The event date.
steps:
- name: create-campaign
type: call
call: salesforce.create-campaign
with:
name: '{{event_name}}'
type: Trade Show
start_date: '{{event_date}}'
- name: schedule-meetings
type: call
call: zoom.create-meeting
with:
topic: '{{event_name}} - Buyer Meetings'
start_time: '{{event_date}}T09:00:00Z'
- name: upload-materials
type: call
call: sharepoint.upload-file
with:
site: marketing
folder: TradeShows/{{event_name}}
- name: send-invitations
type: call
call: mailchimp.send-campaign
with:
subject: Join Hasbro at {{event_name}}
list_id: trade-show-contacts
consumes:
- type: http
namespace: salesforce
baseUri: https://hasbro.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: campaigns
path: /sobjects/Campaign
operations:
- name: create-campaign
method: POST
- 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
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: files
path: /{{site}}/drive/root:/{{folder}}
inputParameters:
- name: site
in: path
- name: folder
in: path
operations:
- name: upload-file
method: PUT
- type: http
namespace: mailchimp
baseUri: https://us1.api.mailchimp.com/3.0
authentication:
type: bearer
token: $secrets.mailchimp_token
resources:
- name: campaigns
path: /campaigns
operations:
- name: send-campaign
method: POST
Retrieves a product from the SAP product catalog by SKU, returning product name, category, MSRP, availability status, and age rating.
naftiko: '0.5'
info:
label: Product Catalog Lookup
description: Retrieves a product from the SAP product catalog by SKU, returning product name, category, MSRP, availability status, and age rating.
tags:
- product
- catalog
- sap
capability:
exposes:
- type: mcp
namespace: product-catalog
port: 8080
tools:
- name: get-product
description: Look up a Hasbro product by SKU from SAP.
inputParameters:
- name: product_sku
in: body
type: string
description: The product SKU code.
call: sap.get-product
with:
sku: '{{product_sku}}'
outputParameters:
- name: product_name
type: string
mapping: $.d.ProductName
- name: category
type: string
mapping: $.d.Category
- name: msrp
type: string
mapping: $.d.MSRP
- name: availability
type: string
mapping: $.d.AvailabilityStatus
- name: age_rating
type: string
mapping: $.d.AgeRating
consumes:
- type: http
namespace: sap
baseUri: https://hasbro-s4.sap.com/sap/opu/odata/sap/ZPR_PRODUCT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: products
path: /ProductSet('{{sku}}')
inputParameters:
- name: sku
in: path
operations:
- name: get-product
method: GET
Retrieves product details from SAP, creates a photography task in Asana, uploads assets to Google Drive, and publishes to the BigCommerce product page.
naftiko: '0.5'
info:
label: Product Photography Workflow
description: Retrieves product details from SAP, creates a photography task in Asana, uploads assets to Google Drive, and publishes to the BigCommerce product page.
tags:
- creative
- sap
- asana
- google-drive
- bigcommerce
capability:
exposes:
- type: mcp
namespace: product-photography
port: 8080
tools:
- name: manage-photography
description: Orchestrate product photography workflow across SAP, Asana, Google Drive, and BigCommerce.
inputParameters:
- name: product_sku
in: body
type: string
description: The product SKU.
steps:
- name: get-product
type: call
call: sap.get-product
with:
sku: '{{product_sku}}'
- name: create-task
type: call
call: asana.create-task
with:
name: 'Photography: {{get-product.ProductName}}'
project: product-photography
- name: create-folder
type: call
call: gdrive.create-folder
with:
name: '{{product_sku}}_photos'
parent: product-assets
- name: update-listing
type: call
call: bigcommerce.update-product-images
with:
sku: '{{product_sku}}'
folder_url: '{{create-folder.webViewLink}}'
consumes:
- type: http
namespace: sap
baseUri: https://hasbro-s4.sap.com/sap/opu/odata/sap/ZPR_PRODUCT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: products
path: /ProductSet('{{sku}}')
inputParameters:
- name: sku
in: path
operations:
- name: get-product
method: GET
- type: http
namespace: asana
baseUri: https://app.asana.com/api/1.0
authentication:
type: bearer
token: $secrets.asana_token
resources:
- name: tasks
path: /tasks
operations:
- name: create-task
method: POST
- type: http
namespace: gdrive
baseUri: https://www.googleapis.com/drive/v3
authentication:
type: bearer
token: $secrets.google_token
resources:
- name: files
path: /files
operations:
- name: create-folder
method: POST
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/hasbro/v3
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: products
path: /catalog/products
operations:
- name: update-product-images
method: PUT
On employee departure, deactivates the Workday profile, revokes access in Azure Active Directory, creates an IT ticket in ServiceNow, and archives documents in Box.
naftiko: '0.5'
info:
label: Employee Offboarding Orchestrator
description: On employee departure, deactivates the Workday profile, revokes access in Azure Active Directory, creates an IT ticket in ServiceNow, and archives documents in Box.
tags:
- hr
- workday
- azure-active-directory
- servicenow
- box
capability:
exposes:
- type: mcp
namespace: employee-offboarding
port: 8080
tools:
- name: offboard-employee
description: Orchestrate employee offboarding across Workday, Azure AD, ServiceNow, and Box.
inputParameters:
- name: employee_id
in: body
type: string
description: The employee ID.
- name: last_day
in: body
type: string
description: The last working day.
steps:
- name: deactivate-workday
type: call
call: workday.deactivate-worker
with:
id: '{{employee_id}}'
termination_date: '{{last_day}}'
- name: revoke-access
type: call
call: azuread.disable-user
with:
employee_id: '{{employee_id}}'
- name: create-it-ticket
type: call
call: servicenow.create-request
with:
type: Offboarding
description: 'Offboard employee {{employee_id}}. Last day: {{last_day}}'
- name: archive-docs
type: call
call: box.move-folder
with:
source: employees/{{employee_id}}
destination: archived-employees/{{employee_id}}
consumes:
- type: http
namespace: workday
baseUri: https://wd5-impl-services1.workday.com/ccx/service/hasbro
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers
path: /Human_Resources/Workers/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: deactivate-worker
method: PATCH
- type: http
namespace: azuread
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: users
path: /users/{{employee_id}}
inputParameters:
- name: employee_id
in: path
operations:
- name: disable-user
method: PATCH
- type: http
namespace: servicenow
baseUri: https://hasbro.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: box
baseUri: https://api.box.com/2.0
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: folders
path: /folders/{{source}}
inputParameters:
- name: source
in: path
operations:
- name: move-folder
method: PUT
On safety recall initiation, creates a ServiceNow incident, notifies the product safety team via Slack, updates the SAP product status, and sends retailer notifications through Microsoft Outlook.
naftiko: '0.5'
info:
label: Toy Safety Recall Orchestrator
description: On safety recall initiation, creates a ServiceNow incident, notifies the product safety team via Slack, updates the SAP product status, and sends retailer notifications through Microsoft Outlook.
tags:
- safety
- servicenow
- slack
- sap
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: safety-recall
port: 8080
tools:
- name: initiate-recall
description: Orchestrate a toy safety recall across ServiceNow, Slack, SAP, and Outlook.
inputParameters:
- name: product_sku
in: body
type: string
description: The affected product SKU.
- name: recall_reason
in: body
type: string
description: The reason for the recall.
- name: severity
in: body
type: string
description: The severity level (low, medium, high, critical).
steps:
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Safety Recall: {{product_sku}} - {{recall_reason}}'
urgency: '{{severity}}'
category: Product Safety
- name: notify-safety-team
type: call
call: slack.post-message
with:
channel: product-safety
text: 'RECALL ALERT: {{product_sku}} - {{recall_reason}}. Severity: {{severity}}. Incident: {{create-incident.number}}'
- name: update-product-status
type: call
call: sap.update-product
with:
sku: '{{product_sku}}'
status: RECALLED
- name: notify-retailers
type: call
call: outlook.send-email
with:
to: retail-partners@hasbro.com
subject: 'Product Recall Notice: {{product_sku}}'
body: 'A recall has been initiated for {{product_sku}} due to {{recall_reason}}. Please remove from shelves immediately. Reference: {{create-incident.number}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://hasbro.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
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: sap
baseUri: https://hasbro-s4.sap.com/sap/opu/odata/sap/ZPR_PRODUCT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: products
path: /ProductSet('{{sku}}')
inputParameters:
- name: sku
in: path
operations:
- name: update-product
method: PATCH
- 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
Archives completed product assets from SharePoint to Box for long-term retention.
naftiko: '0.5'
info:
label: Box Asset Archive
description: Archives completed product assets from SharePoint to Box for long-term retention.
tags:
- document-management
- archival
- sharepoint
- box
capability:
exposes:
- type: mcp
namespace: asset-archival
port: 8080
tools:
- name: archive-to-box
description: Move a SharePoint asset to Box for archival.
inputParameters:
- name: site_id
in: body
type: string
description: SharePoint site ID.
- name: file_path
in: body
type: string
description: File path in SharePoint.
- name: box_folder_id
in: body
type: string
description: Target Box folder ID.
steps:
- name: get-file
type: call
call: sharepoint.get-file-content
with:
site_id: '{{site_id}}'
file_path: '{{file_path}}'
- name: upload-to-box
type: call
call: box.upload-file
with:
folder_id: '{{box_folder_id}}'
file_name: '{{file_path}}'
content: '{{get-file.content}}'
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-file-content
method: GET
- type: http
namespace: box
baseUri: https://upload.box.com/api/2.0
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: files
path: /files/content
operations:
- name: upload-file
method: POST
Pulls campaign performance data from Adobe Analytics, enriches with Salesforce campaign details, and publishes a summary to Confluence.
naftiko: '0.5'
info:
label: Marketing Campaign Performance Analyzer
description: Pulls campaign performance data from Adobe Analytics, enriches with Salesforce campaign details, and publishes a summary to Confluence.
tags:
- marketing
- analytics
- adobe-analytics
- salesforce
- confluence
capability:
exposes:
- type: mcp
namespace: campaign-analytics
port: 8080
tools:
- name: analyze-campaign
description: Analyze a marketing campaign by combining Adobe Analytics and Salesforce data.
inputParameters:
- name: campaign_id
in: body
type: string
description: The Salesforce campaign ID.
- name: report_suite_id
in: body
type: string
description: The Adobe Analytics report suite ID.
steps:
- name: get-sf-campaign
type: call
call: salesforce.get-campaign
with:
campaign_id: '{{campaign_id}}'
- name: get-analytics
type: call
call: adobe-analytics.get-report
with:
rsid: '{{report_suite_id}}'
campaign_code: '{{get-sf-campaign.Campaign_Code__c}}'
- name: publish-report
type: call
call: confluence.create-page
with:
space_key: MKT
title: 'Campaign Report: {{get-sf-campaign.Name}}'
body: 'Impressions: {{get-analytics.impressions}}. Clicks: {{get-analytics.clicks}}. Conversions: {{get-analytics.conversions}}. ROI: {{get-analytics.roi}}. SF Leads: {{get-sf-campaign.NumberOfLeads}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://hasbro.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: campaigns
path: /sobjects/Campaign/{{campaign_id}}
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-campaign
method: GET
- type: http
namespace: adobe-analytics
baseUri: https://analytics.adobe.io/api
authentication:
type: bearer
token: $secrets.adobe_analytics_token
resources:
- name: reports
path: /{{rsid}}/reports
inputParameters:
- name: rsid
in: path
operations:
- name: get-report
method: POST
- type: http
namespace: confluence
baseUri: https://hasbro.atlassian.net/wiki/api/v2
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_api_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Retrieves real-time inventory levels from SAP for a product SKU at a specified distribution center, returning quantity on hand, reserved, and available.
naftiko: '0.5'
info:
label: Retail Inventory Check
description: Retrieves real-time inventory levels from SAP for a product SKU at a specified distribution center, returning quantity on hand, reserved, and available.
tags:
- retail
- inventory
- sap
capability:
exposes:
- type: mcp
namespace: inventory-management
port: 8080
tools:
- name: check-inventory
description: Check inventory levels for a product at a distribution center.
inputParameters:
- name: product_sku
in: body
type: string
description: The product SKU.
- name: warehouse_code
in: body
type: string
description: The distribution center code.
call: sap.get-inventory
with:
sku: '{{product_sku}}'
warehouse: '{{warehouse_code}}'
outputParameters:
- name: on_hand
type: integer
mapping: $.d.QuantityOnHand
- name: reserved
type: integer
mapping: $.d.QuantityReserved
- name: available
type: integer
mapping: $.d.QuantityAvailable
consumes:
- type: http
namespace: sap
baseUri: https://hasbro-s4.sap.com/sap/opu/odata/sap/ZPR_INVENTORY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: inventory
path: /InventorySet(SKU='{{sku}}',Warehouse='{{warehouse}}')
inputParameters:
- name: sku
in: path
- name: warehouse
in: path
operations:
- name: get-inventory
method: GET
Pulls new product data from SAP, creates a MailChimp email campaign, and sends to the subscriber list.
naftiko: '0.5'
info:
label: MailChimp Product Newsletter
description: Pulls new product data from SAP, creates a MailChimp email campaign, and sends to the subscriber list.
tags:
- marketing
- newsletter
- mailchimp
- sap
capability:
exposes:
- type: mcp
namespace: product-newsletter
port: 8080
tools:
- name: send-product-newsletter
description: Create and send a product newsletter via MailChimp.
inputParameters:
- name: list_id
in: body
type: string
description: The MailChimp audience list ID.
- name: product_category
in: body
type: string
description: The product category to feature.
steps:
- name: get-new-products
type: call
call: sap.get-new-products
with:
category: '{{product_category}}'
- name: create-campaign
type: call
call: mailchimp.create-campaign
with:
list_id: '{{list_id}}'
subject: 'New from Hasbro: {{product_category}}'
body: 'Check out {{get-new-products.count}} new products in {{product_category}}! Featured: {{get-new-products.featured_name}} - {{get-new-products.featured_description}}.'
- name: send-campaign
type: call
call: mailchimp.send-campaign
with:
campaign_id: '{{create-campaign.id}}'
consumes:
- type: http
namespace: sap
baseUri: https://hasbro-s4.sap.com/sap/opu/odata/sap/ZPR_PRODUCT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: new-products
path: /NewProductSet?$filter=Category eq '{{category}}'
inputParameters:
- name: category
in: query
operations:
- name: get-new-products
method: GET
- type: http
namespace: mailchimp
baseUri: https://us1.api.mailchimp.com/3.0
authentication:
type: basic
username: anystring
password: $secrets.mailchimp_api_key
resources:
- name: campaigns
path: /campaigns
operations:
- name: create-campaign
method: POST
- name: campaign-actions
path: /campaigns/{{campaign_id}}/actions/send
inputParameters:
- name: campaign_id
in: path
operations:
- name: send-campaign
method: POST
Queries expiring contracts from Salesforce, creates renewal tasks in Jira, sends reminders via Microsoft Outlook, and logs in Google Sheets.
naftiko: '0.5'
info:
label: Contract Renewal Reminder Pipeline
description: Queries expiring contracts from Salesforce, creates renewal tasks in Jira, sends reminders via Microsoft Outlook, and logs in Google Sheets.
tags:
- legal
- salesforce
- jira
- microsoft-outlook
- google-sheets
capability:
exposes:
- type: mcp
namespace: contract-renewal
port: 8080
tools:
- name: process-renewals
description: Orchestrate contract renewal reminders across Salesforce, Jira, Outlook, and Google Sheets.
inputParameters:
- name: days_before_expiry
in: body
type: string
description: Days before expiry to trigger reminders.
steps:
- name: get-expiring
type: call
call: salesforce.query-contracts
with:
filter: expiring_within_days:{{days_before_expiry}}
- name: create-tasks
type: call
call: jira.create-issue
with:
project: LEGAL
summary: Contract Renewal Required
type: Task
- name: send-reminders
type: call
call: outlook.send-email
with:
to: legal-team@hasbro.com
subject: Contract Renewals Due Within {{days_before_expiry}} Days
body: '{{get-expiring.count}} contracts require renewal. Jira: {{create-tasks.key}}'
- name: log-renewals
type: call
call: gsheets.append-row
with:
spreadsheet_id: contract-tracker
values: '{{get-expiring.contracts}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://hasbro.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: contracts
path: /query?q=SELECT+Id,Name+FROM+Contract
operations:
- name: query-contracts
method: GET
- type: http
namespace: jira
baseUri: https://hasbro.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: 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
- type: http
namespace: gsheets
baseUri: https://sheets.googleapis.com/v4/spreadsheets
authentication:
type: bearer
token: $secrets.google_token
resources:
- name: values
path: /{{spreadsheet_id}}/values/Sheet1:append?valueInputOption=RAW
inputParameters:
- name: spreadsheet_id
in: path
operations:
- name: append-row
method: POST
Retrieves an employee benefits enrollment summary from Workday by employee ID, returning plan name, coverage level, and effective date.
naftiko: '0.5'
info:
label: Workday Benefits Enrollment Lookup
description: Retrieves an employee benefits enrollment summary from Workday by employee ID, returning plan name, coverage level, and effective date.
tags:
- hr
- workday
capability:
exposes:
- type: mcp
namespace: workday-benefits
port: 8080
tools:
- name: get-benefits
description: Look up employee benefits enrollment in Workday.
inputParameters:
- name: employee_id
in: body
type: string
description: The Workday employee ID.
call: workday.get-benefits
with:
id: '{{employee_id}}'
outputParameters:
- name: plan_name
type: string
mapping: $.Benefit_Plan
- name: coverage_level
type: string
mapping: $.Coverage_Level
consumes:
- type: http
namespace: workday
baseUri: https://wd5-impl-services1.workday.com/ccx/service/hasbro
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: benefits
path: /Benefits/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-benefits
method: GET
Uploads video to YouTube, creates a social post in HubSpot, updates content calendar in Airtable, and shares the link via Microsoft Teams.
naftiko: '0.5'
info:
label: YouTube Brand Content Pipeline
description: Uploads video to YouTube, creates a social post in HubSpot, updates content calendar in Airtable, and shares the link via Microsoft Teams.
tags:
- content
- youtube
- hubspot
- airtable
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: youtube-content
port: 8080
tools:
- name: publish-brand-video
description: Orchestrate YouTube brand content publishing across YouTube, HubSpot, Airtable, and Teams.
inputParameters:
- name: video_title
in: body
type: string
description: The video title.
- name: brand
in: body
type: string
description: The brand name.
steps:
- name: upload-video
type: call
call: youtube.upload-video
with:
title: '{{video_title}}'
category: Entertainment
- name: create-social
type: call
call: hubspot.create-social-post
with:
content: 'Watch now: {{video_title}} - {{upload-video.url}}'
campaign: '{{brand}}'
- name: update-calendar
type: call
call: airtable.create-record
with:
table: ContentCalendar
title: '{{video_title}}'
url: '{{upload-video.url}}'
status: Published
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: content-team
text: 'New {{brand}} video published: {{video_title}} - {{upload-video.url}}'
consumes:
- type: http
namespace: youtube
baseUri: https://www.googleapis.com/upload/youtube/v3
authentication:
type: bearer
token: $secrets.google_token
resources:
- name: videos
path: /videos?part=snippet,status
operations:
- name: upload-video
method: POST
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: social-posts
path: /broadcast/v1/broadcasts
operations:
- name: create-social-post
method: POST
- type: http
namespace: airtable
baseUri: https://api.airtable.com/v0/appHasbro
authentication:
type: bearer
token: $secrets.airtable_token
resources:
- name: records
path: /ContentCalendar
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/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves product safety test results from SAP, checks against compliance requirements, and creates a ServiceNow task if any test fails.
naftiko: '0.5'
info:
label: Toy Safety Compliance Checker
description: Retrieves product safety test results from SAP, checks against compliance requirements, and creates a ServiceNow task if any test fails.
tags:
- compliance
- safety
- sap
- servicenow
capability:
exposes:
- type: mcp
namespace: safety-compliance
port: 8080
tools:
- name: check-safety-compliance
description: Check product safety test results and flag failures.
inputParameters:
- name: product_sku
in: body
type: string
description: The product SKU to check.
steps:
- name: get-test-results
type: call
call: sap.get-safety-tests
with:
sku: '{{product_sku}}'
- name: create-task
type: call
call: servicenow.create-record
with:
table: u_compliance_tasks
short_description: 'Safety review: {{product_sku}} - {{get-test-results.failed_count}} failures'
description: 'Product {{product_sku}} has {{get-test-results.failed_count}} failed safety tests. Categories: {{get-test-results.failed_categories}}. Tested: {{get-test-results.test_date}}.'
assigned_group: Product_Safety_Team
consumes:
- type: http
namespace: sap
baseUri: https://hasbro-s4.sap.com/sap/opu/odata/sap/ZPR_SAFETY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: safety-tests
path: /SafetyTestSet('{{sku}}')
inputParameters:
- name: sku
in: path
operations:
- name: get-safety-tests
method: GET
- type: http
namespace: servicenow
baseUri: https://hasbro.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
Retrieves marketing content from SharePoint, translates via Azure Cognitive Services, uploads localized versions to Google Drive, and notifies regional teams via Microsoft Teams.
naftiko: '0.5'
info:
label: Content Localization Pipeline
description: Retrieves marketing content from SharePoint, translates via Azure Cognitive Services, uploads localized versions to Google Drive, and notifies regional teams via Microsoft Teams.
tags:
- localization
- sharepoint
- microsoft-azure
- google-drive
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: content-localization
port: 8080
tools:
- name: localize-content
description: Orchestrate content localization across SharePoint, Azure, Google Drive, and Teams.
inputParameters:
- name: document_id
in: body
type: string
description: The SharePoint document ID.
- name: target_language
in: body
type: string
description: The target language code.
steps:
- name: get-content
type: call
call: sharepoint.get-document
with:
id: '{{document_id}}'
- name: translate
type: call
call: azure-translate.translate-text
with:
text: '{{get-content.body}}'
to: '{{target_language}}'
- name: upload-localized
type: call
call: gdrive.upload-file
with:
folder: Localized/{{target_language}}
content: '{{translate.translated_text}}'
- name: notify-region
type: call
call: msteams.send-message
with:
channel_id: regional-marketing
text: 'Localized content ready for {{target_language}}: {{upload-localized.webViewLink}}'
consumes:
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites/hasbro
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: documents
path: /drive/items/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-document
method: GET
- type: http
namespace: azure-translate
baseUri: https://api.cognitive.microsofttranslator.com
authentication:
type: bearer
token: $secrets.azure_translate_key
resources:
- name: translate
path: /translate?api-version=3.0&to={{to}}
inputParameters:
- name: to
in: path
operations:
- name: translate-text
method: POST
- type: http
namespace: gdrive
baseUri: https://www.googleapis.com/upload/drive/v3
authentication:
type: bearer
token: $secrets.google_token
resources:
- name: files
path: /files?uploadType=multipart
operations:
- name: upload-file
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/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Enrolls customers in loyalty via Salesforce, creates welcome email in MailChimp, provisions points in Stripe, and tracks enrollment in Snowflake.
naftiko: '0.5'
info:
label: Customer Loyalty Program Pipeline
description: Enrolls customers in loyalty via Salesforce, creates welcome email in MailChimp, provisions points in Stripe, and tracks enrollment in Snowflake.
tags:
- loyalty
- salesforce
- mailchimp
- stripe
- snowflake
capability:
exposes:
- type: mcp
namespace: loyalty-program
port: 8080
tools:
- name: enroll-loyalty
description: Orchestrate loyalty program enrollment across Salesforce, MailChimp, Stripe, and Snowflake.
inputParameters:
- name: customer_email
in: body
type: string
description: The customer email.
- name: tier
in: body
type: string
description: The loyalty tier.
steps:
- name: create-contact
type: call
call: salesforce.create-contact
with:
email: '{{customer_email}}'
loyalty_tier: '{{tier}}'
- name: send-welcome
type: call
call: mailchimp.send-automation
with:
workflow: loyalty-welcome
email: '{{customer_email}}'
- name: provision-points
type: call
call: stripe.create-customer
with:
email: '{{customer_email}}'
metadata: '{"loyalty_tier":"{{tier}}"}'
- name: log-enrollment
type: call
call: snowflake.insert-data
with:
table: LOYALTY_ENROLLMENTS
email: '{{customer_email}}'
tier: '{{tier}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://hasbro.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: contacts
path: /sobjects/Contact
operations:
- name: create-contact
method: POST
- type: http
namespace: mailchimp
baseUri: https://us1.api.mailchimp.com/3.0
authentication:
type: bearer
token: $secrets.mailchimp_token
resources:
- name: automations
path: /automations
operations:
- name: send-automation
method: POST
- type: http
namespace: stripe
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: customers
path: /customers
operations:
- name: create-customer
method: POST
- type: http
namespace: snowflake
baseUri: https://hasbro.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: insert-data
method: POST
Retrieves application performance metrics from New Relic by application ID, returning response time, error rate, and throughput.
naftiko: '0.5'
info:
label: New Relic Application Performance Lookup
description: Retrieves application performance metrics from New Relic by application ID, returning response time, error rate, and throughput.
tags:
- monitoring
- new-relic
capability:
exposes:
- type: mcp
namespace: newrelic-apm
port: 8080
tools:
- name: get-app-performance
description: Look up application performance metrics in New Relic.
inputParameters:
- name: app_id
in: body
type: string
description: The New Relic application ID.
call: newrelic.get-app
with:
id: '{{app_id}}'
outputParameters:
- name: response_time
type: string
mapping: $.application.application_summary.response_time
- name: error_rate
type: string
mapping: $.application.application_summary.error_rate
consumes:
- type: http
namespace: newrelic
baseUri: https://api.newrelic.com/v2
authentication:
type: bearer
token: $secrets.newrelic_api_key
resources:
- name: applications
path: /applications/{{id}}.json
inputParameters:
- name: id
in: path
operations:
- name: get-app
method: GET
Aggregates supplier delivery data from SAP, calculates scores in Snowflake, generates scorecards in Google Sheets, and distributes via Microsoft Outlook.
naftiko: '0.5'
info:
label: Supplier Performance Scorecard Pipeline
description: Aggregates supplier delivery data from SAP, calculates scores in Snowflake, generates scorecards in Google Sheets, and distributes via Microsoft Outlook.
tags:
- procurement
- sap
- snowflake
- google-sheets
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: supplier-scorecard
port: 8080
tools:
- name: generate-scorecard
description: Orchestrate supplier performance scorecard generation across SAP, Snowflake, Google Sheets, and Outlook.
inputParameters:
- name: supplier_id
in: body
type: string
description: The supplier ID.
- name: period
in: body
type: string
description: The reporting period.
steps:
- name: get-delivery-data
type: call
call: sap.get-supplier-deliveries
with:
supplier: '{{supplier_id}}'
period: '{{period}}'
- name: calculate-scores
type: call
call: snowflake.run-scoring
with:
supplier: '{{supplier_id}}'
data: '{{get-delivery-data.results}}'
- name: create-scorecard
type: call
call: gsheets.create-spreadsheet
with:
title: Scorecard - {{supplier_id}} - {{period}}
- name: distribute
type: call
call: outlook.send-email
with:
to: procurement@hasbro.com
subject: 'Supplier Scorecard: {{supplier_id}} - {{period}}'
body: 'Score: {{calculate-scores.overall_score}}. Report: {{create-scorecard.spreadsheetUrl}}'
consumes:
- type: http
namespace: sap
baseUri: https://hasbro-s4.sap.com/sap/opu/odata/sap/ZSUPPLIER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: deliveries
path: /DeliverySet?$filter=Supplier eq '{{supplier}}'
inputParameters:
- name: supplier
in: path
operations:
- name: get-supplier-deliveries
method: GET
- type: http
namespace: snowflake
baseUri: https://hasbro.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-scoring
method: POST
- type: http
namespace: gsheets
baseUri: https://sheets.googleapis.com/v4
authentication:
type: bearer
token: $secrets.google_token
resources:
- name: spreadsheets
path: /spreadsheets
operations:
- name: create-spreadsheet
method: POST
- 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
Posts job listings to LinkedIn, syncs applicants to Workday, creates interview schedules in Zoom, and notifies hiring managers via Slack.
naftiko: '0.5'
info:
label: Talent Acquisition Pipeline
description: Posts job listings to LinkedIn, syncs applicants to Workday, creates interview schedules in Zoom, and notifies hiring managers via Slack.
tags:
- recruiting
- linkedin
- workday
- zoom
- slack
capability:
exposes:
- type: mcp
namespace: talent-acquisition
port: 8080
tools:
- name: manage-hiring
description: Orchestrate talent acquisition across LinkedIn, Workday, Zoom, and Slack.
inputParameters:
- name: job_title
in: body
type: string
description: The job title.
- name: department
in: body
type: string
description: The department.
steps:
- name: post-job
type: call
call: linkedin.create-job-post
with:
title: '{{job_title}}'
department: '{{department}}'
company: Hasbro
- name: create-requisition
type: call
call: workday.create-requisition
with:
title: '{{job_title}}'
department: '{{department}}'
- name: setup-interviews
type: call
call: zoom.create-meeting
with:
topic: 'Interview: {{job_title}}'
type: scheduled
- name: notify-manager
type: call
call: slack.post-message
with:
channel: hiring-{{department}}
text: 'Job posted: {{job_title}}. LinkedIn: {{post-job.url}}. Requisition: {{create-requisition.id}}'
consumes:
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: jobs
path: /simpleJobPostings
operations:
- name: create-job-post
method: POST
- type: http
namespace: workday
baseUri: https://wd5-impl-services1.workday.com/ccx/service/hasbro
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: requisitions
path: /Recruiting/Job_Requisitions
operations:
- name: create-requisition
method: POST
- 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
- 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 SAP warehouse utilization, cross-references demand forecasts in Snowflake, updates capacity dashboards in Power BI, and alerts operations via Slack.
naftiko: '0.5'
info:
label: Warehouse Capacity Planning Pipeline
description: Queries SAP warehouse utilization, cross-references demand forecasts in Snowflake, updates capacity dashboards in Power BI, and alerts operations via Slack.
tags:
- logistics
- sap
- snowflake
- power-bi
- slack
capability:
exposes:
- type: mcp
namespace: warehouse-planning
port: 8080
tools:
- name: plan-capacity
description: Orchestrate warehouse capacity planning across SAP, Snowflake, Power BI, and Slack.
inputParameters:
- name: warehouse_id
in: body
type: string
description: The warehouse ID.
- name: planning_horizon
in: body
type: string
description: The planning period.
steps:
- name: get-utilization
type: call
call: sap.get-warehouse-util
with:
warehouse: '{{warehouse_id}}'
- name: get-forecast
type: call
call: snowflake.run-query
with:
query: SELECT * FROM DEMAND_FORECAST WHERE warehouse='{{warehouse_id}}' AND period='{{planning_horizon}}'
- name: refresh-dashboard
type: call
call: powerbi.refresh-dataset
with:
dataset_id: warehouse-capacity
- name: alert-operations
type: call
call: slack.post-message
with:
channel: warehouse-ops
text: 'Capacity update for {{warehouse_id}}: Current utilization {{get-utilization.percentage}}%. Forecast period: {{planning_horizon}}'
consumes:
- type: http
namespace: sap
baseUri: https://hasbro-s4.sap.com/sap/opu/odata/sap/ZWAREHOUSE_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: warehouses
path: /WarehouseSet('{{warehouse}}')
inputParameters:
- name: warehouse
in: path
operations:
- name: get-warehouse-util
method: GET
- type: http
namespace: snowflake
baseUri: https://hasbro.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: datasets
path: /datasets/{{dataset_id}}/refreshes
inputParameters:
- name: dataset_id
in: path
operations:
- name: refresh-dataset
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 the status of a DocuSign envelope by envelope ID, returning signing status, sender, and completion date.
naftiko: '0.5'
info:
label: DocuSign Contract Status Lookup
description: Retrieves the status of a DocuSign envelope by envelope ID, returning signing status, sender, and completion date.
tags:
- legal
- docusign
capability:
exposes:
- type: mcp
namespace: docusign-contracts
port: 8080
tools:
- name: get-envelope-status
description: Look up a DocuSign envelope status by ID.
inputParameters:
- name: envelope_id
in: body
type: string
description: The DocuSign envelope ID.
call: docusign.get-envelope
with:
id: '{{envelope_id}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: sender
type: string
mapping: $.sender.userName
consumes:
- type: http
namespace: docusign
baseUri: https://na4.docusign.net/restapi/v2.1/accounts/hasbro
authentication:
type: bearer
token: $secrets.docusign_token
resources:
- name: envelopes
path: /envelopes/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-envelope
method: GET
Pulls market data from Circana, enriches with Google Analytics trends, stores insights in Snowflake, and publishes a competitive brief to Confluence.
naftiko: '0.5'
info:
label: Competitive Intelligence Pipeline
description: Pulls market data from Circana, enriches with Google Analytics trends, stores insights in Snowflake, and publishes a competitive brief to Confluence.
tags:
- intelligence
- circana
- google-analytics
- snowflake
- confluence
capability:
exposes:
- type: mcp
namespace: competitive-intel
port: 8080
tools:
- name: generate-competitive-brief
description: Orchestrate competitive intelligence analysis across Circana, Google Analytics, Snowflake, and Confluence.
inputParameters:
- name: category
in: body
type: string
description: The toy category to analyze.
- name: period
in: body
type: string
description: The analysis period.
steps:
- name: get-market-data
type: call
call: circana.get-category-data
with:
category: '{{category}}'
period: '{{period}}'
- name: get-web-trends
type: call
call: ga.get-report
with:
view: hasbro-ecommerce
category: '{{category}}'
- name: store-insights
type: call
call: snowflake.insert-data
with:
table: COMPETITIVE_INTEL
market_data: '{{get-market-data.results}}'
web_data: '{{get-web-trends.rows}}'
- name: publish-brief
type: call
call: confluence.create-page
with:
space_key: STRATEGY
title: 'Competitive Brief: {{category}} - {{period}}'
consumes:
- type: http
namespace: circana
baseUri: https://api.circana.com/v1
authentication:
type: bearer
token: $secrets.circana_token
resources:
- name: categories
path: /market-data/{{category}}
inputParameters:
- name: category
in: path
operations:
- name: get-category-data
method: GET
- type: http
namespace: ga
baseUri: https://analyticsdata.googleapis.com/v1beta
authentication:
type: bearer
token: $secrets.google_token
resources:
- name: reports
path: /properties/hasbro:runReport
operations:
- name: get-report
method: POST
- type: http
namespace: snowflake
baseUri: https://hasbro.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: insert-data
method: POST
- type: http
namespace: confluence
baseUri: https://hasbro.atlassian.net/wiki/api/v2
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Marks product as discontinued in SAP, removes from BigCommerce storefront, archives assets in Box, and notifies retail partners via Microsoft Outlook.
naftiko: '0.5'
info:
label: Product Discontinuation Pipeline
description: Marks product as discontinued in SAP, removes from BigCommerce storefront, archives assets in Box, and notifies retail partners via Microsoft Outlook.
tags:
- product
- sap
- bigcommerce
- box
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: product-discontinuation
port: 8080
tools:
- name: discontinue-product
description: Orchestrate product discontinuation across SAP, BigCommerce, Box, and Outlook.
inputParameters:
- name: product_sku
in: body
type: string
description: The product SKU.
- name: effective_date
in: body
type: string
description: The discontinuation date.
steps:
- name: update-sap
type: call
call: sap.update-product
with:
sku: '{{product_sku}}'
status: DISCONTINUED
date: '{{effective_date}}'
- name: remove-listing
type: call
call: bigcommerce.update-product
with:
sku: '{{product_sku}}'
is_visible: 'false'
- name: archive-assets
type: call
call: box.move-folder
with:
source: products/{{product_sku}}
destination: archived-products/{{product_sku}}
- name: notify-partners
type: call
call: outlook.send-email
with:
to: retail-partners@hasbro.com
subject: 'Product Discontinuation: {{product_sku}}'
body: Product {{product_sku}} will be discontinued effective {{effective_date}}.
consumes:
- type: http
namespace: sap
baseUri: https://hasbro-s4.sap.com/sap/opu/odata/sap/ZPR_PRODUCT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: products
path: /ProductSet('{{sku}}')
inputParameters:
- name: sku
in: path
operations:
- name: update-product
method: PATCH
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/hasbro/v3
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: products
path: /catalog/products
operations:
- name: update-product
method: PUT
- type: http
namespace: box
baseUri: https://api.box.com/2.0
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: folders
path: /folders/{{source}}
inputParameters:
- name: source
in: path
operations:
- name: move-folder
method: PUT
- 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
Uploads a product asset file to a specified Google Drive folder.
naftiko: '0.5'
info:
label: Google Drive Asset Repository
description: Uploads a product asset file to a specified Google Drive folder.
tags:
- document-management
- google-drive
capability:
exposes:
- type: mcp
namespace: gdrive-assets
port: 8080
tools:
- name: upload-asset
description: Upload a product asset to Google Drive.
inputParameters:
- name: folder_id
in: body
type: string
description: The Google Drive folder ID.
- name: file_name
in: body
type: string
description: The file name.
- name: content
in: body
type: string
description: The file content.
call: gdrive.upload-file
with:
folder_id: '{{folder_id}}'
name: '{{file_name}}'
content: '{{content}}'
outputParameters:
- name: file_id
type: string
mapping: $.id
- name: web_view_link
type: string
mapping: $.webViewLink
consumes:
- type: http
namespace: gdrive
baseUri: https://www.googleapis.com/upload/drive/v3
authentication:
type: bearer
token: $secrets.google_drive_token
resources:
- name: files
path: /files?uploadType=multipart
operations:
- name: upload-file
method: POST
Retrieves licensing agreement details from Salesforce, checks royalty payment status in SAP, and creates a Jira task for renewals approaching expiry.
naftiko: '0.5'
info:
label: Licensing Agreement Tracker
description: Retrieves licensing agreement details from Salesforce, checks royalty payment status in SAP, and creates a Jira task for renewals approaching expiry.
tags:
- licensing
- legal
- salesforce
- sap
- jira
capability:
exposes:
- type: mcp
namespace: licensing-management
port: 8080
tools:
- name: check-license-status
description: Check licensing agreement status and flag upcoming renewals.
inputParameters:
- name: license_id
in: body
type: string
description: The Salesforce licensing agreement ID.
steps:
- name: get-agreement
type: call
call: salesforce.get-license
with:
license_id: '{{license_id}}'
- name: get-royalties
type: call
call: sap.get-royalty-status
with:
agreement_ref: '{{get-agreement.Agreement_Ref__c}}'
- name: create-renewal-task
type: call
call: jira.create-issue
with:
project_key: LIC
summary: 'License renewal: {{get-agreement.Name}} - expires {{get-agreement.Expiry_Date__c}}'
issue_type: Task
description: 'Licensee: {{get-agreement.Licensee__c}}. Royalty YTD: {{get-royalties.ytd_amount}} {{get-royalties.currency}}. Expiry: {{get-agreement.Expiry_Date__c}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://hasbro.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: licenses
path: /sobjects/License_Agreement__c/{{license_id}}
inputParameters:
- name: license_id
in: path
operations:
- name: get-license
method: GET
- type: http
namespace: sap
baseUri: https://hasbro-s4.sap.com/sap/opu/odata/sap/ZLI_ROYALTY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: royalties
path: /RoyaltyStatusSet('{{agreement_ref}}')
inputParameters:
- name: agreement_ref
in: path
operations:
- name: get-royalty-status
method: GET
- type: http
namespace: jira
baseUri: https://hasbro.atlassian.net/rest/api/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 social media campaign across Facebook, Instagram, and Twitter via HubSpot, pulling product imagery from SharePoint.
naftiko: '0.5'
info:
label: Social Media Campaign Publisher
description: Creates a social media campaign across Facebook, Instagram, and Twitter via HubSpot, pulling product imagery from SharePoint.
tags:
- marketing
- social-media
- hubspot
- sharepoint
- facebook
- instagram
- twitter
capability:
exposes:
- type: mcp
namespace: social-campaigns
port: 8080
tools:
- name: publish-social-campaign
description: Create and publish a social media campaign with product assets.
inputParameters:
- name: product_sku
in: body
type: string
description: The product SKU for imagery.
- name: campaign_message
in: body
type: string
description: The campaign message text.
steps:
- name: get-assets
type: call
call: sharepoint.get-folder
with:
site_id: marketing_site
folder_path: ProductAssets/{{product_sku}}
- name: create-broadcast
type: call
call: hubspot.create-broadcast
with:
content: '{{campaign_message}}'
channels:
- facebook
- instagram
- twitter
media_url: '{{get-assets.items[0].webUrl}}'
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
method: GET
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: broadcasts
path: /broadcast/v1/broadcasts
operations:
- name: create-broadcast
method: POST
Uploads a product video to the Hasbro YouTube channel, creates a Salesforce content record, and shares the link to Microsoft Teams.
naftiko: '0.5'
info:
label: YouTube Product Video Publisher
description: Uploads a product video to the Hasbro YouTube channel, creates a Salesforce content record, and shares the link to Microsoft Teams.
tags:
- marketing
- video
- youtube
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: video-publishing
port: 8080
tools:
- name: publish-product-video
description: Upload a product video to YouTube and notify teams.
inputParameters:
- name: video_title
in: body
type: string
description: The video title.
- name: product_sku
in: body
type: string
description: The related product SKU.
- name: video_url
in: body
type: string
description: The video source URL.
steps:
- name: upload-video
type: call
call: youtube.upload-video
with:
title: '{{video_title}}'
description: Official Hasbro product video for {{product_sku}}
source_url: '{{video_url}}'
- name: create-content-record
type: call
call: salesforce.create-content
with:
title: '{{video_title}}'
type: YouTube Video
url: '{{upload-video.watch_url}}'
product_sku: '{{product_sku}}'
- name: share-link
type: call
call: msteams.send-message
with:
channel_id: marketing-content
text: 'New product video published: {{video_title}}. Watch: {{upload-video.watch_url}}.'
consumes:
- type: http
namespace: youtube
baseUri: https://www.googleapis.com/upload/youtube/v3
authentication:
type: bearer
token: $secrets.youtube_token
resources:
- name: videos
path: /videos?uploadType=resumable&part=snippet,status
operations:
- name: upload-video
method: POST
- type: http
namespace: salesforce
baseUri: https://hasbro.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: content
path: /sobjects/Content__c
operations:
- name: create-content
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/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
On new retail order, validates inventory in SAP, creates a shipment in the logistics system, updates the BigCommerce order status, and sends confirmation via Microsoft Outlook.
naftiko: '0.5'
info:
label: Retail Order Fulfillment Orchestrator
description: On new retail order, validates inventory in SAP, creates a shipment in the logistics system, updates the BigCommerce order status, and sends confirmation via Microsoft Outlook.
tags:
- fulfillment
- sap
- bigcommerce
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: order-fulfillment
port: 8080
tools:
- name: fulfill-order
description: Orchestrate retail order fulfillment across SAP, BigCommerce, and Outlook.
inputParameters:
- name: order_id
in: body
type: string
description: The BigCommerce order ID.
- name: retailer_email
in: body
type: string
description: The retailer contact email.
steps:
- name: check-inventory
type: call
call: sap.check-inventory
with:
order_id: '{{order_id}}'
- name: create-shipment
type: call
call: sap.create-shipment
with:
order_id: '{{order_id}}'
warehouse: '{{check-inventory.warehouse}}'
- name: update-order-status
type: call
call: bigcommerce.update-order
with:
id: '{{order_id}}'
status: Shipped
tracking_number: '{{create-shipment.tracking_number}}'
- name: send-confirmation
type: call
call: outlook.send-email
with:
to: '{{retailer_email}}'
subject: Order {{order_id}} Shipped
body: 'Your order {{order_id}} has been shipped. Tracking: {{create-shipment.tracking_number}}'
consumes:
- type: http
namespace: sap
baseUri: https://hasbro-s4.sap.com/sap/opu/odata/sap/ZLOGISTICS_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: inventory
path: /InventoryCheck
operations:
- name: check-inventory
method: POST
- name: shipments
path: /ShipmentSet
operations:
- name: create-shipment
method: POST
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/hasbro/v2
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: orders
path: /orders/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: update-order
method: PUT
- 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 a retail partner account from Salesforce by account ID, returning company name, tier, annual revenue, and primary contact.
naftiko: '0.5'
info:
label: Salesforce Retail Account Lookup
description: Retrieves a retail partner account from Salesforce by account ID, returning company name, tier, annual revenue, and primary contact.
tags:
- retail
- crm
- salesforce
capability:
exposes:
- type: mcp
namespace: retail-accounts
port: 8080
tools:
- name: get-retail-account
description: Look up a Salesforce retail partner account.
inputParameters:
- name: account_id
in: body
type: string
description: The Salesforce account ID.
call: salesforce.get-account
with:
account_id: '{{account_id}}'
outputParameters:
- name: company_name
type: string
mapping: $.Name
- name: tier
type: string
mapping: $.Partner_Tier__c
- name: annual_revenue
type: string
mapping: $.AnnualRevenue
- name: primary_contact
type: string
mapping: $.Primary_Contact__c
consumes:
- type: http
namespace: salesforce
baseUri: https://hasbro.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
On new hire from Workday, provisions Azure AD account, creates a ServiceNow equipment request, assigns Slack channels, and sends welcome email via Microsoft Outlook.
naftiko: '0.5'
info:
label: New Hire IT Provisioning Pipeline
description: On new hire from Workday, provisions Azure AD account, creates a ServiceNow equipment request, assigns Slack channels, and sends welcome email via Microsoft Outlook.
tags:
- it
- workday
- azure-active-directory
- servicenow
- slack
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: it-provisioning
port: 8080
tools:
- name: provision-new-hire
description: Orchestrate IT provisioning for new hires across Workday, Azure AD, ServiceNow, Slack, and Outlook.
inputParameters:
- name: employee_id
in: body
type: string
description: The Workday employee ID.
- name: department
in: body
type: string
description: The department name.
steps:
- name: get-employee
type: call
call: workday.get-worker
with:
id: '{{employee_id}}'
- name: create-account
type: call
call: azuread.create-user
with:
display_name: '{{get-employee.name}}'
department: '{{department}}'
email: '{{get-employee.email}}'
- name: request-equipment
type: call
call: servicenow.create-request
with:
type: New Hire Equipment
description: Equipment for {{get-employee.name}} - {{department}}
- name: add-to-slack
type: call
call: slack.invite-user
with:
email: '{{get-employee.email}}'
channels: general,{{department}}
- name: send-welcome
type: call
call: outlook.send-email
with:
to: '{{get-employee.email}}'
subject: Welcome to Hasbro IT
body: 'Your accounts have been provisioned. Equipment request: {{request-equipment.number}}'
consumes:
- type: http
namespace: workday
baseUri: https://wd5-impl-services1.workday.com/ccx/service/hasbro
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers
path: /Human_Resources/Workers/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: azuread
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://hasbro.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_bot_token
resources:
- name: invitations
path: /conversations.invite
operations:
- name: invite-user
method: POST
- 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
Publishes a branded content post to the Hasbro LinkedIn company page.
naftiko: '0.5'
info:
label: LinkedIn Brand Post Publisher
description: Publishes a branded content post to the Hasbro LinkedIn company page.
tags:
- marketing
- social-media
- linkedin
capability:
exposes:
- type: mcp
namespace: linkedin-publishing
port: 8080
tools:
- name: publish-linkedin-post
description: Publish a post to the Hasbro LinkedIn company page.
inputParameters:
- name: post_text
in: body
type: string
description: The post content text.
call: linkedin.create-post
with:
author: urn:li:organization:hasbro
text: '{{post_text}}'
consumes:
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: posts
path: /ugcPosts
operations:
- name: create-post
method: POST
Queries SAP BW for sales analytics by product line, returning revenue, units, and year-over-year growth.
naftiko: '0.5'
info:
label: SAP BW Sales Analytics
description: Queries SAP BW for sales analytics by product line, returning revenue, units, and year-over-year growth.
tags:
- analytics
- sap-bw
- sales
capability:
exposes:
- type: mcp
namespace: sales-analytics
port: 8080
tools:
- name: get-sales-analytics
description: Get sales analytics from SAP BW by product line.
inputParameters:
- name: product_line
in: body
type: string
description: The product line name.
- name: period
in: body
type: string
description: The reporting period.
call: sapbw.get-sales
with:
product_line: '{{product_line}}'
period: '{{period}}'
outputParameters:
- name: revenue
type: string
mapping: $.d.Revenue
- name: units_sold
type: integer
mapping: $.d.UnitsSold
- name: yoy_growth
type: string
mapping: $.d.YoYGrowth
consumes:
- type: http
namespace: sapbw
baseUri: https://hasbro-bw.sap.com/sap/opu/odata/sap/ZSD_SALES_BW_SRV
authentication:
type: basic
username: $secrets.sap_bw_user
password: $secrets.sap_bw_password
resources:
- name: sales
path: /SalesAnalyticsSet(ProductLine='{{product_line}}',Period='{{period}}')
inputParameters:
- name: product_line
in: path
- name: period
in: path
operations:
- name: get-sales
method: GET
Creates a product specification page in Confluence from SAP product data.
naftiko: '0.5'
info:
label: Confluence Product Spec Publisher
description: Creates a product specification page in Confluence from SAP product data.
tags:
- documentation
- confluence
- sap
capability:
exposes:
- type: mcp
namespace: product-specs
port: 8080
tools:
- name: publish-product-spec
description: Generate and publish a product specification page to Confluence.
inputParameters:
- name: product_sku
in: body
type: string
description: The product SKU.
steps:
- name: get-product
type: call
call: sap.get-product-details
with:
sku: '{{product_sku}}'
- name: create-page
type: call
call: confluence.create-page
with:
space_key: PROD
title: 'Product Spec: {{get-product.ProductName}} ({{product_sku}})'
body: 'Category: {{get-product.Category}}. Age: {{get-product.AgeRating}}. Dimensions: {{get-product.Dimensions}}. Weight: {{get-product.Weight}}. Materials: {{get-product.Materials}}.'
consumes:
- type: http
namespace: sap
baseUri: https://hasbro-s4.sap.com/sap/opu/odata/sap/ZPR_PRODUCT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: products
path: /ProductDetailSet('{{sku}}')
inputParameters:
- name: sku
in: path
operations:
- name: get-product-details
method: GET
- type: http
namespace: confluence
baseUri: https://hasbro.atlassian.net/wiki/api/v2
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_api_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Pulls historical sales from SAP, runs demand forecast in Azure Machine Learning, updates inventory targets, and shares results to Confluence.
naftiko: '0.5'
info:
label: Demand Forecasting Pipeline
description: Pulls historical sales from SAP, runs demand forecast in Azure Machine Learning, updates inventory targets, and shares results to Confluence.
tags:
- planning
- forecasting
- sap
- azure-machine-learning
- confluence
capability:
exposes:
- type: mcp
namespace: demand-forecast
port: 8080
tools:
- name: run-demand-forecast
description: Run a demand forecast for a product line and publish results.
inputParameters:
- name: product_line
in: body
type: string
description: The product line to forecast.
- name: forecast_horizon
in: body
type: string
description: Forecast horizon (e.g. 6_months, 12_months).
steps:
- name: get-history
type: call
call: sap.get-sales-history
with:
product_line: '{{product_line}}'
- name: run-forecast
type: call
call: azml.run-inference
with:
model_name: demand_forecast
input_data: '{{get-history.data}}'
horizon: '{{forecast_horizon}}'
- name: publish-results
type: call
call: confluence.create-page
with:
space_key: PLAN
title: 'Demand Forecast: {{product_line}} - {{forecast_horizon}}'
body: 'Forecasted units: {{run-forecast.predicted_units}}. Confidence: {{run-forecast.confidence_interval}}. Recommended stock: {{run-forecast.recommended_stock}}.'
consumes:
- type: http
namespace: sap
baseUri: https://hasbro-s4.sap.com/sap/opu/odata/sap/ZSD_SALES_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: sales-history
path: /SalesHistorySet?$filter=ProductLine eq '{{product_line}}'
inputParameters:
- name: product_line
in: query
operations:
- name: get-sales-history
method: GET
- type: http
namespace: azml
baseUri: https://hasbro-ml.azureml.ms/score
authentication:
type: bearer
token: $secrets.azml_token
resources:
- name: inference
path: /{{model_name}}
inputParameters:
- name: model_name
in: path
operations:
- name: run-inference
method: POST
- type: http
namespace: confluence
baseUri: https://hasbro.atlassian.net/wiki/api/v2
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_api_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Retrieves headcount data from Workday by department, returning employee count, open positions, and turnover rate.
naftiko: '0.5'
info:
label: Workday Headcount Report
description: Retrieves headcount data from Workday by department, returning employee count, open positions, and turnover rate.
tags:
- hr
- workforce
- workday
capability:
exposes:
- type: mcp
namespace: hr-reporting
port: 8080
tools:
- name: get-headcount
description: Get headcount metrics from Workday for a department.
inputParameters:
- name: department_id
in: body
type: string
description: The Workday department ID.
call: workday.get-headcount
with:
department_id: '{{department_id}}'
outputParameters:
- name: employee_count
type: integer
mapping: $.total_count
- name: open_positions
type: integer
mapping: $.open_positions
- name: turnover_rate
type: string
mapping: $.turnover_rate
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: /departments/{{department_id}}/headcount
inputParameters:
- name: department_id
in: path
operations:
- name: get-headcount
method: GET
Publishes a Google Tag Manager container version for a Hasbro web property.
naftiko: '0.5'
info:
label: Google Tag Manager Container Publish
description: Publishes a Google Tag Manager container version for a Hasbro web property.
tags:
- marketing
- analytics
- google-tag-manager
capability:
exposes:
- type: mcp
namespace: tag-management
port: 8080
tools:
- name: publish-gtm-container
description: Publish a GTM container version.
inputParameters:
- name: account_id
in: body
type: string
description: The GTM account ID.
- name: container_id
in: body
type: string
description: The GTM container ID.
- name: version_id
in: body
type: string
description: The version to publish.
call: gtm.publish-version
with:
account_id: '{{account_id}}'
container_id: '{{container_id}}'
version_id: '{{version_id}}'
consumes:
- type: http
namespace: gtm
baseUri: https://www.googleapis.com/tagmanager/v2
authentication:
type: bearer
token: $secrets.gtm_token
resources:
- name: versions
path: /accounts/{{account_id}}/containers/{{container_id}}/versions/{{version_id}}:publish
inputParameters:
- name: account_id
in: path
- name: container_id
in: path
- name: version_id
in: path
operations:
- name: publish-version
method: POST
On license renewal trigger, retrieves the agreement from Salesforce, creates a DocuSign envelope for signing, updates the Airtable tracker, and notifies stakeholders via Microsoft Teams.
naftiko: '0.5'
info:
label: Brand Licensing Renewal Orchestrator
description: On license renewal trigger, retrieves the agreement from Salesforce, creates a DocuSign envelope for signing, updates the Airtable tracker, and notifies stakeholders via Microsoft Teams.
tags:
- licensing
- salesforce
- docusign
- airtable
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: licensing-renewal
port: 8080
tools:
- name: renew-license
description: Orchestrate a brand licensing renewal across Salesforce, DocuSign, Airtable, and Teams.
inputParameters:
- name: license_id
in: body
type: string
description: The licensing agreement ID.
- name: partner_name
in: body
type: string
description: The licensing partner name.
steps:
- name: get-agreement
type: call
call: salesforce.get-agreement
with:
id: '{{license_id}}'
- name: create-envelope
type: call
call: docusign.create-envelope
with:
template_id: license_renewal_template
signer_name: '{{partner_name}}'
agreement_id: '{{license_id}}'
- name: update-tracker
type: call
call: airtable.update-record
with:
record_id: '{{license_id}}'
status: Renewal In Progress
envelope_id: '{{create-envelope.envelopeId}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: licensing-team
text: 'License renewal initiated for {{partner_name}} ({{license_id}}). DocuSign envelope: {{create-envelope.envelopeId}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://hasbro.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: agreements
path: /sobjects/Contract/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-agreement
method: GET
- type: http
namespace: docusign
baseUri: https://na4.docusign.net/restapi/v2.1/accounts/hasbro
authentication:
type: bearer
token: $secrets.docusign_token
resources:
- name: envelopes
path: /envelopes
operations:
- name: create-envelope
method: POST
- type: http
namespace: airtable
baseUri: https://api.airtable.com/v0/appHasbro
authentication:
type: bearer
token: $secrets.airtable_token
resources:
- name: records
path: /LicenseTracker/{{record_id}}
inputParameters:
- name: record_id
in: path
operations:
- name: update-record
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/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Creates a seasonal promotion plan by pulling product catalog from SAP, setting up a Salesforce campaign, scheduling social posts in HubSpot, and distributing a brief to retailers via Microsoft Outlook.
naftiko: '0.5'
info:
label: Seasonal Promotion Planner
description: Creates a seasonal promotion plan by pulling product catalog from SAP, setting up a Salesforce campaign, scheduling social posts in HubSpot, and distributing a brief to retailers via Microsoft Outlook.
tags:
- marketing
- promotions
- sap
- salesforce
- hubspot
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: promo-planning
port: 8080
tools:
- name: plan-seasonal-promotion
description: Plan and distribute a seasonal promotion across all channels.
inputParameters:
- name: season
in: body
type: string
description: The promotional season (e.g. Holiday2026, BackToSchool).
- name: product_category
in: body
type: string
description: The product category to promote.
steps:
- name: get-products
type: call
call: sap.get-promo-products
with:
category: '{{product_category}}'
season: '{{season}}'
- name: create-campaign
type: call
call: salesforce.create-campaign
with:
name: '{{season}} - {{product_category}} Promotion'
type: Seasonal
status: Planned
- name: schedule-social
type: call
call: hubspot.create-broadcast
with:
content: 'Get ready for {{season}}! Check out our top {{product_category}} picks. #Hasbro #{{season}}'
campaign_id: '{{create-campaign.Id}}'
- name: send-retailer-brief
type: call
call: outlook.send-email
with:
to: retail-partners@hasbro.com
subject: '{{season}} Promotion Brief - {{product_category}}'
body: 'Dear Retail Partners, please find the {{season}} promotion lineup for {{product_category}}. Featured products: {{get-products.featured_list}}. Campaign ID: {{create-campaign.Id}}.'
consumes:
- type: http
namespace: sap
baseUri: https://hasbro-s4.sap.com/sap/opu/odata/sap/ZPR_PRODUCT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: promo-products
path: /PromoProductSet?$filter=Category eq '{{category}}' and Season eq '{{season}}'
inputParameters:
- name: category
in: query
- name: season
in: query
operations:
- name: get-promo-products
method: GET
- type: http
namespace: salesforce
baseUri: https://hasbro.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: campaigns
path: /sobjects/Campaign
operations:
- name: create-campaign
method: POST
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: broadcasts
path: /broadcast/v1/broadcasts
operations:
- name: create-broadcast
method: POST
- 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-email
method: POST
Collects shelf performance data from Circana, stores in Snowflake, updates Tableau dashboards, and sends insights to the sales team via Microsoft Teams.
naftiko: '0.5'
info:
label: Retail Shelf Analytics Pipeline
description: Collects shelf performance data from Circana, stores in Snowflake, updates Tableau dashboards, and sends insights to the sales team via Microsoft Teams.
tags:
- retail
- circana
- snowflake
- tableau
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: shelf-analytics
port: 8080
tools:
- name: analyze-shelf-performance
description: Orchestrate retail shelf analytics across Circana, Snowflake, Tableau, and Teams.
inputParameters:
- name: retailer
in: body
type: string
description: The retailer name.
- name: category
in: body
type: string
description: The product category.
steps:
- name: get-shelf-data
type: call
call: circana.get-shelf-metrics
with:
retailer: '{{retailer}}'
category: '{{category}}'
- name: store-data
type: call
call: snowflake.insert-data
with:
table: SHELF_ANALYTICS
data: '{{get-shelf-data.results}}'
- name: refresh-dashboard
type: call
call: tableau.refresh-extract
with:
datasource: shelf-performance
- name: share-insights
type: call
call: msteams.send-message
with:
channel_id: retail-sales
text: 'Shelf analytics for {{retailer}} ({{category}}): Share of shelf {{get-shelf-data.share_of_shelf}}%'
consumes:
- type: http
namespace: circana
baseUri: https://api.circana.com/v1
authentication:
type: bearer
token: $secrets.circana_token
resources:
- name: shelf
path: /shelf-metrics
operations:
- name: get-shelf-metrics
method: GET
- type: http
namespace: snowflake
baseUri: https://hasbro.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: insert-data
method: POST
- type: http
namespace: tableau
baseUri: https://tableau.hasbro.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: datasources
path: /sites/hasbro/datasources/{{datasource}}/refresh
inputParameters:
- name: datasource
in: path
operations:
- name: refresh-extract
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/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Queries the SAP warehouse inventory for a given material number, returning on-hand quantity, location, and lot details.
naftiko: '0.5'
info:
label: SAP Inventory Balance Lookup
description: Queries the SAP warehouse inventory for a given material number, returning on-hand quantity, location, and lot details.
tags:
- inventory
- sap
capability:
exposes:
- type: mcp
namespace: sap-inventory
port: 8080
tools:
- name: get-inventory-balance
description: Look up inventory balance by material number in SAP.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number.
call: sap.get-inventory
with:
material: '{{material_number}}'
outputParameters:
- name: on_hand_qty
type: string
mapping: $.d.OnHandQty
- name: warehouse_location
type: string
mapping: $.d.StorageLocation
consumes:
- type: http
namespace: sap
baseUri: https://hasbro-s4.sap.com/sap/opu/odata/sap/ZINVENTORY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: inventory
path: /InventorySet('{{material}}')
inputParameters:
- name: material
in: path
operations:
- name: get-inventory
method: GET
Checks Cloudflare zone health for Hasbro web properties.
naftiko: '0.5'
info:
label: Cloudflare Web Security Monitor
description: Checks Cloudflare zone health for Hasbro web properties.
tags:
- security
- cloudflare
- dns
capability:
exposes:
- type: mcp
namespace: web-security
port: 8080
tools:
- name: check-zone-health
description: Check DNS and security health for a Cloudflare zone.
inputParameters:
- name: zone_id
in: body
type: string
description: The Cloudflare zone ID.
call: cloudflare.get-zone
with:
zone_id: '{{zone_id}}'
outputParameters:
- name: status
type: string
mapping: $.result.status
- name: ssl_status
type: string
mapping: $.result.ssl.status
consumes:
- type: http
namespace: cloudflare
baseUri: https://api.cloudflare.com/client/v4
authentication:
type: bearer
token: $secrets.cloudflare_token
resources:
- name: zones
path: /zones/{{zone_id}}
inputParameters:
- name: zone_id
in: path
operations:
- name: get-zone
method: GET
Pulls search performance from Google Analytics, identifies optimization opportunities, updates product descriptions in BigCommerce, and reports via Google Sheets.
naftiko: '0.5'
info:
label: SEO Content Optimization Pipeline
description: Pulls search performance from Google Analytics, identifies optimization opportunities, updates product descriptions in BigCommerce, and reports via Google Sheets.
tags:
- seo
- google-analytics
- bigcommerce
- google-sheets
capability:
exposes:
- type: mcp
namespace: seo-optimization
port: 8080
tools:
- name: optimize-seo
description: Orchestrate SEO content optimization across Google Analytics, BigCommerce, and Google Sheets.
inputParameters:
- name: product_category
in: body
type: string
description: The product category.
steps:
- name: get-search-data
type: call
call: ga.get-search-report
with:
category: '{{product_category}}'
- name: update-descriptions
type: call
call: bigcommerce.update-products
with:
category: '{{product_category}}'
seo_data: '{{get-search-data.recommendations}}'
- name: update-tracker
type: call
call: gsheets.append-row
with:
spreadsheet_id: seo-tracker
values: '{{product_category}},{{get-search-data.impressions}},{{get-search-data.clicks}}'
consumes:
- type: http
namespace: ga
baseUri: https://analyticsdata.googleapis.com/v1beta
authentication:
type: bearer
token: $secrets.google_token
resources:
- name: reports
path: /properties/hasbro:runReport
operations:
- name: get-search-report
method: POST
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/hasbro/v3
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: products
path: /catalog/products
operations:
- name: update-products
method: PUT
- type: http
namespace: gsheets
baseUri: https://sheets.googleapis.com/v4/spreadsheets
authentication:
type: bearer
token: $secrets.google_token
resources:
- name: values
path: /{{spreadsheet_id}}/values/Sheet1:append?valueInputOption=RAW
inputParameters:
- name: spreadsheet_id
in: path
operations:
- name: append-row
method: POST
On new vendor approval, creates the vendor record in SAP, sets up a shared folder in Box, adds the vendor to Salesforce, and sends welcome package via Microsoft Outlook.
naftiko: '0.5'
info:
label: Vendor Onboarding Orchestrator
description: On new vendor approval, creates the vendor record in SAP, sets up a shared folder in Box, adds the vendor to Salesforce, and sends welcome package via Microsoft Outlook.
tags:
- procurement
- sap
- box
- salesforce
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: vendor-onboarding
port: 8080
tools:
- name: onboard-vendor
description: Orchestrate vendor onboarding across SAP, Box, Salesforce, and Outlook.
inputParameters:
- name: vendor_name
in: body
type: string
description: The vendor company name.
- name: vendor_email
in: body
type: string
description: The vendor primary contact email.
steps:
- name: create-sap-vendor
type: call
call: sap.create-vendor
with:
name: '{{vendor_name}}'
email: '{{vendor_email}}'
- name: create-shared-folder
type: call
call: box.create-folder
with:
folder_name: Vendor_{{vendor_name}}
parent_id: vendor-documents
- name: create-salesforce-account
type: call
call: salesforce.create-account
with:
name: '{{vendor_name}}'
type: Vendor
vendor_id: '{{create-sap-vendor.VendorNumber}}'
- name: send-welcome
type: call
call: outlook.send-email
with:
to: '{{vendor_email}}'
subject: Welcome to Hasbro Vendor Network
body: 'Welcome {{vendor_name}}! Your vendor ID is {{create-sap-vendor.VendorNumber}}. Shared documents: {{create-shared-folder.url}}'
consumes:
- type: http
namespace: sap
baseUri: https://hasbro-s4.sap.com/sap/opu/odata/sap/ZVENDOR_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: vendors
path: /VendorSet
operations:
- name: create-vendor
method: POST
- type: http
namespace: box
baseUri: https://api.box.com/2.0
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: folders
path: /folders
operations:
- name: create-folder
method: POST
- type: http
namespace: salesforce
baseUri: https://hasbro.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: 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
Initiates a product recall by flagging in SAP, creating a Salesforce case for affected retailers, opening a ServiceNow incident, sending recall notices via Microsoft Outlook, and alerting all teams in Microsoft Teams.
naftiko: '0.5'
info:
label: Product Recall Coordinator
description: Initiates a product recall by flagging in SAP, creating a Salesforce case for affected retailers, opening a ServiceNow incident, sending recall notices via Microsoft Outlook, and alerting all teams in Microsoft Teams.
tags:
- compliance
- recall
- sap
- salesforce
- servicenow
- microsoft-outlook
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: product-recall
port: 8080
tools:
- name: initiate-recall
description: Coordinate a product recall across all systems.
inputParameters:
- name: product_sku
in: body
type: string
description: The product SKU to recall.
- name: reason
in: body
type: string
description: The recall reason.
steps:
- name: flag-product
type: call
call: sap.flag-recall
with:
sku: '{{product_sku}}'
reason: '{{reason}}'
- name: create-sf-case
type: call
call: salesforce.create-case
with:
subject: 'RECALL: {{flag-product.ProductName}} ({{product_sku}})'
description: 'Product recall initiated. Reason: {{reason}}. Affected units: {{flag-product.units_in_field}}.'
priority: Critical
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Product recall: {{product_sku}}'
priority: '1'
description: 'Recall for {{flag-product.ProductName}}. Reason: {{reason}}. SF Case: {{create-sf-case.CaseNumber}}.'
- name: send-notices
type: call
call: outlook.send-email
with:
to: retailers-list@hasbro.com
subject: 'URGENT: Product Recall - {{flag-product.ProductName}}'
body: 'Hasbro is issuing a recall for {{flag-product.ProductName}} (SKU: {{product_sku}}). Reason: {{reason}}. Please remove from shelves immediately.'
- name: alert-all
type: call
call: msteams.send-message
with:
channel_id: company-wide-alerts
text: 'PRODUCT RECALL: {{flag-product.ProductName}} ({{product_sku}}). Reason: {{reason}}. SF Case: {{create-sf-case.CaseNumber}}. ServiceNow: {{create-incident.number}}.'
consumes:
- type: http
namespace: sap
baseUri: https://hasbro-s4.sap.com/sap/opu/odata/sap/ZPR_RECALL_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: recalls
path: /RecallSet
operations:
- name: flag-recall
method: POST
- type: http
namespace: salesforce
baseUri: https://hasbro.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://hasbro.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: outlook
baseUri: https://graph.microsoft.com/v1.0/me
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: mail
path: /sendMail
operations:
- name: send-email
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/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
On vulnerability detection from Cloudflare, creates a Jira security ticket, notifies security team via Slack, triggers patch deployment in Azure DevOps, and logs in ServiceNow.
naftiko: '0.5'
info:
label: Security Vulnerability Remediation Pipeline
description: On vulnerability detection from Cloudflare, creates a Jira security ticket, notifies security team via Slack, triggers patch deployment in Azure DevOps, and logs in ServiceNow.
tags:
- security
- cloudflare
- jira
- slack
- azure-devops
- servicenow
capability:
exposes:
- type: mcp
namespace: vuln-remediation
port: 8080
tools:
- name: remediate-vulnerability
description: Orchestrate security vulnerability remediation across Cloudflare, Jira, Slack, Azure DevOps, and ServiceNow.
inputParameters:
- name: vuln_id
in: body
type: string
description: The vulnerability ID.
- name: severity
in: body
type: string
description: The severity level.
steps:
- name: get-vuln-details
type: call
call: cloudflare.get-vulnerability
with:
id: '{{vuln_id}}'
- name: create-ticket
type: call
call: jira.create-issue
with:
project: SEC
summary: 'Vulnerability: {{get-vuln-details.name}}'
priority: '{{severity}}'
- name: alert-team
type: call
call: slack.post-message
with:
channel: security-ops
text: 'VULN ALERT [{{severity}}]: {{get-vuln-details.name}}. Jira: {{create-ticket.key}}'
- name: trigger-patch
type: call
call: azuredevops.queue-build
with:
definition_id: security-patch
parameters: '{"vuln":"{{vuln_id}}"}'
consumes:
- type: http
namespace: cloudflare
baseUri: https://api.cloudflare.com/client/v4
authentication:
type: bearer
token: $secrets.cloudflare_token
resources:
- name: vulnerabilities
path: /zones/hasbro/vulnerabilities/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-vulnerability
method: GET
- type: http
namespace: jira
baseUri: https://hasbro.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_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
- type: http
namespace: azuredevops
baseUri: https://dev.azure.com/hasbro/_apis
authentication:
type: bearer
token: $secrets.azuredevops_token
resources:
- name: builds
path: /build/builds?api-version=7.0
operations:
- name: queue-build
method: POST
Processes a customer return by creating a Zendesk ticket, initiating refund via Stripe, updating inventory in SAP, and logging the return in Snowflake.
naftiko: '0.5'
info:
label: Customer Returns Processing Pipeline
description: Processes a customer return by creating a Zendesk ticket, initiating refund via Stripe, updating inventory in SAP, and logging the return in Snowflake.
tags:
- returns
- zendesk
- stripe
- sap
- snowflake
capability:
exposes:
- type: mcp
namespace: returns-processing
port: 8080
tools:
- name: process-return
description: Orchestrate customer returns across Zendesk, Stripe, SAP, and Snowflake.
inputParameters:
- name: order_id
in: body
type: string
description: The order ID.
- name: reason
in: body
type: string
description: The return reason.
steps:
- name: create-ticket
type: call
call: zendesk.create-ticket
with:
subject: 'Return: Order {{order_id}}'
description: '{{reason}}'
- name: process-refund
type: call
call: stripe.create-refund
with:
payment_intent: '{{order_id}}'
- name: update-inventory
type: call
call: sap.update-inventory
with:
order_id: '{{order_id}}'
type: return
- name: log-return
type: call
call: snowflake.insert-data
with:
table: RETURNS_LOG
order_id: '{{order_id}}'
reason: '{{reason}}'
refund_id: '{{process-refund.id}}'
consumes:
- type: http
namespace: zendesk
baseUri: https://hasbro.zendesk.com/api/v2
authentication:
type: bearer
token: $secrets.zendesk_token
resources:
- name: tickets
path: /tickets
operations:
- name: create-ticket
method: POST
- type: http
namespace: stripe
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: refunds
path: /refunds
operations:
- name: create-refund
method: POST
- type: http
namespace: sap
baseUri: https://hasbro-s4.sap.com/sap/opu/odata/sap/ZINVENTORY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: inventory
path: /InventoryAdjustment
operations:
- name: update-inventory
method: POST
- type: http
namespace: snowflake
baseUri: https://hasbro.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: insert-data
method: POST
Retrieves historical spend from SAP, builds forecast models in Snowflake, creates budget templates in Google Sheets, and submits for approval via Microsoft Teams.
naftiko: '0.5'
info:
label: Annual Budget Planning Pipeline
description: Retrieves historical spend from SAP, builds forecast models in Snowflake, creates budget templates in Google Sheets, and submits for approval via Microsoft Teams.
tags:
- finance
- sap
- snowflake
- google-sheets
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: budget-planning
port: 8080
tools:
- name: plan-budget
description: Orchestrate annual budget planning across SAP, Snowflake, Google Sheets, and Teams.
inputParameters:
- name: department
in: body
type: string
description: The department.
- name: fiscal_year
in: body
type: string
description: The fiscal year.
steps:
- name: get-historical
type: call
call: sap.get-spend-history
with:
department: '{{department}}'
year: '{{fiscal_year}}'
- name: build-forecast
type: call
call: snowflake.run-query
with:
query: SELECT * FROM BUDGET_FORECAST WHERE dept='{{department}}'
- name: create-template
type: call
call: gsheets.create-spreadsheet
with:
title: Budget {{fiscal_year}} - {{department}}
- name: submit-approval
type: call
call: msteams.send-message
with:
channel_id: finance-approvals
text: 'Budget plan ready for {{department}} FY{{fiscal_year}}: {{create-template.spreadsheetUrl}}'
consumes:
- type: http
namespace: sap
baseUri: https://hasbro-s4.sap.com/sap/opu/odata/sap/ZFINANCE_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: spend
path: /SpendHistorySet
operations:
- name: get-spend-history
method: GET
- type: http
namespace: snowflake
baseUri: https://hasbro.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: gsheets
baseUri: https://sheets.googleapis.com/v4
authentication:
type: bearer
token: $secrets.google_token
resources:
- name: spreadsheets
path: /spreadsheets
operations:
- name: create-spreadsheet
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/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Creates a patent case in Salesforce, generates filing documents in SharePoint, assigns legal review via Jira, and notifies the IP team via Microsoft Teams.
naftiko: '0.5'
info:
label: Patent Filing Coordination Pipeline
description: Creates a patent case in Salesforce, generates filing documents in SharePoint, assigns legal review via Jira, and notifies the IP team via Microsoft Teams.
tags:
- legal
- salesforce
- sharepoint
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: patent-filing
port: 8080
tools:
- name: coordinate-patent-filing
description: Orchestrate patent filing coordination across Salesforce, SharePoint, Jira, and Teams.
inputParameters:
- name: invention_title
in: body
type: string
description: The invention title.
- name: inventor_name
in: body
type: string
description: The inventor name.
steps:
- name: create-case
type: call
call: salesforce.create-case
with:
subject: 'Patent Filing: {{invention_title}}'
inventor: '{{inventor_name}}'
- name: create-documents
type: call
call: sharepoint.create-folder
with:
site: legal
path: Patents/{{invention_title}}
- name: assign-review
type: call
call: jira.create-issue
with:
project: IP
summary: 'Patent Review: {{invention_title}}'
description: 'Inventor: {{inventor_name}}'
- name: notify-ip-team
type: call
call: msteams.send-message
with:
channel_id: ip-legal
text: 'New patent filing: {{invention_title}} by {{inventor_name}}. Case: {{create-case.Id}}. Jira: {{assign-review.key}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://hasbro.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: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: folders
path: /{{site}}/drive/root:/{{path}}
inputParameters:
- name: site
in: path
- name: path
in: path
operations:
- name: create-folder
method: POST
- type: http
namespace: jira
baseUri: https://hasbro.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/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Triggers SAP financial period close, generates reports in Power BI, archives records in Box, and notifies finance leadership via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Financial Close Pipeline
description: Triggers SAP financial period close, generates reports in Power BI, archives records in Box, and notifies finance leadership via Microsoft Teams.
tags:
- finance
- sap
- power-bi
- box
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: financial-close
port: 8080
tools:
- name: execute-close
description: Orchestrate financial close across SAP, Power BI, Box, and Teams.
inputParameters:
- name: period
in: body
type: string
description: The financial period.
- name: company_code
in: body
type: string
description: The SAP company code.
steps:
- name: close-period
type: call
call: sap.close-period
with:
period: '{{period}}'
company_code: '{{company_code}}'
- name: refresh-reports
type: call
call: powerbi.refresh-dataset
with:
dataset_id: financial-reports
- name: archive-records
type: call
call: box.create-folder
with:
parent_id: financial-archive
name: '{{period}}_{{company_code}}'
- name: notify-leadership
type: call
call: msteams.send-message
with:
channel_id: finance-leadership
text: Financial close completed for {{period}} ({{company_code}}). Reports refreshed.
consumes:
- type: http
namespace: sap
baseUri: https://hasbro-s4.sap.com/sap/opu/odata/sap/ZFINANCE_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: periods
path: /PeriodCloseSet
operations:
- name: close-period
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
- type: http
namespace: box
baseUri: https://api.box.com/2.0
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: folders
path: /folders
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: channel-messages
path: /teams/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Sends a formatted message to a Microsoft Teams channel.
naftiko: '0.5'
info:
label: Microsoft Teams Channel Notifier
description: Sends a formatted message to a Microsoft Teams channel.
tags:
- communications
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: team-notifications
port: 8080
tools:
- name: send-channel-notification
description: Send a message to a Microsoft Teams channel.
inputParameters:
- name: channel_id
in: body
type: string
description: The Teams channel ID.
- name: message_text
in: body
type: string
description: The message text.
call: msteams.send-channel-message
with:
channel_id: '{{channel_id}}'
text: '{{message_text}}'
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/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Aggregates weekly sales from Snowflake, generates a Power BI report, creates a summary in Confluence, and distributes via Slack.
naftiko: '0.5'
info:
label: Weekly Sales Digest Pipeline
description: Aggregates weekly sales from Snowflake, generates a Power BI report, creates a summary in Confluence, and distributes via Slack.
tags:
- sales
- snowflake
- power-bi
- confluence
- slack
capability:
exposes:
- type: mcp
namespace: sales-digest
port: 8080
tools:
- name: generate-digest
description: Orchestrate weekly sales digest across Snowflake, Power BI, Confluence, and Slack.
inputParameters:
- name: week_ending
in: body
type: string
description: The week ending date.
steps:
- name: query-sales
type: call
call: snowflake.run-query
with:
query: SELECT * FROM WEEKLY_SALES WHERE week_ending='{{week_ending}}'
- name: refresh-report
type: call
call: powerbi.refresh-dataset
with:
dataset_id: weekly-sales
- name: publish-summary
type: call
call: confluence.create-page
with:
space_key: SALES
title: Weekly Sales Digest - {{week_ending}}
- name: distribute
type: call
call: slack.post-message
with:
channel: sales-leadership
text: 'Weekly sales digest for {{week_ending}} is ready. Total: ${{query-sales.total_revenue}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://hasbro.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: datasets
path: /datasets/{{dataset_id}}/refreshes
inputParameters:
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
- type: http
namespace: confluence
baseUri: https://hasbro.atlassian.net/wiki/api/v2
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
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 sales velocity data from SAP BW, analyzes shelf performance from Circana, and generates a planogram recommendation report in Confluence.
naftiko: '0.5'
info:
label: Retail Planogram Optimizer
description: Retrieves sales velocity data from SAP BW, analyzes shelf performance from Circana, and generates a planogram recommendation report in Confluence.
tags:
- retail
- merchandising
- sap-bw
- circana
- confluence
capability:
exposes:
- type: mcp
namespace: planogram-optimization
port: 8080
tools:
- name: optimize-planogram
description: Generate a planogram optimization report based on sales and market data.
inputParameters:
- name: category
in: body
type: string
description: The retail category.
- name: retailer_id
in: body
type: string
description: The retailer account ID.
steps:
- name: get-sales-velocity
type: call
call: sapbw.get-velocity
with:
category: '{{category}}'
retailer: '{{retailer_id}}'
- name: get-market-data
type: call
call: circana.get-category-data
with:
category: '{{category}}'
- name: publish-report
type: call
call: confluence.create-page
with:
space_key: RETAIL
title: 'Planogram Recommendation: {{category}} - {{retailer_id}}'
body: 'Top sellers: {{get-sales-velocity.top_products}}. Market share: {{get-market-data.market_share}}. Recommended facing: {{get-sales-velocity.recommended_facing}}.'
consumes:
- type: http
namespace: sapbw
baseUri: https://hasbro-bw.sap.com/sap/opu/odata/sap/ZSD_VELOCITY_SRV
authentication:
type: basic
username: $secrets.sap_bw_user
password: $secrets.sap_bw_password
resources:
- name: velocity
path: /VelocitySet(Category='{{category}}',Retailer='{{retailer}}')
inputParameters:
- name: category
in: path
- name: retailer
in: path
operations:
- name: get-velocity
method: GET
- type: http
namespace: circana
baseUri: https://api.circana.com/v1
authentication:
type: bearer
token: $secrets.circana_token
resources:
- name: categories
path: /categories/{{category}}/performance
inputParameters:
- name: category
in: path
operations:
- name: get-category-data
method: GET
- type: http
namespace: confluence
baseUri: https://hasbro.atlassian.net/wiki/api/v2
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_api_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Creates a Zoom meeting and sends calendar invites via Microsoft Outlook.
naftiko: '0.5'
info:
label: Zoom Meeting Scheduler
description: Creates a Zoom meeting and sends calendar invites via Microsoft Outlook.
tags:
- communications
- meetings
- zoom
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: meeting-scheduler
port: 8080
tools:
- name: schedule-meeting
description: Create a Zoom meeting and send invites.
inputParameters:
- name: topic
in: body
type: string
description: Meeting topic.
- name: start_time
in: body
type: string
description: Start time in ISO 8601.
- name: attendee_emails
in: body
type: array
description: Attendee email list.
steps:
- name: create-meeting
type: call
call: zoom.create-meeting
with:
topic: '{{topic}}'
start_time: '{{start_time}}'
- name: send-invite
type: call
call: outlook.send-email
with:
to: '{{attendee_emails}}'
subject: 'Meeting: {{topic}}'
body: 'Join Zoom: {{create-meeting.join_url}}'
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
- 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-email
method: POST
Detects abandoned carts in BigCommerce, sends recovery emails via MailChimp, logs events in Snowflake, and updates metrics in Google Analytics.
naftiko: '0.5'
info:
label: E-commerce Cart Abandonment Pipeline
description: Detects abandoned carts in BigCommerce, sends recovery emails via MailChimp, logs events in Snowflake, and updates metrics in Google Analytics.
tags:
- e-commerce
- bigcommerce
- mailchimp
- snowflake
- google-analytics
capability:
exposes:
- type: mcp
namespace: cart-abandonment
port: 8080
tools:
- name: recover-abandoned-cart
description: Orchestrate cart abandonment recovery across BigCommerce, MailChimp, Snowflake, and Google Analytics.
inputParameters:
- name: cart_id
in: body
type: string
description: The abandoned cart ID.
steps:
- name: get-cart
type: call
call: bigcommerce.get-cart
with:
id: '{{cart_id}}'
- name: send-recovery-email
type: call
call: mailchimp.send-automation
with:
workflow: cart-recovery
email: '{{get-cart.email}}'
cart_value: '{{get-cart.cart_amount}}'
- name: log-event
type: call
call: snowflake.insert-data
with:
table: CART_ABANDONMENT
cart_id: '{{cart_id}}'
value: '{{get-cart.cart_amount}}'
- name: track-event
type: call
call: ga.send-event
with:
category: ecommerce
action: cart_recovery_sent
label: '{{cart_id}}'
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/hasbro/v3
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: carts
path: /carts/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-cart
method: GET
- type: http
namespace: mailchimp
baseUri: https://us1.api.mailchimp.com/3.0
authentication:
type: bearer
token: $secrets.mailchimp_token
resources:
- name: automations
path: /automations
operations:
- name: send-automation
method: POST
- type: http
namespace: snowflake
baseUri: https://hasbro.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: insert-data
method: POST
- type: http
namespace: ga
baseUri: https://www.google-analytics.com
authentication:
type: bearer
token: $secrets.google_token
resources:
- name: collect
path: /mp/collect
operations:
- name: send-event
method: POST
Retrieves test results from SAP quality module, generates certification documents in SharePoint, updates compliance tracker in Airtable, and notifies the legal team via Microsoft Teams.
naftiko: '0.5'
info:
label: Product Compliance Certification Pipeline
description: Retrieves test results from SAP quality module, generates certification documents in SharePoint, updates compliance tracker in Airtable, and notifies the legal team via Microsoft Teams.
tags:
- compliance
- sap
- sharepoint
- airtable
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: compliance-cert
port: 8080
tools:
- name: certify-product
description: Orchestrate product compliance certification across SAP, SharePoint, Airtable, and Teams.
inputParameters:
- name: product_sku
in: body
type: string
description: The product SKU.
- name: market
in: body
type: string
description: The target market.
steps:
- name: get-test-results
type: call
call: sap.get-quality-results
with:
sku: '{{product_sku}}'
- name: generate-cert
type: call
call: sharepoint.create-document
with:
site: compliance
path: Certifications/{{product_sku}}/{{market}}
template: compliance_certificate
- name: update-tracker
type: call
call: airtable.create-record
with:
table: ComplianceTracker
sku: '{{product_sku}}'
market: '{{market}}'
status: Certified
- name: notify-legal
type: call
call: msteams.send-message
with:
channel_id: legal-compliance
text: 'Product {{product_sku}} certified for {{market}}. Certificate: {{generate-cert.webUrl}}'
consumes:
- type: http
namespace: sap
baseUri: https://hasbro-s4.sap.com/sap/opu/odata/sap/ZQUALITY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: quality
path: /QualityResultSet('{{sku}}')
inputParameters:
- name: sku
in: path
operations:
- name: get-quality-results
method: GET
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: documents
path: /{{site}}/drive/root:/{{path}}
inputParameters:
- name: site
in: path
- name: path
in: path
operations:
- name: create-document
method: PUT
- type: http
namespace: airtable
baseUri: https://api.airtable.com/v0/appHasbro
authentication:
type: bearer
token: $secrets.airtable_token
resources:
- name: records
path: /ComplianceTracker
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/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Fetches packaging design from Figma, routes for approval via Asana, archives approved assets in Box, and updates product metadata in SAP.
naftiko: '0.5'
info:
label: Product Packaging Review Pipeline
description: Fetches packaging design from Figma, routes for approval via Asana, archives approved assets in Box, and updates product metadata in SAP.
tags:
- packaging
- figma
- asana
- box
- sap
capability:
exposes:
- type: mcp
namespace: packaging-review
port: 8080
tools:
- name: review-packaging
description: Orchestrate packaging design review across Figma, Asana, Box, and SAP.
inputParameters:
- name: design_key
in: body
type: string
description: The Figma design file key.
- name: product_sku
in: body
type: string
description: The product SKU.
steps:
- name: get-design
type: call
call: figma.get-file
with:
key: '{{design_key}}'
- name: create-review-task
type: call
call: asana.create-task
with:
name: 'Packaging Review: {{product_sku}}'
notes: 'Review design: {{get-design.thumbnailUrl}}'
project: packaging-reviews
- name: archive-design
type: call
call: box.upload-file
with:
folder_id: packaging-assets
file_name: '{{product_sku}}_packaging.fig'
- name: update-product
type: call
call: sap.update-product
with:
sku: '{{product_sku}}'
packaging_status: Under Review
consumes:
- type: http
namespace: figma
baseUri: https://api.figma.com/v1
authentication:
type: bearer
token: $secrets.figma_token
resources:
- name: files
path: /files/{{key}}
inputParameters:
- name: key
in: path
operations:
- name: get-file
method: GET
- type: http
namespace: asana
baseUri: https://app.asana.com/api/1.0
authentication:
type: bearer
token: $secrets.asana_token
resources:
- name: tasks
path: /tasks
operations:
- name: create-task
method: POST
- type: http
namespace: box
baseUri: https://upload.box.com/api/2.0
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: files
path: /files/content
operations:
- name: upload-file
method: POST
- type: http
namespace: sap
baseUri: https://hasbro-s4.sap.com/sap/opu/odata/sap/ZPR_PRODUCT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: products
path: /ProductSet('{{sku}}')
inputParameters:
- name: sku
in: path
operations:
- name: update-product
method: PATCH
Retrieves an e-commerce order from BigCommerce by order ID, returning order status, total, and shipping details.
naftiko: '0.5'
info:
label: BigCommerce Order Status Lookup
description: Retrieves an e-commerce order from BigCommerce by order ID, returning order status, total, and shipping details.
tags:
- e-commerce
- bigcommerce
capability:
exposes:
- type: mcp
namespace: bigcommerce-orders
port: 8080
tools:
- name: get-order
description: Look up a BigCommerce order by order ID.
inputParameters:
- name: order_id
in: body
type: string
description: The BigCommerce order ID.
call: bigcommerce.get-order
with:
id: '{{order_id}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: total
type: string
mapping: $.total_inc_tax
- name: shipping_method
type: string
mapping: $.shipping_addresses[0].shipping_method
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/hasbro/v2
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: orders
path: /orders/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-order
method: GET
Retrieves payroll summary from ADP for a given pay period.
naftiko: '0.5'
info:
label: ADP Payroll Summary
description: Retrieves payroll summary from ADP for a given pay period.
tags:
- hr
- payroll
- adp
capability:
exposes:
- type: mcp
namespace: hr-payroll
port: 8080
tools:
- name: get-payroll-summary
description: Get payroll summary from ADP.
inputParameters:
- name: pay_period
in: body
type: string
description: The pay period identifier.
call: adp.get-payroll
with:
pay_period: '{{pay_period}}'
outputParameters:
- name: total_gross
type: string
mapping: $.payrollSummary.totalGross
- name: total_net
type: string
mapping: $.payrollSummary.totalNet
- name: employee_count
type: integer
mapping: $.payrollSummary.headcount
consumes:
- type: http
namespace: adp
baseUri: https://api.adp.com/hr/v2
authentication:
type: bearer
token: $secrets.adp_token
resources:
- name: payroll
path: /payroll-outputs?payPeriod={{pay_period}}
inputParameters:
- name: pay_period
in: query
operations:
- name: get-payroll
method: GET
When a retail partner submits a large order via BigCommerce, validates inventory in SAP, creates a Salesforce opportunity, and notifies the sales team in Microsoft Teams.
naftiko: '0.5'
info:
label: Retail Partner Order Pipeline
description: When a retail partner submits a large order via BigCommerce, validates inventory in SAP, creates a Salesforce opportunity, and notifies the sales team in Microsoft Teams.
tags:
- retail
- e-commerce
- bigcommerce
- sap
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: retail-orders
port: 8080
tools:
- name: process-retail-order
description: Process a large retail partner order from BigCommerce.
inputParameters:
- name: bigcommerce_order_id
in: body
type: string
description: The BigCommerce order ID.
steps:
- name: get-order
type: call
call: bigcommerce.get-order
with:
order_id: '{{bigcommerce_order_id}}'
- name: check-inventory
type: call
call: sap.get-inventory-batch
with:
sku_list: '{{get-order.product_skus}}'
- name: create-opportunity
type: call
call: salesforce.create-opportunity
with:
name: 'Retail Order: {{get-order.customer_name}} - {{get-order.total}}'
amount: '{{get-order.total}}'
stage: Proposal
- name: notify-sales
type: call
call: msteams.send-message
with:
channel_id: retail-sales
text: 'New retail order from {{get-order.customer_name}}: ${{get-order.total}}. Items: {{get-order.item_count}}. SF Opp: {{create-opportunity.Id}}.'
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/hasbro/v2
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: orders
path: /orders/{{order_id}}
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: sap
baseUri: https://hasbro-s4.sap.com/sap/opu/odata/sap/ZPR_INVENTORY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: inventory-batch
path: /InventoryBatchCheck
operations:
- name: get-inventory-batch
method: POST
- type: http
namespace: salesforce
baseUri: https://hasbro.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /sobjects/Opportunity
operations:
- name: create-opportunity
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/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Collects consumer reviews from Zendesk, analyzes sentiment via Azure Machine Learning, stores insights in Snowflake, and publishes a summary to Confluence.
naftiko: '0.5'
info:
label: Consumer Feedback Analysis Pipeline
description: Collects consumer reviews from Zendesk, analyzes sentiment via Azure Machine Learning, stores insights in Snowflake, and publishes a summary to Confluence.
tags:
- feedback
- zendesk
- azure-machine-learning
- snowflake
- confluence
capability:
exposes:
- type: mcp
namespace: feedback-analysis
port: 8080
tools:
- name: analyze-feedback
description: Orchestrate consumer feedback analysis across Zendesk, Azure ML, Snowflake, and Confluence.
inputParameters:
- name: product_sku
in: body
type: string
description: The product SKU to analyze feedback for.
- name: date_range
in: body
type: string
description: The date range for feedback collection.
steps:
- name: collect-reviews
type: call
call: zendesk.search-tickets
with:
query: product:{{product_sku}} created:{{date_range}}
- name: analyze-sentiment
type: call
call: azureml.score-sentiment
with:
texts: '{{collect-reviews.results}}'
- name: store-insights
type: call
call: snowflake.insert-data
with:
table: CONSUMER_SENTIMENT
data: '{{analyze-sentiment.predictions}}'
- name: publish-summary
type: call
call: confluence.create-page
with:
space_key: PRODUCT
title: 'Feedback Analysis: {{product_sku}} - {{date_range}}'
body: 'Sentiment Score: {{analyze-sentiment.average_score}}. Total Reviews: {{collect-reviews.count}}'
consumes:
- type: http
namespace: zendesk
baseUri: https://hasbro.zendesk.com/api/v2
authentication:
type: bearer
token: $secrets.zendesk_token
resources:
- name: search
path: /search.json
operations:
- name: search-tickets
method: GET
- type: http
namespace: azureml
baseUri: https://hasbro-ml.azureml.net
authentication:
type: bearer
token: $secrets.azureml_token
resources:
- name: scoring
path: /score
operations:
- name: score-sentiment
method: POST
- type: http
namespace: snowflake
baseUri: https://hasbro.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: insert-data
method: POST
- type: http
namespace: confluence
baseUri: https://hasbro.atlassian.net/wiki/api/v2
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Retrieves project status from Asana by project GID, returning project name, current status, owner, and due date.
naftiko: '0.5'
info:
label: Asana Project Status Lookup
description: Retrieves project status from Asana by project GID, returning project name, current status, owner, and due date.
tags:
- project-management
- asana
capability:
exposes:
- type: mcp
namespace: asana-projects
port: 8080
tools:
- name: get-project-status
description: Look up an Asana project status by project GID.
inputParameters:
- name: project_gid
in: body
type: string
description: The Asana project GID.
call: asana.get-project
with:
gid: '{{project_gid}}'
outputParameters:
- name: project_name
type: string
mapping: $.data.name
- name: status
type: string
mapping: $.data.current_status.text
consumes:
- type: http
namespace: asana
baseUri: https://app.asana.com/api/1.0
authentication:
type: bearer
token: $secrets.asana_token
resources:
- name: projects
path: /projects/{{gid}}
inputParameters:
- name: gid
in: path
operations:
- name: get-project
method: GET
Analyzes purchase history in Snowflake, generates product recommendations via Azure Machine Learning, publishes to BigCommerce, and sends personalized emails via MailChimp.
naftiko: '0.5'
info:
label: Cross-Sell Recommendation Pipeline
description: Analyzes purchase history in Snowflake, generates product recommendations via Azure Machine Learning, publishes to BigCommerce, and sends personalized emails via MailChimp.
tags:
- e-commerce
- snowflake
- azure-machine-learning
- bigcommerce
- mailchimp
capability:
exposes:
- type: mcp
namespace: cross-sell
port: 8080
tools:
- name: generate-recommendations
description: Orchestrate cross-sell recommendations across Snowflake, Azure ML, BigCommerce, and MailChimp.
inputParameters:
- name: customer_segment
in: body
type: string
description: The customer segment.
steps:
- name: get-purchase-history
type: call
call: snowflake.run-query
with:
query: SELECT * FROM PURCHASE_HISTORY WHERE segment='{{customer_segment}}'
- name: get-recommendations
type: call
call: azureml.score-recommendations
with:
data: '{{get-purchase-history.results}}'
- name: update-storefront
type: call
call: bigcommerce.update-recommendations
with:
segment: '{{customer_segment}}'
products: '{{get-recommendations.top_products}}'
- name: send-emails
type: call
call: mailchimp.send-campaign
with:
list_id: '{{customer_segment}}'
subject: Products You Might Love
consumes:
- type: http
namespace: snowflake
baseUri: https://hasbro.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: azureml
baseUri: https://hasbro-ml.azureml.net
authentication:
type: bearer
token: $secrets.azureml_token
resources:
- name: scoring
path: /score
operations:
- name: score-recommendations
method: POST
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/hasbro/v3
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: recommendations
path: /catalog/products/recommendations
operations:
- name: update-recommendations
method: PUT
- type: http
namespace: mailchimp
baseUri: https://us1.api.mailchimp.com/3.0
authentication:
type: bearer
token: $secrets.mailchimp_token
resources:
- name: campaigns
path: /campaigns
operations:
- name: send-campaign
method: POST
Retrieves a Zendesk support ticket by ID, returning status, priority, assignee, and last update timestamp.
naftiko: '0.5'
info:
label: Zendesk Support Ticket Lookup
description: Retrieves a Zendesk support ticket by ID, returning status, priority, assignee, and last update timestamp.
tags:
- support
- zendesk
capability:
exposes:
- type: mcp
namespace: zendesk-tickets
port: 8080
tools:
- name: get-ticket
description: Look up a Zendesk support ticket by ID.
inputParameters:
- name: ticket_id
in: body
type: string
description: The Zendesk ticket ID.
call: zendesk.get-ticket
with:
id: '{{ticket_id}}'
outputParameters:
- name: status
type: string
mapping: $.ticket.status
- name: priority
type: string
mapping: $.ticket.priority
- name: assignee
type: string
mapping: $.ticket.assignee_id
consumes:
- type: http
namespace: zendesk
baseUri: https://hasbro.zendesk.com/api/v2
authentication:
type: bearer
token: $secrets.zendesk_token
resources:
- name: tickets
path: /tickets/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-ticket
method: GET
Retrieves sprint status for a product development Jira project, returning completed stories, remaining work, and velocity.
naftiko: '0.5'
info:
label: Jira Product Development Tracker
description: Retrieves sprint status for a product development Jira project, returning completed stories, remaining work, and velocity.
tags:
- product-development
- jira
- project-management
capability:
exposes:
- type: mcp
namespace: product-dev
port: 8080
tools:
- name: get-sprint-status
description: Get the active sprint status for a Jira project.
inputParameters:
- name: project_key
in: body
type: string
description: The Jira project key.
call: jira.get-sprint-summary
with:
project_key: '{{project_key}}'
outputParameters:
- name: sprint_name
type: string
mapping: $.active_sprint.name
- name: completed_stories
type: integer
mapping: $.completed_count
- name: remaining_points
type: integer
mapping: $.remaining_points
consumes:
- type: http
namespace: jira
baseUri: https://hasbro.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: search
path: /search?jql=project={{project_key}} AND sprint in openSprints()
inputParameters:
- name: project_key
in: path
operations:
- name: get-sprint-summary
method: GET
Creates an influencer campaign in HubSpot, generates a contract via DocuSign, tracks deliverables in Asana, and monitors social metrics via Instagram API.
naftiko: '0.5'
info:
label: Influencer Collaboration Pipeline
description: Creates an influencer campaign in HubSpot, generates a contract via DocuSign, tracks deliverables in Asana, and monitors social metrics via Instagram API.
tags:
- marketing
- hubspot
- docusign
- asana
- instagram
capability:
exposes:
- type: mcp
namespace: influencer-collab
port: 8080
tools:
- name: launch-influencer-campaign
description: Orchestrate influencer collaboration across HubSpot, DocuSign, Asana, and Instagram.
inputParameters:
- name: influencer_name
in: body
type: string
description: The influencer name.
- name: campaign_name
in: body
type: string
description: The campaign name.
steps:
- name: create-campaign
type: call
call: hubspot.create-campaign
with:
name: '{{campaign_name}} - {{influencer_name}}'
- name: create-contract
type: call
call: docusign.create-envelope
with:
template_id: influencer_contract
signer_name: '{{influencer_name}}'
- name: create-deliverables
type: call
call: asana.create-task
with:
name: '{{influencer_name}} Deliverables - {{campaign_name}}'
project: influencer-campaigns
- name: setup-tracking
type: call
call: instagram.create-media-tracker
with:
campaign_id: '{{create-campaign.id}}'
hashtag: '#Hasbro{{campaign_name}}'
consumes:
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: campaigns
path: /marketing/v3/campaigns
operations:
- name: create-campaign
method: POST
- type: http
namespace: docusign
baseUri: https://na4.docusign.net/restapi/v2.1/accounts/hasbro
authentication:
type: bearer
token: $secrets.docusign_token
resources:
- name: envelopes
path: /envelopes
operations:
- name: create-envelope
method: POST
- type: http
namespace: asana
baseUri: https://app.asana.com/api/1.0
authentication:
type: bearer
token: $secrets.asana_token
resources:
- name: tasks
path: /tasks
operations:
- name: create-task
method: POST
- type: http
namespace: instagram
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.instagram_token
resources:
- name: media-tracker
path: /ig_hashtag_search
operations:
- name: create-media-tracker
method: GET
Monitors social media mentions via HubSpot, checks against brand trademark data in SAP, creates a Jira legal task, and alerts the legal team in Microsoft Teams.
naftiko: '0.5'
info:
label: IP Infringement Detection Pipeline
description: Monitors social media mentions via HubSpot, checks against brand trademark data in SAP, creates a Jira legal task, and alerts the legal team in Microsoft Teams.
tags:
- legal
- intellectual-property
- hubspot
- sap
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ip-protection
port: 8080
tools:
- name: flag-ip-infringement
description: Flag a potential IP infringement, check trademarks, and escalate to legal.
inputParameters:
- name: mention_url
in: body
type: string
description: The URL of the suspected infringing content.
- name: brand_name
in: body
type: string
description: The Hasbro brand or trademark name.
steps:
- name: get-trademark
type: call
call: sap.get-trademark
with:
brand: '{{brand_name}}'
- name: create-legal-task
type: call
call: jira.create-issue
with:
project_key: LEGAL
summary: 'IP infringement: {{brand_name}}'
issue_type: Task
priority: High
description: 'Suspected IP infringement for {{brand_name}} (TM #{{get-trademark.registration_number}}). URL: {{mention_url}}.'
- name: notify-legal
type: call
call: msteams.send-message
with:
channel_id: legal-ip
text: 'IP Alert: Suspected infringement for {{brand_name}}. Jira: {{create-legal-task.key}}. URL: {{mention_url}}.'
consumes:
- type: http
namespace: sap
baseUri: https://hasbro-s4.sap.com/sap/opu/odata/sap/ZLI_IP_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: trademarks
path: /TrademarkSet('{{brand}}')
inputParameters:
- name: brand
in: path
operations:
- name: get-trademark
method: GET
- type: http
namespace: jira
baseUri: https://hasbro.atlassian.net/rest/api/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/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
On low-stock alert, checks SAP inventory levels, creates a replenishment purchase order, notifies the supply chain team via Slack, and updates the Google Sheets demand tracker.
naftiko: '0.5'
info:
label: Holiday Inventory Replenishment Pipeline
description: On low-stock alert, checks SAP inventory levels, creates a replenishment purchase order, notifies the supply chain team via Slack, and updates the Google Sheets demand tracker.
tags:
- inventory
- sap
- slack
- google-sheets
capability:
exposes:
- type: mcp
namespace: holiday-replenishment
port: 8080
tools:
- name: replenish-inventory
description: Orchestrate holiday inventory replenishment across SAP, Slack, and Google Sheets.
inputParameters:
- name: product_sku
in: body
type: string
description: The product SKU.
- name: target_quantity
in: body
type: string
description: The target restock quantity.
steps:
- name: check-stock
type: call
call: sap.get-stock-level
with:
sku: '{{product_sku}}'
- name: create-po
type: call
call: sap.create-purchase-order
with:
material: '{{product_sku}}'
quantity: '{{target_quantity}}'
- name: notify-team
type: call
call: slack.post-message
with:
channel: supply-chain
text: 'Replenishment PO {{create-po.PONumber}} created for {{product_sku}}. Qty: {{target_quantity}}'
- name: update-tracker
type: call
call: gsheets.append-row
with:
spreadsheet_id: demand-tracker
values: '{{product_sku}},{{target_quantity}},{{create-po.PONumber}}'
consumes:
- type: http
namespace: sap
baseUri: https://hasbro-s4.sap.com/sap/opu/odata/sap/ZINVENTORY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: stock
path: /StockLevelSet('{{sku}}')
inputParameters:
- name: sku
in: path
operations:
- name: get-stock-level
method: GET
- name: purchase-orders
path: /PurchaseOrderSet
operations:
- name: create-purchase-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
- type: http
namespace: gsheets
baseUri: https://sheets.googleapis.com/v4/spreadsheets
authentication:
type: bearer
token: $secrets.google_token
resources:
- name: values
path: /{{spreadsheet_id}}/values/Sheet1:append?valueInputOption=RAW
inputParameters:
- name: spreadsheet_id
in: path
operations:
- name: append-row
method: POST
Retrieves engagement metrics for an Instagram post by media ID, returning impressions, reach, likes, and comments count.
naftiko: '0.5'
info:
label: Instagram Post Metrics Lookup
description: Retrieves engagement metrics for an Instagram post by media ID, returning impressions, reach, likes, and comments count.
tags:
- social-media
- instagram
capability:
exposes:
- type: mcp
namespace: instagram-metrics
port: 8080
tools:
- name: get-post-metrics
description: Look up Instagram post engagement metrics by media ID.
inputParameters:
- name: media_id
in: body
type: string
description: The Instagram media ID.
call: instagram.get-insights
with:
id: '{{media_id}}'
outputParameters:
- name: impressions
type: string
mapping: $.data[0].values[0].value
- name: reach
type: string
mapping: $.data[1].values[0].value
consumes:
- type: http
namespace: instagram
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.instagram_token
resources:
- name: media-insights
path: /{{id}}/insights?metric=impressions,reach
inputParameters:
- name: id
in: path
operations:
- name: get-insights
method: GET
Aggregates royalty data from Snowflake, generates a formatted report in Google Sheets, uploads to SharePoint, and distributes to licensees via Microsoft Outlook.
naftiko: '0.5'
info:
label: Quarterly Royalty Reporting Pipeline
description: Aggregates royalty data from Snowflake, generates a formatted report in Google Sheets, uploads to SharePoint, and distributes to licensees via Microsoft Outlook.
tags:
- finance
- snowflake
- google-sheets
- sharepoint
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: royalty-reporting
port: 8080
tools:
- name: generate-royalty-report
description: Orchestrate quarterly royalty reporting across Snowflake, Google Sheets, SharePoint, and Outlook.
inputParameters:
- name: quarter
in: body
type: string
description: The reporting quarter (e.g., Q1-2026).
- name: licensee_id
in: body
type: string
description: The licensee partner ID.
steps:
- name: query-royalties
type: call
call: snowflake.run-query
with:
query: SELECT * FROM ROYALTIES WHERE quarter='{{quarter}}' AND licensee='{{licensee_id}}'
- name: create-report
type: call
call: gsheets.create-spreadsheet
with:
title: Royalty Report - {{licensee_id}} - {{quarter}}
data: '{{query-royalties.data}}'
- name: archive-report
type: call
call: sharepoint.upload-file
with:
site: finance
path: Royalties/{{quarter}}/{{licensee_id}}
file_url: '{{create-report.spreadsheetUrl}}'
- name: send-report
type: call
call: outlook.send-email
with:
to: '{{licensee_id}}@partners.hasbro.com'
subject: '{{quarter}} Royalty Report'
body: 'Your quarterly royalty report is ready: {{create-report.spreadsheetUrl}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://hasbro.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: gsheets
baseUri: https://sheets.googleapis.com/v4
authentication:
type: bearer
token: $secrets.google_token
resources:
- name: spreadsheets
path: /spreadsheets
operations:
- name: create-spreadsheet
method: POST
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: files
path: /{{site}}/drive/root:/{{path}}
inputParameters:
- name: site
in: path
- name: path
in: path
operations:
- name: upload-file
method: PUT
- 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 latest style guide from SharePoint, distributes to licensees via Box shared links, notifies partners via Microsoft Outlook, and tracks access in Airtable.
naftiko: '0.5'
info:
label: Brand Style Guide Distribution Pipeline
description: Retrieves latest style guide from SharePoint, distributes to licensees via Box shared links, notifies partners via Microsoft Outlook, and tracks access in Airtable.
tags:
- brand
- sharepoint
- box
- microsoft-outlook
- airtable
capability:
exposes:
- type: mcp
namespace: style-guide-dist
port: 8080
tools:
- name: distribute-style-guide
description: Orchestrate brand style guide distribution across SharePoint, Box, Outlook, and Airtable.
inputParameters:
- name: brand
in: body
type: string
description: The brand name.
- name: version
in: body
type: string
description: The style guide version.
steps:
- name: get-guide
type: call
call: sharepoint.get-file
with:
site: brand-assets
path: StyleGuides/{{brand}}/v{{version}}
- name: create-shared-link
type: call
call: box.create-shared-link
with:
file_id: '{{get-guide.id}}'
access: collaborators
- name: notify-partners
type: call
call: outlook.send-email
with:
to: licensees@hasbro.com
subject: Updated {{brand}} Style Guide v{{version}}
body: 'Access the latest style guide: {{create-shared-link.url}}'
- name: track-distribution
type: call
call: airtable.create-record
with:
table: StyleGuideDistribution
brand: '{{brand}}'
version: '{{version}}'
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}}/drive/root:/{{path}}
inputParameters:
- name: site
in: path
- name: path
in: path
operations:
- name: get-file
method: GET
- type: http
namespace: box
baseUri: https://api.box.com/2.0
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: shared-links
path: /files/{{file_id}}
inputParameters:
- name: file_id
in: path
operations:
- name: create-shared-link
method: PUT
- 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
- type: http
namespace: airtable
baseUri: https://api.airtable.com/v0/appHasbro
authentication:
type: bearer
token: $secrets.airtable_token
resources:
- name: records
path: /StyleGuideDistribution
operations:
- name: create-record
method: POST
Pulls inventory data from SAP and writes it to a Google Sheets dashboard for retail operations visibility.
naftiko: '0.5'
info:
label: Google Sheets Retail Inventory Dashboard
description: Pulls inventory data from SAP and writes it to a Google Sheets dashboard for retail operations visibility.
tags:
- retail
- reporting
- google-sheets
- sap
capability:
exposes:
- type: mcp
namespace: sheets-inventory
port: 8080
tools:
- name: sync-inventory-dashboard
description: Pull SAP inventory data and update Google Sheets.
inputParameters:
- name: spreadsheet_id
in: body
type: string
description: The Google Sheets ID.
- name: warehouse_code
in: body
type: string
description: The warehouse code.
steps:
- name: get-inventory
type: call
call: sap.get-warehouse-inventory
with:
warehouse: '{{warehouse_code}}'
- name: update-sheet
type: call
call: gsheets.update-values
with:
spreadsheet_id: '{{spreadsheet_id}}'
range: Inventory!A2:D2
values:
- - '{{warehouse_code}}'
- '{{get-inventory.total_skus}}'
- '{{get-inventory.total_units}}'
- '{{get-inventory.fill_rate}}'
consumes:
- type: http
namespace: sap
baseUri: https://hasbro-s4.sap.com/sap/opu/odata/sap/ZPR_INVENTORY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: warehouse-inventory
path: /WarehouseInventorySet('{{warehouse}}')
inputParameters:
- name: warehouse
in: path
operations:
- name: get-warehouse-inventory
method: GET
- type: http
namespace: gsheets
baseUri: https://sheets.googleapis.com/v4/spreadsheets
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: values
path: /{{spreadsheet_id}}/values/{{range}}
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: update-values
method: PUT
Retrieves a Tableau workbook view for brand performance metrics, returning the view URL and last refresh timestamp.
naftiko: '0.5'
info:
label: Tableau Brand Performance Report
description: Retrieves a Tableau workbook view for brand performance metrics, returning the view URL and last refresh timestamp.
tags:
- analytics
- tableau
capability:
exposes:
- type: mcp
namespace: tableau-reports
port: 8080
tools:
- name: get-brand-report
description: Retrieve Tableau brand performance report by brand name.
inputParameters:
- name: brand_name
in: body
type: string
description: The brand name to filter the report.
call: tableau.get-view
with:
brand: '{{brand_name}}'
outputParameters:
- name: view_url
type: string
mapping: $.view.contentUrl
- name: last_refresh
type: string
mapping: $.view.updatedAt
consumes:
- type: http
namespace: tableau
baseUri: https://tableau.hasbro.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: views
path: /sites/hasbro/views?filter=name:eq:BrandPerformance_{{brand}}
inputParameters:
- name: brand
in: path
operations:
- name: get-view
method: GET
Pulls sales data from SAP and pushes to a Power BI dataset for real-time dashboard visibility.
naftiko: '0.5'
info:
label: Power BI Sales Dashboard Sync
description: Pulls sales data from SAP and pushes to a Power BI dataset for real-time dashboard visibility.
tags:
- analytics
- power-bi
- sap
- reporting
capability:
exposes:
- type: mcp
namespace: sales-dashboard
port: 8080
tools:
- name: sync-sales-data
description: Pull SAP sales data and push to Power BI.
inputParameters:
- name: period
in: body
type: string
description: The sales period to sync.
steps:
- name: get-sales
type: call
call: sap.get-sales-summary
with:
period: '{{period}}'
- name: push-to-bi
type: call
call: powerbi.push-rows
with:
dataset_id: sales_dashboard_ds
table_name: Sales
rows:
- period: '{{period}}'
total_revenue: '{{get-sales.total_revenue}}'
units_sold: '{{get-sales.units_sold}}'
top_product: '{{get-sales.top_product}}'
consumes:
- type: http
namespace: sap
baseUri: https://hasbro-s4.sap.com/sap/opu/odata/sap/ZSD_SALES_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: sales
path: /SalesSummarySet('{{period}}')
inputParameters:
- name: period
in: path
operations:
- name: get-sales-summary
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}}/tables/{{table_name}}/rows
inputParameters:
- name: dataset_id
in: path
- name: table_name
in: path
operations:
- name: push-rows
method: POST
Retrieves product roadmap entries from Airtable by product line, returning feature name, status, target quarter, and priority.
naftiko: '0.5'
info:
label: Airtable Product Roadmap Lookup
description: Retrieves product roadmap entries from Airtable by product line, returning feature name, status, target quarter, and priority.
tags:
- product
- airtable
capability:
exposes:
- type: mcp
namespace: airtable-roadmap
port: 8080
tools:
- name: get-roadmap-items
description: Look up product roadmap items in Airtable by product line.
inputParameters:
- name: product_line
in: body
type: string
description: The product line to filter.
call: airtable.list-records
with:
filter: '{{product_line}}'
outputParameters:
- name: feature_name
type: string
mapping: $.records[0].fields.Feature
- name: status
type: string
mapping: $.records[0].fields.Status
consumes:
- type: http
namespace: airtable
baseUri: https://api.airtable.com/v0/appHasbro
authentication:
type: bearer
token: $secrets.airtable_token
resources:
- name: roadmap
path: /ProductRoadmap?filterByFormula={ProductLine}='{{filter}}'
inputParameters:
- name: filter
in: path
operations:
- name: list-records
method: GET
On critical alert from Datadog, creates a ServiceNow incident, pages on-call via Slack, opens a Zoom bridge, and updates the status page.
naftiko: '0.5'
info:
label: IT Incident Escalation Pipeline
description: On critical alert from Datadog, creates a ServiceNow incident, pages on-call via Slack, opens a Zoom bridge, and updates the status page.
tags:
- incident
- datadog
- servicenow
- slack
- zoom
capability:
exposes:
- type: mcp
namespace: incident-escalation
port: 8080
tools:
- name: escalate-incident
description: Orchestrate IT incident escalation across Datadog, ServiceNow, Slack, and Zoom.
inputParameters:
- name: alert_id
in: body
type: string
description: The Datadog alert ID.
- name: severity
in: body
type: string
description: The incident severity.
steps:
- name: get-alert
type: call
call: datadog.get-alert
with:
id: '{{alert_id}}'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: '{{get-alert.title}}'
urgency: '{{severity}}'
category: Infrastructure
- name: page-oncall
type: call
call: slack.post-message
with:
channel: incident-response
text: 'P{{severity}} INCIDENT: {{get-alert.title}}. ServiceNow: {{create-incident.number}}'
- name: create-bridge
type: call
call: zoom.create-meeting
with:
topic: 'Incident Bridge: {{create-incident.number}}'
type: instant
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: bearer
token: $secrets.datadog_api_key
resources:
- name: alerts
path: /monitor/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-alert
method: GET
- type: http
namespace: servicenow
baseUri: https://hasbro.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
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: 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
Retrieves a ServiceNow incident by number, returning state, priority, and assigned group.
naftiko: '0.5'
info:
label: ServiceNow IT Ticket Status
description: Retrieves a ServiceNow incident by number, returning state, priority, and assigned group.
tags:
- it-service
- servicenow
capability:
exposes:
- type: mcp
namespace: itsm-tickets
port: 8080
tools:
- name: get-ticket-status
description: Look up a ServiceNow incident by number.
inputParameters:
- name: incident_number
in: body
type: string
description: The ServiceNow incident number.
call: servicenow.get-incident
with:
incident_number: '{{incident_number}}'
outputParameters:
- name: state
type: string
mapping: $.result[0].state
- name: priority
type: string
mapping: $.result[0].priority
- name: assigned_group
type: string
mapping: $.result[0].assignment_group.display_value
consumes:
- type: http
namespace: servicenow
baseUri: https://hasbro.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: path
operations:
- name: get-incident
method: GET
When a customer complaint arrives via Zendesk, retrieves order details from SAP, creates a Salesforce case, and notifies the product team in Microsoft Teams.
naftiko: '0.5'
info:
label: Customer Complaint Handler
description: When a customer complaint arrives via Zendesk, retrieves order details from SAP, creates a Salesforce case, and notifies the product team in Microsoft Teams.
tags:
- customer-service
- zendesk
- sap
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: complaint-handling
port: 8080
tools:
- name: handle-complaint
description: Process a customer complaint by pulling order data, creating a case, and alerting the product team.
inputParameters:
- name: zendesk_ticket_id
in: body
type: string
description: The Zendesk ticket ID.
- name: order_number
in: body
type: string
description: The SAP sales order number.
steps:
- name: get-ticket
type: call
call: zendesk.get-ticket
with:
ticket_id: '{{zendesk_ticket_id}}'
- name: get-order
type: call
call: sap.get-order
with:
order_number: '{{order_number}}'
- name: create-case
type: call
call: salesforce.create-case
with:
subject: 'Complaint: {{get-ticket.subject}}'
description: 'Zendesk #{{zendesk_ticket_id}}: {{get-ticket.description}}. Product: {{get-order.ProductName}}. Order: {{order_number}}.'
- name: notify-product
type: call
call: msteams.send-message
with:
channel_id: product-quality
text: 'Customer complaint for {{get-order.ProductName}}: {{get-ticket.subject}}. SF Case: {{create-case.CaseNumber}}.'
consumes:
- type: http
namespace: zendesk
baseUri: https://hasbro.zendesk.com/api/v2
authentication:
type: bearer
token: $secrets.zendesk_token
resources:
- name: tickets
path: /tickets/{{ticket_id}}
inputParameters:
- name: ticket_id
in: path
operations:
- name: get-ticket
method: GET
- type: http
namespace: sap
baseUri: https://hasbro-s4.sap.com/sap/opu/odata/sap/ZSD_ORDER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: orders
path: /SalesOrderSet('{{order_number}}')
inputParameters:
- name: order_number
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: salesforce
baseUri: https://hasbro.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: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
On product launch, creates a Salesforce campaign, publishes product assets to SharePoint, sends launch announcement to Microsoft Teams, and posts to social media via HubSpot.
naftiko: '0.5'
info:
label: New Product Launch Orchestrator
description: On product launch, creates a Salesforce campaign, publishes product assets to SharePoint, sends launch announcement to Microsoft Teams, and posts to social media via HubSpot.
tags:
- product
- launch
- salesforce
- sharepoint
- microsoft-teams
- hubspot
capability:
exposes:
- type: mcp
namespace: product-launch
port: 8080
tools:
- name: launch-product
description: Orchestrate a new product launch across Salesforce, SharePoint, Teams, and HubSpot.
inputParameters:
- name: product_sku
in: body
type: string
description: The product SKU.
- name: launch_date
in: body
type: string
description: The launch date in YYYY-MM-DD format.
- name: product_name
in: body
type: string
description: The product display name.
steps:
- name: create-campaign
type: call
call: salesforce.create-campaign
with:
name: 'Launch: {{product_name}}'
start_date: '{{launch_date}}'
type: Product Launch
status: Planned
- name: upload-assets
type: call
call: sharepoint.create-folder
with:
site_id: marketing_site
folder_path: ProductLaunches/{{product_sku}}_{{product_name}}
- name: announce-teams
type: call
call: msteams.send-message
with:
channel_id: product-launches
text: 'New product launch: {{product_name}} ({{product_sku}}) on {{launch_date}}. Campaign: {{create-campaign.Id}}. Assets: {{upload-assets.url}}.'
- name: schedule-social
type: call
call: hubspot.create-social-post
with:
content: 'Exciting news! {{product_name}} is coming {{launch_date}}! #Hasbro #Toys #NewRelease'
campaign_id: '{{create-campaign.Id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://hasbro.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: campaigns
path: /sobjects/Campaign
operations:
- name: create-campaign
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: channel-messages
path: /teams/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: social-posts
path: /broadcast/v1/broadcasts
operations:
- name: create-social-post
method: POST
Pulls training completion data from Pluralsight, syncs with Workday employee records, generates compliance reports in Google Sheets, and alerts managers via Slack.
naftiko: '0.5'
info:
label: Training Compliance Tracker Pipeline
description: Pulls training completion data from Pluralsight, syncs with Workday employee records, generates compliance reports in Google Sheets, and alerts managers via Slack.
tags:
- training
- pluralsight
- workday
- google-sheets
- slack
capability:
exposes:
- type: mcp
namespace: training-compliance
port: 8080
tools:
- name: track-compliance
description: Orchestrate training compliance tracking across Pluralsight, Workday, Google Sheets, and Slack.
inputParameters:
- name: department
in: body
type: string
description: The department.
- name: course_id
in: body
type: string
description: The required course ID.
steps:
- name: get-completions
type: call
call: pluralsight.get-course-completions
with:
course: '{{course_id}}'
- name: get-employees
type: call
call: workday.get-department-roster
with:
department: '{{department}}'
- name: generate-report
type: call
call: gsheets.create-spreadsheet
with:
title: 'Training Compliance: {{department}} - {{course_id}}'
- name: alert-managers
type: call
call: slack.post-message
with:
channel: '{{department}}-managers'
text: 'Training compliance report ready. Completion rate: {{get-completions.rate}}%'
consumes:
- type: http
namespace: pluralsight
baseUri: https://api.pluralsight.com/v1
authentication:
type: bearer
token: $secrets.pluralsight_token
resources:
- name: completions
path: /courses/{{course}}/completions
inputParameters:
- name: course
in: path
operations:
- name: get-course-completions
method: GET
- type: http
namespace: workday
baseUri: https://wd5-impl-services1.workday.com/ccx/service/hasbro
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: departments
path: /Human_Resources/Departments/{{department}}
inputParameters:
- name: department
in: path
operations:
- name: get-department-roster
method: GET
- type: http
namespace: gsheets
baseUri: https://sheets.googleapis.com/v4
authentication:
type: bearer
token: $secrets.google_token
resources:
- name: spreadsheets
path: /spreadsheets
operations:
- name: create-spreadsheet
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 Salesforce opportunity by ID, returning deal stage, amount, close date, and account name.
naftiko: '0.5'
info:
label: Salesforce Opportunity Lookup
description: Retrieves a Salesforce opportunity by ID, returning deal stage, amount, close date, and account name.
tags:
- sales
- salesforce
capability:
exposes:
- type: mcp
namespace: salesforce-opps
port: 8080
tools:
- name: get-opportunity
description: Look up a Salesforce opportunity by ID.
inputParameters:
- name: opportunity_id
in: body
type: string
description: The Salesforce opportunity ID.
call: salesforce.get-opportunity
with:
id: '{{opportunity_id}}'
outputParameters:
- name: stage
type: string
mapping: $.StageName
- name: amount
type: string
mapping: $.Amount
- name: close_date
type: string
mapping: $.CloseDate
consumes:
- type: http
namespace: salesforce
baseUri: https://hasbro.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /sobjects/Opportunity/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-opportunity
method: GET
Looks up a SAP sales order and returns status, customer, total value, and shipping date.
naftiko: '0.5'
info:
label: SAP Sales Order Status
description: Looks up a SAP sales order and returns status, customer, total value, and shipping date.
tags:
- sales
- sap
- order-management
capability:
exposes:
- type: mcp
namespace: sales-orders
port: 8080
tools:
- name: get-sales-order
description: Look up a SAP sales order by number.
inputParameters:
- name: order_number
in: body
type: string
description: The SAP sales order number.
call: sap.get-sales-order
with:
order_number: '{{order_number}}'
outputParameters:
- name: status
type: string
mapping: $.d.OrderStatus
- name: customer
type: string
mapping: $.d.CustomerName
- name: total_value
type: string
mapping: $.d.TotalAmount
- name: ship_date
type: string
mapping: $.d.ShipDate
consumes:
- type: http
namespace: sap
baseUri: https://hasbro-s4.sap.com/sap/opu/odata/sap/ZSD_ORDER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: sales-orders
path: /SalesOrderSet('{{order_number}}')
inputParameters:
- name: order_number
in: path
operations:
- name: get-sales-order
method: GET
Pulls supplier data from SAP Ariba, creates an audit checklist in ServiceNow, assigns an auditor via Workday, and notifies the quality team in Microsoft Teams.
naftiko: '0.5'
info:
label: Supplier Quality Audit Orchestrator
description: Pulls supplier data from SAP Ariba, creates an audit checklist in ServiceNow, assigns an auditor via Workday, and notifies the quality team in Microsoft Teams.
tags:
- procurement
- quality
- sap-ariba
- servicenow
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: supplier-audit
port: 8080
tools:
- name: initiate-supplier-audit
description: Initiate a supplier quality audit across Ariba, ServiceNow, and Workday.
inputParameters:
- name: supplier_id
in: body
type: string
description: The SAP Ariba supplier ID.
steps:
- name: get-supplier
type: call
call: ariba.get-supplier
with:
supplier_id: '{{supplier_id}}'
- name: create-audit
type: call
call: servicenow.create-record
with:
table: u_supplier_audits
short_description: 'Quality audit: {{get-supplier.name}}'
description: 'Supplier: {{get-supplier.name}}. Category: {{get-supplier.category}}. Last audit: {{get-supplier.last_audit_date}}.'
assigned_group: Quality_Assurance
- name: get-auditor
type: call
call: workday.get-available-auditor
with:
department: Quality
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: quality-audits
text: 'Supplier audit initiated for {{get-supplier.name}}. Auditor: {{get-auditor.full_name}}. ServiceNow: {{create-audit.number}}.'
consumes:
- type: http
namespace: ariba
baseUri: https://openapi.ariba.com/api/supplier-management/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://hasbro.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
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: auditors
path: /workers?department={{department}}&role=auditor
inputParameters:
- name: department
in: query
operations:
- name: get-available-auditor
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/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Validates production batch in SAP quality module, updates batch status, creates inspection report in Confluence, and alerts quality team via Microsoft Teams.
naftiko: '0.5'
info:
label: Manufacturing Quality Gate Pipeline
description: Validates production batch in SAP quality module, updates batch status, creates inspection report in Confluence, and alerts quality team via Microsoft Teams.
tags:
- manufacturing
- sap
- confluence
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: quality-gate
port: 8080
tools:
- name: process-quality-gate
description: Orchestrate manufacturing quality gate across SAP, Confluence, and Teams.
inputParameters:
- name: batch_id
in: body
type: string
description: The production batch ID.
- name: result
in: body
type: string
description: Pass or fail.
steps:
- name: validate-batch
type: call
call: sap.get-batch-results
with:
batch: '{{batch_id}}'
- name: update-status
type: call
call: sap.update-batch-status
with:
batch: '{{batch_id}}'
status: '{{result}}'
- name: create-report
type: call
call: confluence.create-page
with:
space_key: QUALITY
title: 'Inspection Report: Batch {{batch_id}}'
body: 'Result: {{result}}. Details: {{validate-batch.details}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: quality-control
text: 'Quality gate {{result}} for batch {{batch_id}}. Report: {{create-report.url}}'
consumes:
- type: http
namespace: sap
baseUri: https://hasbro-s4.sap.com/sap/opu/odata/sap/ZQUALITY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: batches
path: /BatchSet('{{batch}}')
inputParameters:
- name: batch
in: path
operations:
- name: get-batch-results
method: GET
- name: update-batch-status
method: PATCH
- type: http
namespace: confluence
baseUri: https://hasbro.atlassian.net/wiki/api/v2
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: pages
path: /pages
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/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Creates a media buy request in Salesforce, routes for budget approval via Jira, submits to Facebook Ads Manager, and tracks spend in Google Sheets.
naftiko: '0.5'
info:
label: Media Buy Approval Pipeline
description: Creates a media buy request in Salesforce, routes for budget approval via Jira, submits to Facebook Ads Manager, and tracks spend in Google Sheets.
tags:
- advertising
- salesforce
- jira
- facebook
- google-sheets
capability:
exposes:
- type: mcp
namespace: media-buy
port: 8080
tools:
- name: approve-media-buy
description: Orchestrate media buy approval across Salesforce, Jira, Facebook, and Google Sheets.
inputParameters:
- name: campaign_name
in: body
type: string
description: The campaign name.
- name: budget
in: body
type: string
description: The media buy budget.
steps:
- name: create-request
type: call
call: salesforce.create-opportunity
with:
name: 'Media Buy: {{campaign_name}}'
amount: '{{budget}}'
- name: create-approval
type: call
call: jira.create-issue
with:
project: MEDIA
summary: 'Approve media buy: {{campaign_name}} - ${{budget}}'
type: Approval
- name: submit-ad
type: call
call: facebook.create-ad-set
with:
campaign: '{{campaign_name}}'
budget: '{{budget}}'
- name: track-spend
type: call
call: gsheets.append-row
with:
spreadsheet_id: media-spend
values: '{{campaign_name}},{{budget}},Pending'
consumes:
- type: http
namespace: salesforce
baseUri: https://hasbro.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /sobjects/Opportunity
operations:
- name: create-opportunity
method: POST
- type: http
namespace: jira
baseUri: https://hasbro.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: facebook
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.facebook_token
resources:
- name: ad-sets
path: /act_hasbro/adsets
operations:
- name: create-ad-set
method: POST
- type: http
namespace: gsheets
baseUri: https://sheets.googleapis.com/v4/spreadsheets
authentication:
type: bearer
token: $secrets.google_token
resources:
- name: values
path: /{{spreadsheet_id}}/values/Sheet1:append?valueInputOption=RAW
inputParameters:
- name: spreadsheet_id
in: path
operations:
- name: append-row
method: POST
Sends a message to a specified Slack channel, returning the message timestamp and channel confirmation.
naftiko: '0.5'
info:
label: Slack Channel Message Sender
description: Sends a message to a specified Slack channel, returning the message timestamp and channel confirmation.
tags:
- communications
- slack
capability:
exposes:
- type: mcp
namespace: slack-messaging
port: 8080
tools:
- name: send-message
description: Send a message to a Slack channel.
inputParameters:
- name: channel_name
in: body
type: string
description: The Slack channel name.
- name: message_text
in: body
type: string
description: The message content.
call: slack.post-message
with:
channel: '{{channel_name}}'
text: '{{message_text}}'
outputParameters:
- name: timestamp
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
On digital game release, triggers the Unity build pipeline via Azure DevOps, publishes release notes to Confluence, posts announcement to Discord, and updates the product listing on BigCommerce.
naftiko: '0.5'
info:
label: Digital Game Release Pipeline
description: On digital game release, triggers the Unity build pipeline via Azure DevOps, publishes release notes to Confluence, posts announcement to Discord, and updates the product listing on BigCommerce.
tags:
- gaming
- azure-devops
- confluence
- discord
- bigcommerce
capability:
exposes:
- type: mcp
namespace: game-release
port: 8080
tools:
- name: release-game
description: Orchestrate a digital game release across Azure DevOps, Confluence, Discord, and BigCommerce.
inputParameters:
- name: game_title
in: body
type: string
description: The game title.
- name: version
in: body
type: string
description: The release version.
steps:
- name: trigger-build
type: call
call: azuredevops.queue-build
with:
definition_id: game-build-pipeline
parameters: '{"game":"{{game_title}}","version":"{{version}}"}'
- name: publish-notes
type: call
call: confluence.create-page
with:
space_key: GAMES
title: '{{game_title}} v{{version}} Release Notes'
parent_id: release-notes
- name: announce-discord
type: call
call: discord.send-message
with:
channel_id: game-releases
content: '{{game_title}} v{{version}} is now available! Build: {{trigger-build.buildId}}'
- name: update-listing
type: call
call: bigcommerce.update-product
with:
name: '{{game_title}}'
version: '{{version}}'
consumes:
- type: http
namespace: azuredevops
baseUri: https://dev.azure.com/hasbro/games/_apis
authentication:
type: bearer
token: $secrets.azuredevops_token
resources:
- name: builds
path: /build/builds?api-version=7.0
operations:
- name: queue-build
method: POST
- type: http
namespace: confluence
baseUri: https://hasbro.atlassian.net/wiki/api/v2
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
- type: http
namespace: discord
baseUri: https://discord.com/api/v10
authentication:
type: bearer
token: $secrets.discord_bot_token
resources:
- name: messages
path: /channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/hasbro/v3
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: products
path: /catalog/products
operations:
- name: update-product
method: PUT
Retrieves a travel expense report from SAP Concur, validates against budget, and creates a Jira approval task.
naftiko: '0.5'
info:
label: SAP Concur Travel Expense Report
description: Retrieves a travel expense report from SAP Concur, validates against budget, and creates a Jira approval task.
tags:
- finance
- travel
- sap-concur
- jira
capability:
exposes:
- type: mcp
namespace: travel-expenses
port: 8080
tools:
- name: process-expense-report
description: Validate a Concur expense report and route for approval.
inputParameters:
- name: report_id
in: body
type: string
description: The SAP Concur expense report ID.
steps:
- name: get-report
type: call
call: concur.get-expense-report
with:
report_id: '{{report_id}}'
- name: create-approval
type: call
call: jira.create-issue
with:
project_key: FIN
summary: 'Expense review: {{get-report.employee_name}} - {{get-report.total_amount}} {{get-report.currency}}'
issue_type: Task
description: 'Expense report {{report_id}}. Total: {{get-report.total_amount}} {{get-report.currency}}. Flagged items: {{get-report.flagged_count}}.'
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/{{report_id}}
inputParameters:
- name: report_id
in: path
operations:
- name: get-expense-report
method: GET
- type: http
namespace: jira
baseUri: https://hasbro.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Queries the Teradata data warehouse for historical sales data by product line and region.
naftiko: '0.5'
info:
label: Teradata Sales Data Warehouse Query
description: Queries the Teradata data warehouse for historical sales data by product line and region.
tags:
- analytics
- data-warehouse
- teradata
capability:
exposes:
- type: mcp
namespace: sales-dwh
port: 8080
tools:
- name: query-sales-history
description: Query Teradata for historical sales by product line.
inputParameters:
- name: product_line
in: body
type: string
description: The product line.
- name: region
in: body
type: string
description: The sales region.
call: teradata.query-sales
with:
product_line: '{{product_line}}'
region: '{{region}}'
outputParameters:
- name: total_revenue
type: string
mapping: $.results.total_revenue
- name: total_units
type: integer
mapping: $.results.total_units
consumes:
- type: http
namespace: teradata
baseUri: https://hasbro-td.teradata.com/api/query/v1
authentication:
type: bearer
token: $secrets.teradata_token
resources:
- name: queries
path: /execute
operations:
- name: query-sales
method: POST
Creates a promotion in SAP, publishes to BigCommerce storefront, sends retailer notifications via MailChimp, and tracks in Google Sheets.
naftiko: '0.5'
info:
label: Retail Promotion Activation Pipeline
description: Creates a promotion in SAP, publishes to BigCommerce storefront, sends retailer notifications via MailChimp, and tracks in Google Sheets.
tags:
- promotions
- sap
- bigcommerce
- mailchimp
- google-sheets
capability:
exposes:
- type: mcp
namespace: promotion-activation
port: 8080
tools:
- name: activate-promotion
description: Orchestrate retail promotion activation across SAP, BigCommerce, MailChimp, and Google Sheets.
inputParameters:
- name: promo_name
in: body
type: string
description: The promotion name.
- name: discount_percent
in: body
type: string
description: The discount percentage.
- name: start_date
in: body
type: string
description: The promotion start date.
steps:
- name: create-sap-promo
type: call
call: sap.create-promotion
with:
name: '{{promo_name}}'
discount: '{{discount_percent}}'
start: '{{start_date}}'
- name: publish-storefront
type: call
call: bigcommerce.create-coupon
with:
name: '{{promo_name}}'
discount: '{{discount_percent}}'
- name: notify-retailers
type: call
call: mailchimp.send-campaign
with:
subject: 'New Promotion: {{promo_name}} - {{discount_percent}}% off'
list_id: retail-partners
- name: track-promo
type: call
call: gsheets.append-row
with:
spreadsheet_id: promotion-tracker
values: '{{promo_name}},{{discount_percent}},{{start_date}},Active'
consumes:
- type: http
namespace: sap
baseUri: https://hasbro-s4.sap.com/sap/opu/odata/sap/ZPROMOTION_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: promotions
path: /PromotionSet
operations:
- name: create-promotion
method: POST
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/hasbro/v2
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: coupons
path: /coupons
operations:
- name: create-coupon
method: POST
- type: http
namespace: mailchimp
baseUri: https://us1.api.mailchimp.com/3.0
authentication:
type: bearer
token: $secrets.mailchimp_token
resources:
- name: campaigns
path: /campaigns
operations:
- name: send-campaign
method: POST
- type: http
namespace: gsheets
baseUri: https://sheets.googleapis.com/v4/spreadsheets
authentication:
type: bearer
token: $secrets.google_token
resources:
- name: values
path: /{{spreadsheet_id}}/values/Sheet1:append?valueInputOption=RAW
inputParameters:
- name: spreadsheet_id
in: path
operations:
- name: append-row
method: POST
Retrieves a Figma design file by key, returning file name, last modified date, and thumbnail URL.
naftiko: '0.5'
info:
label: Figma Design File Lookup
description: Retrieves a Figma design file by key, returning file name, last modified date, and thumbnail URL.
tags:
- design
- figma
capability:
exposes:
- type: mcp
namespace: figma-files
port: 8080
tools:
- name: get-design-file
description: Look up a Figma design file by file key.
inputParameters:
- name: file_key
in: body
type: string
description: The Figma file key.
call: figma.get-file
with:
key: '{{file_key}}'
outputParameters:
- name: file_name
type: string
mapping: $.name
- name: last_modified
type: string
mapping: $.lastModified
- name: thumbnail_url
type: string
mapping: $.thumbnailUrl
consumes:
- type: http
namespace: figma
baseUri: https://api.figma.com/v1
authentication:
type: bearer
token: $secrets.figma_token
resources:
- name: files
path: /files/{{key}}
inputParameters:
- name: key
in: path
operations:
- name: get-file
method: GET
Executes a parameterized query against Snowflake to retrieve aggregated sales data by product category and date range.
naftiko: '0.5'
info:
label: Snowflake Sales Data Query
description: Executes a parameterized query against Snowflake to retrieve aggregated sales data by product category and date range.
tags:
- analytics
- snowflake
capability:
exposes:
- type: mcp
namespace: snowflake-sales
port: 8080
tools:
- name: query-sales
description: Query aggregated sales data from Snowflake by category.
inputParameters:
- name: category
in: body
type: string
description: The product category to filter.
call: snowflake.run-query
with:
category: '{{category}}'
outputParameters:
- name: total_revenue
type: string
mapping: $.data[0].TOTAL_REVENUE
- name: units_sold
type: string
mapping: $.data[0].UNITS_SOLD
consumes:
- type: http
namespace: snowflake
baseUri: https://hasbro.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
Processes B2B customer sample requests by creating a Salesforce case, generating a SAP sample delivery, and notifying the sales rep via Microsoft Teams.
naftiko: '0.5'
info:
label: Customer Sample Request Orchestrator
description: Processes B2B customer sample requests by creating a Salesforce case, generating a SAP sample delivery, and notifying the sales rep via Microsoft Teams.
tags:
- sales
- samples
- salesforce
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sample-request
port: 8080
tools:
- name: process-sample-request
description: Orchestrate a customer product sample request.
inputParameters:
- name: customer_id
in: body
type: string
description: The Salesforce account ID.
- name: material_number
in: body
type: string
description: The material to sample.
- name: quantity
in: body
type: integer
description: Sample quantity.
steps:
- name: create-case
type: call
call: salesforce.create-case
with:
account_id: '{{customer_id}}'
subject: 'Sample request: {{material_number}}'
type: sample_request
- name: create-sample-delivery
type: call
call: sap.create-sample-order
with:
customer: '{{customer_id}}'
material: '{{material_number}}'
quantity: '{{quantity}}'
- name: notify-sales-rep
type: call
call: msteams.send-message
with:
channel_id: sales-notifications
text: 'Sample request processed for customer {{customer_id}}: {{material_number}} x{{quantity}}. Case: {{create-case.case_number}}. SAP order: {{create-sample-delivery.order_number}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://henkel.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: sap
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZSD_SAMPLE_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: samples
path: /SampleOrderSet
operations:
- name: create-sample-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: /teams/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Escalates adhesive technical support requests by retrieving product specs from SAP, creating a Zendesk escalation ticket, and routing to the appropriate technical specialist via Workday.
naftiko: '0.5'
info:
label: Adhesive Customer Technical Support Escalation
description: Escalates adhesive technical support requests by retrieving product specs from SAP, creating a Zendesk escalation ticket, and routing to the appropriate technical specialist via Workday.
tags:
- customer-service
- technical-support
- sap
- zendesk
- workday
capability:
exposes:
- type: mcp
namespace: tech-support-escalation
port: 8080
tools:
- name: escalate-tech-support
description: Escalate a technical support request for adhesive products.
inputParameters:
- name: ticket_id
in: body
type: string
description: The existing Zendesk ticket ID.
- name: product_code
in: body
type: string
description: The adhesive product code.
- name: application_type
in: body
type: string
description: The customer application type.
steps:
- name: get-product-specs
type: call
call: sap.get-material
with:
material_id: '{{product_code}}'
- name: find-specialist
type: call
call: workday.search-workers
with:
query: technical_specialist_adhesive_{{application_type}}
- name: escalate-ticket
type: call
call: zendesk.update-ticket
with:
ticket_id: '{{ticket_id}}'
priority: high
assignee_email: '{{find-specialist.workers[0].work_email}}'
internal_note: 'Escalated for {{application_type}} application. Product: {{get-product-specs.product_name}}. Specialist: {{find-specialist.workers[0].fullName}}.'
consumes:
- type: http
namespace: sap
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZPR_MATERIAL_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: materials
path: /MaterialSet('{{material_id}}')
inputParameters:
- name: material_id
in: path
operations:
- name: get-material
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?search={{query}}
inputParameters:
- name: query
in: query
operations:
- name: search-workers
method: GET
- type: http
namespace: zendesk
baseUri: https://henkel.zendesk.com/api/v2
authentication:
type: basic
username: $secrets.zendesk_user
password: $secrets.zendesk_token
resources:
- name: tickets
path: /tickets/{{ticket_id}}
inputParameters:
- name: ticket_id
in: path
operations:
- name: update-ticket
method: PUT
Retrieves the current stage, close date, and amount for a Salesforce opportunity by opportunity ID.
naftiko: '0.5'
info:
label: Salesforce Opportunity Status Lookup
description: Retrieves the current stage, close date, and amount for a Salesforce opportunity by opportunity ID.
tags:
- sales
- crm
- salesforce
capability:
exposes:
- type: mcp
namespace: sf-opportunity
port: 8080
tools:
- name: get-opportunity
description: Look up a Salesforce opportunity by ID.
inputParameters:
- name: opportunity_id
in: body
type: string
description: The Salesforce opportunity ID.
call: salesforce.get-opportunity
with:
opp_id: '{{opportunity_id}}'
outputParameters:
- name: stage
type: string
mapping: $.StageName
- name: close_date
type: string
mapping: $.CloseDate
- name: amount
type: string
mapping: $.Amount
consumes:
- type: http
namespace: salesforce
baseUri: https://henkel.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /sobjects/Opportunity/{{opp_id}}
inputParameters:
- name: opp_id
in: path
operations:
- name: get-opportunity
method: GET
Sends a formatted alert message to a designated Slack channel for manufacturing plant notifications.
naftiko: '0.5'
info:
label: Slack Plant Alert Broadcaster
description: Sends a formatted alert message to a designated Slack channel for manufacturing plant notifications.
tags:
- communications
- manufacturing
- slack
capability:
exposes:
- type: mcp
namespace: plant-alerts
port: 8080
tools:
- name: broadcast-plant-alert
description: Send an alert message to a Slack plant channel.
inputParameters:
- name: channel_id
in: body
type: string
description: The Slack channel ID.
- name: alert_message
in: body
type: string
description: The alert message text.
call: slack.post-message
with:
channel: '{{channel_id}}'
text: '{{alert_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 the current status, assignee, and approval state for an IT change request ticket in Jira.
naftiko: '0.5'
info:
label: Jira IT Change Request Status
description: Retrieves the current status, assignee, and approval state for an IT change request ticket in Jira.
tags:
- it
- change-management
- jira
capability:
exposes:
- type: mcp
namespace: change-requests
port: 8080
tools:
- name: get-change-request
description: Look up an IT change request by Jira issue key.
inputParameters:
- name: issue_key
in: body
type: string
description: The Jira issue key (e.g., CHG-1234).
call: jira.get-issue
with:
key: '{{issue_key}}'
outputParameters:
- name: status
type: string
mapping: $.fields.status.name
- name: assignee
type: string
mapping: $.fields.assignee.displayName
- name: approval_state
type: string
mapping: $.fields.customfield_10050
consumes:
- type: http
namespace: jira
baseUri: https://henkel.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue/{{key}}
inputParameters:
- name: key
in: path
operations:
- name: get-issue
method: GET
Tracks influencer marketing campaigns by pulling engagement data from Instagram, matching against campaign spend in SAP, and updating ROI metrics in Google Sheets.
naftiko: '0.5'
info:
label: Beauty Care Influencer Campaign Tracker
description: Tracks influencer marketing campaigns by pulling engagement data from Instagram, matching against campaign spend in SAP, and updating ROI metrics in Google Sheets.
tags:
- marketing
- influencer
- instagram
- sap
- google-sheets
capability:
exposes:
- type: mcp
namespace: influencer-tracking
port: 8080
tools:
- name: track-influencer-campaign
description: Track ROI of an influencer marketing campaign.
inputParameters:
- name: campaign_id
in: body
type: string
description: The campaign identifier.
- name: influencer_handle
in: body
type: string
description: The Instagram handle.
steps:
- name: get-engagement
type: call
call: instagram.get-media-insights
with:
username: '{{influencer_handle}}'
campaign_hashtag: '{{campaign_id}}'
- name: get-campaign-spend
type: call
call: sap.get-marketing-cost
with:
campaign_ref: '{{campaign_id}}'
- name: update-roi-sheet
type: call
call: google-sheets.append-row
with:
spreadsheet_id: influencer_roi_tracker
range: Campaigns!A:F
values:
- '{{campaign_id}}'
- '{{influencer_handle}}'
- '{{get-engagement.total_reach}}'
- '{{get-engagement.engagement_rate}}'
- '{{get-campaign-spend.total_cost}}'
consumes:
- type: http
namespace: instagram
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.meta_access_token
resources:
- name: insights
path: /{{username}}/media?fields=insights
inputParameters:
- name: username
in: path
operations:
- name: get-media-insights
method: GET
- type: http
namespace: sap
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZMK_CAMPAIGN_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: costs
path: /CampaignCostSet('{{campaign_ref}}')
inputParameters:
- name: campaign_ref
in: path
operations:
- name: get-marketing-cost
method: GET
- type: http
namespace: google-sheets
baseUri: https://sheets.googleapis.com/v4
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: values
path: /spreadsheets/{{spreadsheet_id}}/values/{{range}}:append
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: append-row
method: POST
Validates product launch readiness by checking SAP material master, regulatory approval status in SharePoint, and marketing assets in Adobe Experience Manager.
naftiko: '0.5'
info:
label: Product Launch Readiness Checker
description: Validates product launch readiness by checking SAP material master, regulatory approval status in SharePoint, and marketing assets in Adobe Experience Manager.
tags:
- product
- launch
- sap
- sharepoint
- adobe
capability:
exposes:
- type: mcp
namespace: launch-readiness
port: 8080
tools:
- name: check-launch-readiness
description: Validate product launch readiness across systems.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number.
- name: brand_code
in: body
type: string
description: The brand code.
steps:
- name: get-material
type: call
call: sap.get-material
with:
material_id: '{{material_number}}'
- name: check-regulatory
type: call
call: sharepoint.get-document
with:
site_id: regulatory_approvals
file_path: Approvals/{{material_number}}_approval.pdf
- name: check-marketing-assets
type: call
call: aem.get-assets
with:
folder: /content/dam/henkel/{{brand_code}}/{{material_number}}
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: product-launches
text: 'Launch readiness for {{material_number}}: Material={{get-material.product_name}}, Regulatory={{check-regulatory.status}}, Assets={{check-marketing-assets.count}} files.'
consumes:
- type: http
namespace: sap
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZPR_MATERIAL_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: materials
path: /MaterialSet('{{material_id}}')
inputParameters:
- name: material_id
in: path
operations:
- name: get-material
method: GET
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: documents
path: /{{site_id}}/drive/root:/{{file_path}}
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: get-document
method: GET
- type: http
namespace: aem
baseUri: https://aem.henkel.com/api/assets
authentication:
type: bearer
token: $secrets.aem_token
resources:
- name: assets
path: '{{folder}}.json'
inputParameters:
- name: folder
in: path
operations:
- name: get-assets
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves infrastructure health metrics from Datadog.
naftiko: '0.5'
info:
label: Datadog Infrastructure Health Check
description: Retrieves infrastructure health metrics from Datadog.
tags:
- it-operations
- monitoring
- datadog
capability:
exposes:
- type: mcp
namespace: infra-monitoring
port: 8080
tools:
- name: get-service-health
description: Get Datadog health metrics for a service.
inputParameters:
- name: service_name
in: body
type: string
description: The Datadog service name.
call: datadog.get-metrics
with:
service: '{{service_name}}'
outputParameters:
- name: cpu_usage
type: string
mapping: $.series[0].pointlist[-1][1]
- name: error_rate
type: string
mapping: $.series[1].pointlist[-1][1]
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apiKey
key: $secrets.datadog_api_key
headerName: DD-API-KEY
resources:
- name: metrics
path: /query?query=avg:system.cpu.user{service:{{service}}}
inputParameters:
- name: service
in: path
operations:
- name: get-metrics
method: GET
Searches Splunk for production error logs from manufacturing systems, filtered by plant code and time range.
naftiko: '0.5'
info:
label: Splunk Production Error Log Search
description: Searches Splunk for production error logs from manufacturing systems, filtered by plant code and time range.
tags:
- monitoring
- manufacturing
- splunk
capability:
exposes:
- type: mcp
namespace: production-logs
port: 8080
tools:
- name: search-error-logs
description: Search Splunk for production error events by plant code.
inputParameters:
- name: plant_code
in: body
type: string
description: The manufacturing plant code.
- name: hours_back
in: body
type: integer
description: Number of hours to search back.
call: splunk.search
with:
search: search index=production plant={{plant_code}} level=ERROR earliest=-{{hours_back}}h
outputParameters:
- name: event_count
type: integer
mapping: $.results.count
- name: events
type: array
mapping: $.results.events
consumes:
- type: http
namespace: splunk
baseUri: https://splunk.henkel.com:8089/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: search-jobs
path: /search/jobs
operations:
- name: search
method: POST
Coordinates environmental compliance audits by pulling permit data from SAP EHS, scheduling inspections in ServiceNow, and distributing audit checklists via SharePoint.
naftiko: '0.5'
info:
label: Environmental Compliance Audit Coordinator
description: Coordinates environmental compliance audits by pulling permit data from SAP EHS, scheduling inspections in ServiceNow, and distributing audit checklists via SharePoint.
tags:
- compliance
- environmental
- sap
- servicenow
- sharepoint
capability:
exposes:
- type: mcp
namespace: env-audit
port: 8080
tools:
- name: coordinate-audit
description: Coordinate an environmental compliance audit.
inputParameters:
- name: plant_code
in: body
type: string
description: The plant code.
- name: audit_date
in: body
type: string
description: Scheduled audit date in YYYY-MM-DD.
steps:
- name: get-permits
type: call
call: sap-ehs.get-permits
with:
plant: '{{plant_code}}'
- name: schedule-inspection
type: call
call: servicenow.create-change
with:
short_description: 'Environmental audit: Plant {{plant_code}}'
scheduled_date: '{{audit_date}}'
category: environmental_compliance
- name: distribute-checklist
type: call
call: sharepoint.copy-template
with:
site_id: environmental_compliance
source_path: Templates/audit_checklist_template.xlsx
dest_path: Audits/{{plant_code}}/audit_{{audit_date}}.xlsx
consumes:
- type: http
namespace: sap-ehs
baseUri: https://henkel-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: servicenow
baseUri: https://henkel.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: changes
path: /table/change_request
operations:
- name: create-change
method: POST
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: copy
path: /{{site_id}}/drive/root:/{{source_path}}:/copy
inputParameters:
- name: site_id
in: path
- name: source_path
in: path
operations:
- name: copy-template
method: POST
When a safety incident occurs at a plant, creates a ServiceNow incident, logs in SAP EHS, and notifies the safety team and plant manager in Microsoft Teams.
naftiko: '0.5'
info:
label: Safety Incident Reporter
description: When a safety incident occurs at a plant, creates a ServiceNow incident, logs in SAP EHS, and notifies the safety team and plant manager in Microsoft Teams.
tags:
- safety
- ehs
- servicenow
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: safety-incidents
port: 8080
tools:
- name: report-safety-incident
description: Report a plant safety incident across all systems.
inputParameters:
- name: plant_code
in: body
type: string
description: The plant code.
- name: incident_description
in: body
type: string
description: Description of the incident.
- name: severity
in: body
type: string
description: Incident severity (low, medium, high, critical).
steps:
- name: create-snow-incident
type: call
call: servicenow.create-incident
with:
short_description: Safety incident at plant {{plant_code}}
priority: '{{severity}}'
description: '{{incident_description}}'
assigned_group: EHS_Team
- name: log-in-sap
type: call
call: sap.create-ehs-incident
with:
plant: '{{plant_code}}'
description: '{{incident_description}}'
severity: '{{severity}}'
snow_ref: '{{create-snow-incident.number}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: safety-alerts
text: 'SAFETY INCIDENT at plant {{plant_code}} ({{severity}}): {{incident_description}}. ServiceNow: {{create-snow-incident.number}}. SAP EHS: {{log-in-sap.incident_id}}.'
consumes:
- type: http
namespace: servicenow
baseUri: https://henkel.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://henkel-s4.sap.com/sap/opu/odata/sap/ZEH_EHS_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: ehs-incidents
path: /EHSIncidentSet
operations:
- name: create-ehs-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/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Creates a maintenance work order in SAP PM, schedules a technician via Workday, and logs the request in ServiceNow for tracking.
naftiko: '0.5'
info:
label: Plant Maintenance Work Order Pipeline
description: Creates a maintenance work order in SAP PM, schedules a technician via Workday, and logs the request in ServiceNow for tracking.
tags:
- maintenance
- manufacturing
- sap
- workday
- servicenow
capability:
exposes:
- type: mcp
namespace: maintenance-orders
port: 8080
tools:
- name: create-work-order
description: Create and track a plant maintenance work order.
inputParameters:
- name: equipment_id
in: body
type: string
description: The SAP equipment ID.
- name: description
in: body
type: string
description: Work order description.
- name: priority
in: body
type: string
description: Priority level (high, medium, low).
steps:
- name: create-sap-order
type: call
call: sap-pm.create-order
with:
equipment: '{{equipment_id}}'
description: '{{description}}'
priority: '{{priority}}'
- name: find-technician
type: call
call: workday.search-workers
with:
query: maintenance_technician_{{equipment_id}}
- name: log-in-servicenow
type: call
call: servicenow.create-incident
with:
short_description: 'Maintenance: {{description}}'
category: plant_maintenance
assignment_group: Plant_Maintenance
sap_order_number: '{{create-sap-order.order_number}}'
consumes:
- type: http
namespace: sap-pm
baseUri: https://henkel-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: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers
path: /workers?search={{query}}
inputParameters:
- name: query
in: query
operations:
- name: search-workers
method: GET
- type: http
namespace: servicenow
baseUri: https://henkel.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 SAP production order by number, returning status, planned quantity, completed quantity, and target completion date.
naftiko: '0.5'
info:
label: Production Order Status
description: Retrieves a SAP production order by number, returning status, planned quantity, completed quantity, and target completion date.
tags:
- manufacturing
- production
- sap
capability:
exposes:
- type: mcp
namespace: production-orders
port: 8080
tools:
- name: get-production-order
description: Look up a SAP production order.
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: planned_qty
type: integer
mapping: $.d.PlannedQuantity
- name: completed_qty
type: integer
mapping: $.d.CompletedQuantity
- name: target_date
type: string
mapping: $.d.TargetCompletionDate
consumes:
- type: http
namespace: sap
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZPP_PRODORDER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: production-orders
path: /ProductionOrderSet('{{order_number}}')
inputParameters:
- name: order_number
in: path
operations:
- name: get-production-order
method: GET
When a customer support ticket arrives in Zendesk, retrieves product info from SAP, creates a Salesforce case, and notifies the support team in Microsoft Teams.
naftiko: '0.5'
info:
label: Zendesk Customer Support Ticket Handler
description: When a customer support ticket arrives in Zendesk, retrieves product info from SAP, creates a Salesforce case, and notifies the support team in Microsoft Teams.
tags:
- customer-service
- zendesk
- sap
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: support-handling
port: 8080
tools:
- name: handle-support-ticket
description: Process a Zendesk support ticket with SAP enrichment.
inputParameters:
- name: ticket_id
in: body
type: string
description: The Zendesk ticket ID.
- name: material_number
in: body
type: string
description: The related product material number.
steps:
- name: get-ticket
type: call
call: zendesk.get-ticket
with:
ticket_id: '{{ticket_id}}'
- name: get-product
type: call
call: sap.get-material
with:
material_id: '{{material_number}}'
- name: create-case
type: call
call: salesforce.create-case
with:
subject: 'Support: {{get-ticket.subject}}'
description: 'Zendesk #{{ticket_id}}: {{get-ticket.description}}. Product: {{get-product.MaterialDescription}}.'
- name: notify-support
type: call
call: msteams.send-message
with:
channel_id: customer-support
text: 'Support ticket for {{get-product.MaterialDescription}}: {{get-ticket.subject}}. SF Case: {{create-case.CaseNumber}}.'
consumes:
- type: http
namespace: zendesk
baseUri: https://henkel.zendesk.com/api/v2
authentication:
type: bearer
token: $secrets.zendesk_token
resources:
- name: tickets
path: /tickets/{{ticket_id}}
inputParameters:
- name: ticket_id
in: path
operations:
- name: get-ticket
method: GET
- type: http
namespace: sap
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZPR_MATERIAL_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: materials
path: /MaterialSet('{{material_id}}')
inputParameters:
- name: material_id
in: path
operations:
- name: get-material
method: GET
- type: http
namespace: salesforce
baseUri: https://henkel.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: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves a ServiceNow incident by number, returning state, priority, and assigned group.
naftiko: '0.5'
info:
label: ServiceNow Ticket Status
description: Retrieves a ServiceNow incident by number, returning state, priority, and assigned group.
tags:
- it-service
- servicenow
capability:
exposes:
- type: mcp
namespace: itsm-tickets
port: 8080
tools:
- name: get-ticket-status
description: Look up a ServiceNow incident.
inputParameters:
- name: incident_number
in: body
type: string
description: The ServiceNow incident number.
call: servicenow.get-incident
with:
incident_number: '{{incident_number}}'
outputParameters:
- name: state
type: string
mapping: $.result[0].state
- name: priority
type: string
mapping: $.result[0].priority
- name: assigned_group
type: string
mapping: $.result[0].assignment_group.display_value
consumes:
- type: http
namespace: servicenow
baseUri: https://henkel.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: path
operations:
- name: get-incident
method: GET
Retrieves the current status, priority, and assigned responder for a PagerDuty incident by incident ID.
naftiko: '0.5'
info:
label: PagerDuty Incident Status Lookup
description: Retrieves the current status, priority, and assigned responder for a PagerDuty incident by incident ID.
tags:
- operations
- incident-management
- pagerduty
capability:
exposes:
- type: mcp
namespace: pagerduty-incidents
port: 8080
tools:
- name: get-incident-status
description: Look up a PagerDuty incident by ID.
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: priority
type: string
mapping: $.incident.priority.summary
- name: assigned_to
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
Processes a customer complaint by creating a Zendesk ticket, looking up purchase history in Salesforce, and triggering a refund workflow in SAP.
naftiko: '0.5'
info:
label: Customer Complaint Resolution Orchestrator
description: Processes a customer complaint by creating a Zendesk ticket, looking up purchase history in Salesforce, and triggering a refund workflow in SAP.
tags:
- customer-service
- complaint
- zendesk
- salesforce
- sap
capability:
exposes:
- type: mcp
namespace: complaint-resolution
port: 8080
tools:
- name: resolve-complaint
description: Orchestrate customer complaint resolution across support and finance systems.
inputParameters:
- name: customer_email
in: body
type: string
description: Customer email address.
- name: complaint_text
in: body
type: string
description: The complaint description.
- name: order_id
in: body
type: string
description: The original order ID.
steps:
- name: create-ticket
type: call
call: zendesk.create-ticket
with:
requester_email: '{{customer_email}}'
subject: 'Complaint: Order {{order_id}}'
body: '{{complaint_text}}'
- name: get-purchase-history
type: call
call: salesforce.query
with:
soql: SELECT Id, Product__c, Amount FROM Order__c WHERE OrderNumber__c = '{{order_id}}'
- name: initiate-refund
type: call
call: sap.create-credit-memo
with:
order_reference: '{{order_id}}'
amount: '{{get-purchase-history.records[0].Amount}}'
reason: customer_complaint
consumes:
- type: http
namespace: zendesk
baseUri: https://henkel.zendesk.com/api/v2
authentication:
type: basic
username: $secrets.zendesk_user
password: $secrets.zendesk_token
resources:
- name: tickets
path: /tickets
operations:
- name: create-ticket
method: POST
- type: http
namespace: salesforce
baseUri: https://henkel.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: query
path: /query?q={{soql}}
inputParameters:
- name: soql
in: query
operations:
- name: query
method: GET
- type: http
namespace: sap
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZFI_CREDIT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: credit-memos
path: /CreditMemoSet
operations:
- name: create-credit-memo
method: POST
Checks material availability across plants in SAP S/4HANA, returning stock levels and next replenishment dates.
naftiko: '0.5'
info:
label: SAP S/4HANA Material Availability Check
description: Checks material availability across plants in SAP S/4HANA, returning stock levels and next replenishment dates.
tags:
- supply-chain
- sap
- material-planning
capability:
exposes:
- type: mcp
namespace: material-availability
port: 8080
tools:
- name: check-material-availability
description: Check material availability across Henkel plants.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number.
call: sap.check-availability
with:
material_id: '{{material_number}}'
outputParameters:
- name: total_stock
type: integer
mapping: $.d.TotalStock
- name: plants_with_stock
type: array
mapping: $.d.PlantStock.results
- name: next_replenishment
type: string
mapping: $.d.NextReplenishmentDate
consumes:
- type: http
namespace: sap
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZMM_AVAILABILITY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: availability
path: /MaterialAvailabilitySet('{{material_id}}')
inputParameters:
- name: material_id
in: path
operations:
- name: check-availability
method: GET
Retrieves regulatory documents from SAP, stores in SharePoint for compliance tracking, and creates a Jira task for review.
naftiko: '0.5'
info:
label: Regulatory Compliance Document Manager
description: Retrieves regulatory documents from SAP, stores in SharePoint for compliance tracking, and creates a Jira task for review.
tags:
- compliance
- regulatory
- sap
- sharepoint
- jira
capability:
exposes:
- type: mcp
namespace: regulatory-compliance
port: 8080
tools:
- name: manage-regulatory-doc
description: Store a regulatory document and create a review task.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number.
- name: regulation_type
in: body
type: string
description: The regulation type (e.g. REACH, GHS, FDA).
steps:
- name: get-reg-data
type: call
call: sap.get-regulatory-data
with:
material_id: '{{material_number}}'
regulation: '{{regulation_type}}'
- name: store-doc
type: call
call: sharepoint.create-file
with:
site_id: regulatory_site
file_path: Compliance/{{regulation_type}}/{{material_number}}_{{get-reg-data.document_version}}.pdf
- name: create-review
type: call
call: jira.create-issue
with:
project_key: REG
summary: '{{regulation_type}} review: {{material_number}} - {{get-reg-data.product_name}}'
issue_type: Task
description: 'Regulatory document for {{get-reg-data.product_name}}. Regulation: {{regulation_type}}. Status: {{get-reg-data.compliance_status}}. Doc: {{store-doc.url}}.'
consumes:
- type: http
namespace: sap
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZEH_REGULATORY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: regulatory
path: /RegulatoryDataSet(Material='{{material_id}}',Regulation='{{regulation}}')
inputParameters:
- name: material_id
in: path
- name: regulation
in: path
operations:
- name: get-regulatory-data
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}}
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: create-file
method: PUT
- type: http
namespace: jira
baseUri: https://henkel.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Publishes a branded post to the Henkel LinkedIn company page.
naftiko: '0.5'
info:
label: LinkedIn Brand Update Publisher
description: Publishes a branded post to the Henkel LinkedIn company page.
tags:
- marketing
- social-media
- linkedin
capability:
exposes:
- type: mcp
namespace: linkedin-publishing
port: 8080
tools:
- name: publish-linkedin-post
description: Publish a post to the Henkel LinkedIn page.
inputParameters:
- name: post_text
in: body
type: string
description: The post content.
call: linkedin.create-post
with:
author: urn:li:organization:henkel
text: '{{post_text}}'
consumes:
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: posts
path: /ugcPosts
operations:
- name: create-post
method: POST
On production line downtime alert from Datadog, creates a SAP PM notification, pages the on-call engineer via PagerDuty, and posts to the plant Slack channel.
naftiko: '0.5'
info:
label: Production Downtime Escalation Pipeline
description: On production line downtime alert from Datadog, creates a SAP PM notification, pages the on-call engineer via PagerDuty, and posts to the plant Slack channel.
tags:
- manufacturing
- incident
- datadog
- sap
- pagerduty
- slack
capability:
exposes:
- type: mcp
namespace: downtime-escalation
port: 8080
tools:
- name: escalate-downtime
description: Escalate production line downtime across operations systems.
inputParameters:
- name: line_id
in: body
type: string
description: The production line identifier.
- name: plant_code
in: body
type: string
description: The plant code.
- name: alert_severity
in: body
type: string
description: Alert severity (critical, warning).
steps:
- name: get-alert-details
type: call
call: datadog.get-monitor
with:
monitor_tag: line:{{line_id}},plant:{{plant_code}}
- name: create-pm-notification
type: call
call: sap-pm.create-notification
with:
equipment: '{{line_id}}'
plant: '{{plant_code}}'
description: 'Production downtime: {{get-alert-details.message}}'
- name: page-engineer
type: call
call: pagerduty.create-incident
with:
service_id: plant_{{plant_code}}
title: Line {{line_id}} down at plant {{plant_code}}
urgency: '{{alert_severity}}'
- name: notify-slack
type: call
call: slack.post-message
with:
channel: plant-{{plant_code}}-ops
text: 'DOWNTIME ALERT: Line {{line_id}} is down. SAP notification: {{create-pm-notification.notification_number}}. PagerDuty incident: {{page-engineer.incident_id}}.'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apiKey
key: $secrets.datadog_api_key
resources:
- name: monitors
path: /monitor?monitor_tags={{monitor_tag}}
inputParameters:
- name: monitor_tag
in: query
operations:
- name: get-monitor
method: GET
- type: http
namespace: sap-pm
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZPM_NOTIFICATION_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: notifications
path: /NotificationSet
operations:
- name: create-notification
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
- 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 the general ledger account balance from Oracle Cloud Financials for a given account code and fiscal period.
naftiko: '0.5'
info:
label: Oracle Cloud General Ledger Balance
description: Retrieves the general ledger account balance from Oracle Cloud Financials for a given account code and fiscal period.
tags:
- finance
- accounting
- oracle-cloud
capability:
exposes:
- type: mcp
namespace: gl-balance
port: 8080
tools:
- name: get-gl-balance
description: Fetch GL account balance for a specific account and period.
inputParameters:
- name: account_code
in: body
type: string
description: The GL account code.
- name: fiscal_period
in: body
type: string
description: Fiscal period in YYYY-MM format.
call: oracle-financials.get-balance
with:
account: '{{account_code}}'
period: '{{fiscal_period}}'
outputParameters:
- name: debit_total
type: number
mapping: $.balance.debitTotal
- name: credit_total
type: number
mapping: $.balance.creditTotal
- name: net_balance
type: number
mapping: $.balance.netBalance
consumes:
- type: http
namespace: oracle-financials
baseUri: https://henkel-fa.oraclecloud.com/fscmRestApi/resources/v1
authentication:
type: bearer
token: $secrets.oracle_cloud_token
resources:
- name: balances
path: /generalLedgerBalances?q=AccountCode={{account}};Period={{period}}
inputParameters:
- name: account
in: query
- name: period
in: query
operations:
- name: get-balance
method: GET
Calculates Overall Equipment Effectiveness by pulling availability from SAP PM, performance data from the MES system, and quality rates from SAP QM, then publishing to Power BI.
naftiko: '0.5'
info:
label: Plant OEE Calculation Pipeline
description: Calculates Overall Equipment Effectiveness by pulling availability from SAP PM, performance data from the MES system, and quality rates from SAP QM, then publishing to Power BI.
tags:
- manufacturing
- oee
- sap
- power-bi
capability:
exposes:
- type: mcp
namespace: oee-calculation
port: 8080
tools:
- name: calculate-oee
description: Calculate OEE for a production line and publish to dashboard.
inputParameters:
- name: line_id
in: body
type: string
description: The production line ID.
- name: shift_date
in: body
type: string
description: The shift date in YYYY-MM-DD.
steps:
- name: get-availability
type: call
call: sap-pm.get-downtime
with:
equipment: '{{line_id}}'
date: '{{shift_date}}'
- name: get-performance
type: call
call: mes.get-cycle-times
with:
line: '{{line_id}}'
date: '{{shift_date}}'
- name: get-quality-rate
type: call
call: sap-qm.get-defect-rate
with:
line: '{{line_id}}'
date: '{{shift_date}}'
- name: publish-oee
type: call
call: powerbi.refresh-dataset
with:
dataset_id: plant-oee-dashboard
consumes:
- type: http
namespace: sap-pm
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZPM_DOWNTIME_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: downtime
path: /DowntimeSet(Equipment='{{equipment}}',Date='{{date}}')
inputParameters:
- name: equipment
in: path
- name: date
in: path
operations:
- name: get-downtime
method: GET
- type: http
namespace: mes
baseUri: https://mes.henkel.com/api/v1
authentication:
type: bearer
token: $secrets.mes_token
resources:
- name: cycles
path: /lines/{{line}}/cycle-times?date={{date}}
inputParameters:
- name: line
in: path
- name: date
in: query
operations:
- name: get-cycle-times
method: GET
- type: http
namespace: sap-qm
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZQM_DEFECT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: defects
path: /DefectRateSet(Line='{{line}}',Date='{{date}}')
inputParameters:
- name: line
in: path
- name: date
in: path
operations:
- name: get-defect-rate
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
Creates or updates a Confluence page for SOPs and technical documentation.
naftiko: '0.5'
info:
label: Confluence Knowledge Base Publisher
description: Creates or updates a Confluence page for SOPs and technical documentation.
tags:
- knowledge-management
- confluence
capability:
exposes:
- type: mcp
namespace: knowledge-base
port: 8080
tools:
- name: publish-kb-article
description: Publish a page to Confluence.
inputParameters:
- name: space_key
in: body
type: string
description: Confluence space key.
- name: title
in: body
type: string
description: Page title.
- name: content
in: body
type: string
description: Page content.
call: confluence.create-page
with:
space_key: '{{space_key}}'
title: '{{title}}'
body: '{{content}}'
consumes:
- type: http
namespace: confluence
baseUri: https://henkel.atlassian.net/wiki/api/v2
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_api_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
When a supplier invoice arrives in SAP, matches against the PO, creates a Jira approval task if variance detected, and notifies finance in Microsoft Teams.
naftiko: '0.5'
info:
label: Supplier Invoice Processor
description: When a supplier invoice arrives in SAP, matches against the PO, creates a Jira approval task if variance detected, and notifies finance in Microsoft Teams.
tags:
- finance
- invoicing
- sap
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: invoice-processing
port: 8080
tools:
- name: process-invoice
description: Match a supplier invoice against its PO and route for approval.
inputParameters:
- name: invoice_number
in: body
type: string
description: The SAP invoice number.
- name: po_number
in: body
type: string
description: The related PO 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: create-approval
type: call
call: jira.create-issue
with:
project_key: FIN
summary: 'Invoice variance: {{invoice_number}} vs PO {{po_number}}'
issue_type: Task
description: 'Invoice: {{get-invoice.total_amount}} {{get-invoice.currency}}. PO: {{get-po.TotalAmount}}.'
- name: notify-finance
type: call
call: msteams.send-message
with:
channel_id: finance-approvals
text: 'Invoice {{invoice_number}} for PO {{po_number}} requires approval. Jira: {{create-approval.key}}.'
consumes:
- type: http
namespace: sap
baseUri: https://henkel-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-invoice
method: GET
- name: purchase-orders
path: /A_PurchaseOrder('{{po_number}}')
inputParameters:
- name: po_number
in: path
operations:
- name: get-po
method: GET
- type: http
namespace: jira
baseUri: https://henkel.atlassian.net/rest/api/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/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves lab test results from LIMS, generates a certificate of analysis in SAP QM, and uploads the signed PDF to Box for customer distribution.
naftiko: '0.5'
info:
label: Lab Test Result to Certificate Pipeline
description: Retrieves lab test results from LIMS, generates a certificate of analysis in SAP QM, and uploads the signed PDF to Box for customer distribution.
tags:
- quality
- laboratory
- sap
- box
capability:
exposes:
- type: mcp
namespace: lab-certificate
port: 8080
tools:
- name: generate-certificate
description: Generate a certificate of analysis from lab test results.
inputParameters:
- name: batch_number
in: body
type: string
description: The production batch number.
- name: customer_id
in: body
type: string
description: The customer ID for distribution.
steps:
- name: get-lab-results
type: call
call: lims.get-batch-results
with:
batch: '{{batch_number}}'
- name: create-coa
type: call
call: sap-qm.create-certificate
with:
batch: '{{batch_number}}'
test_data: '{{get-lab-results.test_summary}}'
- name: upload-to-box
type: call
call: box.upload-file
with:
folder_id: coa_{{customer_id}}
file_name: COA_{{batch_number}}.pdf
content: '{{create-coa.pdf_content}}'
consumes:
- type: http
namespace: lims
baseUri: https://lims.henkel.com/api/v1
authentication:
type: bearer
token: $secrets.lims_token
resources:
- name: results
path: /batches/{{batch}}/results
inputParameters:
- name: batch
in: path
operations:
- name: get-batch-results
method: GET
- type: http
namespace: sap-qm
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZQM_CERTIFICATE_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: certificates
path: /CertificateSet
operations:
- name: create-certificate
method: POST
- type: http
namespace: box
baseUri: https://upload.box.com/api/2.0
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: files
path: /files/content
operations:
- name: upload-file
method: POST
Uploads R&D documents to Google Drive.
naftiko: '0.5'
info:
label: Google Drive R&D Document Upload
description: Uploads R&D documents to Google Drive.
tags:
- document-management
- google-drive
capability:
exposes:
- type: mcp
namespace: gdrive-docs
port: 8080
tools:
- name: upload-rd-document
description: Upload an R&D document to Google Drive.
inputParameters:
- name: folder_id
in: body
type: string
description: Google Drive folder ID.
- name: file_name
in: body
type: string
description: File name.
- name: content
in: body
type: string
description: File content.
call: gdrive.upload-file
with:
folder_id: '{{folder_id}}'
name: '{{file_name}}'
content: '{{content}}'
outputParameters:
- name: file_id
type: string
mapping: $.id
- name: web_view_link
type: string
mapping: $.webViewLink
consumes:
- type: http
namespace: gdrive
baseUri: https://www.googleapis.com/upload/drive/v3
authentication:
type: bearer
token: $secrets.google_drive_token
resources:
- name: files
path: /files?uploadType=multipart
operations:
- name: upload-file
method: POST
Aggregates project status from Jira sprints, budget actuals from SAP, and resource allocation from Workday into a unified Power BI dashboard refresh.
naftiko: '0.5'
info:
label: Cross-Functional Project Status Aggregator
description: Aggregates project status from Jira sprints, budget actuals from SAP, and resource allocation from Workday into a unified Power BI dashboard refresh.
tags:
- project-management
- reporting
- jira
- sap
- workday
- power-bi
capability:
exposes:
- type: mcp
namespace: project-aggregator
port: 8080
tools:
- name: aggregate-project-status
description: Aggregate cross-functional project status into a dashboard.
inputParameters:
- name: project_key
in: body
type: string
description: The Jira project key.
steps:
- name: get-sprint-status
type: call
call: jira.get-board-sprints
with:
project: '{{project_key}}'
- name: get-project-budget
type: call
call: sap.get-project-actuals
with:
project_code: '{{project_key}}'
- name: get-resource-allocation
type: call
call: workday.get-project-staffing
with:
project_ref: '{{project_key}}'
- name: refresh-dashboard
type: call
call: powerbi.refresh-dataset
with:
dataset_id: project-status-dashboard
consumes:
- type: http
namespace: jira
baseUri: https://henkel.atlassian.net/rest/agile/1.0
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: sprints
path: /board/{{project}}/sprint
inputParameters:
- name: project
in: path
operations:
- name: get-board-sprints
method: GET
- type: http
namespace: sap
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZPS_PROJECT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: actuals
path: /ProjectActualsSet('{{project_code}}')
inputParameters:
- name: project_code
in: path
operations:
- name: get-project-actuals
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: staffing
path: /projects/{{project_ref}}/staffing
inputParameters:
- name: project_ref
in: path
operations:
- name: get-project-staffing
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
Pulls production data from SAP and pushes to Power BI for manufacturing visibility.
naftiko: '0.5'
info:
label: Power BI Manufacturing Dashboard Sync
description: Pulls production data from SAP and pushes to Power BI for manufacturing visibility.
tags:
- analytics
- power-bi
- sap
- manufacturing
capability:
exposes:
- type: mcp
namespace: mfg-dashboard
port: 8080
tools:
- name: sync-production-dashboard
description: Sync SAP production data to Power BI.
inputParameters:
- name: plant_code
in: body
type: string
description: The plant code.
steps:
- name: get-production
type: call
call: sap.get-production-summary
with:
plant: '{{plant_code}}'
- name: push-to-bi
type: call
call: powerbi.push-rows
with:
dataset_id: production_ds
table_name: Production
rows:
- plant: '{{plant_code}}'
oee: '{{get-production.oee}}'
output: '{{get-production.total_output}}'
consumes:
- type: http
namespace: sap
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZPP_PRODORDER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: summary
path: /ProductionSummarySet('{{plant}}')
inputParameters:
- name: plant
in: path
operations:
- name: get-production-summary
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}}/tables/{{table_name}}/rows
inputParameters:
- name: dataset_id
in: path
- name: table_name
in: path
operations:
- name: push-rows
method: POST
Retrieves application performance data from New Relic.
naftiko: '0.5'
info:
label: New Relic Application Monitor
description: Retrieves application performance data from New Relic.
tags:
- it-operations
- monitoring
- new-relic
capability:
exposes:
- type: mcp
namespace: newrelic-monitoring
port: 8080
tools:
- name: get-newrelic-metrics
description: Get New Relic performance metrics.
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: number
mapping: $.application_summary.response_time
- name: throughput
type: number
mapping: $.application_summary.throughput
consumes:
- type: http
namespace: newrelic
baseUri: https://api.newrelic.com/v2
authentication:
type: apiKey
key: $secrets.newrelic_api_key
headerName: Api-Key
resources:
- name: applications
path: /applications/{{app_id}}.json
inputParameters:
- name: app_id
in: path
operations:
- name: get-app-metrics
method: GET
Tracks outbound shipments by checking SAP transportation management, getting carrier status from project44, and updating the customer in Salesforce.
naftiko: '0.5'
info:
label: Transport Shipment Tracking Orchestrator
description: Tracks outbound shipments by checking SAP transportation management, getting carrier status from project44, and updating the customer in Salesforce.
tags:
- logistics
- shipment
- sap
- salesforce
capability:
exposes:
- type: mcp
namespace: shipment-tracking
port: 8080
tools:
- name: track-shipment
description: Track an outbound shipment across logistics systems.
inputParameters:
- name: delivery_number
in: body
type: string
description: The SAP delivery number.
steps:
- name: get-delivery
type: call
call: sap-tm.get-delivery
with:
delivery_id: '{{delivery_number}}'
- name: get-carrier-status
type: call
call: project44.get-tracking
with:
tracking_number: '{{get-delivery.carrier_tracking_number}}'
- name: update-customer-record
type: call
call: salesforce.update-order
with:
order_id: '{{get-delivery.sales_order}}'
shipping_status: '{{get-carrier-status.status}}'
eta: '{{get-carrier-status.estimated_arrival}}'
consumes:
- type: http
namespace: sap-tm
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZTM_DELIVERY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: deliveries
path: /DeliverySet('{{delivery_id}}')
inputParameters:
- name: delivery_id
in: path
operations:
- name: get-delivery
method: GET
- type: http
namespace: project44
baseUri: https://api.project44.com/api/v4
authentication:
type: bearer
token: $secrets.project44_token
resources:
- name: tracking
path: /shipments/tracking?trackingNumber={{tracking_number}}
inputParameters:
- name: tracking_number
in: query
operations:
- name: get-tracking
method: GET
- type: http
namespace: salesforce
baseUri: https://henkel.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
Retrieves supplier qualification data from SAP Ariba, checks certifications, and creates a ServiceNow task for expired certifications.
naftiko: '0.5'
info:
label: SAP Ariba Supplier Qualification
description: Retrieves supplier qualification data from SAP Ariba, checks certifications, and creates a ServiceNow task for expired certifications.
tags:
- procurement
- supplier-management
- sap-ariba
- servicenow
capability:
exposes:
- type: mcp
namespace: supplier-qualification
port: 8080
tools:
- name: check-supplier-quals
description: Check supplier qualifications and flag expired certifications.
inputParameters:
- name: supplier_id
in: body
type: string
description: The SAP Ariba supplier ID.
steps:
- name: get-supplier
type: call
call: ariba.get-supplier
with:
supplier_id: '{{supplier_id}}'
- name: create-task
type: call
call: servicenow.create-record
with:
table: u_supplier_tasks
short_description: 'Certification review: {{get-supplier.name}} - {{get-supplier.expired_certs}} expired'
description: 'Supplier: {{get-supplier.name}}. Category: {{get-supplier.category}}. Expired certifications: {{get-supplier.expired_cert_names}}.'
assigned_group: Procurement_Quality
consumes:
- type: http
namespace: ariba
baseUri: https://openapi.ariba.com/api/supplier-management/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://henkel.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
On batch recall trigger, retrieves affected batch details from SAP, identifies impacted customers in Salesforce, and sends recall notifications via MailChimp.
naftiko: '0.5'
info:
label: Batch Recall Notification Orchestrator
description: On batch recall trigger, retrieves affected batch details from SAP, identifies impacted customers in Salesforce, and sends recall notifications via MailChimp.
tags:
- quality
- recall
- sap
- salesforce
- mailchimp
capability:
exposes:
- type: mcp
namespace: batch-recall
port: 8080
tools:
- name: execute-recall
description: Orchestrate a product batch recall notification.
inputParameters:
- name: batch_number
in: body
type: string
description: The production batch number.
- name: reason
in: body
type: string
description: The recall reason description.
steps:
- name: get-batch-details
type: call
call: sap.get-batch
with:
batch_id: '{{batch_number}}'
- name: find-affected-customers
type: call
call: salesforce.query-customers
with:
soql: SELECT Id, Email FROM Contact WHERE Batch_Purchased__c = '{{batch_number}}'
- name: send-recall-emails
type: call
call: mailchimp.send-campaign
with:
template_name: product_recall
list_id: recall_{{batch_number}}
merge_vars:
product_name: '{{get-batch-details.product_name}}'
batch_number: '{{batch_number}}'
recall_reason: '{{reason}}'
consumes:
- type: http
namespace: sap
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZPR_BATCH_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: batches
path: /BatchSet('{{batch_id}}')
inputParameters:
- name: batch_id
in: path
operations:
- name: get-batch
method: GET
- type: http
namespace: salesforce
baseUri: https://henkel.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: query
path: /query?q={{soql}}
inputParameters:
- name: soql
in: query
operations:
- name: query-customers
method: GET
- type: http
namespace: mailchimp
baseUri: https://mandrillapp.com/api/1.0
authentication:
type: apiKey
key: $secrets.mailchimp_transactional_key
resources:
- name: campaigns
path: /messages/send-template
operations:
- name: send-campaign
method: POST
Coordinates R&D project gate reviews by pulling project status from Jira, gathering test results from LIMS, and scheduling review meetings via Microsoft Outlook.
naftiko: '0.5'
info:
label: R&D Project Gate Review Coordinator
description: Coordinates R&D project gate reviews by pulling project status from Jira, gathering test results from LIMS, and scheduling review meetings via Microsoft Outlook.
tags:
- rd
- project-management
- jira
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: gate-review
port: 8080
tools:
- name: coordinate-gate-review
description: Coordinate an R&D project gate review.
inputParameters:
- name: project_key
in: body
type: string
description: The Jira project key.
- name: gate_number
in: body
type: string
description: The gate review number.
- name: reviewers
in: body
type: string
description: Comma-separated reviewer emails.
steps:
- name: get-project-status
type: call
call: jira.get-project-summary
with:
project: '{{project_key}}'
- name: get-lab-results
type: call
call: lims.get-test-summary
with:
project_ref: '{{project_key}}'
gate: '{{gate_number}}'
- name: schedule-review
type: call
call: outlook.create-event
with:
subject: 'Gate {{gate_number}} Review: {{project_key}}'
attendees: '{{reviewers}}'
body: 'Project status: {{get-project-status.summary}}. Lab tests: {{get-lab-results.pass_rate}}% pass rate.'
consumes:
- type: http
namespace: jira
baseUri: https://henkel.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: projects
path: /project/{{project}}
inputParameters:
- name: project
in: path
operations:
- name: get-project-summary
method: GET
- type: http
namespace: lims
baseUri: https://lims.henkel.com/api/v1
authentication:
type: bearer
token: $secrets.lims_token
resources:
- name: tests
path: /projects/{{project_ref}}/gates/{{gate}}/results
inputParameters:
- name: project_ref
in: path
- name: gate
in: path
operations:
- name: get-test-summary
method: GET
- 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
Retrieves a B2B customer account from Salesforce by ID, returning company name, segment, annual volume, and primary contact.
naftiko: '0.5'
info:
label: Salesforce B2B Account Lookup
description: Retrieves a B2B customer account from Salesforce by ID, returning company name, segment, annual volume, and primary contact.
tags:
- sales
- crm
- salesforce
capability:
exposes:
- type: mcp
namespace: b2b-accounts
port: 8080
tools:
- name: get-b2b-account
description: Look up a Salesforce B2B account.
inputParameters:
- name: account_id
in: body
type: string
description: The Salesforce account ID.
call: salesforce.get-account
with:
account_id: '{{account_id}}'
outputParameters:
- name: company_name
type: string
mapping: $.Name
- name: segment
type: string
mapping: $.Segment__c
- name: annual_volume
type: string
mapping: $.Annual_Volume__c
- name: primary_contact
type: string
mapping: $.Primary_Contact__c
consumes:
- type: http
namespace: salesforce
baseUri: https://henkel.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
Tracks expiring contracts in SAP Ariba, alerts legal via Microsoft Teams, and creates a renewal task in Jira for procurement follow-up.
naftiko: '0.5'
info:
label: Contract Renewal Tracker Orchestrator
description: Tracks expiring contracts in SAP Ariba, alerts legal via Microsoft Teams, and creates a renewal task in Jira for procurement follow-up.
tags:
- procurement
- contracts
- sap-ariba
- microsoft-teams
- jira
capability:
exposes:
- type: mcp
namespace: contract-renewal
port: 8080
tools:
- name: track-contract-renewal
description: Monitor and orchestrate contract renewal process.
inputParameters:
- name: contract_id
in: body
type: string
description: The Ariba contract ID.
steps:
- name: get-contract
type: call
call: ariba.get-contract
with:
id: '{{contract_id}}'
- name: alert-legal
type: call
call: msteams.send-message
with:
channel_id: legal-contracts
text: 'Contract {{contract_id}} with {{get-contract.supplier_name}} expires {{get-contract.expiry_date}}. Value: {{get-contract.total_value}}. Please review renewal terms.'
- name: create-renewal-task
type: call
call: jira.create-issue
with:
project: PROC
issue_type: Task
summary: Renew contract {{contract_id}} - {{get-contract.supplier_name}}
due_date: '{{get-contract.expiry_date}}'
consumes:
- type: http
namespace: ariba
baseUri: https://openapi.ariba.com/api/contract/v1
authentication:
type: bearer
token: $secrets.ariba_token
resources:
- name: contracts
path: /contracts/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-contract
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
- type: http
namespace: jira
baseUri: https://henkel.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Triggers an Azure Data Factory pipeline for ETL processing and notifies the data team in Microsoft Teams.
naftiko: '0.5'
info:
label: Azure Data Factory Pipeline Trigger
description: Triggers an Azure Data Factory pipeline for ETL processing and notifies the data team in Microsoft Teams.
tags:
- data-engineering
- azure-data-factory
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: etl-pipelines
port: 8080
tools:
- name: trigger-adf-pipeline
description: Trigger an ADF pipeline and notify the team.
inputParameters:
- name: pipeline_name
in: body
type: string
description: The ADF pipeline name.
steps:
- name: trigger-run
type: call
call: adf.create-pipeline-run
with:
pipeline_name: '{{pipeline_name}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: data-engineering
text: 'ADF pipeline {{pipeline_name}} triggered. Run ID: {{trigger-run.runId}}.'
consumes:
- type: http
namespace: adf
baseUri: https://management.azure.com/subscriptions/{{subscription_id}}/resourceGroups/henkel-rg/providers/Microsoft.DataFactory/factories/henkel-adf
authentication:
type: bearer
token: $secrets.azure_mgmt_token
resources:
- name: pipelines
path: /pipelines/{{pipeline_name}}/createRun?api-version=2018-06-01
inputParameters:
- name: pipeline_name
in: path
operations:
- name: create-pipeline-run
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/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Pulls historical sales from SAP, runs demand forecast in Azure Machine Learning, and publishes planning results to Confluence.
naftiko: '0.5'
info:
label: Demand Planning Pipeline
description: Pulls historical sales from SAP, runs demand forecast in Azure Machine Learning, and publishes planning results to Confluence.
tags:
- supply-chain
- forecasting
- sap
- azure-machine-learning
- confluence
capability:
exposes:
- type: mcp
namespace: demand-planning
port: 8080
tools:
- name: run-demand-forecast
description: Run demand forecast for a product line.
inputParameters:
- name: product_line
in: body
type: string
description: The product line.
- name: forecast_months
in: body
type: integer
description: Number of months to forecast.
steps:
- name: get-history
type: call
call: sap.get-sales-history
with:
product_line: '{{product_line}}'
- name: run-forecast
type: call
call: azml.run-inference
with:
model_name: demand_forecast
input_data: '{{get-history.data}}'
horizon: '{{forecast_months}}'
- name: publish-results
type: call
call: confluence.create-page
with:
space_key: SC
title: 'Demand Forecast: {{product_line}} - {{forecast_months}}mo'
body: 'Predicted volume: {{run-forecast.predicted_units}}. Confidence: {{run-forecast.confidence}}. Recommended production: {{run-forecast.recommended_qty}}.'
consumes:
- type: http
namespace: sap
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZSD_SALES_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: sales-history
path: /SalesHistorySet?$filter=ProductLine eq '{{product_line}}'
inputParameters:
- name: product_line
in: query
operations:
- name: get-sales-history
method: GET
- type: http
namespace: azml
baseUri: https://henkel-ml.azureml.ms/score
authentication:
type: bearer
token: $secrets.azml_token
resources:
- name: inference
path: /{{model_name}}
inputParameters:
- name: model_name
in: path
operations:
- name: run-inference
method: POST
- type: http
namespace: confluence
baseUri: https://henkel.atlassian.net/wiki/api/v2
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_api_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Tracks safety training compliance by pulling training records from Cornerstone LMS, checking certification expiry, and creating follow-up tasks in ServiceNow for non-compliant employees.
naftiko: '0.5'
info:
label: Workplace Safety Training Compliance Tracker
description: Tracks safety training compliance by pulling training records from Cornerstone LMS, checking certification expiry, and creating follow-up tasks in ServiceNow for non-compliant employees.
tags:
- safety
- training
- servicenow
capability:
exposes:
- type: mcp
namespace: safety-training
port: 8080
tools:
- name: check-training-compliance
description: Check safety training compliance and create remediation tasks.
inputParameters:
- name: plant_code
in: body
type: string
description: The plant code.
- name: training_course_id
in: body
type: string
description: The training course ID.
steps:
- name: get-training-records
type: call
call: cornerstone.get-completion-report
with:
course_id: '{{training_course_id}}'
organizational_unit: plant_{{plant_code}}
- name: get-employee-list
type: call
call: workday.get-headcount
with:
location: plant_{{plant_code}}
- name: create-remediation-tasks
type: call
call: servicenow.create-incident
with:
short_description: 'Safety training non-compliance: {{training_course_id}} at plant {{plant_code}}'
category: safety_compliance
description: 'Total employees: {{get-employee-list.count}}. Completed: {{get-training-records.completed_count}}. Non-compliant: {{get-employee-list.count}} - {{get-training-records.completed_count}}.'
consumes:
- type: http
namespace: cornerstone
baseUri: https://henkel.csod.com/services/api/x/v2
authentication:
type: bearer
token: $secrets.cornerstone_token
resources:
- name: reports
path: /reports/completions?courseId={{course_id}}&ou={{organizational_unit}}
inputParameters:
- name: course_id
in: query
- name: organizational_unit
in: query
operations:
- name: get-completion-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: headcount
path: /headcount?location={{location}}
inputParameters:
- name: location
in: query
operations:
- name: get-headcount
method: GET
- type: http
namespace: servicenow
baseUri: https://henkel.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 actual spend from SAP against budget in Oracle Cloud, calculates variance, and sends a summary email via Microsoft Outlook to cost center owners.
naftiko: '0.5'
info:
label: Cost Center Budget Variance Reporter
description: Compares actual spend from SAP against budget in Oracle Cloud, calculates variance, and sends a summary email via Microsoft Outlook to cost center owners.
tags:
- finance
- budget
- sap
- oracle-cloud
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: budget-variance
port: 8080
tools:
- name: report-variance
description: Generate budget variance report for a cost center.
inputParameters:
- name: cost_center
in: body
type: string
description: The SAP cost center code.
- name: fiscal_period
in: body
type: string
description: Fiscal period in YYYY-MM format.
steps:
- name: get-actual-spend
type: call
call: sap.get-cost-center-actuals
with:
cost_center: '{{cost_center}}'
period: '{{fiscal_period}}'
- name: get-budget
type: call
call: oracle-financials.get-budget
with:
cost_center: '{{cost_center}}'
period: '{{fiscal_period}}'
- name: send-report
type: call
call: outlook.send-email
with:
to: '{{get-actual-spend.cost_center_owner_email}}'
subject: 'Budget Variance Report: {{cost_center}} - {{fiscal_period}}'
body: 'Actual: {{get-actual-spend.total}}. Budget: {{get-budget.total}}. Variance: {{get-budget.total}} - {{get-actual-spend.total}}.'
consumes:
- type: http
namespace: sap
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZFI_COSTCENTER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: actuals
path: /CostCenterActualsSet(CostCenter='{{cost_center}}',Period='{{period}}')
inputParameters:
- name: cost_center
in: path
- name: period
in: path
operations:
- name: get-cost-center-actuals
method: GET
- type: http
namespace: oracle-financials
baseUri: https://henkel-fa.oraclecloud.com/fscmRestApi/resources/v1
authentication:
type: bearer
token: $secrets.oracle_cloud_token
resources:
- name: budgets
path: /budgets?costCenter={{cost_center}}&period={{period}}
inputParameters:
- name: cost_center
in: query
- name: period
in: query
operations:
- name: get-budget
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 brand website performance metrics from Google Analytics.
naftiko: '0.5'
info:
label: Google Analytics Brand Performance
description: Retrieves brand website performance metrics from Google Analytics.
tags:
- marketing
- analytics
- google-analytics
capability:
exposes:
- type: mcp
namespace: brand-analytics
port: 8080
tools:
- name: get-brand-performance
description: Get Google Analytics metrics for a Henkel brand site.
inputParameters:
- name: brand_property_id
in: body
type: string
description: The GA property ID.
call: ga.get-brand-metrics
with:
property_id: '{{brand_property_id}}'
outputParameters:
- name: sessions
type: integer
mapping: $.rows[0].metricValues[0].value
- name: users
type: integer
mapping: $.rows[0].metricValues[1].value
- name: conversion_rate
type: string
mapping: $.rows[0].metricValues[2].value
consumes:
- type: http
namespace: ga
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: get-brand-metrics
method: POST
Extracts a snapshot of brand-level sales data from a Tableau workbook, returning region, category, and revenue totals.
naftiko: '0.5'
info:
label: Tableau Brand Sales Dashboard Snapshot
description: Extracts a snapshot of brand-level sales data from a Tableau workbook, returning region, category, and revenue totals.
tags:
- analytics
- sales
- tableau
capability:
exposes:
- type: mcp
namespace: brand-dashboard
port: 8080
tools:
- name: get-brand-sales
description: Retrieve brand sales dashboard data from Tableau.
inputParameters:
- name: brand_name
in: body
type: string
description: The Henkel brand name.
call: tableau.get-view-data
with:
workbook: brand-sales-performance
view: regional-summary
filter_brand: '{{brand_name}}'
outputParameters:
- name: total_revenue
type: number
mapping: $.data.summary.totalRevenue
- name: top_region
type: string
mapping: $.data.summary.topRegion
consumes:
- type: http
namespace: tableau
baseUri: https://tableau.henkel.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: views
path: /sites/henkel/workbooks/{{workbook}}/views/{{view}}/data
inputParameters:
- name: workbook
in: path
- name: view
in: path
operations:
- name: get-view-data
method: GET
Processes inbound EDI purchase orders from retail partners, creates corresponding SAP sales orders, and sends acknowledgment via AS2 gateway.
naftiko: '0.5'
info:
label: Retail Partner EDI Data Exchange
description: Processes inbound EDI purchase orders from retail partners, creates corresponding SAP sales orders, and sends acknowledgment via AS2 gateway.
tags:
- edi
- retail
- sap
- supply-chain
capability:
exposes:
- type: mcp
namespace: edi-exchange
port: 8080
tools:
- name: process-edi-order
description: Process an inbound EDI 850 purchase order from a retail partner.
inputParameters:
- name: edi_transaction_id
in: body
type: string
description: The EDI transaction ID.
- name: partner_id
in: body
type: string
description: The trading partner ID.
steps:
- name: parse-edi
type: call
call: edi-gateway.get-transaction
with:
transaction_id: '{{edi_transaction_id}}'
- name: create-sales-order
type: call
call: sap.create-sales-order
with:
customer: '{{partner_id}}'
items: '{{parse-edi.line_items}}'
po_number: '{{parse-edi.po_number}}'
- name: send-acknowledgment
type: call
call: edi-gateway.send-855
with:
partner_id: '{{partner_id}}'
po_number: '{{parse-edi.po_number}}'
sales_order: '{{create-sales-order.order_number}}'
consumes:
- type: http
namespace: edi-gateway
baseUri: https://edi.henkel.com/api/v1
authentication:
type: bearer
token: $secrets.edi_gateway_token
resources:
- name: transactions
path: /transactions/{{transaction_id}}
inputParameters:
- name: transaction_id
in: path
operations:
- name: get-transaction
method: GET
- name: outbound
path: /outbound/855
operations:
- name: send-855
method: POST
- type: http
namespace: sap
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZSD_SALESORDER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: sales-orders
path: /SalesOrderSet
operations:
- name: create-sales-order
method: POST
Retrieves search performance data from Google Search Console for Henkel brand sites.
naftiko: '0.5'
info:
label: Google Search Console SEO Tracker
description: Retrieves search performance data from Google Search Console for Henkel brand sites.
tags:
- marketing
- seo
- google-search-console
capability:
exposes:
- type: mcp
namespace: seo-tracking
port: 8080
tools:
- name: get-search-performance
description: Get search performance from Google Search Console.
inputParameters:
- name: site_url
in: body
type: string
description: The site URL.
call: gsc.get-search-analytics
with:
site_url: '{{site_url}}'
outputParameters:
- name: total_clicks
type: integer
mapping: $.rows[0].clicks
- name: total_impressions
type: integer
mapping: $.rows[0].impressions
consumes:
- type: http
namespace: gsc
baseUri: https://www.googleapis.com/webmasters/v3
authentication:
type: bearer
token: $secrets.google_search_console_token
resources:
- name: search-analytics
path: /sites/{{site_url}}/searchAnalytics/query
inputParameters:
- name: site_url
in: path
operations:
- name: get-search-analytics
method: POST
Retrieves batch quality test results from SAP, validates against specifications, and creates a ServiceNow task if any parameter is out of tolerance.
naftiko: '0.5'
info:
label: Manufacturing Batch Quality Check
description: Retrieves batch quality test results from SAP, validates against specifications, and creates a ServiceNow task if any parameter is out of tolerance.
tags:
- manufacturing
- quality
- sap
- servicenow
capability:
exposes:
- type: mcp
namespace: quality-management
port: 8080
tools:
- name: check-batch-quality
description: Check batch quality results and flag out-of-spec conditions.
inputParameters:
- name: batch_number
in: body
type: string
description: The SAP production batch number.
steps:
- name: get-quality-data
type: call
call: sap.get-batch-quality
with:
batch_id: '{{batch_number}}'
- name: create-task
type: call
call: servicenow.create-record
with:
table: u_quality_tasks
short_description: 'Quality review: batch {{batch_number}} - {{get-quality-data.failed_params}} out of spec'
description: 'Batch {{batch_number}}, Product: {{get-quality-data.product_name}}. Failed parameters: {{get-quality-data.failed_params}}. Test date: {{get-quality-data.test_date}}.'
assigned_group: Quality_Control
consumes:
- type: http
namespace: sap
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZQM_BATCH_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: batches
path: /BatchQualitySet('{{batch_id}}')
inputParameters:
- name: batch_id
in: path
operations:
- name: get-batch-quality
method: GET
- type: http
namespace: servicenow
baseUri: https://henkel.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
Analyzes trade promotion effectiveness by pulling promotion data from SAP TPM, sales lift from Snowflake, and generating a summary report in Power BI.
naftiko: '0.5'
info:
label: Trade Promotion Effectiveness Analyzer
description: Analyzes trade promotion effectiveness by pulling promotion data from SAP TPM, sales lift from Snowflake, and generating a summary report in Power BI.
tags:
- sales
- promotion
- sap
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: trade-promotion
port: 8080
tools:
- name: analyze-promotion
description: Analyze trade promotion ROI across data sources.
inputParameters:
- name: promotion_id
in: body
type: string
description: The SAP trade promotion ID.
steps:
- name: get-promotion-details
type: call
call: sap-tpm.get-promotion
with:
promo_id: '{{promotion_id}}'
- name: get-sales-lift
type: call
call: snowflake.execute-query
with:
statement: SELECT sales_lift_pct, incremental_revenue FROM trade_promo_analytics WHERE promo_id = '{{promotion_id}}'
- name: refresh-dashboard
type: call
call: powerbi.refresh-dataset
with:
dataset_id: trade-promotion-analysis
consumes:
- type: http
namespace: sap-tpm
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZTPM_PROMO_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: promotions
path: /PromotionSet('{{promo_id}}')
inputParameters:
- name: promo_id
in: path
operations:
- name: get-promotion
method: GET
- type: http
namespace: snowflake
baseUri: https://henkel.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: 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
Queries the Teradata data warehouse for historical manufacturing data by plant.
naftiko: '0.5'
info:
label: Teradata Manufacturing Data Warehouse Query
description: Queries the Teradata data warehouse for historical manufacturing data by plant.
tags:
- analytics
- data-warehouse
- teradata
capability:
exposes:
- type: mcp
namespace: mfg-dwh
port: 8080
tools:
- name: query-manufacturing-data
description: Query Teradata for historical manufacturing metrics.
inputParameters:
- name: plant_code
in: body
type: string
description: The plant code.
- name: start_date
in: body
type: string
description: Start date (YYYY-MM-DD).
- name: end_date
in: body
type: string
description: End date (YYYY-MM-DD).
call: teradata.query-mfg
with:
plant: '{{plant_code}}'
start: '{{start_date}}'
end: '{{end_date}}'
outputParameters:
- name: total_output
type: integer
mapping: $.results.total_output
- name: avg_oee
type: string
mapping: $.results.avg_oee
consumes:
- type: http
namespace: teradata
baseUri: https://henkel-td.teradata.com/api/query/v1
authentication:
type: bearer
token: $secrets.teradata_token
resources:
- name: queries
path: /execute
operations:
- name: query-mfg
method: POST
Collects sustainability metrics from SAP plant energy data, Workday headcount for diversity stats, and carbon tracking from Sphera, compiling into a SharePoint report.
naftiko: '0.5'
info:
label: Sustainability Report Data Collector
description: Collects sustainability metrics from SAP plant energy data, Workday headcount for diversity stats, and carbon tracking from Sphera, compiling into a SharePoint report.
tags:
- sustainability
- reporting
- sap
- workday
- sharepoint
capability:
exposes:
- type: mcp
namespace: sustainability-data
port: 8080
tools:
- name: collect-sustainability-data
description: Collect sustainability report data from multiple sources.
inputParameters:
- name: reporting_period
in: body
type: string
description: Reporting period in YYYY-Q format.
- name: plant_code
in: body
type: string
description: The plant code.
steps:
- name: get-energy-data
type: call
call: sap.get-energy-consumption
with:
plant: '{{plant_code}}'
period: '{{reporting_period}}'
- name: get-diversity-stats
type: call
call: workday.get-headcount-report
with:
report_name: diversity_metrics
period: '{{reporting_period}}'
- name: get-carbon-data
type: call
call: sphera.get-emissions
with:
facility: '{{plant_code}}'
period: '{{reporting_period}}'
- name: upload-report
type: call
call: sharepoint.upload-document
with:
site_id: sustainability_reports
folder_path: Quarterly/{{reporting_period}}
file_name: plant_{{plant_code}}_sustainability.json
consumes:
- type: http
namespace: sap
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZEN_ENERGY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: energy
path: /EnergyConsumptionSet(Plant='{{plant}}',Period='{{period}}')
inputParameters:
- name: plant
in: path
- name: period
in: path
operations:
- name: get-energy-consumption
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: reports
path: /reports/{{report_name}}?period={{period}}
inputParameters:
- name: report_name
in: path
- name: period
in: query
operations:
- name: get-headcount-report
method: GET
- type: http
namespace: sphera
baseUri: https://api.sphera.com/v1
authentication:
type: bearer
token: $secrets.sphera_token
resources:
- name: emissions
path: /facilities/{{facility}}/emissions?period={{period}}
inputParameters:
- name: facility
in: path
- name: period
in: query
operations:
- name: get-emissions
method: GET
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: uploads
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-document
method: PUT
Retrieves a travel expense report from SAP Concur and creates a Jira approval task.
naftiko: '0.5'
info:
label: SAP Concur Travel Expense Processor
description: Retrieves a travel expense report from SAP Concur and creates a Jira approval task.
tags:
- finance
- travel
- sap-concur
- jira
capability:
exposes:
- type: mcp
namespace: travel-expenses
port: 8080
tools:
- name: process-expense-report
description: Validate a Concur expense report and route for approval.
inputParameters:
- name: report_id
in: body
type: string
description: The SAP Concur report ID.
steps:
- name: get-report
type: call
call: concur.get-expense-report
with:
report_id: '{{report_id}}'
- name: create-approval
type: call
call: jira.create-issue
with:
project_key: FIN
summary: 'Expense review: {{get-report.employee_name}} - {{get-report.total_amount}} {{get-report.currency}}'
issue_type: Task
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/{{report_id}}
inputParameters:
- name: report_id
in: path
operations:
- name: get-expense-report
method: GET
- type: http
namespace: jira
baseUri: https://henkel.atlassian.net/rest/api/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 APM metrics from Dynatrace for a Henkel service.
naftiko: '0.5'
info:
label: Dynatrace Application Performance Check
description: Retrieves APM metrics from Dynatrace for a Henkel service.
tags:
- it-operations
- apm
- dynatrace
capability:
exposes:
- type: mcp
namespace: apm-monitoring
port: 8080
tools:
- name: get-app-performance
description: Get Dynatrace APM metrics.
inputParameters:
- name: service_id
in: body
type: string
description: Dynatrace service entity ID.
call: dynatrace.get-metrics
with:
entity_id: '{{service_id}}'
outputParameters:
- name: response_time_ms
type: number
mapping: $.result[0].data[0].values[0]
- name: error_rate_pct
type: number
mapping: $.result[1].data[0].values[0]
consumes:
- type: http
namespace: dynatrace
baseUri: https://henkel.live.dynatrace.com/api/v2
authentication:
type: bearer
token: $secrets.dynatrace_token
resources:
- name: metrics
path: /metrics/query?metricSelector=builtin:service.response.time&entitySelector=entityId({{entity_id}})
inputParameters:
- name: entity_id
in: path
operations:
- name: get-metrics
method: GET
Processes IT access requests by creating a ServiceNow ticket, checking manager approval in Workday, and provisioning access in Azure Active Directory.
naftiko: '0.5'
info:
label: IT Access Request Approval Workflow
description: Processes IT access requests by creating a ServiceNow ticket, checking manager approval in Workday, and provisioning access in Azure Active Directory.
tags:
- it
- access-management
- servicenow
- workday
- azure-active-directory
capability:
exposes:
- type: mcp
namespace: access-request
port: 8080
tools:
- name: process-access-request
description: Process an IT system access request through approval workflow.
inputParameters:
- name: employee_id
in: body
type: string
description: The employee Workday ID.
- name: system_name
in: body
type: string
description: The target system name.
- name: access_level
in: body
type: string
description: Requested access level.
steps:
- name: get-employee
type: call
call: workday.get-worker
with:
worker_id: '{{employee_id}}'
- name: create-request-ticket
type: call
call: servicenow.create-request
with:
short_description: 'Access request: {{system_name}} for {{get-employee.full_name}}'
category: access_management
requested_for: '{{get-employee.work_email}}'
access_level: '{{access_level}}'
- name: provision-access
type: call
call: azure-ad.add-group-member
with:
group_id: '{{system_name}}_{{access_level}}'
user_principal_name: '{{get-employee.work_email}}'
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://henkel.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: requests
path: /table/sc_request
operations:
- name: create-request
method: POST
- type: http
namespace: azure-ad
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: groups
path: /groups/{{group_id}}/members/$ref
inputParameters:
- name: group_id
in: path
operations:
- name: add-group-member
method: POST
Retrieves e-commerce conversion metrics from Adobe Analytics for a Henkel brand website, including visits, orders, and conversion rate.
naftiko: '0.5'
info:
label: Adobe Analytics E-Commerce Conversion Report
description: Retrieves e-commerce conversion metrics from Adobe Analytics for a Henkel brand website, including visits, orders, and conversion rate.
tags:
- analytics
- e-commerce
- adobe-analytics
capability:
exposes:
- type: mcp
namespace: ecommerce-analytics
port: 8080
tools:
- name: get-conversion-report
description: Fetch e-commerce conversion metrics for a brand site.
inputParameters:
- name: report_suite_id
in: body
type: string
description: The Adobe Analytics report suite ID.
- name: date_range
in: body
type: string
description: Date range in YYYY-MM-DD/YYYY-MM-DD format.
call: adobe-analytics.get-report
with:
rsid: '{{report_suite_id}}'
dateRange: '{{date_range}}'
outputParameters:
- name: visits
type: integer
mapping: $.report.totals.visits
- name: orders
type: integer
mapping: $.report.totals.orders
- name: conversion_rate
type: number
mapping: $.report.totals.conversionRate
consumes:
- type: http
namespace: adobe-analytics
baseUri: https://analytics.adobe.io/api/henkel
authentication:
type: bearer
token: $secrets.adobe_analytics_token
resources:
- name: reports
path: /reports
operations:
- name: get-report
method: POST
When a new product formula is approved in SAP, creates a Jira project for packaging design, provisions a SharePoint folder for documentation, registers in Salesforce as a product record, and notifies the R&D team in Microsoft Teams.
naftiko: '0.5'
info:
label: New Product Development Pipeline
description: When a new product formula is approved in SAP, creates a Jira project for packaging design, provisions a SharePoint folder for documentation, registers in Salesforce as a product record, and notifies the R&D team in Microsoft Teams.
tags:
- r-and-d
- product-development
- sap
- jira
- sharepoint
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: product-development
port: 8080
tools:
- name: initiate-product-development
description: Orchestrate new product development across SAP, Jira, SharePoint, Salesforce, and Teams.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number for the new product.
- name: project_name
in: body
type: string
description: The product development project name.
steps:
- name: get-formula
type: call
call: sap.get-formula
with:
material_id: '{{material_number}}'
- name: create-project
type: call
call: jira.create-issue
with:
project_key: NPD
summary: '{{project_name}} - Packaging & Launch'
issue_type: Epic
description: 'Product: {{get-formula.ProductName}}. Formula: {{get-formula.FormulaCode}}. Category: {{get-formula.Category}}.'
- name: provision-docs
type: call
call: sharepoint.create-folder
with:
site_id: r_and_d_site
folder_path: NPD/{{material_number}}_{{project_name}}
- name: register-product
type: call
call: salesforce.create-product
with:
name: '{{get-formula.ProductName}}'
product_code: '{{material_number}}'
category: '{{get-formula.Category}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: r-and-d-projects
text: 'New product development started: {{project_name}} ({{material_number}}). Jira: {{create-project.key}}. Docs: {{provision-docs.url}}.'
consumes:
- type: http
namespace: sap
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZPR_FORMULA_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: formulas
path: /FormulaSet('{{material_id}}')
inputParameters:
- name: material_id
in: path
operations:
- name: get-formula
method: GET
- type: http
namespace: jira
baseUri: https://henkel.atlassian.net/rest/api/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: 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: salesforce
baseUri: https://henkel.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: products
path: /sobjects/Product2
operations:
- name: create-product
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/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves the material safety data sheet for a chemical product from SAP EHS by material number, returning hazard classifications and handling instructions.
naftiko: '0.5'
info:
label: SAP Material Safety Data Sheet Lookup
description: Retrieves the material safety data sheet for a chemical product from SAP EHS by material number, returning hazard classifications and handling instructions.
tags:
- safety
- regulatory
- sap
capability:
exposes:
- type: mcp
namespace: msds-lookup
port: 8080
tools:
- name: get-msds
description: Retrieve MSDS document details for a given material number.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number.
call: sap-ehs.get-msds
with:
material_id: '{{material_number}}'
outputParameters:
- name: hazard_class
type: string
mapping: $.d.HazardClassification
- name: handling_instructions
type: string
mapping: $.d.HandlingInstructions
- name: ghs_pictograms
type: string
mapping: $.d.GHSPictograms
consumes:
- type: http
namespace: sap-ehs
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZEH_MSDS_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: msds
path: /MSDSSet('{{material_id}}')
inputParameters:
- name: material_id
in: path
operations:
- name: get-msds
method: GET
Captures a B2B lead in HubSpot, enriches with Salesforce data, and notifies sales in Microsoft Teams.
naftiko: '0.5'
info:
label: HubSpot Lead Capture for B2B
description: Captures a B2B lead in HubSpot, enriches with Salesforce data, and notifies sales in Microsoft Teams.
tags:
- sales
- lead-management
- hubspot
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: b2b-leads
port: 8080
tools:
- name: capture-b2b-lead
description: Capture and enrich a B2B lead.
inputParameters:
- name: lead_email
in: body
type: string
description: Lead email address.
- name: company_name
in: body
type: string
description: Company name.
steps:
- name: create-contact
type: call
call: hubspot.create-contact
with:
email: '{{lead_email}}'
company: '{{company_name}}'
- name: search-sf
type: call
call: salesforce.search-account
with:
company_name: '{{company_name}}'
- name: notify-sales
type: call
call: msteams.send-message
with:
channel_id: b2b-sales
text: 'New B2B lead: {{company_name}} ({{lead_email}}). HubSpot: {{create-contact.id}}. SF: {{search-sf.Name}}.'
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
operations:
- name: create-contact
method: POST
- type: http
namespace: salesforce
baseUri: https://henkel.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /parameterizedSearch/?q={{company_name}}&sobject=Account
inputParameters:
- name: company_name
in: query
operations:
- name: search-account
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/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Archives completed documents from SharePoint to Box.
naftiko: '0.5'
info:
label: Box Document Archive
description: Archives completed documents from SharePoint to Box.
tags:
- document-management
- archival
- sharepoint
- box
capability:
exposes:
- type: mcp
namespace: doc-archival
port: 8080
tools:
- name: archive-to-box
description: Archive a SharePoint document to Box.
inputParameters:
- name: site_id
in: body
type: string
description: SharePoint site ID.
- name: file_path
in: body
type: string
description: File path.
- name: box_folder_id
in: body
type: string
description: Box folder ID.
steps:
- name: get-file
type: call
call: sharepoint.get-file-content
with:
site_id: '{{site_id}}'
file_path: '{{file_path}}'
- name: upload-to-box
type: call
call: box.upload-file
with:
folder_id: '{{box_folder_id}}'
file_name: '{{file_path}}'
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-file-content
method: GET
- type: http
namespace: box
baseUri: https://upload.box.com/api/2.0
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: files
path: /files/content
operations:
- name: upload-file
method: POST
Processes consumer coupon redemptions by validating the coupon in the promotions platform, recording the transaction in SAP, and sending a confirmation email via SendGrid.
naftiko: '0.5'
info:
label: Consumer Promotion Coupon Fulfillment
description: Processes consumer coupon redemptions by validating the coupon in the promotions platform, recording the transaction in SAP, and sending a confirmation email via SendGrid.
tags:
- marketing
- promotion
- sap
- sendgrid
capability:
exposes:
- type: mcp
namespace: coupon-fulfillment
port: 8080
tools:
- name: redeem-coupon
description: Process a consumer coupon redemption.
inputParameters:
- name: coupon_code
in: body
type: string
description: The coupon code.
- name: consumer_email
in: body
type: string
description: Consumer email address.
- name: product_sku
in: body
type: string
description: The purchased product SKU.
steps:
- name: validate-coupon
type: call
call: promo-platform.validate-coupon
with:
code: '{{coupon_code}}'
sku: '{{product_sku}}'
- name: record-redemption
type: call
call: sap.post-promo-redemption
with:
coupon_code: '{{coupon_code}}'
sku: '{{product_sku}}'
discount_amount: '{{validate-coupon.discount_value}}'
- name: send-confirmation
type: call
call: sendgrid.send-email
with:
to: '{{consumer_email}}'
template_id: coupon_redemption_confirmation
dynamic_data:
coupon_code: '{{coupon_code}}'
discount: '{{validate-coupon.discount_value}}'
consumes:
- type: http
namespace: promo-platform
baseUri: https://promotions.henkel.com/api/v1
authentication:
type: bearer
token: $secrets.promo_platform_token
resources:
- name: coupons
path: /coupons/validate
operations:
- name: validate-coupon
method: POST
- type: http
namespace: sap
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZSD_PROMO_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: redemptions
path: /RedemptionSet
operations:
- name: post-promo-redemption
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
Downloads a product formulation document from Azure Blob Storage by document name, returning the signed URL and metadata.
naftiko: '0.5'
info:
label: Azure Blob Formulation Document Retrieval
description: Downloads a product formulation document from Azure Blob Storage by document name, returning the signed URL and metadata.
tags:
- product
- rd
- microsoft-azure
capability:
exposes:
- type: mcp
namespace: formulation-docs
port: 8080
tools:
- name: get-formulation-doc
description: Retrieve a formulation document from Azure Blob Storage.
inputParameters:
- name: document_name
in: body
type: string
description: The formulation document file name.
call: azure-blob.get-blob
with:
container: formulation-docs
blob_name: '{{document_name}}'
outputParameters:
- name: download_url
type: string
mapping: $.url
- name: last_modified
type: string
mapping: $.properties.lastModified
consumes:
- type: http
namespace: azure-blob
baseUri: https://henkelformulations.blob.core.windows.net
authentication:
type: bearer
token: $secrets.azure_storage_token
resources:
- name: blobs
path: /{{container}}/{{blob_name}}
inputParameters:
- name: container
in: path
- name: blob_name
in: path
operations:
- name: get-blob
method: GET
Pulls sustainability metrics from SAP including CO2 emissions, water usage, and waste reduction, and publishes a report to Confluence.
naftiko: '0.5'
info:
label: Sustainability Metrics Reporter
description: Pulls sustainability metrics from SAP including CO2 emissions, water usage, and waste reduction, and publishes a report to Confluence.
tags:
- sustainability
- reporting
- sap
- confluence
capability:
exposes:
- type: mcp
namespace: sustainability-reporting
port: 8080
tools:
- name: generate-sustainability-report
description: Generate a sustainability report from SAP data and publish to Confluence.
inputParameters:
- name: plant_code
in: body
type: string
description: The SAP plant code.
- name: period
in: body
type: string
description: The reporting period.
steps:
- name: get-metrics
type: call
call: sap.get-sustainability-metrics
with:
plant: '{{plant_code}}'
period: '{{period}}'
- name: publish-report
type: call
call: confluence.create-page
with:
space_key: ESG
title: 'Sustainability Report: Plant {{plant_code}} - {{period}}'
body: 'CO2 emissions: {{get-metrics.co2_tonnes}} tonnes. Water usage: {{get-metrics.water_m3}} m3. Waste reduction: {{get-metrics.waste_reduction_pct}}%. Renewable energy: {{get-metrics.renewable_pct}}%.'
consumes:
- type: http
namespace: sap
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZEH_SUSTAINABILITY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: metrics
path: /SustainabilityMetricSet(Plant='{{plant}}',Period='{{period}}')
inputParameters:
- name: plant
in: path
- name: period
in: path
operations:
- name: get-sustainability-metrics
method: GET
- type: http
namespace: confluence
baseUri: https://henkel.atlassian.net/wiki/api/v2
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_api_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Returns the current stock level for a material at a specific warehouse location in SAP Extended Warehouse Management.
naftiko: '0.5'
info:
label: SAP Warehouse Stock Level
description: Returns the current stock level for a material at a specific warehouse location in SAP Extended Warehouse Management.
tags:
- warehouse
- inventory
- sap
capability:
exposes:
- type: mcp
namespace: warehouse-stock
port: 8080
tools:
- name: get-stock-level
description: Check stock level for a material at a given warehouse.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number.
- name: warehouse_id
in: body
type: string
description: The warehouse location ID.
call: sap-ewm.get-stock
with:
material_id: '{{material_number}}'
warehouse: '{{warehouse_id}}'
outputParameters:
- name: available_quantity
type: number
mapping: $.d.AvailableQuantity
- name: unit_of_measure
type: string
mapping: $.d.UnitOfMeasure
consumes:
- type: http
namespace: sap-ewm
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZEWM_STOCK_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: stock
path: /StockSet(Material='{{material_id}}',Warehouse='{{warehouse}}')
inputParameters:
- name: material_id
in: path
- name: warehouse
in: path
operations:
- name: get-stock
method: GET
Retrieves network device health from SolarWinds for Henkel plant networks.
naftiko: '0.5'
info:
label: SolarWinds Network Monitor
description: Retrieves network device health from SolarWinds for Henkel plant networks.
tags:
- it-operations
- network
- solarwinds
capability:
exposes:
- type: mcp
namespace: network-monitoring
port: 8080
tools:
- name: get-network-health
description: Get network device health from SolarWinds.
inputParameters:
- name: node_id
in: body
type: string
description: The SolarWinds node ID.
call: solarwinds.get-node
with:
node_id: '{{node_id}}'
outputParameters:
- name: status
type: string
mapping: $.StatusDescription
- name: cpu_load
type: number
mapping: $.CPULoad
- name: memory_used_pct
type: number
mapping: $.PercentMemoryUsed
consumes:
- type: http
namespace: solarwinds
baseUri: https://henkel-solarwinds.com:17778/SolarWinds/InformationService/v3/Json
authentication:
type: basic
username: $secrets.solarwinds_user
password: $secrets.solarwinds_password
resources:
- name: nodes
path: /Query?query=SELECT+*+FROM+Orion.Nodes+WHERE+NodeID={{node_id}}
inputParameters:
- name: node_id
in: query
operations:
- name: get-node
method: GET
Triggers a Qlik Sense reload for manufacturing analytics and notifies the team.
naftiko: '0.5'
info:
label: Qlik Sense Manufacturing Dashboard Refresh
description: Triggers a Qlik Sense reload for manufacturing analytics and notifies the team.
tags:
- analytics
- qlik-sense
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: analytics-refresh
port: 8080
tools:
- name: refresh-qlik-dashboard
description: Trigger a Qlik Sense reload.
inputParameters:
- name: app_id
in: body
type: string
description: Qlik Sense app ID.
steps:
- name: trigger-reload
type: call
call: qlik.reload-app
with:
app_id: '{{app_id}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: manufacturing-analytics
text: 'Qlik dashboard {{app_id}} reloaded. ID: {{trigger-reload.reloadId}}.'
consumes:
- type: http
namespace: qlik
baseUri: https://henkel.us.qlikcloud.com/api/v1
authentication:
type: bearer
token: $secrets.qlik_token
resources:
- name: reloads
path: /reloads
operations:
- name: reload-app
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/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves a product master record from SAP by material number, returning product name, category, formulation type, and regulatory status.
naftiko: '0.5'
info:
label: SAP Product Master Lookup
description: Retrieves a product master record from SAP by material number, returning product name, category, formulation type, and regulatory status.
tags:
- product
- manufacturing
- sap
capability:
exposes:
- type: mcp
namespace: product-master
port: 8080
tools:
- name: get-product-master
description: Look up a SAP product master by material number.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number.
call: sap.get-material
with:
material_id: '{{material_number}}'
outputParameters:
- name: product_name
type: string
mapping: $.d.MaterialDescription
- name: category
type: string
mapping: $.d.MaterialGroup
- name: formulation_type
type: string
mapping: $.d.FormulationType
- name: regulatory_status
type: string
mapping: $.d.RegulatoryStatus
consumes:
- type: http
namespace: sap
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZPR_MATERIAL_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: materials
path: /MaterialSet('{{material_id}}')
inputParameters:
- name: material_id
in: path
operations:
- name: get-material
method: GET
When a cycle count discrepancy is detected in SAP EWM, creates an investigation ticket in ServiceNow, adjusts inventory if approved, and notifies the warehouse manager via Slack.
naftiko: '0.5'
info:
label: Warehouse Cycle Count Discrepancy Handler
description: When a cycle count discrepancy is detected in SAP EWM, creates an investigation ticket in ServiceNow, adjusts inventory if approved, and notifies the warehouse manager via Slack.
tags:
- warehouse
- inventory
- sap
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: cycle-count
port: 8080
tools:
- name: handle-discrepancy
description: Handle warehouse cycle count discrepancy.
inputParameters:
- name: material_number
in: body
type: string
description: The material number.
- name: warehouse_id
in: body
type: string
description: The warehouse ID.
- name: system_qty
in: body
type: number
description: System quantity.
- name: counted_qty
in: body
type: number
description: Physically counted quantity.
steps:
- name: create-investigation
type: call
call: servicenow.create-incident
with:
short_description: 'Cycle count discrepancy: {{material_number}} at {{warehouse_id}}'
description: 'System qty: {{system_qty}}, Counted: {{counted_qty}}, Delta: {{counted_qty}} - {{system_qty}}'
category: inventory_discrepancy
- name: adjust-inventory
type: call
call: sap-ewm.post-adjustment
with:
material: '{{material_number}}'
warehouse: '{{warehouse_id}}'
adjustment_qty: '{{counted_qty}}'
reference: '{{create-investigation.number}}'
- name: notify-manager
type: call
call: slack.post-message
with:
channel: wh-{{warehouse_id}}-ops
text: 'Cycle count discrepancy for {{material_number}}: system={{system_qty}}, counted={{counted_qty}}. Investigation: {{create-investigation.number}}. Adjustment posted.'
consumes:
- type: http
namespace: servicenow
baseUri: https://henkel.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-ewm
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZEWM_ADJUSTMENT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: adjustments
path: /AdjustmentSet
operations:
- name: post-adjustment
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
Routes a product formulation change request through Jira for engineering approval, updates the SAP recipe, and archives the change in SharePoint.
naftiko: '0.5'
info:
label: Formulation Change Approval Workflow
description: Routes a product formulation change request through Jira for engineering approval, updates the SAP recipe, and archives the change in SharePoint.
tags:
- rd
- formulation
- jira
- sap
- sharepoint
capability:
exposes:
- type: mcp
namespace: formulation-change
port: 8080
tools:
- name: submit-formulation-change
description: Submit and route a formulation change request.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number.
- name: change_description
in: body
type: string
description: Description of the formulation change.
- name: submitter_email
in: body
type: string
description: Email of the submitter.
steps:
- name: create-jira-ticket
type: call
call: jira.create-issue
with:
project: FORM
issue_type: Change Request
summary: 'Formulation change: {{material_number}}'
description: '{{change_description}}'
reporter: '{{submitter_email}}'
- name: update-sap-recipe
type: call
call: sap.update-recipe
with:
material_id: '{{material_number}}'
change_ref: '{{create-jira-ticket.key}}'
status: pending_approval
- name: archive-change-doc
type: call
call: sharepoint.upload-document
with:
site_id: rd_formulations
folder_path: ChangeRequests/{{material_number}}
file_name: '{{create-jira-ticket.key}}_change.json'
consumes:
- type: http
namespace: jira
baseUri: https://henkel.atlassian.net/rest/api/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: sap
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZPR_RECIPE_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: recipes
path: /RecipeSet('{{material_id}}')
inputParameters:
- name: material_id
in: path
operations:
- name: update-recipe
method: PATCH
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: uploads
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-document
method: PUT
Automates raw material procurement by checking stock in SAP, generating a purchase requisition, and notifying the procurement team via Microsoft Teams.
naftiko: '0.5'
info:
label: Raw Material Procurement Orchestrator
description: Automates raw material procurement by checking stock in SAP, generating a purchase requisition, and notifying the procurement team via Microsoft Teams.
tags:
- procurement
- supply-chain
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: material-procurement
port: 8080
tools:
- name: procure-material
description: Automate raw material procurement workflow.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number.
- name: quantity_needed
in: body
type: number
description: Quantity needed.
- name: plant_code
in: body
type: string
description: The manufacturing plant code.
steps:
- name: check-stock
type: call
call: sap.get-stock
with:
material_id: '{{material_number}}'
plant: '{{plant_code}}'
- name: create-requisition
type: call
call: sap.create-purchase-req
with:
material_id: '{{material_number}}'
quantity: '{{quantity_needed}}'
plant: '{{plant_code}}'
- name: notify-procurement
type: call
call: msteams.send-message
with:
channel_id: procurement-alerts
text: 'Purchase requisition {{create-requisition.req_number}} created for material {{material_number}}, qty {{quantity_needed}} at plant {{plant_code}}. Current stock: {{check-stock.available_quantity}}.'
consumes:
- type: http
namespace: sap
baseUri: https://henkel-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_id}}',Plant='{{plant}}')
inputParameters:
- name: material_id
in: path
- name: plant
in: path
operations:
- name: get-stock
method: GET
- name: purchase-requisitions
path: /PurchaseRequisitionSet
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: /teams/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Orchestrates global price changes by updating SAP condition records, syncing to the e-commerce platform, and notifying regional sales teams via Microsoft Teams.
naftiko: '0.5'
info:
label: Global Product Pricing Update Orchestrator
description: Orchestrates global price changes by updating SAP condition records, syncing to the e-commerce platform, and notifying regional sales teams via Microsoft Teams.
tags:
- pricing
- sales
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: pricing-update
port: 8080
tools:
- name: update-global-pricing
description: Update product pricing across SAP and e-commerce, notifying sales.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number.
- name: new_price
in: body
type: number
description: The new list price.
- name: effective_date
in: body
type: string
description: Effective date in YYYY-MM-DD.
- name: regions
in: body
type: string
description: Comma-separated region codes.
steps:
- name: update-sap-price
type: call
call: sap.update-condition-record
with:
material: '{{material_number}}'
price: '{{new_price}}'
valid_from: '{{effective_date}}'
- name: sync-ecommerce
type: call
call: sap-commerce.update-price
with:
sku: '{{material_number}}'
price: '{{new_price}}'
- name: notify-sales
type: call
call: msteams.send-message
with:
channel_id: sales-pricing-updates
text: 'Price update: {{material_number}} new price {{new_price}} effective {{effective_date}} for regions: {{regions}}.'
consumes:
- type: http
namespace: sap
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZSD_PRICING_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: conditions
path: /ConditionRecordSet
operations:
- name: update-condition-record
method: POST
- type: http
namespace: sap-commerce
baseUri: https://henkel-commerce.sap.com/occ/v2
authentication:
type: bearer
token: $secrets.sap_commerce_token
resources:
- name: prices
path: /products/{{sku}}/prices
inputParameters:
- name: sku
in: path
operations:
- name: update-price
method: PUT
- 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
Gathers market share data from Nielsen, competitor pricing from Circana, and consolidates findings into a Confluence market intelligence page.
naftiko: '0.5'
info:
label: Market Intelligence Report Generator
description: Gathers market share data from Nielsen, competitor pricing from Circana, and consolidates findings into a Confluence market intelligence page.
tags:
- marketing
- market-research
- confluence
capability:
exposes:
- type: mcp
namespace: market-intelligence
port: 8080
tools:
- name: generate-market-report
description: Generate a market intelligence report from multiple data sources.
inputParameters:
- name: category
in: body
type: string
description: The product category.
- name: market
in: body
type: string
description: The market region.
steps:
- name: get-market-share
type: call
call: nielsen.get-market-data
with:
category: '{{category}}'
market: '{{market}}'
- name: get-competitor-pricing
type: call
call: circana.get-pricing
with:
category: '{{category}}'
region: '{{market}}'
- name: publish-report
type: call
call: confluence.create-page
with:
space: MKTINTEL
title: 'Market Intelligence: {{category}} - {{market}}'
body: 'Market share: {{get-market-share.henkel_share}}%. Top competitor: {{get-competitor-pricing.leader}}. Avg price delta: {{get-competitor-pricing.price_delta}}.'
consumes:
- type: http
namespace: nielsen
baseUri: https://api.nielsen.com/v1
authentication:
type: bearer
token: $secrets.nielsen_token
resources:
- name: market-data
path: /marketshare?category={{category}}&market={{market}}
inputParameters:
- name: category
in: query
- name: market
in: query
operations:
- name: get-market-data
method: GET
- type: http
namespace: circana
baseUri: https://api.circana.com/v2
authentication:
type: bearer
token: $secrets.circana_token
resources:
- name: pricing
path: /pricing?category={{category}}®ion={{region}}
inputParameters:
- name: category
in: query
- name: region
in: query
operations:
- name: get-pricing
method: GET
- type: http
namespace: confluence
baseUri: https://henkel.atlassian.net/wiki/api/v2
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Verifies packaging compliance by checking material specs in SAP, validating regulatory data in Veeva Vault, and logging results in Confluence.
naftiko: '0.5'
info:
label: Packaging Compliance Verification Pipeline
description: Verifies packaging compliance by checking material specs in SAP, validating regulatory data in Veeva Vault, and logging results in Confluence.
tags:
- packaging
- compliance
- sap
- confluence
capability:
exposes:
- type: mcp
namespace: packaging-compliance
port: 8080
tools:
- name: verify-packaging-compliance
description: Verify packaging materials meet regulatory compliance.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number for the packaging item.
- name: target_market
in: body
type: string
description: The target market country code.
steps:
- name: get-packaging-spec
type: call
call: sap.get-material-spec
with:
material_id: '{{material_number}}'
- name: check-regulatory
type: call
call: veeva.get-document
with:
doc_type: packaging_regulation
market: '{{target_market}}'
material_ref: '{{material_number}}'
- name: log-result
type: call
call: confluence.create-page
with:
space: PKGCOMP
title: 'Compliance Check: {{material_number}} - {{target_market}}'
body: 'Material: {{get-packaging-spec.description}}. Regulatory status: {{check-regulatory.compliance_status}}. Last updated: {{check-regulatory.last_review_date}}.'
consumes:
- type: http
namespace: sap
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZPR_MATERIAL_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: materials
path: /MaterialSet('{{material_id}}')
inputParameters:
- name: material_id
in: path
operations:
- name: get-material-spec
method: GET
- type: http
namespace: veeva
baseUri: https://henkel.veevavault.com/api/v23.1
authentication:
type: bearer
token: $secrets.veeva_token
resources:
- name: documents
path: /objects/documents?doc_type={{doc_type}}&market={{market}}&material_ref={{material_ref}}
inputParameters:
- name: doc_type
in: query
- name: market
in: query
- name: material_ref
in: query
operations:
- name: get-document
method: GET
- type: http
namespace: confluence
baseUri: https://henkel.atlassian.net/wiki/api/v2
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Triggers an Informatica data quality job for product master data, checks results, and creates a ServiceNow task for data stewards if quality thresholds are not met.
naftiko: '0.5'
info:
label: Informatica Data Quality Pipeline
description: Triggers an Informatica data quality job for product master data, checks results, and creates a ServiceNow task for data stewards if quality thresholds are not met.
tags:
- data-quality
- master-data
- informatica
- servicenow
capability:
exposes:
- type: mcp
namespace: data-quality
port: 8080
tools:
- name: run-data-quality-check
description: Run an Informatica data quality job and flag issues.
inputParameters:
- name: job_name
in: body
type: string
description: The Informatica job name.
steps:
- name: run-job
type: call
call: informatica.run-job
with:
job_name: '{{job_name}}'
- name: create-task
type: call
call: servicenow.create-record
with:
table: u_data_quality_tasks
short_description: 'Data quality: {{job_name}} - {{run-job.failed_records}} failures'
description: 'Job: {{job_name}}. Total records: {{run-job.total_records}}. Passed: {{run-job.passed_records}}. Failed: {{run-job.failed_records}}. Score: {{run-job.quality_score}}%.'
assigned_group: Data_Stewards
consumes:
- type: http
namespace: informatica
baseUri: https://henkel.informaticacloud.com/saas/api/v2
authentication:
type: bearer
token: $secrets.informatica_token
resources:
- name: jobs
path: /job
operations:
- name: run-job
method: POST
- type: http
namespace: servicenow
baseUri: https://henkel.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
Retrieves sprint status for an R&D Jira project.
naftiko: '0.5'
info:
label: Jira R&D Project Tracker
description: Retrieves sprint status for an R&D Jira project.
tags:
- r-and-d
- jira
- project-management
capability:
exposes:
- type: mcp
namespace: rd-tracking
port: 8080
tools:
- name: get-rd-project-status
description: Get R&D project status from Jira.
inputParameters:
- name: project_key
in: body
type: string
description: The Jira project key.
call: jira.get-project
with:
project_key: '{{project_key}}'
outputParameters:
- name: total_issues
type: integer
mapping: $.total
- name: open_issues
type: integer
mapping: $.open_count
consumes:
- type: http
namespace: jira
baseUri: https://henkel.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: search
path: /search?jql=project={{project_key}}
inputParameters:
- name: project_key
in: path
operations:
- name: get-project
method: GET
Runs a customer segmentation query in Snowflake, returning segment name, customer count, and average order value for a given brand.
naftiko: '0.5'
info:
label: Snowflake Customer Segmentation Query
description: Runs a customer segmentation query in Snowflake, returning segment name, customer count, and average order value for a given brand.
tags:
- analytics
- customer
- snowflake
capability:
exposes:
- type: mcp
namespace: customer-segments
port: 8080
tools:
- name: query-segments
description: Query customer segments by brand from Snowflake.
inputParameters:
- name: brand
in: body
type: string
description: The brand name to segment.
call: snowflake.execute-query
with:
statement: SELECT segment_name, customer_count, avg_order_value FROM customer_segments WHERE brand = '{{brand}}'
outputParameters:
- name: segments
type: array
mapping: $.data
consumes:
- type: http
namespace: snowflake
baseUri: https://henkel.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
Compares actual sales from SAP BW against forecast in Snowflake, calculates variance, and sends alerts to sales leadership via Microsoft Teams when thresholds are breached.
naftiko: '0.5'
info:
label: Sales Forecast Variance Alerter
description: Compares actual sales from SAP BW against forecast in Snowflake, calculates variance, and sends alerts to sales leadership via Microsoft Teams when thresholds are breached.
tags:
- sales
- forecasting
- sap-bw
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: forecast-variance
port: 8080
tools:
- name: check-forecast-variance
description: Check sales forecast variance and alert on threshold breach.
inputParameters:
- name: brand_code
in: body
type: string
description: The brand code.
- name: region
in: body
type: string
description: The sales region.
- name: period
in: body
type: string
description: The reporting period.
steps:
- name: get-actual-sales
type: call
call: sap-bw.get-sales
with:
brand: '{{brand_code}}'
region: '{{region}}'
period: '{{period}}'
- name: get-forecast
type: call
call: snowflake.execute-query
with:
statement: SELECT forecast_amount FROM sales_forecast WHERE brand='{{brand_code}}' AND region='{{region}}' AND period='{{period}}'
- name: alert-leadership
type: call
call: msteams.send-message
with:
channel_id: sales-leadership
text: 'Forecast variance alert for {{brand_code}} in {{region}} ({{period}}): Actual={{get-actual-sales.total}}, Forecast={{get-forecast.data[0].forecast_amount}}.'
consumes:
- type: http
namespace: sap-bw
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZBW_SALES_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: sales
path: /SalesDataSet(Brand='{{brand}}',Region='{{region}}',Period='{{period}}')
inputParameters:
- name: brand
in: path
- name: region
in: path
- name: period
in: path
operations:
- name: get-sales
method: GET
- type: http
namespace: snowflake
baseUri: https://henkel.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
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
Monitors digital shelf presence by checking product content in Salsify, pulling e-retailer rankings from Profitero, and syncing results to Snowflake.
naftiko: '0.5'
info:
label: Digital Shelf Analytics Pipeline
description: Monitors digital shelf presence by checking product content in Salsify, pulling e-retailer rankings from Profitero, and syncing results to Snowflake.
tags:
- e-commerce
- digital-shelf
- salsify
- snowflake
capability:
exposes:
- type: mcp
namespace: digital-shelf
port: 8080
tools:
- name: analyze-digital-shelf
description: Analyze digital shelf performance for a product.
inputParameters:
- name: product_gtin
in: body
type: string
description: The product GTIN.
- name: retailer
in: body
type: string
description: The e-retailer name.
steps:
- name: get-content-score
type: call
call: salsify.get-product
with:
gtin: '{{product_gtin}}'
- name: get-search-rank
type: call
call: profitero.get-ranking
with:
gtin: '{{product_gtin}}'
retailer: '{{retailer}}'
- name: sync-to-snowflake
type: call
call: snowflake.execute-query
with:
statement: INSERT INTO digital_shelf_metrics (gtin, retailer, content_score, search_rank, captured_at) VALUES ('{{product_gtin}}', '{{retailer}}', {{get-content-score.completeness_score}}, {{get-search-rank.rank}}, CURRENT_TIMESTAMP())
consumes:
- type: http
namespace: salsify
baseUri: https://app.salsify.com/api/v1
authentication:
type: bearer
token: $secrets.salsify_token
resources:
- name: products
path: /products/{{gtin}}
inputParameters:
- name: gtin
in: path
operations:
- name: get-product
method: GET
- type: http
namespace: profitero
baseUri: https://api.profitero.com/v2
authentication:
type: apiKey
key: $secrets.profitero_api_key
resources:
- name: rankings
path: /products/{{gtin}}/rankings?retailer={{retailer}}
inputParameters:
- name: gtin
in: path
- name: retailer
in: query
operations:
- name: get-ranking
method: GET
- type: http
namespace: snowflake
baseUri: https://henkel.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
Pulls technical specifications from SAP for an adhesive product, generates a TDS document in SharePoint, and notifies the technical team in Microsoft Teams.
naftiko: '0.5'
info:
label: Adhesive Technical Data Sheet Generator
description: Pulls technical specifications from SAP for an adhesive product, generates a TDS document in SharePoint, and notifies the technical team in Microsoft Teams.
tags:
- r-and-d
- adhesives
- sap
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: tds-generation
port: 8080
tools:
- name: generate-tds
description: Generate a technical data sheet for an adhesive product.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number.
steps:
- name: get-specs
type: call
call: sap.get-technical-specs
with:
material_id: '{{material_number}}'
- name: store-tds
type: call
call: sharepoint.create-file
with:
site_id: technical_docs_site
file_path: TDS/{{material_number}}_TDS_v{{get-specs.version}}.pdf
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: technical-docs
text: 'TDS generated for {{get-specs.product_name}} ({{material_number}}). Version: {{get-specs.version}}. Document: {{store-tds.url}}.'
consumes:
- type: http
namespace: sap
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZPR_TECHSPEC_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: specs
path: /TechnicalSpecSet('{{material_id}}')
inputParameters:
- name: material_id
in: path
operations:
- name: get-technical-specs
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}}
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: create-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/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Aggregates social media metrics from Instagram, Facebook, and LinkedIn for a Henkel brand, then logs the combined report in Google Sheets.
naftiko: '0.5'
info:
label: Brand Social Media Performance Aggregator
description: Aggregates social media metrics from Instagram, Facebook, and LinkedIn for a Henkel brand, then logs the combined report in Google Sheets.
tags:
- marketing
- social-media
- instagram
- facebook
- linkedin
- google-sheets
capability:
exposes:
- type: mcp
namespace: social-performance
port: 8080
tools:
- name: aggregate-social-metrics
description: Aggregate social media performance for a brand across platforms.
inputParameters:
- name: brand_name
in: body
type: string
description: The Henkel brand name.
- name: date_range
in: body
type: string
description: Date range in YYYY-MM-DD/YYYY-MM-DD format.
steps:
- name: get-instagram-metrics
type: call
call: instagram.get-insights
with:
account_name: '{{brand_name}}'
period: '{{date_range}}'
- name: get-facebook-metrics
type: call
call: facebook.get-page-insights
with:
page_name: '{{brand_name}}'
period: '{{date_range}}'
- name: get-linkedin-metrics
type: call
call: linkedin.get-page-stats
with:
organization: '{{brand_name}}'
period: '{{date_range}}'
- name: log-to-sheets
type: call
call: google-sheets.append-row
with:
spreadsheet_id: social_performance_tracker
range: '{{brand_name}}!A:F'
values:
- '{{date_range}}'
- '{{get-instagram-metrics.engagement_rate}}'
- '{{get-facebook-metrics.reach}}'
- '{{get-linkedin-metrics.impressions}}'
consumes:
- type: http
namespace: instagram
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.meta_access_token
resources:
- name: insights
path: /{{account_name}}/insights
inputParameters:
- name: account_name
in: path
operations:
- name: get-insights
method: GET
- type: http
namespace: facebook
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.meta_access_token
resources:
- name: page-insights
path: /{{page_name}}/insights
inputParameters:
- name: page_name
in: path
operations:
- name: get-page-insights
method: GET
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: page-stats
path: /organizationalEntityShareStatistics?q=organizationalEntity&organizationalEntity={{organization}}
inputParameters:
- name: organization
in: path
operations:
- name: get-page-stats
method: GET
- type: http
namespace: google-sheets
baseUri: https://sheets.googleapis.com/v4
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: values
path: /spreadsheets/{{spreadsheet_id}}/values/{{range}}:append
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: append-row
method: POST
Creates a Salesforce campaign for a product launch, schedules social posts in HubSpot, sends a press release via Microsoft Outlook, and notifies the marketing team in Microsoft Teams.
naftiko: '0.5'
info:
label: Marketing Campaign Launcher
description: Creates a Salesforce campaign for a product launch, schedules social posts in HubSpot, sends a press release via Microsoft Outlook, and notifies the marketing team in Microsoft Teams.
tags:
- marketing
- campaign
- salesforce
- hubspot
- microsoft-outlook
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: marketing-campaigns
port: 8080
tools:
- name: launch-campaign
description: Launch a marketing campaign across Salesforce, HubSpot, email, and Teams.
inputParameters:
- name: campaign_name
in: body
type: string
description: The campaign name.
- name: product_name
in: body
type: string
description: The product being promoted.
- name: launch_date
in: body
type: string
description: The launch date.
steps:
- name: create-campaign
type: call
call: salesforce.create-campaign
with:
name: '{{campaign_name}}'
start_date: '{{launch_date}}'
type: Product Launch
- name: schedule-social
type: call
call: hubspot.create-social-post
with:
content: 'Introducing {{product_name}} from Henkel! #Henkel #Innovation #{{product_name}}'
campaign_id: '{{create-campaign.Id}}'
- name: send-press-release
type: call
call: outlook.send-email
with:
to: press@henkel.com
subject: 'Press Release: {{campaign_name}} - {{product_name}}'
body: 'Henkel announces {{product_name}} launching {{launch_date}}. Campaign: {{create-campaign.Id}}.'
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: marketing-launches
text: 'Campaign launched: {{campaign_name}} for {{product_name}}. SF Campaign: {{create-campaign.Id}}. Launch: {{launch_date}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://henkel.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: campaigns
path: /sobjects/Campaign
operations:
- name: create-campaign
method: POST
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: social-posts
path: /broadcast/v1/broadcasts
operations:
- name: create-social-post
method: POST
- 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-email
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/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Searches the Workday employee directory by name or department, returning employee ID, title, location, and manager.
naftiko: '0.5'
info:
label: Workday Employee Directory Search
description: Searches the Workday employee directory by name or department, returning employee ID, title, location, and manager.
tags:
- hr
- employee
- workday
capability:
exposes:
- type: mcp
namespace: employee-directory
port: 8080
tools:
- name: search-employee
description: Search for an employee by name or department in Workday.
inputParameters:
- name: search_term
in: body
type: string
description: Employee name or department to search.
call: workday.search-workers
with:
query: '{{search_term}}'
outputParameters:
- name: employee_id
type: string
mapping: $.workers[0].id
- name: full_name
type: string
mapping: $.workers[0].fullName
- name: title
type: string
mapping: $.workers[0].jobTitle
- name: location
type: string
mapping: $.workers[0].location
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?search={{query}}
inputParameters:
- name: query
in: query
operations:
- name: search-workers
method: GET
Traces production batch genealogy by querying SAP batch records, retrieving raw material lot data, and publishing the full traceability tree to Confluence.
naftiko: '0.5'
info:
label: Production Batch Genealogy Tracker
description: Traces production batch genealogy by querying SAP batch records, retrieving raw material lot data, and publishing the full traceability tree to Confluence.
tags:
- manufacturing
- traceability
- sap
- confluence
capability:
exposes:
- type: mcp
namespace: batch-genealogy
port: 8080
tools:
- name: trace-batch
description: Trace complete batch genealogy across raw materials and production.
inputParameters:
- name: batch_number
in: body
type: string
description: The finished goods batch number.
steps:
- name: get-batch-record
type: call
call: sap.get-batch
with:
batch_id: '{{batch_number}}'
- name: get-raw-material-lots
type: call
call: sap.get-component-lots
with:
production_order: '{{get-batch-record.production_order}}'
- name: publish-genealogy
type: call
call: confluence.create-page
with:
space: QUALITY
title: 'Batch Genealogy: {{batch_number}}'
body: 'Product: {{get-batch-record.product_name}}. Production date: {{get-batch-record.production_date}}. Components: {{get-raw-material-lots.lot_summary}}.'
consumes:
- type: http
namespace: sap
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZPR_BATCH_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: batches
path: /BatchSet('{{batch_id}}')
inputParameters:
- name: batch_id
in: path
operations:
- name: get-batch
method: GET
- name: components
path: /ProductionOrderSet('{{production_order}}')/ComponentLots
inputParameters:
- name: production_order
in: path
operations:
- name: get-component-lots
method: GET
- type: http
namespace: confluence
baseUri: https://henkel.atlassian.net/wiki/api/v2
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Pulls plant KPI data from SAP and writes to Google Sheets.
naftiko: '0.5'
info:
label: Google Sheets Plant KPI Dashboard
description: Pulls plant KPI data from SAP and writes to Google Sheets.
tags:
- reporting
- google-sheets
- sap
capability:
exposes:
- type: mcp
namespace: sheets-kpis
port: 8080
tools:
- name: sync-plant-kpis
description: Sync SAP plant KPIs to Google Sheets.
inputParameters:
- name: spreadsheet_id
in: body
type: string
description: The Google Sheets ID.
- name: plant_code
in: body
type: string
description: The plant code.
steps:
- name: get-kpis
type: call
call: sap.get-plant-kpis
with:
plant: '{{plant_code}}'
- name: update-sheet
type: call
call: gsheets.update-values
with:
spreadsheet_id: '{{spreadsheet_id}}'
range: KPIs!A2:E2
values:
- - '{{plant_code}}'
- '{{get-kpis.oee}}'
- '{{get-kpis.yield}}'
- '{{get-kpis.safety_rate}}'
- '{{get-kpis.on_time_delivery}}'
consumes:
- type: http
namespace: sap
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZPP_KPI_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: kpis
path: /PlantKPISet('{{plant}}')
inputParameters:
- name: plant
in: path
operations:
- name: get-plant-kpis
method: GET
- type: http
namespace: gsheets
baseUri: https://sheets.googleapis.com/v4/spreadsheets
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: values
path: /{{spreadsheet_id}}/values/{{range}}
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: update-values
method: PUT
Pulls inventory levels from SAP for raw materials and finished goods, pushes to Power BI for supply chain visibility, and alerts the planning team in Microsoft Teams if below safety stock.
naftiko: '0.5'
info:
label: Supply Chain Inventory Monitor
description: Pulls inventory levels from SAP for raw materials and finished goods, pushes to Power BI for supply chain visibility, and alerts the planning team in Microsoft Teams if below safety stock.
tags:
- supply-chain
- inventory
- sap
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: supply-chain-inventory
port: 8080
tools:
- name: monitor-inventory
description: Monitor inventory levels and alert on low stock.
inputParameters:
- name: plant_code
in: body
type: string
description: The SAP plant code.
- name: material_group
in: body
type: string
description: The material group to monitor.
steps:
- name: get-inventory
type: call
call: sap.get-plant-inventory
with:
plant: '{{plant_code}}'
material_group: '{{material_group}}'
- name: push-to-bi
type: call
call: powerbi.push-rows
with:
dataset_id: inventory_ds
table_name: Inventory
rows:
- plant: '{{plant_code}}'
material_group: '{{material_group}}'
on_hand: '{{get-inventory.total_on_hand}}'
safety_stock: '{{get-inventory.safety_stock}}'
below_safety: '{{get-inventory.below_safety_count}}'
- name: alert-planning
type: call
call: msteams.send-message
with:
channel_id: supply-chain-planning
text: 'Inventory alert for plant {{plant_code}}: {{get-inventory.below_safety_count}} materials below safety stock in group {{material_group}}.'
consumes:
- type: http
namespace: sap
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZMM_INVENTORY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: inventory
path: /PlantInventorySet(Plant='{{plant}}',MaterialGroup='{{material_group}}')
inputParameters:
- name: plant
in: path
- name: material_group
in: path
operations:
- name: get-plant-inventory
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}}/tables/{{table_name}}/rows
inputParameters:
- name: dataset_id
in: path
- name: table_name
in: path
operations:
- name: push-rows
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/{{channel_id}}/channels/general/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Assesses supplier risk by pulling vendor data from SAP Ariba, checking financial health via Dun and Bradstreet, and logging findings in ServiceNow.
naftiko: '0.5'
info:
label: Supplier Risk Assessment Pipeline
description: Assesses supplier risk by pulling vendor data from SAP Ariba, checking financial health via Dun and Bradstreet, and logging findings in ServiceNow.
tags:
- procurement
- risk
- sap-ariba
- servicenow
capability:
exposes:
- type: mcp
namespace: supplier-risk
port: 8080
tools:
- name: assess-supplier-risk
description: Run supplier risk assessment across procurement and financial systems.
inputParameters:
- name: vendor_id
in: body
type: string
description: The SAP Ariba vendor ID.
steps:
- name: get-vendor-profile
type: call
call: ariba.get-supplier
with:
supplier_id: '{{vendor_id}}'
- name: check-financial-health
type: call
call: dnb.get-company-risk
with:
duns_number: '{{get-vendor-profile.duns_number}}'
- name: log-assessment
type: call
call: servicenow.create-record
with:
table: u_supplier_risk
vendor_name: '{{get-vendor-profile.vendor_name}}'
risk_score: '{{check-financial-health.risk_score}}'
financial_rating: '{{check-financial-health.rating}}'
consumes:
- type: http
namespace: ariba
baseUri: https://openapi.ariba.com/api/sourcing/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: dnb
baseUri: https://plus.dnb.com/v1
authentication:
type: bearer
token: $secrets.dnb_token
resources:
- name: risk
path: /data/duns/{{duns_number}}?productId=cmprsk
inputParameters:
- name: duns_number
in: path
operations:
- name: get-company-risk
method: GET
- type: http
namespace: servicenow
baseUri: https://henkel.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
Coordinates product registration for new markets by retrieving formulation data from SAP, submitting regulatory documents to Veeva Vault, and tracking progress in Jira.
naftiko: '0.5'
info:
label: New Market Product Registration Coordinator
description: Coordinates product registration for new markets by retrieving formulation data from SAP, submitting regulatory documents to Veeva Vault, and tracking progress in Jira.
tags:
- regulatory
- product-registration
- sap
- jira
capability:
exposes:
- type: mcp
namespace: product-registration
port: 8080
tools:
- name: register-product
description: Coordinate product registration for a new market.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number.
- name: target_country
in: body
type: string
description: Target country ISO code.
steps:
- name: get-formulation
type: call
call: sap.get-recipe
with:
material_id: '{{material_number}}'
- name: submit-regulatory-docs
type: call
call: veeva.create-submission
with:
product_name: '{{get-formulation.product_name}}'
country: '{{target_country}}'
formulation_ref: '{{material_number}}'
- name: create-tracking-ticket
type: call
call: jira.create-issue
with:
project: REGAFF
issue_type: Task
summary: 'Product registration: {{get-formulation.product_name}} in {{target_country}}'
description: 'Veeva submission: {{submit-regulatory-docs.submission_id}}. Material: {{material_number}}.'
consumes:
- type: http
namespace: sap
baseUri: https://henkel-s4.sap.com/sap/opu/odata/sap/ZPR_RECIPE_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: recipes
path: /RecipeSet('{{material_id}}')
inputParameters:
- name: material_id
in: path
operations:
- name: get-recipe
method: GET
- type: http
namespace: veeva
baseUri: https://henkel.veevavault.com/api/v23.1
authentication:
type: bearer
token: $secrets.veeva_token
resources:
- name: submissions
path: /objects/submissions
operations:
- name: create-submission
method: POST
- type: http
namespace: jira
baseUri: https://henkel.atlassian.net/rest/api/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 SAP HANA for production analytics by plant and product line, returning OEE, yield, and downtime metrics.
naftiko: '0.5'
info:
label: SAP HANA Production Analytics
description: Queries SAP HANA for production analytics by plant and product line, returning OEE, yield, and downtime metrics.
tags:
- analytics
- manufacturing
- sap-hana
capability:
exposes:
- type: mcp
namespace: production-analytics
port: 8080
tools:
- name: query-production-analytics
description: Query SAP HANA for production performance metrics.
inputParameters:
- name: plant_code
in: body
type: string
description: The plant code.
- name: product_line
in: body
type: string
description: The product line.
call: saphana.query-production
with:
plant: '{{plant_code}}'
product_line: '{{product_line}}'
outputParameters:
- name: oee
type: string
mapping: $.d.OEE
- name: yield_pct
type: string
mapping: $.d.YieldPercentage
- name: downtime_hours
type: number
mapping: $.d.DowntimeHours
consumes:
- type: http
namespace: saphana
baseUri: https://henkel-hana.sap.com/sap/opu/odata/sap/ZPP_ANALYTICS_SRV
authentication:
type: basic
username: $secrets.sap_hana_user
password: $secrets.sap_hana_password
resources:
- name: production
path: /ProductionAnalyticsSet(Plant='{{plant}}',ProductLine='{{product_line}}')
inputParameters:
- name: plant
in: path
- name: product_line
in: path
operations:
- name: query-production
method: GET
Monitors warehouse capacity levels in SAP, creates planning alerts in ServiceNow, and notifies logistics when thresholds are breached for Johnson & Johnson.
naftiko: '0.5'
info:
label: SAP Warehouse Capacity Planning Alert
description: Monitors warehouse capacity levels in SAP, creates planning alerts in ServiceNow, and notifies logistics when thresholds are breached for Johnson & Johnson.
tags:
- supply-chain
- sap
- warehouse
- capacity-planning
capability:
exposes:
- type: mcp
namespace: logistics-planning
port: 8080
tools:
- name: alert-warehouse-capacity
description: Given a warehouse and capacity threshold, check current utilization and alert if exceeded.
inputParameters:
- name: warehouse_id
in: body
type: string
description: The SAP warehouse number.
- name: threshold_percent
in: body
type: integer
description: Capacity utilization threshold percentage.
- name: plant
in: body
type: string
description: The SAP plant code.
steps:
- name: check-capacity
type: call
call: sap.get-warehouse-utilization
with:
warehouse: '{{warehouse_id}}'
plant: '{{plant}}'
- name: create-alert
type: call
call: servicenow.create-incident
with:
short_description: 'Warehouse Capacity Alert: {{warehouse_id}} at {{check-capacity.utilization}}%'
category: logistics
- name: notify-logistics
type: call
call: msteams.send-message
with:
channel_id: $secrets.logistics_channel
text: 'Warehouse Capacity: {{warehouse_id}} at Plant {{plant}} is at {{check-capacity.utilization}}% (threshold: {{threshold_percent}}%). SNOW: {{create-alert.number}}.'
consumes:
- type: http
namespace: sap
baseUri: https://jnj-s4.sap.com/sap/opu/odata/sap/API_WAREHOUSE_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: records
path: /
operations:
- name: create-record
method: POST
- type: http
namespace: servicenow
baseUri: https://jnj.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: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves material master data from SAP S/4HANA by material number for Johnson & Johnson manufacturing and supply chain operations.
naftiko: '0.5'
info:
label: SAP Material Master Lookup
description: Retrieves material master data from SAP S/4HANA by material number for Johnson & Johnson manufacturing and supply chain operations.
tags:
- manufacturing
- sap
- supply-chain
- lookup
capability:
exposes:
- type: mcp
namespace: supply-chain
port: 8080
tools:
- name: get-material
description: Given a SAP material number, return the material description, base unit of measure, and material group.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number (e.g., MAT-001234).
call: sap.get-material
with:
material_number: '{{material_number}}'
outputParameters:
- name: description
type: string
mapping: $.d.MaterialDescription
- name: base_uom
type: string
mapping: $.d.BaseUnit
- name: material_group
type: string
mapping: $.d.MaterialGroup
consumes:
- type: http
namespace: sap
baseUri: https://jnj-s4.sap.com/sap/opu/odata/sap/API_PRODUCT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: materials
path: /A_Product('{{material_number}}')
inputParameters:
- name: material_number
in: path
operations:
- name: get-material
method: GET
Checks travel expense reports for policy violations, creates audit findings in ServiceNow, and notifies finance for Johnson & Johnson.
naftiko: '0.5'
info:
label: SAP Concur Travel Policy Compliance Checker
description: Checks travel expense reports for policy violations, creates audit findings in ServiceNow, and notifies finance for Johnson & Johnson.
tags:
- finance
- sap-concur
- compliance
- audit
capability:
exposes:
- type: mcp
namespace: finance-compliance
port: 8080
tools:
- name: check-travel-compliance
description: Given an expense report ID, check for policy violations, create audit findings, and notify the compliance team.
inputParameters:
- name: report_id
in: body
type: string
description: The SAP Concur expense report ID.
- name: employee_id
in: body
type: string
description: The employee ID who submitted the report.
steps:
- name: get-report
type: call
call: concur.get-expense-report
with:
report_id: '{{report_id}}'
- name: log-findings
type: call
call: servicenow.create-incident
with:
short_description: 'Travel Compliance Review: Report {{report_id}}'
category: finance_audit
- name: notify-finance
type: call
call: msteams.send-message
with:
channel_id: $secrets.finance_compliance_channel
text: 'Travel Compliance: Report {{report_id}} by Employee {{employee_id}}. Total: {{get-report.total}}. Violations: {{get-report.violations_count}}. SNOW: {{log-findings.number}}.'
consumes:
- type: http
namespace: concur
baseUri: https://us2.api.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: servicenow
baseUri: https://jnj.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: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves the latest document versions and approval states from Veeva Vault for a given product dossier, and flags any documents in Draft state past their review deadline.
naftiko: '0.5'
info:
label: Veeva Vault Document Version Control Check
description: Retrieves the latest document versions and approval states from Veeva Vault for a given product dossier, and flags any documents in Draft state past their review deadline.
tags:
- regulatory
- quality
- veeva
- compliance
- pharma
capability:
exposes:
- type: mcp
namespace: vault-ops
port: 8080
tools:
- name: check-dossier-document-states
description: Given a Veeva Vault product dossier ID, retrieve all contained documents and their lifecycle states. Flag any that are in Draft state and past the expected review deadline.
inputParameters:
- name: dossier_id
in: body
type: string
description: The Veeva Vault dossier or binder ID to check.
- name: review_deadline
in: body
type: string
description: The review deadline date in YYYY-MM-DD format.
call: veeva.list-binder-documents
with:
dossier_id: '{{dossier_id}}'
outputParameters:
- name: document_count
type: number
mapping: $.responseStatus
- name: documents
type: array
mapping: $.data
items:
- name: document_id
type: string
mapping: $.id
- name: state
type: string
mapping: $.lifecycle_state__v
consumes:
- type: http
namespace: veeva
baseUri: https://jnj.veevavault.com/api/v24.1
authentication:
type: bearer
token: $secrets.veeva_token
resources:
- name: binder-documents
path: /objects/binders/{{dossier_id}}/documents
inputParameters:
- name: dossier_id
in: path
operations:
- name: list-binder-documents
method: GET
Retrieves batch genealogy and traceability data from SAP for a given batch number in Johnson & Johnson manufacturing.
naftiko: '0.5'
info:
label: SAP Batch Genealogy Lookup
description: Retrieves batch genealogy and traceability data from SAP for a given batch number in Johnson & Johnson manufacturing.
tags:
- manufacturing
- sap
- batch-tracking
- quality
capability:
exposes:
- type: mcp
namespace: manufacturing-ops
port: 8080
tools:
- name: get-batch-genealogy
description: Given a batch number and plant code, return the batch creation date, material, and expiry date.
inputParameters:
- name: batch_number
in: body
type: string
description: The SAP batch number.
- name: plant
in: body
type: string
description: The SAP plant code.
call: sap.get-batch
with:
batch_number: '{{batch_number}}'
plant: '{{plant}}'
outputParameters:
- name: material
type: string
mapping: $.d.Material
- name: manufacture_date
type: string
mapping: $.d.ManufactureDate
- name: shelf_life_expiry
type: string
mapping: $.d.ShelfLifeExpirationDate
consumes:
- type: http
namespace: sap
baseUri: https://jnj-s4.sap.com/sap/opu/odata/sap/API_BATCH_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: batches
path: /A_Batch(Material='',Batch='{{batch_number}}',Plant='{{plant}}')
inputParameters:
- name: batch_number
in: path
- name: plant
in: path
operations:
- name: get-batch
method: GET
Creates monitoring visit schedules in Veeva Vault, assigns tasks in Jira, and notifies the CRA team for Johnson & Johnson.
naftiko: '0.5'
info:
label: Clinical Site Monitoring Visit Scheduler
description: Creates monitoring visit schedules in Veeva Vault, assigns tasks in Jira, and notifies the CRA team for Johnson & Johnson.
tags:
- clinical-trials
- veeva-vault
- jira
- scheduling
capability:
exposes:
- type: mcp
namespace: clinical-monitoring
port: 8080
tools:
- name: schedule-monitoring-visit
description: Given site and visit details, create a Veeva Vault record, a Jira task, and a Teams notification.
inputParameters:
- name: site_id
in: body
type: string
description: The clinical site identifier.
- name: visit_type
in: body
type: string
description: Type of monitoring visit (routine, for-cause, closeout).
- name: visit_date
in: body
type: string
description: Scheduled date for the visit.
- name: cra_name
in: body
type: string
description: Name of the assigned CRA.
steps:
- name: create-vault-record
type: call
call: veeva.create-object-record
with:
object_type: monitoring_visit__c
site_id__c: '{{site_id}}'
visit_type__c: '{{visit_type}}'
visit_date__c: '{{visit_date}}'
- name: create-jira-task
type: call
call: jira.create-issue
with:
project: CLIN
summary: 'Monitoring Visit: {{visit_type}} at Site {{site_id}} on {{visit_date}}'
issuetype: Task
- name: notify-cra-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.cra_channel
text: 'New {{visit_type}} monitoring visit at Site {{site_id}} on {{visit_date}}. CRA: {{cra_name}}. Jira: {{create-jira-task.key}}.'
consumes:
- type: http
namespace: veeva
baseUri: https://jnj.veevavault.com/api/v24.1
authentication:
type: bearer
token: $secrets.veeva_token
resources:
- name: object-records
path: /vobjects/{{object_type}}
inputParameters:
- name: object_type
in: path
operations:
- name: create-object-record
method: POST
- type: http
namespace: jira
baseUri: https://jnj.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.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Validates invoices by performing three-way matching in SAP, logs exceptions in ServiceNow, and notifies accounts payable for Johnson & Johnson.
naftiko: '0.5'
info:
label: SAP Invoice Three-Way Match Validator
description: Validates invoices by performing three-way matching in SAP, logs exceptions in ServiceNow, and notifies accounts payable for Johnson & Johnson.
tags:
- finance
- sap
- accounts-payable
- compliance
capability:
exposes:
- type: mcp
namespace: finance-ap
port: 8080
tools:
- name: validate-invoice-match
description: Given an invoice number, perform three-way match validation, log exceptions, and notify AP.
inputParameters:
- name: invoice_number
in: body
type: string
description: The SAP invoice document number.
- name: company_code
in: body
type: string
description: The SAP company code.
steps:
- name: check-match
type: call
call: sap.validate-three-way-match
with:
invoice_number: '{{invoice_number}}'
company_code: '{{company_code}}'
- name: log-exception
type: call
call: servicenow.create-incident
with:
short_description: 'Invoice Match Exception: {{invoice_number}}'
category: accounts_payable
- name: notify-ap
type: call
call: msteams.send-message
with:
channel_id: $secrets.ap_channel
text: 'Invoice Match: {{invoice_number}} in Company {{company_code}}. Status: {{check-match.status}}. Variance: {{check-match.variance}}. SNOW: {{log-exception.number}}.'
consumes:
- type: http
namespace: sap
baseUri: https://jnj-s4.sap.com/sap/opu/odata/sap/API_SUPPLIERINVOICE_PROCESS_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: records
path: /
operations:
- name: create-record
method: POST
- type: http
namespace: servicenow
baseUri: https://jnj.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: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves cost element master data from SAP for Johnson & Johnson finance and controlling operations.
naftiko: '0.5'
info:
label: SAP Cost Element Lookup
description: Retrieves cost element master data from SAP for Johnson & Johnson finance and controlling operations.
tags:
- finance
- sap
- controlling
- lookup
capability:
exposes:
- type: mcp
namespace: finance-controlling
port: 8080
tools:
- name: get-cost-element
description: Given a cost element code, return the description, category, and controlling area.
inputParameters:
- name: cost_element
in: body
type: string
description: The SAP cost element code.
call: sap.get-cost-element
with:
cost_element: '{{cost_element}}'
outputParameters:
- name: description
type: string
mapping: $.d.CostElementDescription
- name: category
type: string
mapping: $.d.CostElementCategory
consumes:
- type: http
namespace: sap
baseUri: https://jnj-s4.sap.com/sap/opu/odata/sap/API_COSTELEMENT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: records
path: /
operations:
- name: get-record
method: GET
When a new lead is created in Salesforce for an Innovative Medicine product, enriches the lead with additional contact and company data, then updates the Salesforce record.
naftiko: '0.5'
info:
label: Salesforce CRM Lead Enrichment
description: When a new lead is created in Salesforce for an Innovative Medicine product, enriches the lead with additional contact and company data, then updates the Salesforce record.
tags:
- sales
- crm
- salesforce
- enrichment
- pharma
capability:
exposes:
- type: mcp
namespace: crm-enrichment
port: 8080
tools:
- name: enrich-pharma-lead
description: Given a Salesforce lead ID for an Innovative Medicine product, retrieve the lead details and update the record with enriched medical specialty and institution data.
inputParameters:
- name: lead_id
in: body
type: string
description: The Salesforce lead ID to enrich.
steps:
- name: get-lead
type: call
call: salesforce-read.get-lead
with:
lead_id: '{{lead_id}}'
- name: update-lead
type: call
call: salesforce-write.update-lead
with:
lead_id: '{{lead_id}}'
lead_source: Enriched
status: Working
consumes:
- type: http
namespace: salesforce-read
baseUri: https://jnj.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
- type: http
namespace: salesforce-write
baseUri: https://jnj.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: update-lead
method: PATCH
Tracks IRB approval status for clinical sites by querying Veeva Vault, updating Jira, and notifying the regulatory team for Johnson & Johnson.
naftiko: '0.5'
info:
label: Clinical IRB Approval Tracking Orchestrator
description: Tracks IRB approval status for clinical sites by querying Veeva Vault, updating Jira, and notifying the regulatory team for Johnson & Johnson.
tags:
- clinical-trials
- regulatory
- veeva-vault
- jira
capability:
exposes:
- type: mcp
namespace: clinical-regulatory
port: 8080
tools:
- name: track-irb-approvals
description: Given a study ID, check IRB approval status across sites, update tracking, and notify the team.
inputParameters:
- name: study_id
in: body
type: string
description: The clinical study protocol number.
- name: region
in: body
type: string
description: The geographic region to check.
steps:
- name: query-irb-status
type: call
call: veeva.query-submissions
with:
query: SELECT site_id__c, irb_status__c FROM irb_submission__c WHERE study_id__c = '{{study_id}}' AND region__c = '{{region}}'
- name: update-tracker
type: call
call: jira.create-issue
with:
project: REG
summary: 'IRB Status Update: Study {{study_id}} — {{region}}'
issuetype: Task
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.regulatory_channel
text: 'IRB Approval Status for Study {{study_id}} ({{region}}): {{query-irb-status.totalCount}} sites tracked. Jira: {{update-tracker.key}}.'
consumes:
- type: http
namespace: veeva
baseUri: https://jnj.veevavault.com/api/v24.1
authentication:
type: bearer
token: $secrets.veeva_token
resources:
- name: query
path: /query
operations:
- name: query-submissions
method: POST
- type: http
namespace: jira
baseUri: https://jnj.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.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Orchestrates vendor qualification reviews by pulling vendor data from SAP, creating a ServiceNow assessment task, and notifying procurement for Johnson & Johnson.
naftiko: '0.5'
info:
label: Vendor Qualification Review Orchestrator
description: Orchestrates vendor qualification reviews by pulling vendor data from SAP, creating a ServiceNow assessment task, and notifying procurement for Johnson & Johnson.
tags:
- procurement
- sap
- servicenow
- vendor-management
capability:
exposes:
- type: mcp
namespace: procurement-ops
port: 8080
tools:
- name: initiate-vendor-review
description: Given a vendor number, retrieve vendor details from SAP, create an assessment task, and notify procurement.
inputParameters:
- name: vendor_number
in: body
type: string
description: The SAP vendor number.
- name: review_type
in: body
type: string
description: Type of qualification review (initial, periodic, for-cause).
steps:
- name: get-vendor-data
type: call
call: sap.get-vendor
with:
vendor_number: '{{vendor_number}}'
- name: create-assessment
type: call
call: servicenow.create-incident
with:
short_description: 'Vendor Qualification: {{get-vendor-data.SupplierName}} — {{review_type}}'
category: vendor_management
- name: notify-procurement
type: call
call: msteams.send-message
with:
channel_id: $secrets.procurement_channel
text: 'Vendor Review initiated for {{get-vendor-data.SupplierName}} ({{vendor_number}}). Type: {{review_type}}. Task: {{create-assessment.number}}.'
consumes:
- type: http
namespace: sap
baseUri: https://jnj-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: records
path: /
operations:
- name: create-record
method: POST
- type: http
namespace: servicenow
baseUri: https://jnj.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: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Returns current headcount by department and cost center from Workday, segmented by business unit for workforce planning across MedTech and Innovative Medicine.
naftiko: '0.5'
info:
label: Payroll Headcount Snapshot
description: Returns current headcount by department and cost center from Workday, segmented by business unit for workforce planning across MedTech and Innovative Medicine.
tags:
- hr
- payroll
- headcount
- workday
- reporting
capability:
exposes:
- type: mcp
namespace: hr-reporting
port: 8080
tools:
- name: get-headcount-by-department
description: Returns a list of active employees grouped by department and cost center from Workday. Use for headcount planning, budget forecasting, and organizational design.
call: workday.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: $.Worker
- name: department
type: string
mapping: $.Cost_Center
- name: employment_type
type: string
mapping: $.Worker_Type
consumes:
- type: http
namespace: workday
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
path: /jnj/headcount_by_department
operations:
- name: headcount-report
method: GET
outputRawFormat: json
Identifies overdue compliance training assignments in Workday and sends reminder notifications for Johnson & Johnson.
naftiko: '0.5'
info:
label: Workday Learning Compliance Reminder
description: Identifies overdue compliance training assignments in Workday and sends reminder notifications for Johnson & Johnson.
tags:
- hr
- workday
- compliance
- training
capability:
exposes:
- type: mcp
namespace: hr-compliance
port: 8080
tools:
- name: send-compliance-reminders
description: Given a compliance training program ID, find overdue assignments and send reminders.
inputParameters:
- name: program_id
in: body
type: string
description: The Workday learning program ID.
- name: days_overdue
in: body
type: integer
description: Minimum days overdue to trigger reminder.
steps:
- name: get-overdue
type: call
call: workday.get-overdue-training
with:
program_id: '{{program_id}}'
days_overdue: '{{days_overdue}}'
- name: send-reminder
type: call
call: msteams.send-message
with:
channel_id: $secrets.hr_compliance_channel
text: 'Compliance Training Alert: {{get-overdue.count}} employees overdue for program {{program_id}} (>{{days_overdue}} days).'
consumes:
- type: http
namespace: workday
baseUri: https://wd5-services1.myworkday.com/ccx/service/jnj/Learning/v42.0
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: training
path: /learningAssignments?overdue=true&program={{program_id}}
inputParameters:
- name: program_id
in: query
operations:
- name: get-overdue-training
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Coordinates HCP speaker program events by creating events in Salesforce, logging compliance checks, and notifying medical affairs for Johnson & Johnson.
naftiko: '0.5'
info:
label: HCP Speaker Program Event Coordinator
description: Coordinates HCP speaker program events by creating events in Salesforce, logging compliance checks, and notifying medical affairs for Johnson & Johnson.
tags:
- medical-affairs
- salesforce
- compliance
- events
capability:
exposes:
- type: mcp
namespace: medical-affairs-events
port: 8080
tools:
- name: coordinate-speaker-event
description: Given speaker event details, create the event in Salesforce, verify FMV compliance, and notify the team.
inputParameters:
- name: speaker_name
in: body
type: string
description: Name of the HCP speaker.
- name: event_title
in: body
type: string
description: Title of the speaker program event.
- name: event_date
in: body
type: string
description: Date of the event.
- name: honorarium_amount
in: body
type: string
description: Speaker honorarium amount.
steps:
- name: create-event
type: call
call: salesforce.create-record
with:
object_type: Speaker_Event__c
Speaker_Name__c: '{{speaker_name}}'
Event_Title__c: '{{event_title}}'
- name: check-fmv
type: call
call: servicenow.create-incident
with:
short_description: 'FMV Compliance Check: {{speaker_name}} — {{honorarium_amount}}'
category: compliance
- name: notify-med-affairs
type: call
call: msteams.send-message
with:
channel_id: $secrets.med_affairs_events_channel
text: 'Speaker Event: {{event_title}} on {{event_date}}. Speaker: {{speaker_name}}. Honorarium: {{honorarium_amount}}. SFDC: {{create-event.id}}. FMV: {{check-fmv.number}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://jnj.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: records
path: /sobjects/Speaker_Event__c
operations:
- name: create-record
method: POST
- type: http
namespace: servicenow
baseUri: https://jnj.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: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Queries SAP Ariba for supplier contracts expiring within the next 60 days, creates a ServiceNow procurement renewal task for each, and posts a contract expiry digest to the procurement Teams channel.
naftiko: '0.5'
info:
label: SAP Ariba Contract Expiry Monitor
description: Queries SAP Ariba for supplier contracts expiring within the next 60 days, creates a ServiceNow procurement renewal task for each, and posts a contract expiry digest to the procurement Teams channel.
tags:
- procurement
- sap-ariba
- servicenow
- microsoft-teams
- contract-management
capability:
exposes:
- type: mcp
namespace: contract-ops
port: 8080
tools:
- name: monitor-expiring-contracts
description: Retrieve all SAP Ariba contracts expiring in the next 60 days, open a ServiceNow renewal task for each, and post a summary digest to the procurement Teams channel.
inputParameters:
- name: days_until_expiry
in: body
type: integer
description: Number of days ahead to look for expiring contracts (default 60).
steps:
- name: get-expiring-contracts
type: call
call: ariba.list-expiring-contracts
with:
days: '{{days_until_expiry}}'
- name: create-renewal-task
type: call
call: servicenow.create-task
with:
short_description: 'Contract renewal required: {{days_until_expiry}} day expiry window'
category: procurement
assigned_group: Strategic_Sourcing
- name: post-digest
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.teams_procurement_channel_id
text: 'Contract Expiry Digest: {{get-expiring-contracts.contract_count}} contracts expiring within {{days_until_expiry}} days | Renewal task: {{create-renewal-task.number}}'
consumes:
- type: http
namespace: ariba
baseUri: https://openapi.ariba.com/api/contract-management/v1
authentication:
type: bearer
token: $secrets.ariba_token
resources:
- name: contracts
path: /contracts
operations:
- name: list-expiring-contracts
method: GET
- type: http
namespace: servicenow
baseUri: https://jnj.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
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 Suspected Unexpected Serious Adverse Reactions by logging in Veeva Vault, creating urgent ServiceNow cases, and alerting the DSMB for Johnson & Johnson.
naftiko: '0.5'
info:
label: Clinical Safety Reporting SUSAR Handler
description: Processes Suspected Unexpected Serious Adverse Reactions by logging in Veeva Vault, creating urgent ServiceNow cases, and alerting the DSMB for Johnson & Johnson.
tags:
- drug-safety
- clinical-trials
- veeva-vault
- regulatory
capability:
exposes:
- type: mcp
namespace: clinical-safety
port: 8080
tools:
- name: process-susar
description: Given SUSAR details, log in Veeva Vault, create an urgent ServiceNow case, and alert the DSMB.
inputParameters:
- name: study_id
in: body
type: string
description: The clinical study protocol number.
- name: patient_id
in: body
type: string
description: Anonymized patient identifier.
- name: event_term
in: body
type: string
description: The adverse event MedDRA preferred term.
- name: seriousness_criteria
in: body
type: string
description: Seriousness criteria met.
steps:
- name: log-in-vault
type: call
call: veeva.create-object-record
with:
object_type: safety_case__c
study_id__c: '{{study_id}}'
patient_id__c: '{{patient_id}}'
event_term__c: '{{event_term}}'
- name: create-urgent-case
type: call
call: servicenow.create-incident
with:
short_description: 'SUSAR: {{event_term}} — Study {{study_id}}'
priority: '1'
- name: alert-dsmb
type: call
call: msteams.send-message
with:
channel_id: $secrets.dsmb_channel
text: 'URGENT SUSAR: {{event_term}} in Study {{study_id}} (Patient {{patient_id}}). Seriousness: {{seriousness_criteria}}. Vault: {{log-in-vault.id}}. SNOW: {{create-urgent-case.number}}.'
consumes:
- type: http
namespace: veeva
baseUri: https://jnj.veevavault.com/api/v24.1
authentication:
type: bearer
token: $secrets.veeva_token
resources:
- name: object-records
path: /vobjects/{{object_type}}
inputParameters:
- name: object_type
in: path
operations:
- name: create-object-record
method: POST
- type: http
namespace: servicenow
baseUri: https://jnj.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: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Checks a GitHub repository for branch protection rules and required status checks for Johnson & Johnson DevSecOps compliance.
naftiko: '0.5'
info:
label: GitHub Repository Compliance Check
description: Checks a GitHub repository for branch protection rules and required status checks for Johnson & Johnson DevSecOps compliance.
tags:
- devops
- github
- compliance
- security
capability:
exposes:
- type: mcp
namespace: devsecops
port: 8080
tools:
- name: check-repo-compliance
description: Given a repository name, return branch protection status, required reviews count, and CODEOWNERS presence.
inputParameters:
- name: repo_name
in: body
type: string
description: The GitHub repository name (org/repo format).
call: github.get-branch-protection
with:
repo_name: '{{repo_name}}'
outputParameters:
- name: protection_enabled
type: boolean
mapping: $.enabled
- name: required_reviews
type: integer
mapping: $.required_pull_request_reviews.required_approving_review_count
- name: enforce_admins
type: boolean
mapping: $.enforce_admins.enabled
consumes:
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: branch-protection
path: /repos/{{repo_name}}/branches/main/protection
inputParameters:
- name: repo_name
in: path
operations:
- name: get-branch-protection
method: GET
Processes patient assistance program enrollments by creating cases in Salesforce, verifying eligibility, and notifying patient services for Johnson & Johnson.
naftiko: '0.5'
info:
label: Patient Assistance Program Enrollment Processor
description: Processes patient assistance program enrollments by creating cases in Salesforce, verifying eligibility, and notifying patient services for Johnson & Johnson.
tags:
- commercial
- salesforce
- patient-services
- compliance
capability:
exposes:
- type: mcp
namespace: patient-services
port: 8080
tools:
- name: process-pap-enrollment
description: Given patient enrollment details, create a Salesforce case, verify eligibility, and notify the patient services team.
inputParameters:
- name: patient_id
in: body
type: string
description: The patient identifier.
- name: product_name
in: body
type: string
description: The product for which assistance is requested.
- name: insurance_status
in: body
type: string
description: Patient insurance status.
steps:
- name: create-case
type: call
call: salesforce.create-case
with:
subject: 'PAP Enrollment: {{product_name}} — Patient {{patient_id}}'
type: Patient_Assistance
- name: verify-eligibility
type: call
call: snowflake.execute-query
with:
statement: SELECT eligible FROM pap_eligibility_rules WHERE product = '{{product_name}}'
warehouse: COMMERCIAL_WH
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.patient_services_channel
text: 'PAP Enrollment: Patient {{patient_id}} for {{product_name}}. Eligibility: {{verify-eligibility.data}}. Case: {{create-case.id}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://jnj.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: cases
path: /sobjects/Case
operations:
- name: create-case
method: POST
- type: http
namespace: snowflake
baseUri: https://jnj.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
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves current inventory stock levels from SAP for a material at a given plant for Johnson & Johnson supply chain operations.
naftiko: '0.5'
info:
label: SAP Inventory Stock Lookup
description: Retrieves current inventory stock levels from SAP for a material at a given plant for Johnson & Johnson supply chain operations.
tags:
- supply-chain
- sap
- inventory
- manufacturing
capability:
exposes:
- type: mcp
namespace: supply-chain-ops
port: 8080
tools:
- name: get-stock-level
description: Given a material number and plant code, return the unrestricted stock, quality inspection stock, and blocked stock quantities.
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-stock
with:
material_number: '{{material_number}}'
plant: '{{plant}}'
outputParameters:
- name: unrestricted
type: string
mapping: $.d.MatlWrhsStkQtyInMatlBaseUnit
- name: quality_inspection
type: string
mapping: $.d.QualityInspectionStockQty
- name: blocked
type: string
mapping: $.d.BlockedStockQty
consumes:
- type: http
namespace: sap
baseUri: https://jnj-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(Material='{{material_number}}',Plant='{{plant}}')
inputParameters:
- name: material_number
in: path
- name: plant
in: path
operations:
- name: get-stock
method: GET
Tracks clinical study budgets by pulling actuals from SAP, comparing to plan in Snowflake, and notifying finance for Johnson & Johnson.
naftiko: '0.5'
info:
label: Clinical Study Budget Tracker
description: Tracks clinical study budgets by pulling actuals from SAP, comparing to plan in Snowflake, and notifying finance for Johnson & Johnson.
tags:
- clinical-trials
- finance
- sap
- snowflake
capability:
exposes:
- type: mcp
namespace: clinical-finance
port: 8080
tools:
- name: track-study-budget
description: Given a study ID and fiscal period, pull actuals from SAP, compare to budget, and alert on variances.
inputParameters:
- name: study_id
in: body
type: string
description: The clinical study protocol number.
- name: fiscal_period
in: body
type: string
description: The fiscal period to analyze.
steps:
- name: get-actuals
type: call
call: sap.get-cost-report
with:
study_id: '{{study_id}}'
period: '{{fiscal_period}}'
- name: get-budget
type: call
call: snowflake.execute-query
with:
statement: SELECT budget_amount, study_id FROM clinical_budgets WHERE study_id = '{{study_id}}' AND period = '{{fiscal_period}}'
warehouse: FINANCE_WH
- name: notify-finance
type: call
call: msteams.send-message
with:
channel_id: $secrets.clinical_finance_channel
text: 'Study Budget Alert: {{study_id}} for {{fiscal_period}}. Actuals: {{get-actuals.total}}. Budget: {{get-budget.data}}.'
consumes:
- type: http
namespace: sap
baseUri: https://jnj-s4.sap.com/sap/opu/odata/sap/API_COSTCENTER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: records
path: /
operations:
- name: get-record
method: GET
- type: http
namespace: snowflake
baseUri: https://jnj.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
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves the status and details of a Jira issue by key for Johnson & Johnson clinical operations project tracking.
naftiko: '0.5'
info:
label: Jira Clinical Issue Status Lookup
description: Retrieves the status and details of a Jira issue by key for Johnson & Johnson clinical operations project tracking.
tags:
- clinical-trials
- jira
- project-management
- lookup
capability:
exposes:
- type: mcp
namespace: clinical-pm
port: 8080
tools:
- name: get-issue-status
description: Given a Jira issue key, return the issue summary, status, assignee, and priority.
inputParameters:
- name: issue_key
in: body
type: string
description: The Jira issue key (e.g., CLIN-1234).
call: jira.get-issue
with:
issue_key: '{{issue_key}}'
outputParameters:
- name: summary
type: string
mapping: $.fields.summary
- name: status
type: string
mapping: $.fields.status.name
- name: assignee
type: string
mapping: $.fields.assignee.displayName
- name: priority
type: string
mapping: $.fields.priority.name
consumes:
- type: http
namespace: jira
baseUri: https://jnj.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issue/{{issue_key}}
inputParameters:
- name: issue_key
in: path
operations:
- name: get-issue
method: GET
Sources MSL candidates from LinkedIn, creates profiles in Workday recruiting, and notifies the talent acquisition team for Johnson & Johnson.
naftiko: '0.5'
info:
label: LinkedIn Talent Pipeline for Medical Science Liaisons
description: Sources MSL candidates from LinkedIn, creates profiles in Workday recruiting, and notifies the talent acquisition team for Johnson & Johnson.
tags:
- hr
- linkedin
- workday
- talent-acquisition
capability:
exposes:
- type: mcp
namespace: hr-talent-sourcing
port: 8080
tools:
- name: source-msl-candidates
description: Given search criteria for MSL roles, source candidates from LinkedIn, create prospects in Workday, and notify TA.
inputParameters:
- name: therapeutic_area
in: body
type: string
description: The target therapeutic area.
- name: location
in: body
type: string
description: The target geographic location.
- name: experience_years
in: body
type: integer
description: Minimum years of experience.
steps:
- name: search-linkedin
type: call
call: linkedin.search-candidates
with:
keywords: Medical Science Liaison {{therapeutic_area}}
location: '{{location}}'
- name: create-prospects
type: call
call: workday.create-prospect
with:
source: LinkedIn
requisition_area: '{{therapeutic_area}}'
- name: notify-ta
type: call
call: msteams.send-message
with:
channel_id: $secrets.talent_channel
text: 'MSL Talent Pipeline: {{search-linkedin.count}} candidates found for {{therapeutic_area}} in {{location}}.'
consumes:
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: people-search
path: /people?keywords={{keywords}}
inputParameters:
- name: keywords
in: query
operations:
- name: search-candidates
method: GET
- type: http
namespace: workday
baseUri: https://wd5-services1.myworkday.com/ccx/service/jnj/Recruiting/v42.0
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: prospects
path: /prospects
operations:
- name: create-prospect
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Processes manufacturing deviations by creating a ServiceNow incident, logging in SAP QM, and notifying quality assurance for Johnson & Johnson.
naftiko: '0.5'
info:
label: Manufacturing Deviation Handler
description: Processes manufacturing deviations by creating a ServiceNow incident, logging in SAP QM, and notifying quality assurance for Johnson & Johnson.
tags:
- manufacturing
- quality
- servicenow
- sap
capability:
exposes:
- type: mcp
namespace: manufacturing-qa
port: 8080
tools:
- name: handle-deviation
description: Given deviation details, create a ServiceNow incident, log in SAP quality management, and notify the QA team.
inputParameters:
- name: batch_number
in: body
type: string
description: The manufacturing batch number.
- name: deviation_type
in: body
type: string
description: Type of deviation (process, equipment, material).
- name: description
in: body
type: string
description: Detailed description of the deviation.
- name: plant
in: body
type: string
description: The manufacturing plant code.
steps:
- name: create-snow-incident
type: call
call: servicenow.create-incident
with:
short_description: 'MFG Deviation: {{deviation_type}} — Batch {{batch_number}}'
category: manufacturing_quality
description: 'Plant: {{plant}} | Batch: {{batch_number}} | Type: {{deviation_type}} | Details: {{description}}'
- name: log-sap-notification
type: call
call: sap.create-quality-notification
with:
notification_type: Q2
material: '{{batch_number}}'
plant: '{{plant}}'
description: '{{deviation_type}}: {{description}}'
- name: notify-qa
type: call
call: msteams.send-message
with:
channel_id: $secrets.qa_channel
text: 'MFG Deviation Alert: {{deviation_type}} at Plant {{plant}}, Batch {{batch_number}}. SNOW: {{create-snow-incident.number}}. SAP QN: {{log-sap-notification.notification_number}}.'
consumes:
- type: http
namespace: servicenow
baseUri: https://jnj.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://jnj-s4.sap.com/sap/opu/odata/sap/API_QUALITYNOTIFICATION_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: records
path: /
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Processes goods receipt in SAP, triggers quality inspection, and notifies the warehouse team upon completion for Johnson & Johnson.
naftiko: '0.5'
info:
label: SAP Goods Receipt and Quality Release
description: Processes goods receipt in SAP, triggers quality inspection, and notifies the warehouse team upon completion for Johnson & Johnson.
tags:
- supply-chain
- sap
- quality
- warehouse
capability:
exposes:
- type: mcp
namespace: warehouse-ops
port: 8080
tools:
- name: process-goods-receipt
description: Given a purchase order and delivery details, post goods receipt, trigger quality inspection, and notify warehouse.
inputParameters:
- name: po_number
in: body
type: string
description: The SAP purchase order number.
- name: delivery_number
in: body
type: string
description: The inbound delivery number.
- name: plant
in: body
type: string
description: The receiving plant code.
steps:
- name: post-goods-receipt
type: call
call: sap.post-goods-receipt
with:
po_number: '{{po_number}}'
delivery: '{{delivery_number}}'
plant: '{{plant}}'
- name: trigger-qi
type: call
call: sap.create-inspection-lot
with:
material_document: '{{post-goods-receipt.material_document}}'
plant: '{{plant}}'
- name: notify-warehouse
type: call
call: msteams.send-message
with:
channel_id: $secrets.warehouse_channel
text: 'Goods Receipt for PO {{po_number}}, Delivery {{delivery_number}} at Plant {{plant}}. Material Doc: {{post-goods-receipt.material_document}}. QI Lot: {{trigger-qi.inspection_lot}}.'
consumes:
- type: http
namespace: sap
baseUri: https://jnj-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_DOCUMENT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: records
path: /
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves the latest build status from Azure DevOps for a given pipeline in Johnson & Johnson CI/CD operations.
naftiko: '0.5'
info:
label: Azure DevOps Build Status Lookup
description: Retrieves the latest build status from Azure DevOps for a given pipeline in Johnson & Johnson CI/CD operations.
tags:
- devops
- azure-devops
- ci-cd
- lookup
capability:
exposes:
- type: mcp
namespace: devops-ops
port: 8080
tools:
- name: get-build-status
description: Given a pipeline ID, return the latest build result, status, and build number.
inputParameters:
- name: pipeline_id
in: body
type: string
description: The Azure DevOps pipeline definition ID.
call: azdo.get-latest-build
with:
pipeline_id: '{{pipeline_id}}'
outputParameters:
- name: build_number
type: string
mapping: $.value[0].buildNumber
- name: result
type: string
mapping: $.value[0].result
- name: status
type: string
mapping: $.value[0].status
consumes:
- type: http
namespace: azdo
baseUri: https://dev.azure.com/jnj
authentication:
type: bearer
token: $secrets.azuredevops_token
resources:
- name: builds
path: /_apis/build/builds?definitions={{pipeline_id}}&$top=1&api-version=7.0
inputParameters:
- name: pipeline_id
in: query
operations:
- name: get-latest-build
method: GET
Handles MRP run exceptions from SAP by creating supply chain alerts, logging in ServiceNow, and notifying the planning team for Johnson & Johnson.
naftiko: '0.5'
info:
label: SAP MRP Run Exception Handler
description: Handles MRP run exceptions from SAP by creating supply chain alerts, logging in ServiceNow, and notifying the planning team for Johnson & Johnson.
tags:
- supply-chain
- sap
- planning
- manufacturing
capability:
exposes:
- type: mcp
namespace: supply-planning
port: 8080
tools:
- name: handle-mrp-exception
description: Given MRP exception details, create a ServiceNow alert and notify the supply planning team.
inputParameters:
- name: material_number
in: body
type: string
description: The material with the MRP exception.
- name: exception_type
in: body
type: string
description: Type of MRP exception (shortage, excess, rescheduling).
- name: plant
in: body
type: string
description: The plant code.
- name: quantity
in: body
type: string
description: The exception quantity.
steps:
- name: create-alert
type: call
call: servicenow.create-incident
with:
short_description: 'MRP Exception: {{exception_type}} — Material {{material_number}}'
category: supply_planning
- name: notify-planning
type: call
call: msteams.send-message
with:
channel_id: $secrets.planning_channel
text: 'MRP Exception: {{exception_type}} for Material {{material_number}} at Plant {{plant}}. Qty: {{quantity}}. SNOW: {{create-alert.number}}.'
consumes:
- type: http
namespace: servicenow
baseUri: https://jnj.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: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Orchestrates RWE data ingestion from external sources into Snowflake, validates data quality, and notifies the HEOR team for Johnson & Johnson.
naftiko: '0.5'
info:
label: Real-World Evidence Data Ingestion Pipeline
description: Orchestrates RWE data ingestion from external sources into Snowflake, validates data quality, and notifies the HEOR team for Johnson & Johnson.
tags:
- r-and-d
- real-world-evidence
- snowflake
- data-engineering
capability:
exposes:
- type: mcp
namespace: rwe-analytics
port: 8080
tools:
- name: ingest-rwe-data
description: Given a data source and dataset identifier, ingest into Snowflake, run quality checks, and notify HEOR.
inputParameters:
- name: data_source
in: body
type: string
description: The RWE data source name (claims, EMR, registry).
- name: dataset_id
in: body
type: string
description: The dataset identifier.
- name: study_id
in: body
type: string
description: The associated study ID.
steps:
- name: ingest-data
type: call
call: snowflake.execute-query
with:
statement: CALL rwe_ingest_pipeline('{{data_source}}', '{{dataset_id}}', '{{study_id}}')
warehouse: RWE_WH
- name: validate-quality
type: call
call: snowflake.execute-query
with:
statement: CALL rwe_data_quality_check('{{dataset_id}}')
warehouse: RWE_WH
- name: notify-heor
type: call
call: msteams.send-message
with:
channel_id: $secrets.heor_channel
text: 'RWE Data Ingestion Complete: {{data_source}} ({{dataset_id}}) for Study {{study_id}}. Records: {{ingest-data.row_count}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://jnj.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
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Pulls open position headcount from Workday and compares against the SAP cost center budget, posting a variance digest to the Finance Microsoft Teams channel.
naftiko: '0.5'
info:
label: Workday Position Budget Variance Report
description: Pulls open position headcount from Workday and compares against the SAP cost center budget, posting a variance digest to the Finance Microsoft Teams channel.
tags:
- hr
- finance
- workday
- sap
- reporting
- budgeting
capability:
exposes:
- type: mcp
namespace: hr-finance-reporting
port: 8080
tools:
- name: report-position-budget-variance
description: Pull open position data from Workday and compare against the SAP cost center budget. Post a variance summary to the Finance Teams channel for headcount cost management.
inputParameters:
- name: cost_center_id
in: body
type: string
description: The SAP cost center ID to analyze for budget variance.
- name: fiscal_period
in: body
type: string
description: The fiscal period to compare, e.g., 2026-Q2.
steps:
- name: get-positions
type: call
call: workday.get-open-positions
with:
cost_center_id: '{{cost_center_id}}'
- name: post-variance
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.teams_finance_channel_id
text: 'Headcount Budget Report: Cost Center {{cost_center_id}} | Open positions: {{get-positions.open_count}} | Period: {{fiscal_period}}'
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: positions
path: /positions
operations:
- name: get-open-positions
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
Processes environmental monitoring excursions in manufacturing by logging in SAP QM, creating a ServiceNow incident, and alerting quality for Johnson & Johnson.
naftiko: '0.5'
info:
label: Environmental Monitoring Alert Handler
description: Processes environmental monitoring excursions in manufacturing by logging in SAP QM, creating a ServiceNow incident, and alerting quality for Johnson & Johnson.
tags:
- manufacturing
- quality
- sap
- environmental-monitoring
capability:
exposes:
- type: mcp
namespace: manufacturing-em
port: 8080
tools:
- name: handle-em-excursion
description: Given environmental excursion details, log a quality notification in SAP, create a ServiceNow incident, and alert quality.
inputParameters:
- name: area_name
in: body
type: string
description: The monitored area name.
- name: parameter
in: body
type: string
description: The environmental parameter.
- name: reading
in: body
type: string
description: The actual reading value.
- name: limit
in: body
type: string
description: The acceptable limit value.
- name: plant
in: body
type: string
description: The plant code.
steps:
- name: log-sap-qn
type: call
call: sap.create-quality-notification
with:
notification_type: Q2
description: 'EM Excursion: {{area_name}} — {{parameter}} reading {{reading}} exceeds limit {{limit}}'
plant: '{{plant}}'
- name: create-snow-incident
type: call
call: servicenow.create-incident
with:
short_description: 'EM Excursion: {{area_name}} — {{parameter}}'
category: environmental_monitoring
- name: alert-quality
type: call
call: msteams.send-message
with:
channel_id: $secrets.em_quality_channel
text: 'EM ALERT: {{parameter}} excursion in {{area_name}} at Plant {{plant}}. Reading: {{reading}} (limit: {{limit}}). SAP QN: {{log-sap-qn.notification_number}}. SNOW: {{create-snow-incident.number}}.'
consumes:
- type: http
namespace: sap
baseUri: https://jnj-s4.sap.com/sap/opu/odata/sap/API_QUALITYNOTIFICATION_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: records
path: /
operations:
- name: create-record
method: POST
- type: http
namespace: servicenow
baseUri: https://jnj.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: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Manages contract renewal workflows by checking expiring contracts in SAP Ariba, creating ServiceNow tasks, and notifying procurement for Johnson & Johnson.
naftiko: '0.5'
info:
label: SAP Ariba Contract Renewal Workflow
description: Manages contract renewal workflows by checking expiring contracts in SAP Ariba, creating ServiceNow tasks, and notifying procurement for Johnson & Johnson.
tags:
- procurement
- sap-ariba
- servicenow
- contract-management
capability:
exposes:
- type: mcp
namespace: procurement-contracts
port: 8080
tools:
- name: process-contract-renewal
description: Given a contract ID, check renewal terms, create a ServiceNow task, and notify procurement.
inputParameters:
- name: contract_id
in: body
type: string
description: The SAP Ariba contract ID.
- name: contract_owner
in: body
type: string
description: The contract owner name.
steps:
- name: get-contract
type: call
call: ariba.get-contract
with:
contract_id: '{{contract_id}}'
- name: create-renewal-task
type: call
call: servicenow.create-incident
with:
short_description: 'Contract Renewal: {{get-contract.title}} — Expires {{get-contract.end_date}}'
category: procurement
- name: notify-procurement
type: call
call: msteams.send-message
with:
channel_id: $secrets.procurement_channel
text: 'Contract Renewal: {{get-contract.title}} ({{contract_id}}) expires {{get-contract.end_date}}. Task: {{create-renewal-task.number}}.'
consumes:
- type: http
namespace: ariba
baseUri: https://openapi.ariba.com/api/procurement/v2/jnj
authentication:
type: bearer
token: $secrets.ariba_token
resources:
- name: contracts
path: /contracts/{{contract_id}}
inputParameters:
- name: contract_id
in: path
operations:
- name: get-contract
method: GET
- type: http
namespace: servicenow
baseUri: https://jnj.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: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Processes new position requisitions by validating budget in SAP, creating the requisition in Workday, and notifying HR for Johnson & Johnson.
naftiko: '0.5'
info:
label: Workday Position Requisition Approval Workflow
description: Processes new position requisitions by validating budget in SAP, creating the requisition in Workday, and notifying HR for Johnson & Johnson.
tags:
- hr
- workday
- sap
- hiring
capability:
exposes:
- type: mcp
namespace: hr-talent
port: 8080
tools:
- name: process-position-requisition
description: Given requisition details, validate budget, create the position in Workday, and notify HR.
inputParameters:
- name: department
in: body
type: string
description: The department requesting the position.
- name: job_title
in: body
type: string
description: The job title.
- name: cost_center
in: body
type: string
description: The SAP cost center.
- name: hiring_manager
in: body
type: string
description: Name of the hiring manager.
steps:
- name: validate-budget
type: call
call: sap.check-budget
with:
cost_center: '{{cost_center}}'
amount_type: headcount
- name: create-requisition
type: call
call: workday.create-requisition
with:
department: '{{department}}'
job_title: '{{job_title}}'
hiring_manager: '{{hiring_manager}}'
- name: notify-hr
type: call
call: msteams.send-message
with:
channel_id: $secrets.hr_recruiting_channel
text: 'New Position Requisition: {{job_title}} in {{department}}. Manager: {{hiring_manager}}. Budget: {{validate-budget.status}}. Workday Req: {{create-requisition.requisition_id}}.'
consumes:
- type: http
namespace: sap
baseUri: https://jnj-s4.sap.com/sap/opu/odata/sap/API_BUDGET_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: records
path: /
operations:
- name: create-record
method: POST
- type: http
namespace: workday
baseUri: https://wd5-services1.myworkday.com/ccx/service/jnj/Recruiting/v42.0
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: requisitions
path: /jobRequisitions
operations:
- name: create-requisition
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Tracks outbound shipments in SAP TM, updates delivery status in Salesforce, and notifies the distribution team for Johnson & Johnson.
naftiko: '0.5'
info:
label: SAP Transport Management Shipment Tracker
description: Tracks outbound shipments in SAP TM, updates delivery status in Salesforce, and notifies the distribution team for Johnson & Johnson.
tags:
- supply-chain
- sap
- salesforce
- logistics
capability:
exposes:
- type: mcp
namespace: distribution-ops
port: 8080
tools:
- name: track-shipment
description: Given a shipment ID, retrieve tracking data from SAP TM, update Salesforce, and notify distribution.
inputParameters:
- name: shipment_id
in: body
type: string
description: The SAP Transportation Management shipment ID.
- name: salesforce_order_id
in: body
type: string
description: The related Salesforce order ID.
steps:
- name: get-tracking
type: call
call: sap.get-shipment-status
with:
shipment_id: '{{shipment_id}}'
- name: update-salesforce
type: call
call: salesforce.update-record
with:
object_type: Order
id: '{{salesforce_order_id}}'
Shipping_Status__c: '{{get-tracking.status}}'
- name: notify-distribution
type: call
call: msteams.send-message
with:
channel_id: $secrets.distribution_channel
text: 'Shipment Update: {{shipment_id}} — Status: {{get-tracking.status}}. ETA: {{get-tracking.eta}}. Salesforce updated.'
consumes:
- type: http
namespace: sap
baseUri: https://jnj-s4.sap.com/sap/opu/odata/sap/API_FREIGHT_ORDER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: records
path: /
operations:
- name: create-record
method: POST
- type: http
namespace: salesforce
baseUri: https://jnj.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: orders
path: /sobjects/Order/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: update-record
method: PATCH
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Handles Azure Data Factory pipeline failures by creating a ServiceNow incident and notifying the data engineering team for Johnson & Johnson.
naftiko: '0.5'
info:
label: Azure Data Factory Pipeline Failure Handler
description: Handles Azure Data Factory pipeline failures by creating a ServiceNow incident and notifying the data engineering team for Johnson & Johnson.
tags:
- data-engineering
- azure-data-factory
- servicenow
- monitoring
capability:
exposes:
- type: mcp
namespace: data-engineering
port: 8080
tools:
- name: handle-adf-failure
description: Given a pipeline run ID and failure details, create a ServiceNow incident and notify the team.
inputParameters:
- name: pipeline_name
in: body
type: string
description: The ADF pipeline name.
- name: run_id
in: body
type: string
description: The pipeline run ID.
- name: error_message
in: body
type: string
description: The error message from the failed run.
steps:
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'ADF Pipeline Failure: {{pipeline_name}}'
description: 'Pipeline: {{pipeline_name}} | Run: {{run_id}} | Error: {{error_message}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.data_eng_channel
text: 'ADF Pipeline FAILURE: {{pipeline_name}} (Run: {{run_id}}). Error: {{error_message}}. SNOW: {{create-incident.number}}.'
consumes:
- type: http
namespace: servicenow
baseUri: https://jnj.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: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
On a protected-branch pipeline failure in GitHub Actions, creates a ServiceNow incident and posts a failure summary to the engineering Microsoft Teams channel.
naftiko: '0.5'
info:
label: GitHub Actions Pipeline Failure Alert
description: On a protected-branch pipeline failure in GitHub Actions, creates a ServiceNow incident and posts a failure summary to the engineering Microsoft Teams channel.
tags:
- devops
- cicd
- github-actions
- servicenow
- 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 event, open a ServiceNow incident and alert the engineering Teams channel with the repository, branch, and workflow context.
inputParameters:
- name: repository
in: body
type: string
description: The GitHub repository name in owner/repo format.
- name: workflow_name
in: body
type: string
description: The name of the failed GitHub Actions workflow.
- name: branch
in: body
type: string
description: The branch on which the pipeline failed.
- name: run_id
in: body
type: string
description: The GitHub Actions run ID for the failed run.
steps:
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: '[CI Failure] {{repository}} / {{branch}} — {{workflow_name}}'
category: software
urgency: '2'
- name: post-alert
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.teams_engineering_channel_id
text: 'Pipeline Failure: {{repository}} | Branch: {{branch}} | Workflow: {{workflow_name}} | Run: {{run_id}} | Incident: {{create-incident.number}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://jnj.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/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Reconciles clinical data between Veeva Vault and Snowflake, logs discrepancies in Jira, and alerts the data management team for Johnson & Johnson.
naftiko: '0.5'
info:
label: Clinical Data Reconciliation Checker
description: Reconciles clinical data between Veeva Vault and Snowflake, logs discrepancies in Jira, and alerts the data management team for Johnson & Johnson.
tags:
- clinical-trials
- data-management
- veeva-vault
- snowflake
capability:
exposes:
- type: mcp
namespace: clinical-data-quality
port: 8080
tools:
- name: reconcile-clinical-data
description: Given a study ID, compare record counts between Veeva Vault and Snowflake and report discrepancies.
inputParameters:
- name: study_id
in: body
type: string
description: The clinical study protocol number.
- name: data_domain
in: body
type: string
description: Data domain to reconcile (demographics, adverse-events, labs).
steps:
- name: query-vault
type: call
call: veeva.query-submissions
with:
query: SELECT COUNT(*) FROM {{data_domain}}__c WHERE study_id__c = '{{study_id}}'
- name: query-snowflake
type: call
call: snowflake.execute-query
with:
statement: SELECT COUNT(*) as cnt FROM {{data_domain}} WHERE study_id = '{{study_id}}'
warehouse: CLINICAL_WH
- name: log-discrepancy
type: call
call: jira.create-issue
with:
project: CDM
summary: 'Data Reconciliation: {{study_id}} — {{data_domain}}'
issuetype: Bug
- name: alert-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.cdm_channel
text: 'Data Reconciliation for Study {{study_id}} ({{data_domain}}): Vault={{query-vault.totalCount}}, Snowflake={{query-snowflake.data}}. Jira: {{log-discrepancy.key}}.'
consumes:
- type: http
namespace: veeva
baseUri: https://jnj.veevavault.com/api/v24.1
authentication:
type: bearer
token: $secrets.veeva_token
resources:
- name: object-records
path: /vobjects/{{object_type}}
inputParameters:
- name: object_type
in: path
operations:
- name: create-object-record
method: POST
- type: http
namespace: snowflake
baseUri: https://jnj.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: jira
baseUri: https://jnj.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.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Orchestrates ML model deployment by promoting a model in Databricks, updating the model registry, and notifying the data science team for Johnson & Johnson.
naftiko: '0.5'
info:
label: Databricks ML Model Deployment Pipeline
description: Orchestrates ML model deployment by promoting a model in Databricks, updating the model registry, and notifying the data science team for Johnson & Johnson.
tags:
- r-and-d
- databricks
- machine-learning
- deployment
capability:
exposes:
- type: mcp
namespace: rd-ml-ops
port: 8080
tools:
- name: deploy-ml-model
description: Given a model name and version, promote in Databricks MLflow, register in the model registry, and notify the team.
inputParameters:
- name: model_name
in: body
type: string
description: The MLflow model name.
- name: model_version
in: body
type: string
description: The model version to promote.
- name: target_stage
in: body
type: string
description: Target stage (Staging, Production).
steps:
- name: promote-model
type: call
call: databricks.transition-model-stage
with:
name: '{{model_name}}'
version: '{{model_version}}'
stage: '{{target_stage}}'
- name: log-deployment
type: call
call: servicenow.create-incident
with:
short_description: 'ML Model Deployment: {{model_name}} v{{model_version}} to {{target_stage}}'
category: ml_ops
- name: notify-ds-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.data_science_channel
text: 'ML Model Deployed: {{model_name}} v{{model_version}} promoted to {{target_stage}}. SNOW: {{log-deployment.number}}.'
consumes:
- type: http
namespace: databricks
baseUri: https://jnj.cloud.databricks.com/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: model-versions
path: /mlflow/model-versions/transition-stage
operations:
- name: transition-model-stage
method: POST
- type: http
namespace: servicenow
baseUri: https://jnj.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: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Orchestrates the clinical database lock process by verifying data completeness in Snowflake, updating status in Veeva Vault, and notifying stakeholders for Johnson & Johnson.
naftiko: '0.5'
info:
label: Clinical Data Lock Orchestrator
description: Orchestrates the clinical database lock process by verifying data completeness in Snowflake, updating status in Veeva Vault, and notifying stakeholders for Johnson & Johnson.
tags:
- clinical-trials
- data-management
- snowflake
- veeva-vault
capability:
exposes:
- type: mcp
namespace: clinical-data-mgmt
port: 8080
tools:
- name: execute-data-lock
description: Given a study ID and database identifier, verify completeness, update lock status, and notify the team.
inputParameters:
- name: study_id
in: body
type: string
description: The clinical study protocol number.
- name: database_id
in: body
type: string
description: The clinical database identifier.
- name: lock_type
in: body
type: string
description: Lock type (soft-lock, hard-lock).
steps:
- name: verify-completeness
type: call
call: snowflake.execute-query
with:
statement: SELECT COUNT(*) as open_queries FROM data_queries WHERE study_id = '{{study_id}}' AND status = 'Open'
warehouse: CLINICAL_WH
- name: update-vault-status
type: call
call: veeva.update-object-record
with:
object_type: study_database__c
id: '{{database_id}}'
lock_status__c: '{{lock_type}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.cdm_channel
text: 'Database Lock: Study {{study_id}} — {{lock_type}} initiated. Open queries: {{verify-completeness.data}}. Vault updated.'
consumes:
- type: http
namespace: snowflake
baseUri: https://jnj.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: veeva
baseUri: https://jnj.veevavault.com/api/v24.1
authentication:
type: bearer
token: $secrets.veeva_token
resources:
- name: object-records
path: /vobjects/{{object_type}}
inputParameters:
- name: object_type
in: path
operations:
- name: create-object-record
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Receives an adverse event report, creates a pharmacovigilance case in ServiceNow, and notifies the drug safety team via Teams for Johnson & Johnson.
naftiko: '0.5'
info:
label: Drug Safety Adverse Event Report Processor
description: Receives an adverse event report, creates a pharmacovigilance case in ServiceNow, and notifies the drug safety team via Teams for Johnson & Johnson.
tags:
- drug-safety
- pharmacovigilance
- servicenow
- compliance
capability:
exposes:
- type: mcp
namespace: drug-safety
port: 8080
tools:
- name: process-adverse-event
description: Given adverse event details, create a PV case in ServiceNow and send an urgent notification to the drug safety officer.
inputParameters:
- name: patient_id
in: body
type: string
description: Anonymized patient identifier.
- name: product_name
in: body
type: string
description: The drug product name.
- name: event_description
in: body
type: string
description: Description of the adverse event.
- name: severity
in: body
type: string
description: Severity classification (mild, moderate, severe, life-threatening).
steps:
- name: create-pv-case
type: call
call: servicenow.create-incident
with:
short_description: 'AE Report: {{product_name}} — {{severity}}'
category: pharmacovigilance
description: 'Patient: {{patient_id}} | Product: {{product_name}} | Event: {{event_description}} | Severity: {{severity}}'
- name: notify-safety-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.drug_safety_channel
text: 'URGENT: New {{severity}} AE for {{product_name}}. Case: {{create-pv-case.number}}. Patient: {{patient_id}}. Review required within 24 hours.'
consumes:
- type: http
namespace: servicenow
baseUri: https://jnj.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: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Creates breakdown maintenance notifications in SAP when equipment failures are reported and notifies the maintenance team for Johnson & Johnson.
naftiko: '0.5'
info:
label: SAP Equipment Breakdown Incident Creator
description: Creates breakdown maintenance notifications in SAP when equipment failures are reported and notifies the maintenance team for Johnson & Johnson.
tags:
- manufacturing
- sap
- maintenance
- incident
capability:
exposes:
- type: mcp
namespace: manufacturing-breakdown
port: 8080
tools:
- name: create-breakdown-incident
description: Given equipment failure details, create a SAP breakdown notification and a ServiceNow incident.
inputParameters:
- name: equipment_id
in: body
type: string
description: The SAP equipment ID.
- name: failure_description
in: body
type: string
description: Description of the equipment failure.
- name: plant
in: body
type: string
description: The manufacturing plant code.
- name: priority
in: body
type: string
description: Incident priority (P1-P4).
steps:
- name: create-sap-notification
type: call
call: sap.create-maintenance-notification
with:
equipment: '{{equipment_id}}'
notification_type: M2
description: '{{failure_description}}'
plant: '{{plant}}'
- name: create-snow-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Equipment Breakdown: {{equipment_id}} at Plant {{plant}}'
priority: '{{priority}}'
description: 'Equipment: {{equipment_id}} | Failure: {{failure_description}} | Plant: {{plant}} | SAP: {{create-sap-notification.notification_number}}'
- name: notify-maintenance
type: call
call: msteams.send-message
with:
channel_id: $secrets.maintenance_channel
text: 'EQUIPMENT BREAKDOWN: {{equipment_id}} at Plant {{plant}}. Priority: {{priority}}. SAP: {{create-sap-notification.notification_number}}. SNOW: {{create-snow-incident.number}}.'
consumes:
- type: http
namespace: sap
baseUri: https://jnj-s4.sap.com/sap/opu/odata/sap/API_MAINTNOTIFICATION_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: records
path: /
operations:
- name: get-record
method: GET
- type: http
namespace: servicenow
baseUri: https://jnj.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: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Reconciles intercompany billing documents in SAP across company codes and creates exception reports for Johnson & Johnson finance operations.
naftiko: '0.5'
info:
label: SAP Intercompany Billing Reconciliation
description: Reconciles intercompany billing documents in SAP across company codes and creates exception reports for Johnson & Johnson finance operations.
tags:
- finance
- sap
- billing
- reconciliation
capability:
exposes:
- type: mcp
namespace: finance-intercompany
port: 8080
tools:
- name: reconcile-intercompany-billing
description: Given company codes and a billing period, reconcile intercompany transactions and report exceptions.
inputParameters:
- name: sender_company
in: body
type: string
description: The sending company code.
- name: receiver_company
in: body
type: string
description: The receiving company code.
- name: billing_period
in: body
type: string
description: The billing period to reconcile.
steps:
- name: get-sender-docs
type: call
call: sap.get-billing-documents
with:
company_code: '{{sender_company}}'
period: '{{billing_period}}'
- name: get-receiver-docs
type: call
call: sap.get-billing-documents
with:
company_code: '{{receiver_company}}'
period: '{{billing_period}}'
- name: create-exception-report
type: call
call: servicenow.create-incident
with:
short_description: 'IC Billing Reconciliation: {{sender_company}} to {{receiver_company}} — {{billing_period}}'
category: finance_reconciliation
- name: notify-finance
type: call
call: msteams.send-message
with:
channel_id: $secrets.finance_ic_channel
text: 'IC Billing Reconciliation: {{sender_company}} to {{receiver_company}} for {{billing_period}}. Sender docs: {{get-sender-docs.count}}. Receiver docs: {{get-receiver-docs.count}}. SNOW: {{create-exception-report.number}}.'
consumes:
- type: http
namespace: sap
baseUri: https://jnj-s4.sap.com/sap/opu/odata/sap/API_BILLING_DOCUMENT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: records
path: /
operations:
- name: get-record
method: GET
- type: http
namespace: servicenow
baseUri: https://jnj.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: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a candidate applies via LinkedIn Recruiter, creates a candidate record in Workday Recruiting, assigns the requisition, and notifies the hiring manager via Microsoft Teams.
naftiko: '0.5'
info:
label: LinkedIn Recruiting Pipeline Sync
description: When a candidate applies via LinkedIn Recruiter, creates a candidate record in Workday Recruiting, assigns the requisition, and notifies the hiring manager via Microsoft Teams.
tags:
- hr
- recruiting
- linkedin
- workday
- microsoft-teams
- talent-acquisition
capability:
exposes:
- type: mcp
namespace: recruiting-ops
port: 8080
tools:
- name: sync-linkedin-candidate
description: Given a LinkedIn Recruiter candidate ID and a Workday job requisition ID, create the candidate record in Workday and notify the hiring manager via Microsoft Teams.
inputParameters:
- name: linkedin_candidate_id
in: body
type: string
description: The LinkedIn Recruiter candidate profile ID.
- name: requisition_id
in: body
type: string
description: The Workday job requisition ID the candidate is applying to.
steps:
- name: get-candidate
type: call
call: linkedin.get-candidate-profile
with:
candidate_id: '{{linkedin_candidate_id}}'
- name: create-candidate
type: call
call: workday.create-candidate
with:
first_name: '{{get-candidate.first_name}}'
last_name: '{{get-candidate.last_name}}'
email: '{{get-candidate.email}}'
requisition_id: '{{requisition_id}}'
- name: notify-hiring-manager
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.teams_talent_channel_id
text: 'New candidate synced: {{get-candidate.first_name}} {{get-candidate.last_name}} for requisition {{requisition_id}} | Workday candidate ID: {{create-candidate.candidate_id}}'
consumes:
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: candidate-profiles
path: /recruiterProfiles/{{candidate_id}}
inputParameters:
- name: candidate_id
in: path
operations:
- name: get-candidate-profile
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: candidates
path: /candidates
operations:
- name: create-candidate
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
Searches Johnson & Johnson Confluence knowledge base for regulatory guidance documents by keyword.
naftiko: '0.5'
info:
label: Confluence Regulatory Knowledge Search
description: Searches Johnson & Johnson Confluence knowledge base for regulatory guidance documents by keyword.
tags:
- regulatory
- confluence
- knowledge-management
- search
capability:
exposes:
- type: mcp
namespace: regulatory-kb
port: 8080
tools:
- name: search-regulatory-docs
description: Given a search query, return matching Confluence pages with titles, space keys, and URLs.
inputParameters:
- name: search_query
in: body
type: string
description: The search query for regulatory guidance documents.
call: confluence.search-content
with:
search_query: '{{search_query}}'
outputParameters:
- name: results
type: array
mapping: $.results
- name: total_size
type: integer
mapping: $.totalSize
consumes:
- type: http
namespace: confluence
baseUri: https://jnj.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: search
path: /content/search?cql=text~'{{search_query}}'
inputParameters:
- name: search_query
in: query
operations:
- name: search-content
method: GET
Handles cold chain temperature excursions by logging in SAP, creating a quality incident, and alerting logistics and quality teams for Johnson & Johnson.
naftiko: '0.5'
info:
label: Cold Chain Temperature Excursion Handler
description: Handles cold chain temperature excursions by logging in SAP, creating a quality incident, and alerting logistics and quality teams for Johnson & Johnson.
tags:
- supply-chain
- cold-chain
- quality
- sap
capability:
exposes:
- type: mcp
namespace: cold-chain-ops
port: 8080
tools:
- name: handle-temp-excursion
description: Given temperature excursion details, log in SAP, create a ServiceNow quality incident, and alert teams.
inputParameters:
- name: shipment_id
in: body
type: string
description: The shipment identifier.
- name: product_name
in: body
type: string
description: The product being shipped.
- name: temperature_reading
in: body
type: string
description: The temperature reading.
- name: acceptable_range
in: body
type: string
description: The acceptable temperature range.
- name: duration_minutes
in: body
type: integer
description: Duration of excursion in minutes.
steps:
- name: log-sap-excursion
type: call
call: sap.create-quality-notification
with:
notification_type: Q2
description: 'Cold Chain Excursion: Shipment {{shipment_id}}, Product {{product_name}}, Temp {{temperature_reading}}'
- name: create-quality-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Cold Chain Excursion: {{product_name}} — Shipment {{shipment_id}}'
priority: '2'
- name: alert-teams
type: call
call: msteams.send-message
with:
channel_id: $secrets.cold_chain_channel
text: 'COLD CHAIN ALERT: Temp excursion for {{product_name}} (Shipment {{shipment_id}}). Reading: {{temperature_reading}} (range: {{acceptable_range}}). SAP: {{log-sap-excursion.notification_number}}. SNOW: {{create-quality-incident.number}}.'
consumes:
- type: http
namespace: sap
baseUri: https://jnj-s4.sap.com/sap/opu/odata/sap/API_QUALITYNOTIFICATION_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: records
path: /
operations:
- name: create-record
method: POST
- type: http
namespace: servicenow
baseUri: https://jnj.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: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Tracks laboratory instrument calibration schedules by querying SAP PM, creating ServiceNow work orders, and notifying lab managers for Johnson & Johnson.
naftiko: '0.5'
info:
label: Laboratory Instrument Calibration Tracker
description: Tracks laboratory instrument calibration schedules by querying SAP PM, creating ServiceNow work orders, and notifying lab managers for Johnson & Johnson.
tags:
- r-and-d
- quality
- sap
- laboratory
capability:
exposes:
- type: mcp
namespace: lab-ops
port: 8080
tools:
- name: track-calibration
description: Given a lab identifier, find instruments due for calibration, create work orders, and notify lab management.
inputParameters:
- name: lab_id
in: body
type: string
description: The laboratory identifier.
- name: days_ahead
in: body
type: integer
description: Days ahead to check for calibration due dates.
steps:
- name: query-instruments
type: call
call: sap.get-equipment-list
with:
lab_id: '{{lab_id}}'
next_calibration_within: '{{days_ahead}}'
- name: create-work-orders
type: call
call: servicenow.create-incident
with:
short_description: 'Lab Calibration Due: {{query-instruments.count}} instruments in Lab {{lab_id}}'
category: lab_operations
- name: notify-lab-manager
type: call
call: msteams.send-message
with:
channel_id: $secrets.lab_ops_channel
text: 'Calibration Alert: {{query-instruments.count}} instruments in Lab {{lab_id}} due within {{days_ahead}} days. SNOW: {{create-work-orders.number}}.'
consumes:
- type: http
namespace: sap
baseUri: https://jnj-s4.sap.com/sap/opu/odata/sap/API_EQUIPMENT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: records
path: /
operations:
- name: create-record
method: POST
- type: http
namespace: servicenow
baseUri: https://jnj.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: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Assembles and validates a regulatory submission document package from Veeva Vault for an FDA or EMA submission, cross-checks against the SAP submission tracking record, and notifies the regulatory affairs team.
naftiko: '0.5'
info:
label: Regulatory Submission Document Package
description: Assembles and validates a regulatory submission document package from Veeva Vault for an FDA or EMA submission, cross-checks against the SAP submission tracking record, and notifies the regulatory affairs team.
tags:
- regulatory
- veeva
- sap
- microsoft-teams
- pharma
- compliance
capability:
exposes:
- type: mcp
namespace: regulatory-ops
port: 8080
tools:
- name: prepare-submission-package
description: Given a regulatory submission ID, retrieve all required documents from Veeva Vault, validate completeness against the SAP submission checklist, and notify the regulatory affairs team in Teams.
inputParameters:
- name: submission_id
in: body
type: string
description: The regulatory submission ID (e.g., NDA-2026-001).
- name: submission_type
in: body
type: string
description: 'The submission type: NDA, BLA, 510k, CE-mark, or PMA.'
steps:
- name: get-documents
type: call
call: veeva.list-submission-documents
with:
submission_id: '{{submission_id}}'
- name: notify-reg-team
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.teams_regulatory_channel_id
text: 'Submission package assembled: {{submission_id}} ({{submission_type}}) | Documents retrieved: {{get-documents.document_count}} | Ready for final review.'
consumes:
- type: http
namespace: veeva
baseUri: https://jnj.veevavault.com/api/v24.1
authentication:
type: bearer
token: $secrets.veeva_token
resources:
- name: submission-documents
path: /objects/documents
operations:
- name: list-submission-documents
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
Queries Snowflake for the latest real-world evidence cohort data for a specified therapeutic area, returns cohort size and key demographic breakdowns for medical affairs reporting.
naftiko: '0.5'
info:
label: Snowflake Real-World Evidence Data Snapshot
description: Queries Snowflake for the latest real-world evidence cohort data for a specified therapeutic area, returns cohort size and key demographic breakdowns for medical affairs reporting.
tags:
- data
- analytics
- snowflake
- reporting
- pharma
- real-world-evidence
capability:
exposes:
- type: mcp
namespace: rwe-analytics
port: 8080
tools:
- name: get-rwe-cohort-snapshot
description: Given a therapeutic area code and data cutoff date, query Snowflake for the RWE patient cohort size, age distribution, and key comorbidities for medical affairs reporting.
inputParameters:
- name: therapeutic_area
in: body
type: string
description: The therapeutic area code (e.g., ONCOLOGY, IMMUNOLOGY, NEUROSCIENCE).
- name: data_cutoff_date
in: body
type: string
description: The data cutoff date in YYYY-MM-DD format.
call: snowflake.execute-statement
with:
statement: SELECT therapeutic_area, COUNT(*) as cohort_size, AVG(age) as mean_age FROM PROD_RWE.PATIENTS WHERE therapeutic_area = '{{therapeutic_area}}' AND data_date <= '{{data_cutoff_date}}' GROUP BY 1
outputParameters:
- name: cohort_size
type: number
mapping: $.data[0].COHORT_SIZE
- name: mean_age
type: number
mapping: $.data[0].MEAN_AGE
consumes:
- type: http
namespace: snowflake
baseUri: https://jnj.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
Manages GxP-validated system change requests by creating a ServiceNow change, logging in Veeva Vault audit trail, and notifying approvers for Johnson & Johnson.
naftiko: '0.5'
info:
label: GxP System Change Approval Workflow
description: Manages GxP-validated system change requests by creating a ServiceNow change, logging in Veeva Vault audit trail, and notifying approvers for Johnson & Johnson.
tags:
- compliance
- gxp
- servicenow
- veeva-vault
capability:
exposes:
- type: mcp
namespace: gxp-compliance
port: 8080
tools:
- name: initiate-gxp-change
description: Given change request details, create a ServiceNow change request, log in Veeva Vault, and notify the CAB.
inputParameters:
- name: system_name
in: body
type: string
description: Name of the GxP-validated system.
- name: change_description
in: body
type: string
description: Description of the proposed change.
- name: risk_level
in: body
type: string
description: Risk classification (low, medium, high, critical).
steps:
- name: create-change-request
type: call
call: servicenow.create-change
with:
short_description: 'GxP Change: {{system_name}} — {{risk_level}} risk'
category: gxp_change_control
description: 'System: {{system_name}} | Change: {{change_description}} | Risk: {{risk_level}}'
- name: log-vault-audit
type: call
call: veeva.create-object-record
with:
object_type: change_control__c
system_name__c: '{{system_name}}'
description__c: '{{change_description}}'
- name: notify-cab
type: call
call: msteams.send-message
with:
channel_id: $secrets.cab_channel
text: 'GxP Change Request: {{system_name}} ({{risk_level}} risk). SNOW: {{create-change-request.number}}. Vault: {{log-vault-audit.id}}.'
consumes:
- type: http
namespace: servicenow
baseUri: https://jnj.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: veeva
baseUri: https://jnj.veevavault.com/api/v24.1
authentication:
type: bearer
token: $secrets.veeva_token
resources:
- name: object-records
path: /vobjects/{{object_type}}
inputParameters:
- name: object_type
in: path
operations:
- name: create-object-record
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Validates training records in SharePoint against Workday assignments and creates compliance tickets for gaps for Johnson & Johnson.
naftiko: '0.5'
info:
label: SharePoint Training Record Validator
description: Validates training records in SharePoint against Workday assignments and creates compliance tickets for gaps for Johnson & Johnson.
tags:
- quality
- sharepoint
- workday
- compliance
capability:
exposes:
- type: mcp
namespace: quality-training
port: 8080
tools:
- name: validate-training-records
description: Given a department and training program, cross-reference SharePoint records with Workday and report gaps.
inputParameters:
- name: department
in: body
type: string
description: The department to validate.
- name: training_program
in: body
type: string
description: The training program name.
steps:
- name: get-sharepoint-records
type: call
call: sharepoint.get-training-records
with:
department: '{{department}}'
program: '{{training_program}}'
- name: get-workday-assignments
type: call
call: workday.get-training-assignments
with:
department: '{{department}}'
program: '{{training_program}}'
- name: create-gap-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'Training Compliance Gap: {{department}} — {{training_program}}'
category: quality_compliance
- name: notify-quality
type: call
call: msteams.send-message
with:
channel_id: $secrets.quality_training_channel
text: 'Training Gap Alert: {{department}} for {{training_program}}. SharePoint: {{get-sharepoint-records.count}}. Workday: {{get-workday-assignments.count}}. SNOW: {{create-gap-ticket.number}}.'
consumes:
- type: http
namespace: sharepoint
baseUri: https://jnj.sharepoint.com/_api/web
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: lists
path: /lists
operations:
- name: get-training-records
method: GET
- type: http
namespace: workday
baseUri: https://wd5-services1.myworkday.com/ccx/service/jnj/Learning/v42.0
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: training
path: /learningAssignments
operations:
- name: get-training-assignments
method: GET
- type: http
namespace: servicenow
baseUri: https://jnj.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: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Generates FDA inspection readiness checklists by pulling SOPs from SharePoint, checking training compliance in Workday, and creating Jira tracking for Johnson & Johnson.
naftiko: '0.5'
info:
label: FDA Inspection Readiness Checklist Generator
description: Generates FDA inspection readiness checklists by pulling SOPs from SharePoint, checking training compliance in Workday, and creating Jira tracking for Johnson & Johnson.
tags:
- regulatory
- compliance
- sharepoint
- workday
capability:
exposes:
- type: mcp
namespace: regulatory-compliance
port: 8080
tools:
- name: generate-inspection-checklist
description: Given a facility and inspection type, compile SOP readiness, training status, and create tracking tasks.
inputParameters:
- name: facility_name
in: body
type: string
description: The facility being inspected.
- name: inspection_type
in: body
type: string
description: Type of FDA inspection (pre-approval, routine, for-cause).
steps:
- name: check-sops
type: call
call: sharepoint.get-document-list
with:
library: SOPs
filter: facility eq '{{facility_name}}'
- name: check-training
type: call
call: workday.get-training-compliance
with:
facility: '{{facility_name}}'
program: GMP_Training
- name: create-epic
type: call
call: jira.create-issue
with:
project: REG
summary: 'FDA Inspection Readiness: {{facility_name}} — {{inspection_type}}'
issuetype: Epic
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.quality_compliance_channel
text: 'FDA Inspection Readiness for {{facility_name}} ({{inspection_type}}): {{check-sops.count}} SOPs, {{check-training.compliance_rate}}% training compliant. Jira: {{create-epic.key}}.'
consumes:
- type: http
namespace: sharepoint
baseUri: https://jnj.sharepoint.com/_api/web
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: lists
path: /lists
operations:
- name: get-document-list
method: GET
- type: http
namespace: workday
baseUri: https://wd5-services1.myworkday.com/ccx/service/jnj/Learning/v42.0
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: training
path: /learningAssignments
operations:
- name: get-training-compliance
method: GET
- type: http
namespace: jira
baseUri: https://jnj.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.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Processes clinical protocol amendments by updating Veeva Vault, creating Jira tracking tasks, and notifying the clinical team for Johnson & Johnson.
naftiko: '0.5'
info:
label: Clinical Protocol Amendment Processor
description: Processes clinical protocol amendments by updating Veeva Vault, creating Jira tracking tasks, and notifying the clinical team for Johnson & Johnson.
tags:
- clinical-trials
- veeva-vault
- jira
- regulatory
capability:
exposes:
- type: mcp
namespace: clinical-regulatory
port: 8080
tools:
- name: process-protocol-amendment
description: Given protocol amendment details, update the document in Veeva Vault, create a Jira task, and notify affected teams.
inputParameters:
- name: study_id
in: body
type: string
description: The clinical study protocol number.
- name: amendment_number
in: body
type: string
description: The amendment version number.
- name: amendment_summary
in: body
type: string
description: Summary of protocol changes.
- name: impacted_sites
in: body
type: string
description: Comma-separated list of impacted site IDs.
steps:
- name: update-vault
type: call
call: veeva.create-object-record
with:
object_type: protocol_amendment__c
study_id__c: '{{study_id}}'
amendment_number__c: '{{amendment_number}}'
- name: create-jira-task
type: call
call: jira.create-issue
with:
project: CLIN
summary: Protocol Amendment {{amendment_number}} for Study {{study_id}}
issuetype: Task
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.clinical_ops_channel
text: 'Protocol Amendment {{amendment_number}} for Study {{study_id}} processed. Impacted sites: {{impacted_sites}}. Jira: {{create-jira-task.key}}.'
consumes:
- type: http
namespace: veeva
baseUri: https://jnj.veevavault.com/api/v24.1
authentication:
type: bearer
token: $secrets.veeva_token
resources:
- name: object-records
path: /vobjects/{{object_type}}
inputParameters:
- name: object_type
in: path
operations:
- name: create-object-record
method: POST
- type: http
namespace: jira
baseUri: https://jnj.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.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Queries Veeva Vault for upcoming regulatory submission deadlines, creates Jira tracking tickets, and alerts the regulatory affairs team for Johnson & Johnson.
naftiko: '0.5'
info:
label: Regulatory Submission Deadline Tracker
description: Queries Veeva Vault for upcoming regulatory submission deadlines, creates Jira tracking tickets, and alerts the regulatory affairs team for Johnson & Johnson.
tags:
- regulatory
- veeva-vault
- jira
- compliance
capability:
exposes:
- type: mcp
namespace: regulatory-ops
port: 8080
tools:
- name: track-submission-deadlines
description: Given a time horizon in days, find upcoming submission deadlines, create Jira tickets, and post a summary.
inputParameters:
- name: days_ahead
in: body
type: integer
description: Number of days ahead to check for deadlines.
- name: teams_channel_id
in: body
type: string
description: Teams channel for regulatory affairs notifications.
steps:
- name: query-deadlines
type: call
call: veeva.query-submissions
with:
query: SELECT id, name__v, submission_date__c FROM submission__c WHERE submission_date__c <= DATEADD(day,{{days_ahead}},GETDATE())
- name: create-tracker
type: call
call: jira.create-issue
with:
project: REG
summary: 'Upcoming Submissions: {{query-deadlines.totalCount}} items within {{days_ahead}} days'
issuetype: Task
- name: alert-team
type: call
call: msteams.send-message
with:
channel_id: '{{teams_channel_id}}'
text: 'Regulatory Alert: {{query-deadlines.totalCount}} submissions due within {{days_ahead}} days. Jira: {{create-tracker.key}}'
consumes:
- type: http
namespace: veeva
baseUri: https://jnj.veevavault.com/api/v24.1
authentication:
type: bearer
token: $secrets.veeva_token
resources:
- name: object-records
path: /vobjects/{{object_type}}
inputParameters:
- name: object_type
in: path
operations:
- name: create-object-record
method: POST
- type: http
namespace: jira
baseUri: https://jnj.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.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves compensation plan details for an employee from Workday for Johnson & Johnson HR total rewards operations.
naftiko: '0.5'
info:
label: Workday Compensation Lookup
description: Retrieves compensation plan details for an employee from Workday for Johnson & Johnson HR total rewards operations.
tags:
- hr
- workday
- compensation
- lookup
capability:
exposes:
- type: mcp
namespace: hr-rewards
port: 8080
tools:
- name: get-compensation
description: Given an employee ID, return the base pay, bonus target percentage, and compensation grade.
inputParameters:
- name: employee_id
in: body
type: string
description: The Workday employee ID.
call: workday.get-compensation
with:
employee_id: '{{employee_id}}'
outputParameters:
- name: base_pay
type: string
mapping: $.Compensation.Base_Pay
- name: bonus_target
type: string
mapping: $.Compensation.Bonus_Target_Percent
- name: grade
type: string
mapping: $.Compensation.Compensation_Grade
consumes:
- type: http
namespace: workday
baseUri: https://wd5-services1.myworkday.com/ccx/service/jnj/Compensation/v42.0
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: compensation
path: /workers/{{employee_id}}/compensationPlans
inputParameters:
- name: employee_id
in: path
operations:
- name: get-compensation
method: GET
Accepts a Veeva Vault regulatory document ID, retrieves the document text, sends it to Anthropic Claude for summarization, and posts the AI-generated summary to the regulatory affairs Microsoft Teams channel.
naftiko: '0.5'
info:
label: Anthropic-Powered Regulatory Document Summarizer
description: Accepts a Veeva Vault regulatory document ID, retrieves the document text, sends it to Anthropic Claude for summarization, and posts the AI-generated summary to the regulatory affairs Microsoft Teams channel.
tags:
- ai
- regulatory
- veeva
- anthropic
- microsoft-teams
- pharma
capability:
exposes:
- type: mcp
namespace: ai-regulatory
port: 8080
tools:
- name: summarize-regulatory-document
description: Given a Veeva Vault document ID, retrieve the document content and generate an executive summary using Anthropic Claude. Post the summary to the regulatory affairs Teams channel.
inputParameters:
- name: document_id
in: body
type: string
description: The Veeva Vault document ID to summarize.
- name: document_type
in: body
type: string
description: The document type context (e.g., IND, NDA, Clinical Study Report) to guide the summary.
steps:
- name: get-document
type: call
call: veeva.get-document-content
with:
document_id: '{{document_id}}'
- name: generate-summary
type: call
call: anthropic.create-message
with:
model: claude-3-5-sonnet-20241022
prompt: 'You are a regulatory affairs expert at a pharmaceutical company. Summarize this {{document_type}} document in 3-5 bullet points highlighting key findings, safety signals, and regulatory actions required: {{get-document.content}}'
- name: post-summary
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.teams_regulatory_channel_id
text: 'AI Summary of {{document_type}} (Vault ID: {{document_id}}): {{generate-summary.content}}'
consumes:
- type: http
namespace: veeva
baseUri: https://jnj.veevavault.com/api/v24.1
authentication:
type: bearer
token: $secrets.veeva_token
resources:
- name: document-content
path: /objects/documents/{{document_id}}/file
inputParameters:
- name: document_id
in: path
operations:
- name: get-document-content
method: GET
- 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
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 GxP validation pipelines in GitHub Actions, logs validation events in ServiceNow, and notifies the QA team for Johnson & Johnson.
naftiko: '0.5'
info:
label: GitHub Actions GxP Validation Pipeline Trigger
description: Triggers GxP validation pipelines in GitHub Actions, logs validation events in ServiceNow, and notifies the QA team for Johnson & Johnson.
tags:
- devops
- github-actions
- gxp
- validation
capability:
exposes:
- type: mcp
namespace: gxp-devops
port: 8080
tools:
- name: trigger-gxp-validation
description: Given a system name and validation type, trigger the pipeline, log in ServiceNow, and notify QA.
inputParameters:
- name: repo_name
in: body
type: string
description: The GitHub repository name.
- name: validation_type
in: body
type: string
description: Type of validation (IQ, OQ, PQ).
- name: system_name
in: body
type: string
description: The GxP system being validated.
steps:
- name: trigger-pipeline
type: call
call: github.trigger-workflow
with:
repo: '{{repo_name}}'
workflow: gxp-validation.yml
- name: log-validation
type: call
call: servicenow.create-incident
with:
short_description: 'GxP Validation: {{validation_type}} — {{system_name}}'
category: gxp_validation
- name: notify-qa
type: call
call: msteams.send-message
with:
channel_id: $secrets.gxp_qa_channel
text: 'GxP Validation triggered: {{validation_type}} for {{system_name}}. Repo: {{repo_name}}. SNOW: {{log-validation.number}}.'
consumes:
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: workflows
path: /repos/{{repo}}/actions/workflows/{{workflow}}/dispatches
inputParameters:
- name: repo
in: path
- name: workflow
in: path
operations:
- name: trigger-workflow
method: POST
- type: http
namespace: servicenow
baseUri: https://jnj.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: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Processes medical information requests by logging in Salesforce, searching the knowledge base, and notifying the medical affairs team for Johnson & Johnson.
naftiko: '0.5'
info:
label: Medical Information Request Handler
description: Processes medical information requests by logging in Salesforce, searching the knowledge base, and notifying the medical affairs team for Johnson & Johnson.
tags:
- medical-affairs
- salesforce
- knowledge-management
- compliance
capability:
exposes:
- type: mcp
namespace: medical-affairs
port: 8080
tools:
- name: handle-med-info-request
description: Given a medical information request, log in Salesforce, search the knowledge base, and notify medical affairs.
inputParameters:
- name: requestor_name
in: body
type: string
description: Name of the healthcare professional.
- name: product_name
in: body
type: string
description: The product being inquired about.
- name: question
in: body
type: string
description: The medical information question.
- name: channel
in: body
type: string
description: Request channel (phone, email, web).
steps:
- name: log-in-salesforce
type: call
call: salesforce.create-case
with:
subject: 'MedInfo Request: {{product_name}}'
description: 'Requestor: {{requestor_name}} | Product: {{product_name}} | Question: {{question}}'
type: Medical_Information
- name: search-knowledge
type: call
call: confluence.search-content
with:
search_query: '{{product_name}} {{question}}'
- name: notify-med-affairs
type: call
call: msteams.send-message
with:
channel_id: $secrets.med_affairs_channel
text: 'New MedInfo Request from {{requestor_name}} about {{product_name}}. Case: {{log-in-salesforce.id}}. KB matches: {{search-knowledge.totalSize}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://jnj.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: cases
path: /sobjects/Case
operations:
- name: create-case
method: POST
- type: http
namespace: confluence
baseUri: https://jnj.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: search
path: /content/search
operations:
- name: search-content
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves standard operating procedure document metadata from SharePoint by document name for Johnson & Johnson quality operations.
naftiko: '0.5'
info:
label: SharePoint SOP Document Retrieval
description: Retrieves standard operating procedure document metadata from SharePoint by document name for Johnson & Johnson quality operations.
tags:
- quality
- sharepoint
- document-management
- sop
capability:
exposes:
- type: mcp
namespace: quality-ops
port: 8080
tools:
- name: get-sop-document
description: Given an SOP document name or ID, return the document title, version, approval status, and URL.
inputParameters:
- name: document_name
in: body
type: string
description: The SOP document name or ID.
call: sharepoint.get-document
with:
document_name: '{{document_name}}'
outputParameters:
- name: title
type: string
mapping: $.d.Title
- name: version
type: string
mapping: $.d.UIVersionLabel
- name: modified
type: string
mapping: $.d.Modified
consumes:
- type: http
namespace: sharepoint
baseUri: https://jnj.sharepoint.com/_api/web
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: files
path: /GetFileByServerRelativeUrl('/sites/SOPs/{{document_name}}')
inputParameters:
- name: document_name
in: path
operations:
- name: get-document
method: GET
When a new clinical trial site is approved in the study management system, creates the site record in Veeva Vault, assigns the study team, and sends an activation notification via Microsoft Teams.
naftiko: '0.5'
info:
label: Clinical Trial Site Activation in Veeva Vault
description: When a new clinical trial site is approved in the study management system, creates the site record in Veeva Vault, assigns the study team, and sends an activation notification via Microsoft Teams.
tags:
- clinical-operations
- veeva
- microsoft-teams
- pharma
- regulatory
capability:
exposes:
- type: mcp
namespace: clinical-ops
port: 8080
tools:
- name: activate-clinical-site
description: Given a clinical trial study ID and site details, create the site activation record in Veeva Vault and notify the clinical operations team in Microsoft Teams.
inputParameters:
- name: study_id
in: body
type: string
description: The clinical study identifier (e.g., CR-2026-001).
- name: site_id
in: body
type: string
description: The investigator site identifier.
- name: site_name
in: body
type: string
description: The name of the clinical investigation site.
- name: principal_investigator
in: body
type: string
description: Name of the principal investigator at the site.
steps:
- name: create-site-record
type: call
call: veeva.create-site-document
with:
study_id: '{{study_id}}'
site_id: '{{site_id}}'
site_name: '{{site_name}}'
pi_name: '{{principal_investigator}}'
- name: notify-clinical-team
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.teams_clinical_ops_channel_id
text: 'Site activated: {{site_name}} ({{site_id}}) for study {{study_id}} | PI: {{principal_investigator}} | Vault doc: {{create-site-record.document_id}}'
consumes:
- type: http
namespace: veeva
baseUri: https://jnj.veevavault.com/api/v24.1
authentication:
type: bearer
token: $secrets.veeva_token
resources:
- name: documents
path: /objects/documents
operations:
- name: create-site-document
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 MedTech sales opportunity in Salesforce reaches a Verbal Commit stage, creates a corresponding SAP sales order and notifies the regional sales manager via Microsoft Teams.
naftiko: '0.5'
info:
label: Salesforce Medical Device Sales Opportunity Sync
description: When a MedTech sales opportunity in Salesforce reaches a Verbal Commit stage, creates a corresponding SAP sales order and notifies the regional sales manager via Microsoft Teams.
tags:
- sales
- crm
- salesforce
- sap
- medtech
- erp
capability:
exposes:
- type: mcp
namespace: medtech-sales
port: 8080
tools:
- name: sync-opportunity-to-sap
description: Given a Salesforce opportunity ID at Verbal Commit stage, create a SAP sales order and write the SAP document number back to Salesforce. Use when a medtech deal is confirmed.
inputParameters:
- name: opportunity_id
in: body
type: string
description: The Salesforce opportunity ID to sync into SAP.
steps:
- name: get-opportunity
type: call
call: salesforce-read.get-opportunity
with:
opportunity_id: '{{opportunity_id}}'
- name: create-sap-order
type: call
call: sap-sd.create-sales-order
with:
customer_id: '{{get-opportunity.account_external_id}}'
amount: '{{get-opportunity.amount}}'
currency: '{{get-opportunity.currency_code}}'
- name: update-opportunity
type: call
call: salesforce-write.update-opportunity
with:
opportunity_id: '{{opportunity_id}}'
sap_order_number: '{{create-sap-order.document_number}}'
consumes:
- type: http
namespace: salesforce-read
baseUri: https://jnj.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-sd
baseUri: https://jnj-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: salesforce-write
baseUri: https://jnj.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: update-opportunity
method: PATCH
Executes a predefined SQL query against the Johnson & Johnson clinical data warehouse in Snowflake and returns summary results.
naftiko: '0.5'
info:
label: Snowflake Clinical Query Runner
description: Executes a predefined SQL query against the Johnson & Johnson clinical data warehouse in Snowflake and returns summary results.
tags:
- clinical-trials
- snowflake
- data-warehouse
- analytics
capability:
exposes:
- type: mcp
namespace: clinical-analytics
port: 8080
tools:
- name: run-clinical-query
description: Given a query identifier and optional study ID filter, execute the corresponding Snowflake query and return results.
inputParameters:
- name: query_id
in: body
type: string
description: Predefined query identifier (e.g., enrollment-summary, ae-counts).
- name: study_id
in: body
type: string
description: Optional clinical study ID filter.
call: snowflake.execute-query
with:
query_id: '{{query_id}}'
study_id: '{{study_id}}'
outputParameters:
- name: row_count
type: integer
mapping: $.resultSetMetaData.numRows
- name: data
type: array
mapping: $.data
consumes:
- type: http
namespace: snowflake
baseUri: https://jnj.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
When AWS or Azure spend exceeds a budget threshold, creates a ServiceNow FinOps task and notifies the cloud infrastructure team via Microsoft Teams.
naftiko: '0.5'
info:
label: Cloud Cost Anomaly Responder
description: When AWS or Azure spend exceeds a budget threshold, creates a ServiceNow FinOps task and notifies the cloud infrastructure team via Microsoft Teams.
tags:
- cloud
- finops
- aws
- azure
- servicenow
- microsoft-teams
- cost-management
capability:
exposes:
- type: mcp
namespace: cloud-finops
port: 8080
tools:
- name: respond-to-cost-anomaly
description: Given a cloud cost anomaly event (provider, account, service, overage amount), create a ServiceNow FinOps task and alert the cloud team channel in Teams.
inputParameters:
- name: cloud_provider
in: body
type: string
description: 'Cloud provider identifier: aws or azure.'
- name: account_id
in: body
type: string
description: The cloud account or subscription ID with the anomaly.
- name: anomaly_amount
in: body
type: number
description: The overage amount in USD triggering the alert.
- name: service_name
in: body
type: string
description: The cloud service name responsible for the anomaly.
steps:
- name: create-finops-task
type: call
call: servicenow.create-task
with:
short_description: 'Cloud cost anomaly: {{cloud_provider}} {{service_name}} — ${{anomaly_amount}} overage'
category: finops
assigned_group: Cloud_FinOps
- name: notify-cloud-team
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.teams_cloud_channel_id
text: 'Cost Anomaly: {{cloud_provider}} account {{account_id}} | Service: {{service_name}} | Overage: ${{anomaly_amount}} | Task: {{create-finops-task.number}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://jnj.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
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 P1 incident is opened in ServiceNow, pages the on-call engineer via Microsoft Teams and posts a war-room bridge link to the IT operations channel.
naftiko: '0.5'
info:
label: ServiceNow ITSM Incident P1 Escalation
description: When a P1 incident is opened in ServiceNow, pages the on-call engineer via Microsoft Teams and posts a war-room bridge link to the IT operations channel.
tags:
- itsm
- incident-response
- servicenow
- microsoft-teams
- operations
capability:
exposes:
- type: mcp
namespace: itsm-ops
port: 8080
tools:
- name: escalate-p1-incident
description: Given a ServiceNow P1 incident number, retrieve the incident details and page the on-call engineer and IT leadership via Microsoft Teams with a war-room bridge link.
inputParameters:
- name: incident_number
in: body
type: string
description: The ServiceNow incident number (e.g., INC0012345).
- name: bridge_url
in: body
type: string
description: The Teams meeting or bridge URL for the incident war room.
steps:
- name: get-incident
type: call
call: servicenow.get-incident
with:
incident_number: '{{incident_number}}'
- name: page-oncall
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.teams_oncall_channel_id
text: 'P1 INCIDENT: {{incident_number}} | {{get-incident.short_description}} | Affected: {{get-incident.cmdb_ci}} | Bridge: {{bridge_url}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://jnj.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: get-incident
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
Coordinates product recall activities by creating cases in Salesforce, notifying logistics via SAP, and alerting leadership for Johnson & Johnson.
naftiko: '0.5'
info:
label: Product Recall Coordination Workflow
description: Coordinates product recall activities by creating cases in Salesforce, notifying logistics via SAP, and alerting leadership for Johnson & Johnson.
tags:
- quality
- product-recall
- salesforce
- sap
capability:
exposes:
- type: mcp
namespace: quality-recall
port: 8080
tools:
- name: initiate-recall
description: Given product recall details, create a Salesforce case, update SAP batch status, and send urgent notifications.
inputParameters:
- name: product_name
in: body
type: string
description: The product name being recalled.
- name: batch_numbers
in: body
type: string
description: Comma-separated affected batch numbers.
- name: recall_reason
in: body
type: string
description: Reason for the recall.
- name: recall_class
in: body
type: string
description: Recall classification (Class I, II, III).
steps:
- name: create-recall-case
type: call
call: salesforce.create-case
with:
subject: 'Product Recall: {{product_name}} — {{recall_class}}'
type: Product_Recall
- name: update-batch-status
type: call
call: sap.update-batch-status
with:
batch_numbers: '{{batch_numbers}}'
status: blocked
- name: alert-leadership
type: call
call: msteams.send-message
with:
channel_id: $secrets.executive_channel
text: 'URGENT — Product Recall: {{product_name}} ({{recall_class}}). Batches: {{batch_numbers}}. Case: {{create-recall-case.id}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://jnj.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: cases
path: /sobjects/Case
operations:
- name: create-case
method: POST
- type: http
namespace: sap
baseUri: https://jnj-s4.sap.com/sap/opu/odata/sap/API_BATCH_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: records
path: /
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
At month-end close, queries SAP for all open AP invoices past their due date in a given cost center, creates a ServiceNow finance task, and posts the reconciliation list to the Finance Teams channel.
naftiko: '0.5'
info:
label: SAP Invoice Period Close Reconciliation
description: At month-end close, queries SAP for all open AP invoices past their due date in a given cost center, creates a ServiceNow finance task, and posts the reconciliation list to the Finance Teams channel.
tags:
- finance
- erp
- sap
- servicenow
- microsoft-teams
- period-close
capability:
exposes:
- type: mcp
namespace: finance-close
port: 8080
tools:
- name: run-ap-period-close
description: Given a SAP company code and fiscal period, retrieve all open and overdue AP invoices, open a ServiceNow finance reconciliation task, and post the summary to the Finance Teams channel.
inputParameters:
- name: company_code
in: body
type: string
description: The SAP company code for the legal entity being closed.
- name: fiscal_period
in: body
type: string
description: The fiscal period to close in YYYYMM format.
steps:
- name: get-open-invoices
type: call
call: sap.list-open-invoices
with:
company_code: '{{company_code}}'
fiscal_period: '{{fiscal_period}}'
- name: create-close-task
type: call
call: servicenow.create-task
with:
short_description: 'AP period close reconciliation: {{company_code}} period {{fiscal_period}}'
category: finance
assigned_group: Finance_AP
- name: post-summary
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.teams_finance_channel_id
text: 'AP Close: {{company_code}} / {{fiscal_period}} | Open invoices: {{get-open-invoices.invoice_count}} | Task: {{create-close-task.number}}'
consumes:
- type: http
namespace: sap
baseUri: https://jnj-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
operations:
- name: list-open-invoices
method: GET
- type: http
namespace: servicenow
baseUri: https://jnj.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
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 production order status and details from SAP for Johnson & Johnson manufacturing operations.
naftiko: '0.5'
info:
label: SAP Production Order Status Lookup
description: Retrieves production order status and details from SAP for Johnson & Johnson manufacturing operations.
tags:
- manufacturing
- sap
- production
- lookup
capability:
exposes:
- type: mcp
namespace: manufacturing-mgmt
port: 8080
tools:
- name: get-production-order
description: Given a SAP production order number, return the order type, status, planned quantity, and material.
inputParameters:
- name: order_number
in: body
type: string
description: The SAP production order number.
call: sap.get-prod-order
with:
order_number: '{{order_number}}'
outputParameters:
- name: order_type
type: string
mapping: $.d.ManufacturingOrderType
- name: status
type: string
mapping: $.d.MfgOrderPlannedTotalQty
- name: material
type: string
mapping: $.d.Material
consumes:
- type: http
namespace: sap
baseUri: https://jnj-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-orders
path: /A_ProductionOrder_2('{{order_number}}')
inputParameters:
- name: order_number
in: path
operations:
- name: get-prod-order
method: GET
Orchestrates commercial territory realignment by updating Salesforce territories, adjusting Workday reporting, and notifying the commercial team for Johnson & Johnson.
naftiko: '0.5'
info:
label: Salesforce Commercial Territory Realignment Orchestrator
description: Orchestrates commercial territory realignment by updating Salesforce territories, adjusting Workday reporting, and notifying the commercial team for Johnson & Johnson.
tags:
- commercial
- salesforce
- workday
- territory-management
capability:
exposes:
- type: mcp
namespace: commercial-ops-mgmt
port: 8080
tools:
- name: realign-territories
description: Given territory changes, update Salesforce assignments, adjust Workday structures, and notify the team.
inputParameters:
- name: territory_id
in: body
type: string
description: The territory identifier.
- name: new_rep_id
in: body
type: string
description: The new sales representative employee ID.
- name: effective_date
in: body
type: string
description: Effective date of the realignment.
steps:
- name: update-salesforce
type: call
call: salesforce.update-record
with:
object_type: Territory2
id: '{{territory_id}}'
Assigned_Rep__c: '{{new_rep_id}}'
- name: update-workday
type: call
call: workday.update-assignment
with:
employee_id: '{{new_rep_id}}'
territory: '{{territory_id}}'
- name: notify-commercial
type: call
call: msteams.send-message
with:
channel_id: $secrets.commercial_ops_channel
text: 'Territory Realignment: Territory {{territory_id}} assigned to Rep {{new_rep_id}} effective {{effective_date}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://jnj.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: territories
path: /sobjects/Territory2/{{id}}
inputParameters:
- name: id
in: path
operations:
- name: update-record
method: PATCH
- type: http
namespace: workday
baseUri: https://wd5-services1.myworkday.com/ccx/service/jnj/Staffing/v42.0
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: assignments
path: /workers/{{employee_id}}/assignments
inputParameters:
- name: employee_id
in: path
operations:
- name: update-assignment
method: PUT
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves the current lifecycle status of a document in Veeva Vault by document ID for Johnson & Johnson regulatory operations.
naftiko: '0.5'
info:
label: Veeva Vault Document Status Lookup
description: Retrieves the current lifecycle status of a document in Veeva Vault by document ID for Johnson & Johnson regulatory operations.
tags:
- regulatory
- veeva-vault
- document-management
- lookup
capability:
exposes:
- type: mcp
namespace: regulatory-ops
port: 8080
tools:
- name: get-document-status
description: Given a Veeva Vault document ID, return the lifecycle state, owner, and last modified date.
inputParameters:
- name: document_id
in: body
type: string
description: The Veeva Vault document ID.
call: veeva.get-document
with:
document_id: '{{document_id}}'
outputParameters:
- name: lifecycle_state
type: string
mapping: $.responseDetails.lifecycle__v
- name: owner
type: string
mapping: $.responseDetails.owner__v
- name: last_modified
type: string
mapping: $.responseDetails.last_modified_date__v
consumes:
- type: http
namespace: veeva
baseUri: https://jnj.veevavault.com/api/v24.1
authentication:
type: bearer
token: $secrets.veeva_token
resources:
- name: documents
path: /objects/documents/{{document_id}}
inputParameters:
- name: document_id
in: path
operations:
- name: get-document
method: GET
Queries Snowflake for current enrollment figures by study, generates a summary, and posts to the clinical operations Teams channel for Johnson & Johnson.
naftiko: '0.5'
info:
label: Clinical Trial Enrollment Status Reporter
description: Queries Snowflake for current enrollment figures by study, generates a summary, and posts to the clinical operations Teams channel for Johnson & Johnson.
tags:
- clinical-trials
- snowflake
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: clinical-ops
port: 8080
tools:
- name: report-enrollment-status
description: Given a study ID, query enrollment data, format a summary, and post to the designated Teams channel.
inputParameters:
- name: study_id
in: body
type: string
description: The clinical study protocol number.
- name: teams_channel_id
in: body
type: string
description: Teams channel ID for clinical operations.
steps:
- name: query-enrollment
type: call
call: snowflake.execute-query
with:
statement: SELECT site_id, enrolled_count, target FROM enrollment_tracker WHERE study_id = '{{study_id}}'
warehouse: CLINICAL_WH
- name: post-summary
type: call
call: msteams.send-message
with:
channel_id: '{{teams_channel_id}}'
text: 'Enrollment Status for Study {{study_id}}: {{query-enrollment.data}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://jnj.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
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a medical device complaint is logged in Salesforce Service Cloud, enriches it with product master data from SAP, creates a quality event in Veeva Vault, and routes to the quality team via Microsoft Teams.
naftiko: '0.5'
info:
label: Medical Device Complaint Case Triage
description: When a medical device complaint is logged in Salesforce Service Cloud, enriches it with product master data from SAP, creates a quality event in Veeva Vault, and routes to the quality team via Microsoft Teams.
tags:
- customer-support
- quality
- salesforce
- sap
- veeva
- microsoft-teams
- medtech
- regulatory
capability:
exposes:
- type: mcp
namespace: quality-ops
port: 8080
tools:
- name: triage-device-complaint
description: Given a Salesforce case ID for a medical device complaint, retrieve SAP product details, create a Veeva quality event, and notify the quality team in Microsoft Teams.
inputParameters:
- name: case_id
in: body
type: string
description: The Salesforce Service Cloud case ID for the device complaint.
steps:
- name: get-case
type: call
call: salesforce.get-case
with:
case_id: '{{case_id}}'
- name: get-product
type: call
call: sap.get-material
with:
material_number: '{{get-case.product_code}}'
- name: create-quality-event
type: call
call: veeva.create-quality-event
with:
case_id: '{{case_id}}'
product_name: '{{get-product.material_description}}'
complaint_summary: '{{get-case.description}}'
- name: notify-quality-team
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.teams_quality_channel_id
text: 'Device complaint triaged: Case {{case_id}} | Product: {{get-product.material_description}} | Veeva event: {{create-quality-event.event_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://jnj.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: sap
baseUri: https://jnj-s4.sap.com/sap/opu/odata/sap/API_PRODUCT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: materials
path: /A_Product('{{material_number}}')
inputParameters:
- name: material_number
in: path
operations:
- name: get-material
method: GET
- type: http
namespace: veeva
baseUri: https://jnj.veevavault.com/api/v24.1
authentication:
type: bearer
token: $secrets.veeva_token
resources:
- name: quality-events
path: /objects/quality_events__v
operations:
- name: create-quality-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
Tracks KOL engagement activities by pulling data from Salesforce, summarizing in Snowflake, and reporting to medical affairs for Johnson & Johnson.
naftiko: '0.5'
info:
label: Salesforce Key Opinion Leader Engagement Tracker
description: Tracks KOL engagement activities by pulling data from Salesforce, summarizing in Snowflake, and reporting to medical affairs for Johnson & Johnson.
tags:
- medical-affairs
- salesforce
- snowflake
- analytics
capability:
exposes:
- type: mcp
namespace: medical-affairs-analytics
port: 8080
tools:
- name: track-kol-engagement
description: Given a therapeutic area, pull KOL engagement data, aggregate in Snowflake, and post a summary.
inputParameters:
- name: therapeutic_area
in: body
type: string
description: The therapeutic area (e.g., oncology, immunology).
- name: period
in: body
type: string
description: Reporting period (e.g., Q1-2026).
steps:
- name: pull-kol-data
type: call
call: salesforce.query
with:
q: SELECT Name, Total_Engagements__c FROM Contact WHERE Therapeutic_Area__c = '{{therapeutic_area}}' AND KOL_Flag__c = true
- name: aggregate-data
type: call
call: snowflake.execute-query
with:
statement: INSERT INTO kol_engagement_summary SELECT * FROM staged_kol_data WHERE period = '{{period}}'
warehouse: ANALYTICS_WH
- name: post-summary
type: call
call: msteams.send-message
with:
channel_id: $secrets.med_affairs_channel
text: 'KOL Engagement Summary for {{therapeutic_area}} ({{period}}): {{pull-kol-data.totalSize}} KOLs tracked.'
consumes:
- type: http
namespace: salesforce
baseUri: https://jnj.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: query
path: /query
operations:
- name: query
method: GET
- type: http
namespace: snowflake
baseUri: https://jnj.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
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Triggers a Power BI dataset refresh for the pharmaceutical sales performance dashboard and posts refresh status to the commercial excellence Microsoft Teams channel.
naftiko: '0.5'
info:
label: Power BI Pharma Sales Dashboard Refresh
description: Triggers a Power BI dataset refresh for the pharmaceutical sales performance dashboard and posts refresh status to the commercial excellence Microsoft Teams channel.
tags:
- data
- analytics
- power-bi
- microsoft-teams
- reporting
- pharma
capability:
exposes:
- type: mcp
namespace: bi-reporting
port: 8080
tools:
- name: refresh-sales-dashboard
description: Given a Power BI workspace ID and dataset ID, trigger a dataset refresh for the pharmaceutical sales dashboard and notify the commercial excellence Teams channel.
inputParameters:
- name: workspace_id
in: body
type: string
description: The Power BI workspace ID containing the pharma sales dataset.
- name: dataset_id
in: body
type: string
description: The Power BI dataset ID to refresh.
steps:
- name: trigger-refresh
type: call
call: powerbi.refresh-dataset
with:
workspace_id: '{{workspace_id}}'
dataset_id: '{{dataset_id}}'
- name: post-status
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.teams_commercial_channel_id
text: 'Power BI refresh triggered: dataset {{dataset_id}} in workspace {{workspace_id}}. Results available shortly.'
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/{{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
Before an Azure DevOps production release deployment, checks ServiceNow for an approved change request, validates the deployment window, and gates the release accordingly.
naftiko: '0.5'
info:
label: Azure DevOps Release Deployment Gate
description: Before an Azure DevOps production release deployment, checks ServiceNow for an approved change request, validates the deployment window, and gates the release accordingly.
tags:
- devops
- change-management
- azure-devops
- servicenow
- microsoft-teams
- deployment
capability:
exposes:
- type: mcp
namespace: release-management
port: 8080
tools:
- name: gate-production-release
description: Given an Azure DevOps release ID and a ServiceNow change request number, verify the change is approved and within the deployment window before allowing the release to proceed.
inputParameters:
- name: release_id
in: body
type: string
description: The Azure DevOps release definition and run ID.
- name: change_request_number
in: body
type: string
description: The ServiceNow change request number (e.g., CHG0045678).
- name: deployment_environment
in: body
type: string
description: 'Target deployment environment: staging or production.'
steps:
- name: get-change-request
type: call
call: servicenow.get-change-request
with:
change_number: '{{change_request_number}}'
- name: notify-release-team
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.teams_release_channel_id
text: 'Release gate check: Release {{release_id}} | Change {{change_request_number}} state: {{get-change-request.state}} | Environment: {{deployment_environment}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://jnj.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: get-change-request
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 a new digital health project is created in ServiceNow, provisions a GitHub repository with standard branch protection, assigns the project team, and notifies the engineering lead via Microsoft Teams.
naftiko: '0.5'
info:
label: GitHub Repository Provisioning for New Project
description: When a new digital health project is created in ServiceNow, provisions a GitHub repository with standard branch protection, assigns the project team, and notifies the engineering lead via Microsoft Teams.
tags:
- devops
- github
- servicenow
- microsoft-teams
- developer-experience
capability:
exposes:
- type: mcp
namespace: dev-provisioning
port: 8080
tools:
- name: provision-project-repository
description: Given a project name and GitHub organization, create a new GitHub repository with standard branch protection rules and notify the engineering lead via Microsoft Teams.
inputParameters:
- name: project_name
in: body
type: string
description: The project name used as the repository name.
- name: github_org
in: body
type: string
description: The GitHub organization to create the repository in.
- name: team_lead_upn
in: body
type: string
description: Microsoft Teams UPN of the engineering team lead.
steps:
- name: create-repo
type: call
call: github.create-repository
with:
org: '{{github_org}}'
name: '{{project_name}}'
private: 'true'
- name: notify-lead
type: call
call: msteams.send-message
with:
recipient_upn: '{{team_lead_upn}}'
text: 'Repository provisioned: {{github_org}}/{{project_name}} | URL: {{create-repo.html_url}}'
consumes:
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: repositories
path: /orgs/{{org}}/repos
inputParameters:
- name: org
in: path
operations:
- name: create-repository
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
Reports cost center budget variances from SAP, creates finance review tasks, and notifies the finance team for Johnson & Johnson.
naftiko: '0.5'
info:
label: SAP Cost Center Budget Variance Reporter
description: Reports cost center budget variances from SAP, creates finance review tasks, and notifies the finance team for Johnson & Johnson.
tags:
- finance
- sap
- budgeting
- reporting
capability:
exposes:
- type: mcp
namespace: finance-reporting
port: 8080
tools:
- name: report-budget-variance
description: Given a cost center and period, calculate budget variance, create a review task, and notify finance.
inputParameters:
- name: cost_center
in: body
type: string
description: The SAP cost center.
- name: fiscal_period
in: body
type: string
description: The fiscal period (e.g., 2026-03).
steps:
- name: get-variance
type: call
call: sap.get-budget-variance
with:
cost_center: '{{cost_center}}'
period: '{{fiscal_period}}'
- name: create-review
type: call
call: servicenow.create-incident
with:
short_description: 'Budget Variance: CC {{cost_center}} — {{fiscal_period}}'
category: finance
- name: notify-finance
type: call
call: msteams.send-message
with:
channel_id: $secrets.finance_channel
text: 'Budget Variance: CC {{cost_center}} for {{fiscal_period}}. Variance: {{get-variance.variance}}. Review: {{create-review.number}}.'
consumes:
- type: http
namespace: sap
baseUri: https://jnj-s4.sap.com/sap/opu/odata/sap/API_COSTCENTER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: records
path: /
operations:
- name: create-record
method: POST
- type: http
namespace: servicenow
baseUri: https://jnj.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: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When an employee termination is confirmed in Workday, deactivates the user in Salesforce and Microsoft 365, closes open ServiceNow tickets, and notifies the manager via Microsoft Teams.
naftiko: '0.5'
info:
label: Employee Offboarding Access Revocation
description: When an employee termination is confirmed in Workday, deactivates the user in Salesforce and Microsoft 365, closes open ServiceNow tickets, and notifies the manager via Microsoft Teams.
tags:
- hr
- offboarding
- workday
- salesforce
- microsoft-teams
- access-management
capability:
exposes:
- type: mcp
namespace: hr-offboarding
port: 8080
tools:
- name: trigger-offboarding
description: Given a Workday employee ID and termination date, deactivate system access in Salesforce and Microsoft 365, close open ServiceNow tickets, and notify the manager via Teams.
inputParameters:
- name: workday_employee_id
in: body
type: string
description: The Workday worker ID of the departing employee.
- name: termination_date
in: body
type: string
description: The employee's last working day in YYYY-MM-DD format.
steps:
- name: get-employee
type: call
call: workday.get-worker
with:
worker_id: '{{workday_employee_id}}'
- name: deactivate-sf-user
type: call
call: salesforce.deactivate-user
with:
user_email: '{{get-employee.work_email}}'
- name: notify-manager
type: call
call: msteams.send-message
with:
recipient_upn: '{{get-employee.manager_email}}'
text: 'Offboarding complete for {{get-employee.full_name}} (termination: {{termination_date}}). All system access has been revoked.'
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://jnj.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: users
path: /sobjects/User/{{user_id}}
inputParameters:
- name: user_id
in: path
operations:
- name: deactivate-user
method: PATCH
- 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
Initiates periodic SOP review cycles by identifying documents due for review in Veeva Vault, creating Jira tasks, and notifying owners for Johnson & Johnson.
naftiko: '0.5'
info:
label: Document Control SOP Review Cycle Initiator
description: Initiates periodic SOP review cycles by identifying documents due for review in Veeva Vault, creating Jira tasks, and notifying owners for Johnson & Johnson.
tags:
- quality
- document-control
- veeva-vault
- jira
capability:
exposes:
- type: mcp
namespace: doc-control
port: 8080
tools:
- name: initiate-sop-review-cycle
description: Given a document category and review period, find SOPs due for review, create tracking tasks, and notify owners.
inputParameters:
- name: document_category
in: body
type: string
description: The SOP document category (manufacturing, QC, clinical).
- name: review_due_days
in: body
type: integer
description: Days until review due date to include.
steps:
- name: find-docs-due
type: call
call: veeva.query-submissions
with:
query: SELECT id, name__v FROM documents WHERE category__c = '{{document_category}}'
- name: create-jira-tasks
type: call
call: jira.create-issue
with:
project: QMS
summary: 'SOP Review Cycle: {{document_category}} — {{find-docs-due.totalCount}} documents'
issuetype: Task
- name: notify-owners
type: call
call: msteams.send-message
with:
channel_id: $secrets.doc_control_channel
text: 'SOP Review Cycle: {{find-docs-due.totalCount}} {{document_category}} documents due within {{review_due_days}} days. Jira: {{create-jira-tasks.key}}.'
consumes:
- type: http
namespace: veeva
baseUri: https://jnj.veevavault.com/api/v24.1
authentication:
type: bearer
token: $secrets.veeva_token
resources:
- name: object-records
path: /vobjects/{{object_type}}
inputParameters:
- name: object_type
in: path
operations:
- name: create-object-record
method: POST
- type: http
namespace: jira
baseUri: https://jnj.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.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves configuration item details from ServiceNow CMDB by asset tag for Johnson & Johnson IT asset management.
naftiko: '0.5'
info:
label: ServiceNow CMDB Asset Lookup
description: Retrieves configuration item details from ServiceNow CMDB by asset tag for Johnson & Johnson IT asset management.
tags:
- it-operations
- servicenow
- cmdb
- lookup
capability:
exposes:
- type: mcp
namespace: it-ops
port: 8080
tools:
- name: get-cmdb-asset
description: Given an asset tag, return the CI name, class, operational status, and assigned support group.
inputParameters:
- name: asset_tag
in: body
type: string
description: The ServiceNow asset tag identifier.
call: servicenow.get-ci
with:
asset_tag: '{{asset_tag}}'
outputParameters:
- name: ci_name
type: string
mapping: $.result.name
- name: ci_class
type: string
mapping: $.result.sys_class_name
- name: operational_status
type: string
mapping: $.result.operational_status
consumes:
- type: http
namespace: servicenow
baseUri: https://jnj.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: cmdb-ci
path: /table/cmdb_ci?sysparm_query=asset_tag={{asset_tag}}
inputParameters:
- name: asset_tag
in: query
operations:
- name: get-ci
method: GET
Refreshes the R&D pipeline dashboard by pulling compound status from Snowflake, updating Power BI, and notifying R&D leadership for Johnson & Johnson.
naftiko: '0.5'
info:
label: R&D Compound Pipeline Dashboard Refresh
description: Refreshes the R&D pipeline dashboard by pulling compound status from Snowflake, updating Power BI, and notifying R&D leadership for Johnson & Johnson.
tags:
- r-and-d
- snowflake
- power-bi
- analytics
capability:
exposes:
- type: mcp
namespace: rd-analytics
port: 8080
tools:
- name: refresh-pipeline-dashboard
description: Trigger a pipeline data extract from Snowflake, refresh the Power BI dataset, and notify leadership.
inputParameters:
- name: dashboard_id
in: body
type: string
description: The Power BI dashboard dataset ID.
- name: teams_channel_id
in: body
type: string
description: Teams channel for R&D leadership.
steps:
- name: extract-pipeline-data
type: call
call: snowflake.execute-query
with:
statement: CALL refresh_rd_pipeline_snapshot()
warehouse: RD_WH
- name: refresh-powerbi
type: call
call: powerbi.trigger-refresh
with:
dataset_id: '{{dashboard_id}}'
- name: notify-leadership
type: call
call: msteams.send-message
with:
channel_id: '{{teams_channel_id}}'
text: R&D Pipeline Dashboard refreshed. Data as of {{extract-pipeline-data.timestamp}}.
consumes:
- type: http
namespace: snowflake
baseUri: https://jnj.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: 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: trigger-refresh
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Queries Workday for mandatory compliance training completion rates by department and flags departments below the required threshold via a ServiceNow task and Microsoft Teams alert.
naftiko: '0.5'
info:
label: Workday Learning Compliance Tracker
description: Queries Workday for mandatory compliance training completion rates by department and flags departments below the required threshold via a ServiceNow task and Microsoft Teams alert.
tags:
- hr
- compliance
- workday
- servicenow
- microsoft-teams
- learning-development
capability:
exposes:
- type: mcp
namespace: compliance-learning
port: 8080
tools:
- name: check-training-compliance
description: Given a compliance course ID and required completion percentage threshold, check Workday training completion rates by department and alert HR leaders of non-compliant departments via Teams.
inputParameters:
- name: course_id
in: body
type: string
description: The Workday Learning course ID for the mandatory compliance training.
- name: completion_threshold_pct
in: body
type: number
description: The required completion percentage (e.g., 95 for 95%).
steps:
- name: get-completion-rates
type: call
call: workday.get-course-completion-rates
with:
course_id: '{{course_id}}'
- name: create-compliance-task
type: call
call: servicenow.create-task
with:
short_description: 'Compliance training gap: course {{course_id}} below {{completion_threshold_pct}}% threshold'
category: hr_compliance
assigned_group: HR_Compliance
- name: alert-hr
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.teams_hr_channel_id
text: 'Compliance Alert: Course {{course_id}} — departments below {{completion_threshold_pct}}% threshold | ServiceNow task: {{create-compliance-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: course-completions
path: /learningCourseCompletions
operations:
- name: get-course-completion-rates
method: GET
- type: http
namespace: servicenow
baseUri: https://jnj.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
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 planned maintenance orders in SAP for manufacturing equipment, schedules in ServiceNow, and notifies the maintenance team for Johnson & Johnson.
naftiko: '0.5'
info:
label: SAP Planned Maintenance Order Creator
description: Creates planned maintenance orders in SAP for manufacturing equipment, schedules in ServiceNow, and notifies the maintenance team for Johnson & Johnson.
tags:
- manufacturing
- sap
- maintenance
- servicenow
capability:
exposes:
- type: mcp
namespace: manufacturing-maintenance
port: 8080
tools:
- name: create-maintenance-order
description: Given equipment details, create a SAP maintenance order, a ServiceNow work order, and notify maintenance.
inputParameters:
- name: equipment_id
in: body
type: string
description: The SAP equipment ID.
- name: maintenance_type
in: body
type: string
description: Type of maintenance (preventive, calibration, qualification).
- name: plant
in: body
type: string
description: The plant code.
- name: scheduled_date
in: body
type: string
description: Scheduled maintenance date.
steps:
- name: create-sap-order
type: call
call: sap.create-maintenance-order
with:
equipment: '{{equipment_id}}'
order_type: '{{maintenance_type}}'
plant: '{{plant}}'
- name: create-snow-work-order
type: call
call: servicenow.create-incident
with:
short_description: 'Maintenance: {{maintenance_type}} — Equipment {{equipment_id}}'
category: manufacturing_maintenance
- name: notify-maintenance
type: call
call: msteams.send-message
with:
channel_id: $secrets.maintenance_channel
text: 'Maintenance Scheduled: {{maintenance_type}} for Equipment {{equipment_id}} at Plant {{plant}} on {{scheduled_date}}. SAP: {{create-sap-order.order_number}}. SNOW: {{create-snow-work-order.number}}.'
consumes:
- type: http
namespace: sap
baseUri: https://jnj-s4.sap.com/sap/opu/odata/sap/API_MAINTENANCEORDER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: records
path: /
operations:
- name: create-record
method: POST
- type: http
namespace: servicenow
baseUri: https://jnj.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: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Looks up a SAP S/4HANA purchase order by number and returns the header status, supplier name, total value, and delivery schedule for procurement visibility.
naftiko: '0.5'
info:
label: SAP Purchase Order Status Lookup
description: Looks up a SAP S/4HANA purchase order by number and returns the header status, supplier name, total value, and delivery schedule for procurement visibility.
tags:
- finance
- procurement
- sap
- erp
capability:
exposes:
- type: mcp
namespace: procurement-ops
port: 8080
tools:
- name: get-purchase-order
description: Look up a SAP purchase order by PO number. Returns status, supplier, total value, and delivery schedule. Use for procurement status checks and accounts payable reconciliation.
inputParameters:
- name: po_number
in: body
type: string
description: The SAP purchase order number to look up.
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://jnj-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
Manages infrastructure provisioning by creating ServiceNow change requests, triggering Terraform plans, and notifying the cloud team for Johnson & Johnson.
naftiko: '0.5'
info:
label: Terraform Infrastructure Provisioning with Approval
description: Manages infrastructure provisioning by creating ServiceNow change requests, triggering Terraform plans, and notifying the cloud team for Johnson & Johnson.
tags:
- devops
- terraform
- servicenow
- cloud
capability:
exposes:
- type: mcp
namespace: cloud-ops
port: 8080
tools:
- name: provision-infrastructure
description: Given infrastructure requirements, create a change request, generate a Terraform plan, and notify cloud engineering.
inputParameters:
- name: environment
in: body
type: string
description: Target environment (dev, staging, production).
- name: resource_type
in: body
type: string
description: Type of resource to provision.
- name: requestor
in: body
type: string
description: Name of the requestor.
steps:
- name: create-change
type: call
call: servicenow.create-change
with:
short_description: 'Infra Provisioning: {{resource_type}} in {{environment}}'
category: cloud_infrastructure
- name: trigger-plan
type: call
call: github.trigger-workflow
with:
repo: infrastructure
workflow: terraform-plan.yml
- name: notify-cloud-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.cloud_eng_channel
text: 'Infra Request: {{resource_type}} in {{environment}} by {{requestor}}. Change: {{create-change.number}}. Terraform plan triggered.'
consumes:
- type: http
namespace: servicenow
baseUri: https://jnj.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: workflows
path: /repos/{{repo}}/actions/workflows/{{workflow}}/dispatches
inputParameters:
- name: repo
in: path
- name: workflow
in: path
operations:
- name: trigger-workflow
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Tracks vulnerability remediation by pulling scan results, creating ServiceNow tickets, and reporting to the CISO dashboard for Johnson & Johnson.
naftiko: '0.5'
info:
label: IT Security Vulnerability Remediation Tracker
description: Tracks vulnerability remediation by pulling scan results, creating ServiceNow tickets, and reporting to the CISO dashboard for Johnson & Johnson.
tags:
- security
- servicenow
- compliance
- vulnerability-management
capability:
exposes:
- type: mcp
namespace: security-ops
port: 8080
tools:
- name: track-vulnerability-remediation
description: Given a scan ID and severity threshold, pull results, create remediation tickets, and update the dashboard.
inputParameters:
- name: scan_id
in: body
type: string
description: The vulnerability scan identifier.
- name: severity_threshold
in: body
type: string
description: Minimum severity to track (critical, high, medium).
steps:
- name: get-findings
type: call
call: servicenow.get-vulnerabilities
with:
scan_id: '{{scan_id}}'
severity: '{{severity_threshold}}'
- name: create-tickets
type: call
call: servicenow.create-incident
with:
short_description: 'Vulnerability Remediation: Scan {{scan_id}}'
category: security
- name: notify-security
type: call
call: msteams.send-message
with:
channel_id: $secrets.security_ops_channel
text: 'Vulnerability Scan {{scan_id}}: {{get-findings.count}} findings at {{severity_threshold}}+ severity. Ticket: {{create-tickets.number}}.'
consumes:
- type: http
namespace: servicenow
baseUri: https://jnj.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: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Launches periodic access certification campaigns by pulling user data from Okta, creating review tasks, and notifying managers for Johnson & Johnson.
naftiko: '0.5'
info:
label: Okta Access Certification Campaign Launcher
description: Launches periodic access certification campaigns by pulling user data from Okta, creating review tasks, and notifying managers for Johnson & Johnson.
tags:
- security
- okta
- servicenow
- compliance
capability:
exposes:
- type: mcp
namespace: identity-governance
port: 8080
tools:
- name: launch-access-certification
description: Given a certification scope, pull active users from Okta, create review tasks, and notify owners.
inputParameters:
- name: application_name
in: body
type: string
description: The Okta application name to certify.
- name: campaign_name
in: body
type: string
description: The certification campaign name.
steps:
- name: get-users
type: call
call: okta.get-app-users
with:
application_name: '{{application_name}}'
- name: create-campaign
type: call
call: servicenow.create-incident
with:
short_description: 'Access Certification: {{campaign_name}} — {{application_name}}'
category: identity_governance
- name: notify-owners
type: call
call: msteams.send-message
with:
channel_id: $secrets.iam_channel
text: 'Access Certification: {{campaign_name}} for {{application_name}}. {{get-users.count}} users to review. SNOW: {{create-campaign.number}}.'
consumes:
- type: http
namespace: okta
baseUri: https://jnj.okta.com/api/v1
authentication:
type: bearer
token: $secrets.okta_token
resources:
- name: app-users
path: /apps/{{application_name}}/users
inputParameters:
- name: application_name
in: path
operations:
- name: get-app-users
method: GET
- type: http
namespace: servicenow
baseUri: https://jnj.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: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Checks the last extract refresh status for a Tableau workbook for Johnson & Johnson analytics operations.
naftiko: '0.5'
info:
label: Tableau Workbook Refresh Status
description: Checks the last extract refresh status for a Tableau workbook for Johnson & Johnson analytics operations.
tags:
- analytics
- tableau
- reporting
- lookup
capability:
exposes:
- type: mcp
namespace: analytics-tableau
port: 8080
tools:
- name: get-workbook-refresh
description: Given a Tableau workbook ID, return the last refresh status and extract time.
inputParameters:
- name: workbook_id
in: body
type: string
description: The Tableau workbook ID.
call: tableau.get-extract-refresh
with:
workbook_id: '{{workbook_id}}'
outputParameters:
- name: status
type: string
mapping: $.extractRefreshes[0].status
- name: completed_at
type: string
mapping: $.extractRefreshes[0].completedAt
consumes:
- type: http
namespace: tableau
baseUri: https://jnj.online.tableau.com/api/3.21
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: workbooks
path: /sites/{{site_id}}/workbooks/{{workbook_id}}/refreshes
inputParameters:
- name: workbook_id
in: path
operations:
- name: get-extract-refresh
method: GET
Runs pharmacovigilance signal detection queries in Snowflake, generates summary reports, and alerts the safety review board for Johnson & Johnson.
naftiko: '0.5'
info:
label: Pharmacovigilance Signal Detection Reporter
description: Runs pharmacovigilance signal detection queries in Snowflake, generates summary reports, and alerts the safety review board for Johnson & Johnson.
tags:
- drug-safety
- pharmacovigilance
- snowflake
- analytics
capability:
exposes:
- type: mcp
namespace: pv-analytics
port: 8080
tools:
- name: run-signal-detection
description: Given a product and time period, run signal detection queries, create a Jira tracking issue, and alert the safety board.
inputParameters:
- name: product_name
in: body
type: string
description: The drug product name.
- name: period_start
in: body
type: string
description: Analysis period start date.
- name: period_end
in: body
type: string
description: Analysis period end date.
steps:
- name: run-detection
type: call
call: snowflake.execute-query
with:
statement: CALL pv_signal_detection('{{product_name}}', '{{period_start}}', '{{period_end}}')
warehouse: PV_WH
- name: create-review-ticket
type: call
call: jira.create-issue
with:
project: PV
summary: 'Signal Detection: {{product_name}} ({{period_start}} to {{period_end}})'
issuetype: Task
- name: alert-safety-board
type: call
call: msteams.send-message
with:
channel_id: $secrets.safety_board_channel
text: 'PV Signal Detection: {{product_name}} ({{period_start}} to {{period_end}}). Signals: {{run-detection.signal_count}}. Jira: {{create-review-ticket.key}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://jnj.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: jira
baseUri: https://jnj.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.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves employee absence and leave balance from Workday for Johnson & Johnson HR operations.
naftiko: '0.5'
info:
label: Workday Absence Balance Lookup
description: Retrieves employee absence and leave balance from Workday for Johnson & Johnson HR operations.
tags:
- hr
- workday
- absence
- lookup
capability:
exposes:
- type: mcp
namespace: hr-absence
port: 8080
tools:
- name: get-absence-balance
description: Given an employee ID, return the PTO balance, sick leave balance, and next scheduled absence.
inputParameters:
- name: employee_id
in: body
type: string
description: The Workday employee ID.
call: workday.get-absence-balance
with:
employee_id: '{{employee_id}}'
outputParameters:
- name: pto_balance
type: string
mapping: $.TimeOff.PTO_Balance
- name: sick_balance
type: string
mapping: $.TimeOff.Sick_Balance
consumes:
- type: http
namespace: workday
baseUri: https://wd5-services1.myworkday.com/ccx/service/jnj/Absence_Management/v42.0
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: absences
path: /workers/{{employee_id}}/absenceBalances
inputParameters:
- name: employee_id
in: path
operations:
- name: get-absence-balance
method: GET
Retrieves healthcare provider account details from Salesforce CRM by account ID for Johnson & Johnson commercial operations.
naftiko: '0.5'
info:
label: Salesforce HCP Account Lookup
description: Retrieves healthcare provider account details from Salesforce CRM by account ID for Johnson & Johnson commercial operations.
tags:
- commercial
- salesforce
- hcp
- lookup
capability:
exposes:
- type: mcp
namespace: commercial-ops
port: 8080
tools:
- name: get-hcp-account
description: Given a Salesforce account ID, return the HCP name, specialty, prescribing tier, and territory.
inputParameters:
- name: account_id
in: body
type: string
description: The Salesforce account ID for the healthcare provider.
call: salesforce.get-account
with:
account_id: '{{account_id}}'
outputParameters:
- name: hcp_name
type: string
mapping: $.Name
- name: specialty
type: string
mapping: $.Specialty__c
- name: tier
type: string
mapping: $.Prescribing_Tier__c
- name: territory
type: string
mapping: $.Territory__c
consumes:
- type: http
namespace: salesforce
baseUri: https://jnj.my.salesforce.com/services/data/v59.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
Retrieves the current status and profile of an Okta user by login email for Johnson & Johnson identity management.
naftiko: '0.5'
info:
label: Okta User Status Lookup
description: Retrieves the current status and profile of an Okta user by login email for Johnson & Johnson identity management.
tags:
- security
- okta
- identity
- lookup
capability:
exposes:
- type: mcp
namespace: identity-ops
port: 8080
tools:
- name: get-user-status
description: Given a user email, return the Okta user status, last login, and MFA enrollment status.
inputParameters:
- name: user_email
in: body
type: string
description: The user login email address.
call: okta.get-user
with:
user_email: '{{user_email}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: last_login
type: string
mapping: $.lastLogin
- name: mfa_enrolled
type: boolean
mapping: $.credentials.provider.type
consumes:
- type: http
namespace: okta
baseUri: https://jnj.okta.com/api/v1
authentication:
type: bearer
token: $secrets.okta_token
resources:
- name: users
path: /users/{{user_email}}
inputParameters:
- name: user_email
in: path
operations:
- name: get-user
method: GET
Searches Confluence for SOPs and knowledge base articles by keyword.
naftiko: '0.5'
info:
label: Confluence Knowledge Base Search
description: Searches Confluence for SOPs and knowledge base articles by keyword.
tags:
- knowledge-management
- confluence
capability:
exposes:
- type: mcp
namespace: knowledge-base
port: 8080
tools:
- name: search-knowledge-base
description: Search Confluence for SOPs and knowledge base articles.
inputParameters:
- name: keyword
in: body
type: string
description: The search keyword.
call: confluence.search
with:
cql: type=page AND text~'{{keyword}}'
outputParameters:
- name: results
type: string
mapping: $.results
- name: total_size
type: string
mapping: $.totalSize
consumes:
- type: http
namespace: confluence
baseUri: https://kellanova.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_api_token
resources:
- name: search
path: /search?cql={{cql}}
inputParameters:
- name: cql
in: query
operations:
- name: search
method: GET
Pulls completions from Pluralsight, syncs with Workday, generates reports in Google Sheets, and alerts managers via Slack.
naftiko: '0.5'
info:
label: Training Compliance Pipeline
description: Pulls completions from Pluralsight, syncs with Workday, generates reports in Google Sheets, and alerts managers via Slack.
tags:
- training
- pluralsight
- workday
- google-sheets
- slack
capability:
exposes:
- type: mcp
namespace: training-compliance-pipeline
port: 8080
tools:
- name: execute
description: Pulls completions from Pluralsight, syncs with Workday, generates reports in Google Sheets, and alerts managers via Slack.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: pluralsight.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: workday.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: google-sheets.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: slack.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: pluralsight
baseUri: https://api.pluralsight.com/v1
authentication:
type: bearer
token: $secrets.pluralsight_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: workday
baseUri: https://api.workday.com/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: https://api.googlesheets.com/v1
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: https://api.slack.com/v1
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Retrieves new retail lead details from HubSpot CRM for the sales development team.
naftiko: '0.5'
info:
label: HubSpot Retail Lead Tracking
description: Retrieves new retail lead details from HubSpot CRM for the sales development team.
tags:
- sales
- hubspot
capability:
exposes:
- type: mcp
namespace: sales-leads
port: 8080
tools:
- name: get-retail-lead
description: Look up a retail lead in HubSpot by company name.
inputParameters:
- name: company_name
in: body
type: string
description: The retail company name.
call: hubspot.search-contacts
with:
query: '{{company_name}}'
outputParameters:
- name: contact_name
type: string
mapping: $.results[0].properties.firstname
- name: email
type: string
mapping: $.results[0].properties.email
- name: lifecycle_stage
type: string
mapping: $.results[0].properties.lifecyclestage
consumes:
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: contacts
path: /crm/v3/objects/contacts/search
operations:
- name: search-contacts
method: POST
Validates ingredients in SAP, checks allergen database, generates compliance report in Google Sheets, and archives in Box.
naftiko: '0.5'
info:
label: Allergen Compliance Pipeline
description: Validates ingredients in SAP, checks allergen database, generates compliance report in Google Sheets, and archives in Box.
tags:
- compliance
- sap
- google-sheets
- box
capability:
exposes:
- type: mcp
namespace: allergen-compliance-pipeline
port: 8080
tools:
- name: execute
description: Validates ingredients in SAP, checks allergen database, generates compliance report in Google Sheets, and archives in Box.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: google-sheets.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: box.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: box.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: https://api.googlesheets.com/v1
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: box
baseUri: https://api.box.com/v1
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Retrieves nearby retail locations carrying Kellanova products using Google Maps.
naftiko: '0.5'
info:
label: Google Maps Store Locator
description: Retrieves nearby retail locations carrying Kellanova products using Google Maps.
tags:
- retail
- google-maps
capability:
exposes:
- type: mcp
namespace: store-locator
port: 8080
tools:
- name: find-nearby-stores
description: Find retail stores carrying Kellanova products near a location.
inputParameters:
- name: address
in: body
type: string
description: The consumer address or zip code.
- name: brand
in: body
type: string
description: The brand to search for.
call: google-maps.search-places
with:
query: '{{brand}} near {{address}}'
outputParameters:
- name: stores
type: string
mapping: $.results
consumes:
- type: http
namespace: google-maps
baseUri: https://maps.googleapis.com/maps/api
authentication:
type: apikey
key: $secrets.google_maps_key
resources:
- name: places
path: /place/textsearch/json?query={{query}}
inputParameters:
- name: query
in: query
operations:
- name: search-places
method: GET
When a consumer complaint arrives in Zendesk, identifies the affected product batch in SAP, creates a quality investigation in ServiceNow, and notifies the quality team via Microsoft Teams.
naftiko: '0.5'
info:
label: Consumer Complaint Resolution Pipeline
description: When a consumer complaint arrives in Zendesk, identifies the affected product batch in SAP, creates a quality investigation in ServiceNow, and notifies the quality team via Microsoft Teams.
tags:
- quality-control
- customer-service
- zendesk
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: complaint-resolution
port: 8080
tools:
- name: investigate-complaint
description: Given a Zendesk ticket ID and product details, trace the batch, create an investigation, and notify QA.
inputParameters:
- name: ticket_id
in: body
type: string
description: The Zendesk ticket ID.
- name: product_upc
in: body
type: string
description: The product UPC code.
- name: batch_code
in: body
type: string
description: The batch code from the package.
steps:
- name: get-ticket
type: call
call: zendesk.get-ticket
with:
ticket_id: '{{ticket_id}}'
- name: trace-batch
type: call
call: sap.get-batch-details
with:
batch_code: '{{batch_code}}'
upc: '{{product_upc}}'
- name: create-investigation
type: call
call: servicenow.create-incident
with:
short_description: 'Consumer complaint investigation: {{get-ticket.subject}}'
category: quality
description: 'Zendesk ticket: {{ticket_id}}. Product UPC: {{product_upc}}. Batch: {{batch_code}}. Plant: {{trace-batch.plant}}. Production date: {{trace-batch.production_date}}.'
- name: notify-qa
type: call
call: msteams.send-message
with:
channel_id: quality-assurance
text: 'Consumer complaint investigation: {{get-ticket.subject}}. Batch: {{batch_code}} from {{trace-batch.plant}}. ServiceNow: {{create-investigation.number}}.'
consumes:
- type: http
namespace: zendesk
baseUri: https://kellanova.zendesk.com/api/v2
authentication:
type: basic
username: $secrets.zendesk_user
password: $secrets.zendesk_token
resources:
- name: tickets
path: /tickets/{{ticket_id}}
inputParameters:
- name: ticket_id
in: path
operations:
- name: get-ticket
method: GET
- type: http
namespace: sap
baseUri: https://kellanova-s4.sap.com/sap/opu/odata/sap/QM_INSPECTION_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: batches
path: /Batches(BatchCode='{{batch_code}}',UPC='{{upc}}')
inputParameters:
- name: batch_code
in: path
- name: upc
in: path
operations:
- name: get-batch-details
method: GET
- type: http
namespace: servicenow
baseUri: https://kellanova.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/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When launching a new product, creates the product master in SAP, sets up a Salesforce campaign, configures Google Tag Manager tracking, and announces to the sales team via Microsoft Teams.
naftiko: '0.5'
info:
label: New Product Launch Pipeline
description: When launching a new product, creates the product master in SAP, sets up a Salesforce campaign, configures Google Tag Manager tracking, and announces to the sales team via Microsoft Teams.
tags:
- product-management
- sap
- salesforce
- google-tag-manager
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: product-launch
port: 8080
tools:
- name: launch-product
description: Given product details, create master data, set up marketing tracking, and notify the sales team.
inputParameters:
- name: product_name
in: body
type: string
description: The new product name.
- name: material_number
in: body
type: string
description: The SAP material number.
- name: brand
in: body
type: string
description: The brand name.
- name: launch_date
in: body
type: string
description: The launch date in YYYY-MM-DD format.
steps:
- name: create-master
type: call
call: sap.create-material
with:
material_number: '{{material_number}}'
description: '{{product_name}}'
brand: '{{brand}}'
- name: create-campaign
type: call
call: salesforce.create-campaign
with:
name: 'Launch: {{product_name}}'
brand: '{{brand}}'
start_date: '{{launch_date}}'
- name: setup-tracking
type: call
call: gtm.create-tag
with:
tag_name: '{{product_name}}_launch'
product_id: '{{material_number}}'
- name: announce-launch
type: call
call: msteams.send-message
with:
channel_id: sales-team
text: 'New product launch: {{product_name}} ({{brand}}) on {{launch_date}}. SAP material: {{material_number}}. Salesforce campaign: {{create-campaign.campaign_id}}.'
consumes:
- type: http
namespace: sap
baseUri: https://kellanova-s4.sap.com/sap/opu/odata/sap/MM_MATERIAL_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: materials
path: /A_Material
operations:
- name: create-material
method: POST
- type: http
namespace: salesforce
baseUri: https://kellanova.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: campaigns
path: /sobjects/Campaign
operations:
- name: create-campaign
method: POST
- type: http
namespace: gtm
baseUri: https://www.googleapis.com/tagmanager/v2
authentication:
type: bearer
token: $secrets.gtm_token
resources:
- name: tags
path: /accounts/{{account_id}}/containers/{{container_id}}/workspaces/{{workspace_id}}/tags
operations:
- name: create-tag
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: channel_id
in: path
operations:
- name: send-message
method: POST
Creates promotion in SAP, syncs to retail partners via Salesforce, tracks in Google Sheets, and notifies sales via Slack.
naftiko: '0.5'
info:
label: Retail Promotion Execution Pipeline
description: Creates promotion in SAP, syncs to retail partners via Salesforce, tracks in Google Sheets, and notifies sales via Slack.
tags:
- promotions
- sap
- salesforce
- google-sheets
- slack
capability:
exposes:
- type: mcp
namespace: retail-promotion-execution-pipeline
port: 8080
tools:
- name: execute
description: Creates promotion in SAP, syncs to retail partners via Salesforce, tracks in Google Sheets, and notifies sales via Slack.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: salesforce.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: google-sheets.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: slack.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: salesforce
baseUri: https://api.salesforce.com/v1
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: https://api.googlesheets.com/v1
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: https://api.slack.com/v1
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
When a field rep completes a store visit, logs the visit in Salesforce, uploads photos to SharePoint, captures competitive data in Google Sheets, and notifies the regional manager via Microsoft Teams.
naftiko: '0.5'
info:
label: Retail Execution Pipeline
description: When a field rep completes a store visit, logs the visit in Salesforce, uploads photos to SharePoint, captures competitive data in Google Sheets, and notifies the regional manager via Microsoft Teams.
tags:
- retail
- field-sales
- salesforce
- sharepoint
- google-sheets
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: retail-execution
port: 8080
tools:
- name: log-store-visit
description: Given visit details, log the store visit, upload photos, capture data, and notify management.
inputParameters:
- name: store_id
in: body
type: string
description: The store identifier.
- name: rep_name
in: body
type: string
description: The field rep name.
- name: visit_notes
in: body
type: string
description: Notes from the store visit.
- name: manager_email
in: body
type: string
description: The regional manager email.
steps:
- name: log-visit
type: call
call: salesforce.create-visit
with:
store_id: '{{store_id}}'
rep: '{{rep_name}}'
notes: '{{visit_notes}}'
- name: upload-photos
type: call
call: sharepoint.upload-file
with:
site_id: retail-execution
folder_path: StoreVisits/{{store_id}}
file_name: visit_{{log-visit.visit_id}}.zip
- name: update-tracker
type: call
call: google-sheets.append-row
with:
spreadsheet_id: retail-visits-tracker
values: '{{store_id}},{{rep_name}},{{log-visit.visit_date}},{{visit_notes}}'
- name: notify-manager
type: call
call: msteams.send-message
with:
recipient_upn: '{{manager_email}}'
text: 'Store visit logged: {{store_id}} by {{rep_name}}. Notes: {{visit_notes}}. Photos: {{upload-photos.url}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://kellanova.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: visits
path: /sobjects/StoreVisit__c
operations:
- name: create-visit
method: POST
- 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}}/{{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
- type: http
namespace: google-sheets
baseUri: https://sheets.googleapis.com/v4
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: spreadsheets
path: /spreadsheets/{{spreadsheet_id}}/values/Sheet1:append?valueInputOption=RAW
inputParameters:
- name: spreadsheet_id
in: path
operations:
- name: append-row
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 Figma packaging design file by key.
naftiko: '0.5'
info:
label: Figma Packaging Design Lookup
description: Retrieves a Figma packaging design file by key.
tags:
- design
- figma
capability:
exposes:
- type: mcp
namespace: figma-packaging
port: 8080
tools:
- name: get-data
description: Retrieves a Figma packaging design file by key.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: figma-packaging.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: figma-packaging
baseUri: https://api.figma.com/v1
authentication:
type: bearer
token: $secrets.figma_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Retrieves engagement metrics for Kellanova brand Instagram posts.
naftiko: '0.5'
info:
label: Instagram Brand Metrics Lookup
description: Retrieves engagement metrics for Kellanova brand Instagram posts.
tags:
- social-media
- instagram
capability:
exposes:
- type: mcp
namespace: instagram-brand
port: 8080
tools:
- name: get-data
description: Retrieves engagement metrics for Kellanova brand Instagram posts.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: instagram-brand.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: instagram-brand
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.instagram_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Creates campaign in HubSpot, generates contract via DocuSign, tracks deliverables in Asana, and monitors Instagram metrics.
naftiko: '0.5'
info:
label: Influencer Partnership Pipeline
description: Creates campaign in HubSpot, generates contract via DocuSign, tracks deliverables in Asana, and monitors Instagram metrics.
tags:
- marketing
- hubspot
- docusign
- asana
- instagram
capability:
exposes:
- type: mcp
namespace: influencer-partnership-pipeline
port: 8080
tools:
- name: execute
description: Creates campaign in HubSpot, generates contract via DocuSign, tracks deliverables in Asana, and monitors Instagram metrics.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: hubspot.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: docusign.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: asana.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: instagram.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: hubspot
baseUri: https://api.hubspot.com/v1
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: docusign
baseUri: https://api.docusign.com/v1
authentication:
type: bearer
token: $secrets.docusign_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: asana
baseUri: https://api.asana.com/v1
authentication:
type: bearer
token: $secrets.asana_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: instagram
baseUri: https://api.instagram.com/v1
authentication:
type: bearer
token: $secrets.instagram_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Retrieves team training progress from Pluralsight for a given course.
naftiko: '0.5'
info:
label: Pluralsight Training Progress Lookup
description: Retrieves team training progress from Pluralsight for a given course.
tags:
- training
- pluralsight
capability:
exposes:
- type: mcp
namespace: learning
port: 8080
tools:
- name: get-training-progress
description: Look up team training progress in Pluralsight.
inputParameters:
- name: team_name
in: body
type: string
description: The team name.
- name: course_name
in: body
type: string
description: The course name.
call: pluralsight.get-team-progress
with:
team: '{{team_name}}'
course: '{{course_name}}'
outputParameters:
- name: completion_rate
type: string
mapping: $.completionRate
- name: enrolled_count
type: string
mapping: $.enrolledCount
consumes:
- type: http
namespace: pluralsight
baseUri: https://api.pluralsight.com/api/v1
authentication:
type: bearer
token: $secrets.pluralsight_token
resources:
- name: team-progress
path: /teams/{{team}}/courses/{{course}}/progress
inputParameters:
- name: team
in: path
- name: course
in: path
operations:
- name: get-team-progress
method: GET
When a production batch completes in SAP, runs quality checks, updates batch status, creates a release certificate in SharePoint, and notifies the QA team via Microsoft Teams.
naftiko: '0.5'
info:
label: Quality Control Batch Release Pipeline
description: When a production batch completes in SAP, runs quality checks, updates batch status, creates a release certificate in SharePoint, and notifies the QA team via Microsoft Teams.
tags:
- manufacturing
- quality-control
- sap
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: quality-control
port: 8080
tools:
- name: process-batch-release
description: Given a batch ID, run quality checks, generate release certificate, and notify QA.
inputParameters:
- name: batch_id
in: body
type: string
description: The SAP production batch identifier.
- name: plant_code
in: body
type: string
description: The manufacturing plant code.
steps:
- name: get-batch
type: call
call: sap.get-batch
with:
batch_id: '{{batch_id}}'
- name: run-qa-checks
type: call
call: sap.run-quality-inspection
with:
batch_id: '{{batch_id}}'
plant: '{{plant_code}}'
- name: create-certificate
type: call
call: sharepoint.create-document
with:
site_id: qa-documents
folder_path: BatchRelease/{{plant_code}}/{{batch_id}}
content: 'Batch {{batch_id}} - Plant {{plant_code}} - QA Result: {{run-qa-checks.result}} - Release Date: {{run-qa-checks.inspection_date}}'
- name: notify-qa
type: call
call: msteams.send-message
with:
channel_id: quality-assurance
text: 'Batch {{batch_id}} from {{plant_code}}: QA {{run-qa-checks.result}}. Certificate: {{create-certificate.url}}. Product: {{get-batch.product_name}}.'
consumes:
- type: http
namespace: sap
baseUri: https://kellanova-s4.sap.com/sap/opu/odata/sap/QM_INSPECTION_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: batches
path: /Batches('{{batch_id}}')
inputParameters:
- name: batch_id
in: path
operations:
- name: get-batch
method: GET
- name: inspections
path: /QualityInspections
operations:
- name: run-quality-inspection
method: POST
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: documents
path: /{{site_id}}/drive/root:/{{folder_path}}
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: create-document
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: channel_id
in: path
operations:
- name: send-message
method: POST
Collects feedback from Zendesk, analyzes via Azure ML, stores in Snowflake, and publishes to Confluence.
naftiko: '0.5'
info:
label: Customer Feedback Analysis Pipeline
description: Collects feedback from Zendesk, analyzes via Azure ML, stores in Snowflake, and publishes to Confluence.
tags:
- feedback
- zendesk
- azure-machine-learning
- snowflake
- confluence
capability:
exposes:
- type: mcp
namespace: customer-feedback-analysis-pipeline
port: 8080
tools:
- name: execute
description: Collects feedback from Zendesk, analyzes via Azure ML, stores in Snowflake, and publishes to Confluence.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: zendesk.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: azure-machine-learning.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: snowflake.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: confluence.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: zendesk
baseUri: https://api.zendesk.com/v1
authentication:
type: bearer
token: $secrets.zendesk_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: azure-machine-learning
baseUri: https://api.azuremachinelearning.com/v1
authentication:
type: bearer
token: $secrets.azure_machine_learning_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: https://api.snowflake.com/v1
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: confluence
baseUri: https://api.confluence.com/v1
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
When a food safety issue is detected, identifies affected batches in SAP, creates a recall case in ServiceNow, alerts retail partners via Salesforce, and notifies the crisis team via Microsoft Teams.
naftiko: '0.5'
info:
label: Food Safety Recall Pipeline
description: When a food safety issue is detected, identifies affected batches in SAP, creates a recall case in ServiceNow, alerts retail partners via Salesforce, and notifies the crisis team via Microsoft Teams.
tags:
- food-safety
- recall
- sap
- servicenow
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: food-safety
port: 8080
tools:
- name: initiate-recall
description: Given a product and issue description, identify affected batches, create a recall case, and alert stakeholders.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number of the affected product.
- name: issue_description
in: body
type: string
description: Description of the food safety issue.
- name: severity
in: body
type: string
description: Severity level (class-I, class-II, class-III).
steps:
- name: find-batches
type: call
call: sap.find-affected-batches
with:
material_number: '{{material_number}}'
- name: create-recall-case
type: call
call: servicenow.create-case
with:
short_description: 'Food safety recall: {{material_number}} - {{severity}}'
category: food_safety
priority: critical
description: '{{issue_description}}. Affected batches: {{find-batches.batch_count}}.'
- name: alert-retailers
type: call
call: salesforce.create-recall-alert
with:
material_number: '{{material_number}}'
batches: '{{find-batches.batch_ids}}'
severity: '{{severity}}'
- name: notify-crisis-team
type: call
call: msteams.send-message
with:
channel_id: crisis-management
text: 'FOOD SAFETY RECALL initiated. Product: {{material_number}}. Severity: {{severity}}. Affected batches: {{find-batches.batch_count}}. Case: {{create-recall-case.number}}. Retail alerts sent.'
consumes:
- type: http
namespace: sap
baseUri: https://kellanova-s4.sap.com/sap/opu/odata/sap/QM_INSPECTION_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: batch-trace
path: /BatchTrace?$filter=Material eq '{{material_number}}'
inputParameters:
- name: material_number
in: query
operations:
- name: find-affected-batches
method: GET
- type: http
namespace: servicenow
baseUri: https://kellanova.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: salesforce
baseUri: https://kellanova.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: recall-alerts
path: /sobjects/RecallAlert__c
operations:
- name: create-recall-alert
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: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves a travel expense report from SAP Concur by report ID.
naftiko: '0.5'
info:
label: SAP Concur Travel Expense Lookup
description: Retrieves a travel expense report from SAP Concur by report ID.
tags:
- finance
- travel
- sap-concur
capability:
exposes:
- type: mcp
namespace: travel-expenses
port: 8080
tools:
- name: get-expense-report
description: Look up a SAP Concur expense report by report ID.
inputParameters:
- name: report_id
in: body
type: string
description: The SAP Concur expense report ID.
call: concur.get-report
with:
report_id: '{{report_id}}'
outputParameters:
- name: total_amount
type: string
mapping: $.Total
- name: approval_status
type: string
mapping: $.ApprovalStatusName
- name: submit_date
type: string
mapping: $.SubmitDate
consumes:
- type: http
namespace: concur
baseUri: https://us.api.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-report
method: GET
Creates campaign in HubSpot, sets up Facebook ads, tracks in Google Analytics, and reports via Google Sheets.
naftiko: '0.5'
info:
label: Digital Marketing Campaign Pipeline
description: Creates campaign in HubSpot, sets up Facebook ads, tracks in Google Analytics, and reports via Google Sheets.
tags:
- marketing
- hubspot
- facebook
- google-analytics
- google-sheets
capability:
exposes:
- type: mcp
namespace: digital-marketing-campaign-pipeline
port: 8080
tools:
- name: execute
description: Creates campaign in HubSpot, sets up Facebook ads, tracks in Google Analytics, and reports via Google Sheets.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: hubspot.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: facebook.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: google-analytics.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: google-sheets.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: hubspot
baseUri: https://api.hubspot.com/v1
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: facebook
baseUri: https://api.facebook.com/v1
authentication:
type: bearer
token: $secrets.facebook_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-analytics
baseUri: https://api.googleanalytics.com/v1
authentication:
type: bearer
token: $secrets.google_analytics_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: https://api.googlesheets.com/v1
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Retrieves search performance data from Google Search Console for Kellanova properties.
naftiko: '0.5'
info:
label: Google Search Console SEO Lookup
description: Retrieves search performance data from Google Search Console for Kellanova properties.
tags:
- seo
- google-search-console
capability:
exposes:
- type: mcp
namespace: gsc-seo
port: 8080
tools:
- name: get-data
description: Retrieves search performance data from Google Search Console for Kellanova properties.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: gsc-seo.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: gsc-seo
baseUri: https://www.googleapis.com/webmasters/v3
authentication:
type: bearer
token: $secrets.google_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Retrieves the current status of a manufacturing production line from SAP, including throughput rate, downtime, and batch in progress.
naftiko: '0.5'
info:
label: Production Line Status Lookup
description: Retrieves the current status of a manufacturing production line from SAP, including throughput rate, downtime, and batch in progress.
tags:
- manufacturing
- production
- sap
capability:
exposes:
- type: mcp
namespace: manufacturing
port: 8080
tools:
- name: get-production-line-status
description: Look up a production line status in SAP by line ID.
inputParameters:
- name: line_id
in: body
type: string
description: The SAP production line identifier.
call: sap.get-production-line
with:
line_id: '{{line_id}}'
outputParameters:
- name: status
type: string
mapping: $.d.LineStatus
- name: throughput_rate
type: string
mapping: $.d.ThroughputRate
- name: current_batch
type: string
mapping: $.d.CurrentBatchId
- name: downtime_minutes
type: string
mapping: $.d.DowntimeMinutes
consumes:
- type: http
namespace: sap
baseUri: https://kellanova-s4.sap.com/sap/opu/odata/sap/PP_PRODUCTION_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: production-lines
path: /ProductionLines('{{line_id}}')
inputParameters:
- name: line_id
in: path
operations:
- name: get-production-line
method: GET
Enrolls customer in Salesforce, provisions Stripe account, triggers MailChimp welcome, and logs in Snowflake.
naftiko: '0.5'
info:
label: Customer Loyalty Pipeline
description: Enrolls customer in Salesforce, provisions Stripe account, triggers MailChimp welcome, and logs in Snowflake.
tags:
- loyalty
- salesforce
- stripe
- mailchimp
- snowflake
capability:
exposes:
- type: mcp
namespace: customer-loyalty-pipeline
port: 8080
tools:
- name: execute
description: Enrolls customer in Salesforce, provisions Stripe account, triggers MailChimp welcome, and logs in Snowflake.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: salesforce.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: stripe.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: mailchimp.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: snowflake.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://api.salesforce.com/v1
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: stripe
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: mailchimp
baseUri: https://api.mailchimp.com/v1
authentication:
type: bearer
token: $secrets.mailchimp_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: https://api.snowflake.com/v1
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Creates task in Asana, uploads assets to Google Drive, updates product listing, and tracks in Airtable.
naftiko: '0.5'
info:
label: Product Photography Pipeline
description: Creates task in Asana, uploads assets to Google Drive, updates product listing, and tracks in Airtable.
tags:
- creative
- asana
- google-drive
- airtable
capability:
exposes:
- type: mcp
namespace: product-photography-pipeline
port: 8080
tools:
- name: execute
description: Creates task in Asana, uploads assets to Google Drive, updates product listing, and tracks in Airtable.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: asana.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: google-drive.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: airtable.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: airtable.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: asana
baseUri: https://api.asana.com/v1
authentication:
type: bearer
token: $secrets.asana_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-drive
baseUri: https://api.googledrive.com/v1
authentication:
type: bearer
token: $secrets.google_drive_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: airtable
baseUri: https://api.airtable.com/v1
authentication:
type: bearer
token: $secrets.airtable_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
When a BigCommerce order is placed, creates a delivery in SAP, updates the order status in BigCommerce, and sends a shipping confirmation via MailChimp.
naftiko: '0.5'
info:
label: E-Commerce Order Fulfillment Pipeline
description: When a BigCommerce order is placed, creates a delivery in SAP, updates the order status in BigCommerce, and sends a shipping confirmation via MailChimp.
tags:
- e-commerce
- fulfillment
- bigcommerce
- sap
- mailchimp
capability:
exposes:
- type: mcp
namespace: order-fulfillment
port: 8080
tools:
- name: fulfill-order
description: Given an order ID, create a delivery, update status, and send shipping confirmation.
inputParameters:
- name: order_id
in: body
type: string
description: The BigCommerce order ID.
- name: customer_email
in: body
type: string
description: The customer email address.
steps:
- name: get-order
type: call
call: bigcommerce.get-order
with:
order_id: '{{order_id}}'
- name: create-delivery
type: call
call: sap.create-delivery
with:
order_id: '{{order_id}}'
items: '{{get-order.products}}'
shipping_address: '{{get-order.shipping_addresses}}'
- name: update-status
type: call
call: bigcommerce.update-order-status
with:
order_id: '{{order_id}}'
status: shipped
tracking_number: '{{create-delivery.tracking_number}}'
- name: send-confirmation
type: call
call: mailchimp.send-transactional
with:
template: shipping-confirmation
recipient_email: '{{customer_email}}'
tracking_number: '{{create-delivery.tracking_number}}'
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/{{store_hash}}/v2
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: orders
path: /orders/{{order_id}}
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- name: update-order-status
method: PUT
- type: http
namespace: sap
baseUri: https://kellanova-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: /Deliveries
operations:
- name: create-delivery
method: POST
- type: http
namespace: mailchimp
baseUri: https://us1.api.mailchimp.com/3.0
authentication:
type: basic
username: anystring
password: $secrets.mailchimp_api_key
resources:
- name: transactional
path: /messages/send-template
operations:
- name: send-transactional
method: POST
Queries aggregated sales data from Snowflake by product line and region.
naftiko: '0.5'
info:
label: Snowflake Sales Analytics Query
description: Queries aggregated sales data from Snowflake by product line and region.
tags:
- analytics
- snowflake
capability:
exposes:
- type: mcp
namespace: snowflake-sales
port: 8080
tools:
- name: get-data
description: Queries aggregated sales data from Snowflake by product line and region.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: snowflake-sales.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: snowflake-sales
baseUri: https://kellanova.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Retrieves production batch details from SAP by batch ID.
naftiko: '0.5'
info:
label: SAP Production Batch Lookup
description: Retrieves production batch details from SAP by batch ID.
tags:
- manufacturing
- sap
capability:
exposes:
- type: mcp
namespace: sap-batches
port: 8080
tools:
- name: get-data
description: Retrieves production batch details from SAP by batch ID.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: sap-batches.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: sap-batches
baseUri: https://kellanova-s4.sap.com/sap/opu/odata/sap/ZBATCH_SRV
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Monitors brand mentions across Instagram and Facebook via Meta APIs, analyzes sentiment in Azure Databricks, and alerts the brand team via Microsoft Teams if negative sentiment spikes.
naftiko: '0.5'
info:
label: Social Media Brand Monitoring Pipeline
description: Monitors brand mentions across Instagram and Facebook via Meta APIs, analyzes sentiment in Azure Databricks, and alerts the brand team via Microsoft Teams if negative sentiment spikes.
tags:
- marketing
- social-media
- instagram
- facebook
- azure-databricks
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: brand-monitoring
port: 8080
tools:
- name: monitor-brand-sentiment
description: Given a brand name and date range, check social mentions, analyze sentiment, and alert if negative.
inputParameters:
- name: brand_name
in: body
type: string
description: The brand name to monitor.
- 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.
steps:
- name: get-instagram-mentions
type: call
call: instagram.get-mentions
with:
brand: '{{brand_name}}'
since: '{{start_date}}'
until: '{{end_date}}'
- name: get-facebook-mentions
type: call
call: facebook.get-mentions
with:
brand: '{{brand_name}}'
since: '{{start_date}}'
until: '{{end_date}}'
- name: analyze-sentiment
type: call
call: databricks.run-query
with:
query: SELECT sentiment_score, negative_pct FROM brand_sentiment WHERE brand = '{{brand_name}}' AND date BETWEEN '{{start_date}}' AND '{{end_date}}'
- name: alert-team
type: call
call: msteams.send-message
with:
channel_id: brand-management
text: 'Brand sentiment report for {{brand_name}} ({{start_date}} to {{end_date}}): Sentiment score: {{analyze-sentiment.sentiment_score}}. Negative: {{analyze-sentiment.negative_pct}}%. Instagram mentions: {{get-instagram-mentions.count}}. Facebook mentions: {{get-facebook-mentions.count}}.'
consumes:
- type: http
namespace: instagram
baseUri: https://graph.facebook.com/v17.0
authentication:
type: bearer
token: $secrets.meta_token
resources:
- name: mentions
path: /{{ig_user_id}}/tags
operations:
- name: get-mentions
method: GET
- type: http
namespace: facebook
baseUri: https://graph.facebook.com/v17.0
authentication:
type: bearer
token: $secrets.meta_token
resources:
- name: mentions
path: /{{page_id}}/tagged
operations:
- name: get-mentions
method: GET
- type: http
namespace: databricks
baseUri: https://kellanova-analytics.azuredatabricks.net/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: sql-queries
path: /sql/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: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves a payroll summary from ADP for a given employee and pay period.
naftiko: '0.5'
info:
label: ADP Payroll Summary Lookup
description: Retrieves a payroll summary from ADP for a given employee and pay period.
tags:
- hr
- payroll
- adp
capability:
exposes:
- type: mcp
namespace: payroll
port: 8080
tools:
- name: get-payroll-summary
description: Look up payroll summary from ADP.
inputParameters:
- name: employee_id
in: body
type: string
description: The ADP employee ID.
- name: pay_period
in: body
type: string
description: The pay period identifier.
call: adp.get-payroll
with:
employee_id: '{{employee_id}}'
pay_period: '{{pay_period}}'
outputParameters:
- name: gross_pay
type: string
mapping: $.payStatement.grossPayAmount
- name: net_pay
type: string
mapping: $.payStatement.netPayAmount
consumes:
- type: http
namespace: adp
baseUri: https://api.adp.com/hr/v2
authentication:
type: bearer
token: $secrets.adp_token
resources:
- name: pay-statements
path: /workers/{{employee_id}}/pay-statements?payPeriod={{pay_period}}
inputParameters:
- name: employee_id
in: path
- name: pay_period
in: query
operations:
- name: get-payroll
method: GET
Triggers a refresh of the sales performance Power BI dataset to ensure dashboards reflect the latest retail data.
naftiko: '0.5'
info:
label: Power BI Sales Dashboard Refresh
description: Triggers a refresh of the sales performance Power BI dataset to ensure dashboards reflect the latest retail data.
tags:
- analytics
- power-bi
capability:
exposes:
- type: mcp
namespace: sales-analytics
port: 8080
tools:
- name: refresh-sales-dashboard
description: Trigger a Power BI dataset refresh for the sales performance dashboard.
inputParameters:
- name: dataset_id
in: body
type: string
description: The Power BI dataset identifier.
call: powerbi.refresh-dataset
with:
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: /datasets/{{dataset_id}}/refreshes
inputParameters:
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
Queries consumer purchase insights from Teradata data warehouse.
naftiko: '0.5'
info:
label: Teradata Consumer Insights Query
description: Queries consumer purchase insights from Teradata data warehouse.
tags:
- analytics
- teradata
capability:
exposes:
- type: mcp
namespace: teradata-insights
port: 8080
tools:
- name: get-data
description: Queries consumer purchase insights from Teradata data warehouse.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: teradata-insights.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: teradata-insights
baseUri: https://kellanova.teradata.com/api/v1
authentication:
type: bearer
token: $secrets.teradata_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Audits data in Snowflake, generates compliance reports in Google Sheets, archives in SharePoint, and notifies legal via Slack.
naftiko: '0.5'
info:
label: Data Privacy Compliance Pipeline
description: Audits data in Snowflake, generates compliance reports in Google Sheets, archives in SharePoint, and notifies legal via Slack.
tags:
- compliance
- snowflake
- google-sheets
- sharepoint
- slack
capability:
exposes:
- type: mcp
namespace: data-privacy-compliance-pipeline
port: 8080
tools:
- name: execute
description: Audits data in Snowflake, generates compliance reports in Google Sheets, archives in SharePoint, and notifies legal via Slack.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: snowflake.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: google-sheets.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: sharepoint.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: slack.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://api.snowflake.com/v1
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: https://api.googlesheets.com/v1
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: sharepoint
baseUri: https://api.sharepoint.com/v1
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: https://api.slack.com/v1
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Matches invoices from SAP, validates contracts in Salesforce, processes payments, and logs in Google Sheets.
naftiko: '0.5'
info:
label: Vendor Invoice Reconciliation Pipeline
description: Matches invoices from SAP, validates contracts in Salesforce, processes payments, and logs in Google Sheets.
tags:
- finance
- sap
- salesforce
- google-sheets
capability:
exposes:
- type: mcp
namespace: vendor-invoice-reconciliation-pipeline
port: 8080
tools:
- name: execute
description: Matches invoices from SAP, validates contracts in Salesforce, processes payments, and logs in Google Sheets.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: salesforce.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: google-sheets.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: google-sheets.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: salesforce
baseUri: https://api.salesforce.com/v1
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: https://api.googlesheets.com/v1
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Retrieves current inventory levels at a distribution center from SAP by material number and plant code.
naftiko: '0.5'
info:
label: Distribution Center Inventory Lookup
description: Retrieves current inventory levels at a distribution center from SAP by material number and plant code.
tags:
- distribution
- inventory
- sap
capability:
exposes:
- type: mcp
namespace: inventory
port: 8080
tools:
- name: get-dc-inventory
description: Look up inventory levels at a distribution center in SAP.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number.
- name: plant_code
in: body
type: string
description: The distribution center plant code.
call: sap.get-inventory
with:
material: '{{material_number}}'
plant: '{{plant_code}}'
outputParameters:
- name: available_quantity
type: string
mapping: $.d.AvailableStock
- name: reserved_quantity
type: string
mapping: $.d.ReservedStock
- name: unit_of_measure
type: string
mapping: $.d.BaseUnit
consumes:
- type: http
namespace: sap
baseUri: https://kellanova-s4.sap.com/sap/opu/odata/sap/MM_MATERIAL_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: inventory
path: /MaterialStock(Material='{{material}}',Plant='{{plant}}')
inputParameters:
- name: material
in: path
- name: plant
in: path
operations:
- name: get-inventory
method: GET
When raw material inventory falls below threshold, generates a purchase requisition in SAP, gets supplier quotes, and notifies the procurement team via Microsoft Teams.
naftiko: '0.5'
info:
label: Raw Material Procurement Pipeline
description: When raw material inventory falls below threshold, generates a purchase requisition in SAP, gets supplier quotes, and notifies the procurement team via Microsoft Teams.
tags:
- supply-chain
- procurement
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: raw-materials
port: 8080
tools:
- name: trigger-reorder
description: Given a material and plant, check inventory and trigger reorder if below threshold.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number.
- name: plant_code
in: body
type: string
description: The plant code.
- name: reorder_quantity
in: body
type: string
description: The quantity to reorder.
steps:
- name: check-stock
type: call
call: sap.get-inventory
with:
material: '{{material_number}}'
plant: '{{plant_code}}'
- name: create-requisition
type: call
call: sap.create-requisition
with:
material: '{{material_number}}'
plant: '{{plant_code}}'
quantity: '{{reorder_quantity}}'
- name: notify-procurement
type: call
call: msteams.send-message
with:
channel_id: procurement
text: 'Reorder triggered for {{material_number}} at {{plant_code}}. Current stock: {{check-stock.AvailableStock}}. Requisition: {{create-requisition.req_number}} for {{reorder_quantity}} units.'
consumes:
- type: http
namespace: sap
baseUri: https://kellanova-s4.sap.com/sap/opu/odata/sap/MM_MATERIAL_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: inventory
path: /MaterialStock(Material='{{material}}',Plant='{{plant}}')
inputParameters:
- name: material
in: path
- name: plant
in: path
operations:
- name: get-inventory
method: GET
- name: requisitions
path: /A_PurchaseRequisition
operations:
- name: create-requisition
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: channel_id
in: path
operations:
- name: send-message
method: POST
Extracts planogram compliance data from Circana, creates follow-up actions in Salesforce for field reps, and notifies the category management team via Microsoft Teams.
naftiko: '0.5'
info:
label: Retailer Planogram Compliance Pipeline
description: Extracts planogram compliance data from Circana, creates follow-up actions in Salesforce for field reps, and notifies the category management team via Microsoft Teams.
tags:
- retail
- planogram
- circana
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: planogram-compliance
port: 8080
tools:
- name: check-planogram-compliance
description: Given a retailer and category, check planogram compliance and create follow-up actions.
inputParameters:
- name: retailer
in: body
type: string
description: The retailer name.
- name: category
in: body
type: string
description: The product category.
steps:
- name: get-compliance
type: call
call: circana.get-planogram-data
with:
retailer: '{{retailer}}'
category: '{{category}}'
- name: create-actions
type: call
call: salesforce.create-task
with:
subject: 'Planogram compliance follow-up: {{retailer}} - {{category}}'
description: 'Compliance rate: {{get-compliance.compliance_rate}}%. Non-compliant stores: {{get-compliance.nc_store_count}}.'
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: category-management
text: 'Planogram compliance for {{category}} at {{retailer}}: {{get-compliance.compliance_rate}}%. {{get-compliance.nc_store_count}} stores need attention. Task: {{create-actions.task_id}}.'
consumes:
- type: http
namespace: circana
baseUri: https://api.circana.com/v1
authentication:
type: bearer
token: $secrets.circana_token
resources:
- name: planogram
path: /planogram/compliance?retailer={{retailer}}&category={{category}}
inputParameters:
- name: retailer
in: query
- name: category
in: query
operations:
- name: get-planogram-data
method: GET
- type: http
namespace: salesforce
baseUri: https://kellanova.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: tasks
path: /sobjects/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/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Creates and sends a consumer newsletter campaign in MailChimp targeting a specific brand audience segment.
naftiko: '0.5'
info:
label: MailChimp Consumer Newsletter Campaign
description: Creates and sends a consumer newsletter campaign in MailChimp targeting a specific brand audience segment.
tags:
- marketing
- email
- mailchimp
capability:
exposes:
- type: mcp
namespace: email-marketing
port: 8080
tools:
- name: send-newsletter
description: Create and send a MailChimp newsletter campaign.
inputParameters:
- name: campaign_name
in: body
type: string
description: The campaign name.
- name: list_id
in: body
type: string
description: The MailChimp audience list ID.
- name: template_id
in: body
type: string
description: The email template ID.
- name: subject
in: body
type: string
description: The email subject line.
call: mailchimp.create-campaign
with:
name: '{{campaign_name}}'
list_id: '{{list_id}}'
template_id: '{{template_id}}'
subject: '{{subject}}'
consumes:
- type: http
namespace: mailchimp
baseUri: https://us1.api.mailchimp.com/3.0
authentication:
type: basic
username: anystring
password: $secrets.mailchimp_api_key
resources:
- name: campaigns
path: /campaigns
operations:
- name: create-campaign
method: POST
Archives a regulatory compliance document to Box in the appropriate folder.
naftiko: '0.5'
info:
label: Box Regulatory Document Archive
description: Archives a regulatory compliance document to Box in the appropriate folder.
tags:
- compliance
- box
capability:
exposes:
- type: mcp
namespace: regulatory-docs
port: 8080
tools:
- name: archive-document
description: Upload a regulatory document to the Box compliance archive.
inputParameters:
- name: file_name
in: body
type: string
description: The document file name.
- name: folder_id
in: body
type: string
description: The Box target folder ID.
call: box.upload-file
with:
folder_id: '{{folder_id}}'
file_name: '{{file_name}}'
consumes:
- type: http
namespace: box
baseUri: https://upload.box.com/api/2.0
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: files
path: /files/content
operations:
- name: upload-file
method: POST
Retrieves a Salesforce broker account by ID for retail distribution.
naftiko: '0.5'
info:
label: Salesforce Broker Account Lookup
description: Retrieves a Salesforce broker account by ID for retail distribution.
tags:
- sales
- salesforce
capability:
exposes:
- type: mcp
namespace: sf-brokers
port: 8080
tools:
- name: get-data
description: Retrieves a Salesforce broker account by ID for retail distribution.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: sf-brokers.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: sf-brokers
baseUri: https://kellanova.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Pulls demand forecasts from Azure Databricks, creates production orders in SAP, and notifies plant managers via Microsoft Teams.
naftiko: '0.5'
info:
label: Production Scheduling Pipeline
description: Pulls demand forecasts from Azure Databricks, creates production orders in SAP, and notifies plant managers via Microsoft Teams.
tags:
- manufacturing
- scheduling
- azure-databricks
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: production-scheduling
port: 8080
tools:
- name: schedule-production
description: Given a plant and period, generate production schedule from demand forecasts.
inputParameters:
- name: plant_code
in: body
type: string
description: The manufacturing plant code.
- name: period
in: body
type: string
description: The scheduling period.
steps:
- name: get-forecast
type: call
call: databricks.run-query
with:
query: SELECT * FROM demand_forecast WHERE plant = '{{plant_code}}' AND period = '{{period}}'
- name: create-orders
type: call
call: sap.create-production-orders
with:
plant: '{{plant_code}}'
forecast: '{{get-forecast.results}}'
- name: notify-plant
type: call
call: msteams.send-message
with:
channel_id: plant-ops-{{plant_code}}
text: 'Production schedule for {{plant_code}} ({{period}}): {{create-orders.order_count}} orders created.'
consumes:
- type: http
namespace: databricks
baseUri: https://kellanova-analytics.azuredatabricks.net/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: sql-queries
path: /sql/statements
operations:
- name: run-query
method: POST
- type: http
namespace: sap
baseUri: https://kellanova-s4.sap.com/sap/opu/odata/sap/PP_PRODUCTION_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: production-orders
path: /ProductionOrders
operations:
- name: create-production-orders
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: channel_id
in: path
operations:
- name: send-message
method: POST
Pulls promotion execution data from SAP, enriches with Circana retail data, analyzes ROI in Azure Databricks, and shares results with the trade team via Microsoft Teams.
naftiko: '0.5'
info:
label: Trade Promotion Effectiveness Pipeline
description: Pulls promotion execution data from SAP, enriches with Circana retail data, analyzes ROI in Azure Databricks, and shares results with the trade team via Microsoft Teams.
tags:
- marketing
- trade-promotion
- sap
- circana
- azure-databricks
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: trade-promotion
port: 8080
tools:
- name: analyze-promotion-roi
description: Given a promotion ID, pull execution and retail data, analyze ROI, and share results.
inputParameters:
- name: promotion_id
in: body
type: string
description: The trade promotion identifier.
- name: retailer
in: body
type: string
description: The retailer name.
steps:
- name: get-promo-data
type: call
call: sap.get-promotion
with:
promotion_id: '{{promotion_id}}'
- name: get-retail-data
type: call
call: circana.get-promo-performance
with:
promotion_id: '{{promotion_id}}'
retailer: '{{retailer}}'
- name: calculate-roi
type: call
call: databricks.run-query
with:
query: SELECT promotion_roi('{{promotion_id}}', '{{retailer}}') as roi
- name: share-results
type: call
call: msteams.send-message
with:
channel_id: trade-marketing
text: 'Promotion {{promotion_id}} at {{retailer}}: Spend: {{get-promo-data.spend}}. Incremental sales: {{get-retail-data.incremental_sales}}. ROI: {{calculate-roi.roi}}%.'
consumes:
- type: http
namespace: sap
baseUri: https://kellanova-s4.sap.com/sap/opu/odata/sap/TPM_PROMOTION_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: promotions
path: /Promotions('{{promotion_id}}')
inputParameters:
- name: promotion_id
in: path
operations:
- name: get-promotion
method: GET
- type: http
namespace: circana
baseUri: https://api.circana.com/v1
authentication:
type: bearer
token: $secrets.circana_token
resources:
- name: promo-performance
path: /promotions/{{promotion_id}}/performance?retailer={{retailer}}
inputParameters:
- name: promotion_id
in: path
- name: retailer
in: query
operations:
- name: get-promo-performance
method: GET
- type: http
namespace: databricks
baseUri: https://kellanova-analytics.azuredatabricks.net/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: sql-queries
path: /sql/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: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
On Dynatrace alert, creates ServiceNow incident, pages team via Slack, and opens Zoom bridge.
naftiko: '0.5'
info:
label: IT Incident Response Pipeline
description: On Dynatrace alert, creates ServiceNow incident, pages team via Slack, and opens Zoom bridge.
tags:
- incident
- dynatrace
- servicenow
- slack
- zoom
capability:
exposes:
- type: mcp
namespace: it-incident-response-pipeline
port: 8080
tools:
- name: execute
description: On Dynatrace alert, creates ServiceNow incident, pages team via Slack, and opens Zoom bridge.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: dynatrace.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: servicenow.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: slack.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: zoom.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: dynatrace
baseUri: https://api.dynatrace.com/v1
authentication:
type: bearer
token: $secrets.dynatrace_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: servicenow
baseUri: https://api.servicenow.com/v1
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: https://api.slack.com/v1
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: zoom
baseUri: https://api.zoom.com/v1
authentication:
type: bearer
token: $secrets.zoom_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Retrieves promotion data from a Google Sheets tracker used by the trade marketing team.
naftiko: '0.5'
info:
label: Google Sheets Promotion Tracker
description: Retrieves promotion data from a Google Sheets tracker used by the trade marketing team.
tags:
- marketing
- promotions
- google-sheets
capability:
exposes:
- type: mcp
namespace: trade-marketing
port: 8080
tools:
- name: get-promotion-data
description: Retrieve promotion tracking data from Google Sheets.
inputParameters:
- name: spreadsheet_id
in: body
type: string
description: The Google Sheets spreadsheet ID.
- name: range
in: body
type: string
description: The cell range to retrieve (e.g., Sheet1!A1:Z100).
call: google-sheets.get-values
with:
spreadsheet_id: '{{spreadsheet_id}}'
range: '{{range}}'
outputParameters:
- name: values
type: string
mapping: $.values
consumes:
- type: http
namespace: google-sheets
baseUri: https://sheets.googleapis.com/v4
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: values
path: /spreadsheets/{{spreadsheet_id}}/values/{{range}}
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: get-values
method: GET
Retrieves application performance metrics from Dynatrace for a given service.
naftiko: '0.5'
info:
label: Dynatrace Application Health Check
description: Retrieves application performance metrics from Dynatrace for a given service.
tags:
- monitoring
- dynatrace
capability:
exposes:
- type: mcp
namespace: app-monitoring
port: 8080
tools:
- name: get-app-health
description: Retrieve application health metrics from Dynatrace.
inputParameters:
- name: service_name
in: body
type: string
description: The Dynatrace service name.
call: dynatrace.get-service-metrics
with:
service_name: '{{service_name}}'
outputParameters:
- name: response_time
type: string
mapping: $.result[0].data[0].values[0]
- name: error_rate
type: string
mapping: $.result[1].data[0].values[0]
consumes:
- type: http
namespace: dynatrace
baseUri: https://kellanova.live.dynatrace.com/api/v2
authentication:
type: bearer
token: $secrets.dynatrace_token
resources:
- name: metrics
path: /metrics/query?metricSelector=builtin:service.response.time,builtin:service.errors.total.rate&entitySelector=type(SERVICE),entityName({{service_name}})
inputParameters:
- name: service_name
in: query
operations:
- name: get-service-metrics
method: GET
Retrieves a Zendesk consumer support ticket by ID.
naftiko: '0.5'
info:
label: Zendesk Consumer Support Ticket Lookup
description: Retrieves a Zendesk consumer support ticket by ID.
tags:
- customer-service
- zendesk
capability:
exposes:
- type: mcp
namespace: consumer-support
port: 8080
tools:
- name: get-support-ticket
description: Look up a Zendesk support ticket by ticket ID.
inputParameters:
- name: ticket_id
in: body
type: string
description: The Zendesk ticket ID.
call: zendesk.get-ticket
with:
ticket_id: '{{ticket_id}}'
outputParameters:
- name: subject
type: string
mapping: $.ticket.subject
- name: status
type: string
mapping: $.ticket.status
- name: priority
type: string
mapping: $.ticket.priority
consumes:
- type: http
namespace: zendesk
baseUri: https://kellanova.zendesk.com/api/v2
authentication:
type: basic
username: $secrets.zendesk_user
password: $secrets.zendesk_token
resources:
- name: tickets
path: /tickets/{{ticket_id}}
inputParameters:
- name: ticket_id
in: path
operations:
- name: get-ticket
method: GET
Creates recipe record in SAP, generates nutrition label, uploads to SharePoint, and notifies R&D via Microsoft Teams.
naftiko: '0.5'
info:
label: Recipe Formulation Pipeline
description: Creates recipe record in SAP, generates nutrition label, uploads to SharePoint, and notifies R&D via Microsoft Teams.
tags:
- food-science
- sap
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: recipe-formulation-pipeline
port: 8080
tools:
- name: execute
description: Creates recipe record in SAP, generates nutrition label, uploads to SharePoint, and notifies R&D via Microsoft Teams.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: sharepoint.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: microsoft-teams.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: microsoft-teams.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: sharepoint
baseUri: https://api.sharepoint.com/v1
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: microsoft-teams
baseUri: https://api.microsoftteams.com/v1
authentication:
type: bearer
token: $secrets.microsoft_teams_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Queries expiring contracts from Salesforce, creates Jira tasks, sends reminders via Microsoft Outlook, and logs in Google Sheets.
naftiko: '0.5'
info:
label: Contract Renewal Pipeline
description: Queries expiring contracts from Salesforce, creates Jira tasks, sends reminders via Microsoft Outlook, and logs in Google Sheets.
tags:
- legal
- salesforce
- jira
- microsoft-outlook
- google-sheets
capability:
exposes:
- type: mcp
namespace: contract-renewal-pipeline
port: 8080
tools:
- name: execute
description: Queries expiring contracts from Salesforce, creates Jira tasks, sends reminders via Microsoft Outlook, and logs in Google Sheets.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: salesforce.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: jira.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: microsoft-outlook.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: google-sheets.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://api.salesforce.com/v1
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: jira
baseUri: https://api.jira.com/v1
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: microsoft-outlook
baseUri: https://api.microsoftoutlook.com/v1
authentication:
type: bearer
token: $secrets.microsoft_outlook_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: https://api.googlesheets.com/v1
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Retrieves supplier audit results from SAP, creates compliance findings in ServiceNow, shares documentation in SharePoint, and notifies the procurement team via Microsoft Teams.
naftiko: '0.5'
info:
label: Supplier Compliance Audit Pipeline
description: Retrieves supplier audit results from SAP, creates compliance findings in ServiceNow, shares documentation in SharePoint, and notifies the procurement team via Microsoft Teams.
tags:
- supply-chain
- compliance
- sap
- servicenow
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: supplier-compliance
port: 8080
tools:
- name: process-supplier-audit
description: Given a supplier ID, process audit results, create findings, and notify procurement.
inputParameters:
- name: supplier_id
in: body
type: string
description: The SAP supplier identifier.
- name: audit_date
in: body
type: string
description: The audit date in YYYY-MM-DD format.
- name: audit_type
in: body
type: string
description: The type of audit (food-safety, quality, environmental).
steps:
- name: get-audit-results
type: call
call: sap.get-supplier-audit
with:
supplier_id: '{{supplier_id}}'
audit_date: '{{audit_date}}'
- name: create-findings
type: call
call: servicenow.create-incident
with:
short_description: 'Supplier audit findings: {{get-audit-results.supplier_name}} ({{audit_type}})'
category: supplier_compliance
description: 'Audit score: {{get-audit-results.score}}. Findings: {{get-audit-results.findings_count}} items.'
- name: upload-report
type: call
call: sharepoint.upload-file
with:
site_id: supplier-compliance
folder_path: Audits/{{supplier_id}}/{{audit_date}}
file_name: audit_report_{{audit_type}}.pdf
- name: notify-procurement
type: call
call: msteams.send-message
with:
channel_id: procurement
text: 'Supplier audit complete: {{get-audit-results.supplier_name}} ({{audit_type}}). Score: {{get-audit-results.score}}. Findings: {{get-audit-results.findings_count}}. Report: {{upload-report.url}}.'
consumes:
- type: http
namespace: sap
baseUri: https://kellanova-s4.sap.com/sap/opu/odata/sap/SUPPLIER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: audits
path: /SupplierAudits(SupplierId='{{supplier_id}}',AuditDate='{{audit_date}}')
inputParameters:
- name: supplier_id
in: path
- name: audit_date
in: path
operations:
- name: get-supplier-audit
method: GET
- type: http
namespace: servicenow
baseUri: https://kellanova.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: 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
- 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: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves product innovation pipeline entries from Airtable.
naftiko: '0.5'
info:
label: Airtable Innovation Pipeline Lookup
description: Retrieves product innovation pipeline entries from Airtable.
tags:
- product
- airtable
capability:
exposes:
- type: mcp
namespace: airtable-innovation
port: 8080
tools:
- name: get-data
description: Retrieves product innovation pipeline entries from Airtable.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: airtable-innovation.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: airtable-innovation
baseUri: https://api.airtable.com/v0/appKellanova
authentication:
type: bearer
token: $secrets.airtable_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Creates market record in Salesforce, validates compliance in Airtable, generates localized packaging in Figma, and notifies via Microsoft Teams.
naftiko: '0.5'
info:
label: New Market Entry Pipeline
description: Creates market record in Salesforce, validates compliance in Airtable, generates localized packaging in Figma, and notifies via Microsoft Teams.
tags:
- expansion
- salesforce
- airtable
- figma
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: new-market-entry-pipeline
port: 8080
tools:
- name: execute
description: Creates market record in Salesforce, validates compliance in Airtable, generates localized packaging in Figma, and notifies via Microsoft Teams.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: salesforce.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: airtable.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: figma.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: microsoft-teams.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://api.salesforce.com/v1
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: airtable
baseUri: https://api.airtable.com/v1
authentication:
type: bearer
token: $secrets.airtable_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: figma
baseUri: https://api.figma.com/v1
authentication:
type: bearer
token: $secrets.figma_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: microsoft-teams
baseUri: https://api.microsoftteams.com/v1
authentication:
type: bearer
token: $secrets.microsoft_teams_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Looks up an employee in Workday by employee ID and returns name, department, title, and contact information.
naftiko: '0.5'
info:
label: Workday Employee Directory Lookup
description: Looks up an employee in Workday by employee ID and returns name, department, title, and contact information.
tags:
- hr
- workday
capability:
exposes:
- type: mcp
namespace: hr-directory
port: 8080
tools:
- name: get-employee
description: Look up an employee by Workday worker ID.
inputParameters:
- name: employee_id
in: body
type: string
description: The Workday worker ID.
call: workday.get-worker
with:
worker_id: '{{employee_id}}'
outputParameters:
- name: full_name
type: string
mapping: $.worker.descriptor
- name: department
type: string
mapping: $.worker.primarySupervisoryOrganization.descriptor
- name: title
type: string
mapping: $.worker.businessTitle
- name: email
type: string
mapping: $.worker.primaryWorkEmail
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
Searches Google Drive for product recipe and formulation documents by keyword.
naftiko: '0.5'
info:
label: Google Drive Recipe Document Search
description: Searches Google Drive for product recipe and formulation documents by keyword.
tags:
- product-development
- google-drive
capability:
exposes:
- type: mcp
namespace: recipe-management
port: 8080
tools:
- name: search-recipes
description: Search Google Drive for recipe and formulation documents.
inputParameters:
- name: keyword
in: body
type: string
description: The search keyword.
call: google-drive.search-files
with:
query: name contains '{{keyword}}' and '{{folder_id}}' in parents
outputParameters:
- name: files
type: string
mapping: $.files
consumes:
- type: http
namespace: google-drive
baseUri: https://www.googleapis.com/drive/v3
authentication:
type: bearer
token: $secrets.google_drive_token
resources:
- name: files
path: /files?q={{query}}
inputParameters:
- name: query
in: query
operations:
- name: search-files
method: GET
Retrieves production system health metrics from New Relic.
naftiko: '0.5'
info:
label: New Relic Production Health Lookup
description: Retrieves production system health metrics from New Relic.
tags:
- monitoring
- new-relic
capability:
exposes:
- type: mcp
namespace: newrelic-prod
port: 8080
tools:
- name: get-data
description: Retrieves production system health metrics from New Relic.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: newrelic-prod.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: newrelic-prod
baseUri: https://api.newrelic.com/v2
authentication:
type: bearer
token: $secrets.newrelic_api_key
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Pulls sales data from SAP BW, runs demand forecasting in Azure Databricks, updates inventory plans in SAP, and notifies the supply chain team via Microsoft Teams.
naftiko: '0.5'
info:
label: Demand Forecast Pipeline
description: Pulls sales data from SAP BW, runs demand forecasting in Azure Databricks, updates inventory plans in SAP, and notifies the supply chain team via Microsoft Teams.
tags:
- supply-chain
- forecasting
- sap-bw
- azure-databricks
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: demand-planning
port: 8080
tools:
- name: run-demand-forecast
description: Given a product category and time horizon, generate demand forecasts and update inventory plans.
inputParameters:
- name: product_category
in: body
type: string
description: The product category (e.g., snacks, cereals, frozen).
- name: forecast_horizon_weeks
in: body
type: string
description: The forecast horizon in weeks.
- name: region
in: body
type: string
description: The geographic region for the forecast.
steps:
- name: extract-sales
type: call
call: sapbw.get-sales-data
with:
category: '{{product_category}}'
region: '{{region}}'
weeks: '{{forecast_horizon_weeks}}'
- name: run-forecast
type: call
call: databricks.run-query
with:
query: SELECT * FROM demand_forecast('{{product_category}}', '{{region}}', {{forecast_horizon_weeks}})
- name: update-inventory
type: call
call: sap.update-inventory-plan
with:
category: '{{product_category}}'
region: '{{region}}'
forecast: '{{run-forecast.results}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: supply-chain-planning
text: 'Demand forecast updated for {{product_category}} in {{region}} ({{forecast_horizon_weeks}}w horizon). Projected demand: {{run-forecast.total_units}}. Inventory plans updated.'
consumes:
- type: http
namespace: sapbw
baseUri: https://kellanova-bw.sap.com/sap/opu/odata/sap/BW_SALES_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: sales-data
path: /SalesHistory?$filter=Category eq '{{category}}' and Region eq '{{region}}'
inputParameters:
- name: category
in: query
- name: region
in: query
operations:
- name: get-sales-data
method: GET
- type: http
namespace: databricks
baseUri: https://kellanova-analytics.azuredatabricks.net/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: sql-queries
path: /sql/statements
operations:
- name: run-query
method: POST
- type: http
namespace: sap
baseUri: https://kellanova-s4.sap.com/sap/opu/odata/sap/INVENTORY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: inventory-plans
path: /InventoryPlans
operations:
- name: update-inventory-plan
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: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves Power BI manufacturing performance dashboard refresh status.
naftiko: '0.5'
info:
label: Power BI Manufacturing Dashboard
description: Retrieves Power BI manufacturing performance dashboard refresh status.
tags:
- analytics
- power-bi
capability:
exposes:
- type: mcp
namespace: powerbi-mfg
port: 8080
tools:
- name: get-data
description: Retrieves Power BI manufacturing performance dashboard refresh status.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: powerbi-mfg.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: powerbi-mfg
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Retrieves the status of a DocuSign supplier agreement envelope.
naftiko: '0.5'
info:
label: DocuSign Supplier Agreement Lookup
description: Retrieves the status of a DocuSign supplier agreement envelope.
tags:
- legal
- docusign
capability:
exposes:
- type: mcp
namespace: docusign-agreements
port: 8080
tools:
- name: get-data
description: Retrieves the status of a DocuSign supplier agreement envelope.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: docusign-agreements.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: docusign-agreements
baseUri: https://na4.docusign.net/restapi/v2.1/accounts/kellanova
authentication:
type: bearer
token: $secrets.docusign_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Schedules changeover in SAP, creates maintenance ticket in ServiceNow, notifies plant team via Slack, and updates Google Sheets tracker.
naftiko: '0.5'
info:
label: Production Line Changeover Pipeline
description: Schedules changeover in SAP, creates maintenance ticket in ServiceNow, notifies plant team via Slack, and updates Google Sheets tracker.
tags:
- manufacturing
- sap
- servicenow
- slack
- google-sheets
capability:
exposes:
- type: mcp
namespace: production-line-changeover-pipeline
port: 8080
tools:
- name: execute
description: Schedules changeover in SAP, creates maintenance ticket in ServiceNow, notifies plant team via Slack, and updates Google Sheets tracker.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: servicenow.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: slack.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: google-sheets.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: servicenow
baseUri: https://api.servicenow.com/v1
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: https://api.slack.com/v1
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: https://api.googlesheets.com/v1
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Tracks shipments in SAP, aggregates in Snowflake, refreshes Tableau dashboards, and alerts logistics via Slack.
naftiko: '0.5'
info:
label: Supply Chain Visibility Pipeline
description: Tracks shipments in SAP, aggregates in Snowflake, refreshes Tableau dashboards, and alerts logistics via Slack.
tags:
- logistics
- sap
- snowflake
- tableau
- slack
capability:
exposes:
- type: mcp
namespace: supply-chain-visibility-pipeline
port: 8080
tools:
- name: execute
description: Tracks shipments in SAP, aggregates in Snowflake, refreshes Tableau dashboards, and alerts logistics via Slack.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: snowflake.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: tableau.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: slack.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: https://api.snowflake.com/v1
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: tableau
baseUri: https://api.tableau.com/v1
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: https://api.slack.com/v1
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Sends a message to a Slack supply chain operations channel.
naftiko: '0.5'
info:
label: Slack Supply Chain Message Sender
description: Sends a message to a Slack supply chain operations channel.
tags:
- communications
- slack
capability:
exposes:
- type: mcp
namespace: slack-supplychain
port: 8080
tools:
- name: get-data
description: Sends a message to a Slack supply chain operations channel.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: slack-supplychain.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: slack-supplychain
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Detects issues via Dynatrace, creates Jira tickets, alerts team via Slack, and triggers Azure DevOps patches.
naftiko: '0.5'
info:
label: Security Vulnerability Pipeline
description: Detects issues via Dynatrace, creates Jira tickets, alerts team via Slack, and triggers Azure DevOps patches.
tags:
- security
- dynatrace
- jira
- slack
- azure-devops
capability:
exposes:
- type: mcp
namespace: security-vulnerability-pipeline
port: 8080
tools:
- name: execute
description: Detects issues via Dynatrace, creates Jira tickets, alerts team via Slack, and triggers Azure DevOps patches.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: dynatrace.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: jira.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: slack.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: azure-devops.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: dynatrace
baseUri: https://api.dynatrace.com/v1
authentication:
type: bearer
token: $secrets.dynatrace_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: jira
baseUri: https://api.jira.com/v1
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: https://api.slack.com/v1
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: azure-devops
baseUri: https://api.azuredevops.com/v1
authentication:
type: bearer
token: $secrets.azure_devops_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Creates campaign in HubSpot, schedules posts on Instagram and Facebook, tracks in Google Analytics, and reports via Google Sheets.
naftiko: '0.5'
info:
label: Social Media Campaign Pipeline
description: Creates campaign in HubSpot, schedules posts on Instagram and Facebook, tracks in Google Analytics, and reports via Google Sheets.
tags:
- social-media
- hubspot
- instagram
- facebook
- google-analytics
- google-sheets
capability:
exposes:
- type: mcp
namespace: social-media-campaign-pipeline
port: 8080
tools:
- name: execute
description: Creates campaign in HubSpot, schedules posts on Instagram and Facebook, tracks in Google Analytics, and reports via Google Sheets.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: hubspot.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: instagram.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: facebook.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: google-sheets.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: hubspot
baseUri: https://api.hubspot.com/v1
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: instagram
baseUri: https://api.instagram.com/v1
authentication:
type: bearer
token: $secrets.instagram_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: facebook
baseUri: https://api.facebook.com/v1
authentication:
type: bearer
token: $secrets.facebook_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-analytics
baseUri: https://api.googleanalytics.com/v1
authentication:
type: bearer
token: $secrets.google_analytics_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: https://api.googlesheets.com/v1
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Updates pricing in SAP, syncs to retailers via Salesforce, logs in Snowflake, and notifies sales via Microsoft Teams.
naftiko: '0.5'
info:
label: Global Pricing Update Pipeline
description: Updates pricing in SAP, syncs to retailers via Salesforce, logs in Snowflake, and notifies sales via Microsoft Teams.
tags:
- pricing
- sap
- salesforce
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: global-pricing-update-pipeline
port: 8080
tools:
- name: execute
description: Updates pricing in SAP, syncs to retailers via Salesforce, logs in Snowflake, and notifies sales via Microsoft Teams.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: salesforce.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: snowflake.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: microsoft-teams.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: salesforce
baseUri: https://api.salesforce.com/v1
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: https://api.snowflake.com/v1
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: microsoft-teams
baseUri: https://api.microsoftteams.com/v1
authentication:
type: bearer
token: $secrets.microsoft_teams_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Generates nutritional labels from SAP recipe data, validates against regulatory database, uploads to SharePoint, and notifies compliance team via Microsoft Teams.
naftiko: '0.5'
info:
label: Nutritional Labeling Pipeline
description: Generates nutritional labels from SAP recipe data, validates against regulatory database, uploads to SharePoint, and notifies compliance team via Microsoft Teams.
tags:
- compliance
- sap
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: nutritional-labeling
port: 8080
tools:
- name: execute
description: Orchestrate nutritional labeling across SAP, SharePoint, and Microsoft Teams.
inputParameters:
- name: input_id
in: body
type: string
description: The product ID.
- name: context
in: body
type: string
description: Additional context.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: sharepoint.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: microsoft-teams.execute-step-3
with:
data: '{{step-2.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: sharepoint
baseUri: https://api.sharepoint.com/v1
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: microsoft-teams
baseUri: https://api.microsoftteams.com/v1
authentication:
type: bearer
token: $secrets.microsoft_teams_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Analyzes warehouse utilization data from SAP, runs optimization in Azure Databricks, updates slot assignments in SAP, and notifies the warehouse team via Microsoft Teams.
naftiko: '0.5'
info:
label: Warehouse Slot Optimization Pipeline
description: Analyzes warehouse utilization data from SAP, runs optimization in Azure Databricks, updates slot assignments in SAP, and notifies the warehouse team via Microsoft Teams.
tags:
- distribution
- warehouse
- sap
- azure-databricks
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: warehouse-optimization
port: 8080
tools:
- name: optimize-warehouse-slots
description: Given a warehouse code, analyze utilization, run optimization, and update slot assignments.
inputParameters:
- name: warehouse_code
in: body
type: string
description: The SAP warehouse code.
steps:
- name: get-utilization
type: call
call: sap.get-warehouse-data
with:
warehouse: '{{warehouse_code}}'
- name: run-optimization
type: call
call: databricks.run-query
with:
query: SELECT * FROM warehouse_optimization('{{warehouse_code}}')
- name: update-slots
type: call
call: sap.update-slot-assignments
with:
warehouse: '{{warehouse_code}}'
assignments: '{{run-optimization.results}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: warehouse-ops
text: Slot optimization complete for warehouse {{warehouse_code}}. {{run-optimization.moves_count}} moves recommended. Utilization improved from {{get-utilization.current_pct}}% to {{run-optimization.projected_pct}}%.
consumes:
- type: http
namespace: sap
baseUri: https://kellanova-s4.sap.com/sap/opu/odata/sap/WM_WAREHOUSE_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: warehouse
path: /WarehouseData('{{warehouse}}')
inputParameters:
- name: warehouse
in: path
operations:
- name: get-warehouse-data
method: GET
- name: slots
path: /SlotAssignments
operations:
- name: update-slot-assignments
method: POST
- type: http
namespace: databricks
baseUri: https://kellanova-analytics.azuredatabricks.net/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: sql-queries
path: /sql/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: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Triggers SAP period close, generates Power BI reports, archives in Box, and notifies leadership via Microsoft Teams.
naftiko: '0.5'
info:
label: Financial Close Pipeline
description: Triggers SAP period close, generates Power BI reports, archives in Box, and notifies leadership via Microsoft Teams.
tags:
- finance
- sap
- power-bi
- box
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: financial-close-pipeline
port: 8080
tools:
- name: execute
description: Triggers SAP period close, generates Power BI reports, archives in Box, and notifies leadership via Microsoft Teams.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: power-bi.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: box.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: microsoft-teams.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: power-bi
baseUri: https://api.powerbi.com/v1
authentication:
type: bearer
token: $secrets.power_bi_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: box
baseUri: https://api.box.com/v1
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: microsoft-teams
baseUri: https://api.microsoftteams.com/v1
authentication:
type: bearer
token: $secrets.microsoft_teams_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Retrieves a Stripe payment for Kellanova direct-to-consumer orders.
naftiko: '0.5'
info:
label: Stripe E-Commerce Payment Lookup
description: Retrieves a Stripe payment for Kellanova direct-to-consumer orders.
tags:
- payments
- stripe
capability:
exposes:
- type: mcp
namespace: stripe-payments
port: 8080
tools:
- name: get-data
description: Retrieves a Stripe payment for Kellanova direct-to-consumer orders.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: stripe-payments.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: stripe-payments
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Searches Google Drive for brand guidelines and creative assets.
naftiko: '0.5'
info:
label: Google Drive Brand Asset Search
description: Searches Google Drive for brand guidelines and creative assets.
tags:
- marketing
- google-drive
capability:
exposes:
- type: mcp
namespace: brand-assets
port: 8080
tools:
- name: search-brand-assets
description: Search Google Drive for brand assets.
inputParameters:
- name: keyword
in: body
type: string
description: The search keyword.
call: google-drive.search-files
with:
query: name contains '{{keyword}}'
outputParameters:
- name: files
type: string
mapping: $.files
consumes:
- type: http
namespace: google-drive
baseUri: https://www.googleapis.com/drive/v3
authentication:
type: bearer
token: $secrets.google_drive_token
resources:
- name: files
path: /files?q={{query}}
inputParameters:
- name: query
in: query
operations:
- name: search-files
method: GET
Collects energy data from SAP, analyzes in Snowflake, updates dashboards in Power BI, and alerts operations via Slack.
naftiko: '0.5'
info:
label: Plant Energy Monitoring Pipeline
description: Collects energy data from SAP, analyzes in Snowflake, updates dashboards in Power BI, and alerts operations via Slack.
tags:
- operations
- sap
- snowflake
- power-bi
- slack
capability:
exposes:
- type: mcp
namespace: plant-energy-monitoring-pipeline
port: 8080
tools:
- name: execute
description: Collects energy data from SAP, analyzes in Snowflake, updates dashboards in Power BI, and alerts operations via Slack.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: snowflake.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: power-bi.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: slack.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: https://api.snowflake.com/v1
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: power-bi
baseUri: https://api.powerbi.com/v1
authentication:
type: bearer
token: $secrets.power_bi_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: https://api.slack.com/v1
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
When a shipment is ready, creates a transport order in SAP, updates the delivery status in Salesforce, and notifies the logistics team via Microsoft Teams.
naftiko: '0.5'
info:
label: Transportation Logistics Orchestrator
description: When a shipment is ready, creates a transport order in SAP, updates the delivery status in Salesforce, and notifies the logistics team via Microsoft Teams.
tags:
- distribution
- logistics
- sap
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: logistics
port: 8080
tools:
- name: process-shipment
description: Given shipment details, create transport order, update delivery tracking, and notify logistics.
inputParameters:
- name: delivery_number
in: body
type: string
description: The SAP delivery number.
- name: destination
in: body
type: string
description: The delivery destination.
- name: carrier
in: body
type: string
description: The carrier name.
steps:
- name: create-transport
type: call
call: sap.create-transport-order
with:
delivery_number: '{{delivery_number}}'
destination: '{{destination}}'
carrier: '{{carrier}}'
- name: update-salesforce
type: call
call: salesforce.update-delivery
with:
delivery_number: '{{delivery_number}}'
transport_id: '{{create-transport.transport_id}}'
status: in_transit
- name: notify-logistics
type: call
call: msteams.send-message
with:
channel_id: logistics
text: 'Shipment {{delivery_number}} dispatched via {{carrier}} to {{destination}}. Transport order: {{create-transport.transport_id}}.'
consumes:
- type: http
namespace: sap
baseUri: https://kellanova-s4.sap.com/sap/opu/odata/sap/TM_TRANSPORT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: transport-orders
path: /TransportOrders
operations:
- name: create-transport-order
method: POST
- type: http
namespace: salesforce
baseUri: https://kellanova.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: deliveries
path: /sobjects/Delivery__c/{{delivery_number}}
inputParameters:
- name: delivery_number
in: path
operations:
- name: update-delivery
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: channel_id
in: path
operations:
- name: send-message
method: POST
Analyzes supplier data from SAP, models costs in Snowflake, updates procurement, and reports via Google Sheets.
naftiko: '0.5'
info:
label: Ingredient Sourcing Optimization Pipeline
description: Analyzes supplier data from SAP, models costs in Snowflake, updates procurement, and reports via Google Sheets.
tags:
- sourcing
- sap
- snowflake
- google-sheets
capability:
exposes:
- type: mcp
namespace: ingredient-sourcing-optimization-pipeline
port: 8080
tools:
- name: execute
description: Analyzes supplier data from SAP, models costs in Snowflake, updates procurement, and reports via Google Sheets.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: snowflake.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: google-sheets.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: google-sheets.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: https://api.snowflake.com/v1
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: https://api.googlesheets.com/v1
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Creates a brand content post on LinkedIn for Kellanova's corporate page and logs it in Salesforce for tracking.
naftiko: '0.5'
info:
label: LinkedIn Brand Content Post
description: Creates a brand content post on LinkedIn for Kellanova's corporate page and logs it in Salesforce for tracking.
tags:
- marketing
- social-media
- linkedin
- salesforce
capability:
exposes:
- type: mcp
namespace: social-content
port: 8080
tools:
- name: post-brand-content
description: Given content details, create a LinkedIn post and log it in Salesforce.
inputParameters:
- name: content_text
in: body
type: string
description: The post content text.
- name: campaign_id
in: body
type: string
description: The associated Salesforce campaign ID.
steps:
- name: create-post
type: call
call: linkedin.create-post
with:
text: '{{content_text}}'
- name: log-post
type: call
call: salesforce.create-activity
with:
campaign_id: '{{campaign_id}}'
type: social_post
platform: linkedin
post_id: '{{create-post.post_id}}'
consumes:
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: posts
path: /ugcPosts
operations:
- name: create-post
method: POST
- type: http
namespace: salesforce
baseUri: https://kellanova.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: activities
path: /sobjects/CampaignActivity__c
operations:
- name: create-activity
method: POST
When a vendor invoice arrives, validates against the SAP purchase order, routes for approval in Workday, and notifies accounts payable via Microsoft Teams.
naftiko: '0.5'
info:
label: Vendor Invoice Processing Pipeline
description: When a vendor invoice arrives, validates against the SAP purchase order, routes for approval in Workday, and notifies accounts payable via Microsoft Teams.
tags:
- finance
- accounts-payable
- sap
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: invoice-processing
port: 8080
tools:
- name: process-invoice
description: Given an invoice and PO number, validate, route for approval, and notify AP.
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.
- name: amount
in: body
type: string
description: The invoice amount.
- name: approver_id
in: body
type: string
description: The Workday approver employee ID.
steps:
- name: validate-po
type: call
call: sap.get-po
with:
po_number: '{{po_number}}'
- name: route-approval
type: call
call: workday.submit-approval
with:
approver_id: '{{approver_id}}'
amount: '{{amount}}'
description: Invoice {{invoice_number}} for PO {{po_number}}
- name: notify-ap
type: call
call: msteams.send-message
with:
channel_id: accounts-payable
text: 'Invoice {{invoice_number}} processed for PO {{po_number}}. Amount: ${{amount}}. Vendor: {{validate-po.Supplier.CompanyName}}. Approval routed to {{approver_id}}.'
consumes:
- type: http
namespace: sap
baseUri: https://kellanova-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: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: approvals
path: /approvals
operations:
- name: submit-approval
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: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves financial data from SAP BW and generates a formatted Excel report stored in SharePoint.
naftiko: '0.5'
info:
label: Microsoft Excel Financial Report
description: Retrieves financial data from SAP BW and generates a formatted Excel report stored in SharePoint.
tags:
- finance
- reporting
- sap-bw
- sharepoint
capability:
exposes:
- type: mcp
namespace: financial-reporting
port: 8080
tools:
- name: generate-financial-report
description: Given a report type and period, pull data from SAP BW and create an Excel report in SharePoint.
inputParameters:
- name: report_type
in: body
type: string
description: The report type (e.g., p-and-l, balance-sheet, cost-center).
- name: period
in: body
type: string
description: The fiscal period.
steps:
- name: extract-data
type: call
call: sapbw.get-financial-data
with:
report_type: '{{report_type}}'
period: '{{period}}'
- name: upload-report
type: call
call: sharepoint.upload-file
with:
site_id: finance-reports
folder_path: FinancialReports/{{report_type}}
file_name: '{{report_type}}_{{period}}.xlsx'
content: '{{extract-data.results}}'
consumes:
- type: http
namespace: sapbw
baseUri: https://kellanova-bw.sap.com/sap/opu/odata/sap/BW_FINANCE_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: financial-data
path: /FinancialData?$filter=ReportType eq '{{report_type}}' and Period eq '{{period}}'
inputParameters:
- name: report_type
in: query
- name: period
in: query
operations:
- name: get-financial-data
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}}/{{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
Pulls campaign data from Google Analytics, enriches with retail sales from Circana, creates a performance report in Power BI, and shares results with the marketing team via Microsoft Teams.
naftiko: '0.5'
info:
label: Marketing Campaign Performance Pipeline
description: Pulls campaign data from Google Analytics, enriches with retail sales from Circana, creates a performance report in Power BI, and shares results with the marketing team via Microsoft Teams.
tags:
- marketing
- analytics
- google-analytics
- circana
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: marketing-analytics
port: 8080
tools:
- name: analyze-campaign
description: Given a campaign ID, pull digital and retail data, refresh the dashboard, and notify the marketing team.
inputParameters:
- name: campaign_id
in: body
type: string
description: The marketing campaign identifier.
- name: start_date
in: body
type: string
description: Campaign start date in YYYY-MM-DD format.
- name: end_date
in: body
type: string
description: Campaign end date in YYYY-MM-DD format.
steps:
- name: get-digital-metrics
type: call
call: google-analytics.get-report
with:
property_id: kellanova-brand-site
campaign_id: '{{campaign_id}}'
start_date: '{{start_date}}'
end_date: '{{end_date}}'
- name: get-retail-lift
type: call
call: circana.get-sales-lift
with:
campaign_id: '{{campaign_id}}'
period: '{{start_date}}_{{end_date}}'
- name: refresh-dashboard
type: call
call: powerbi.refresh-dataset
with:
dataset_id: marketing-campaign-performance
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: marketing
text: 'Campaign {{campaign_id}} performance: Digital impressions: {{get-digital-metrics.impressions}}. Retail lift: {{get-retail-lift.lift_percent}}%. Dashboard refreshed.'
consumes:
- type: http
namespace: google-analytics
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: get-report
method: POST
- type: http
namespace: circana
baseUri: https://api.circana.com/v1
authentication:
type: bearer
token: $secrets.circana_token
resources:
- name: sales-lift
path: /campaigns/{{campaign_id}}/lift
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-sales-lift
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/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a new packaging design is submitted, stores it in SharePoint, creates a review task in Jira, and notifies the team via Microsoft Teams.
naftiko: '0.5'
info:
label: Packaging Design Review Pipeline
description: When a new packaging design is submitted, stores it in SharePoint, creates a review task in Jira, and notifies the team via Microsoft Teams.
tags:
- product-development
- packaging
- sharepoint
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: packaging-design
port: 8080
tools:
- name: submit-design-review
description: Given packaging design details, store the design, create a review task, and notify.
inputParameters:
- name: product_name
in: body
type: string
description: The product name.
- name: design_version
in: body
type: string
description: The design version.
steps:
- name: store-design
type: call
call: sharepoint.upload-file
with:
site_id: packaging-designs
folder_path: Designs/{{product_name}}/{{design_version}}
file_name: packaging_{{design_version}}.pdf
- name: create-review
type: call
call: jira.create-issue
with:
project: PKG
summary: 'Packaging review: {{product_name}} v{{design_version}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: packaging-design
text: 'New packaging design for review: {{product_name}} v{{design_version}}. Jira: {{create-review.key}}.'
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:/{{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
- type: http
namespace: jira
baseUri: https://kellanova.atlassian.net/rest/api/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: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves product launch project status from Asana.
naftiko: '0.5'
info:
label: Asana Product Launch Lookup
description: Retrieves product launch project status from Asana.
tags:
- project-management
- asana
capability:
exposes:
- type: mcp
namespace: asana-launches
port: 8080
tools:
- name: get-data
description: Retrieves product launch project status from Asana.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: asana-launches.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: asana-launches
baseUri: https://app.asana.com/api/1.0
authentication:
type: bearer
token: $secrets.asana_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Creates vendor in SAP, generates contract via DocuSign, sets up folder in Box, and sends welcome via Microsoft Outlook.
naftiko: '0.5'
info:
label: Supplier Onboarding Pipeline
description: Creates vendor in SAP, generates contract via DocuSign, sets up folder in Box, and sends welcome via Microsoft Outlook.
tags:
- procurement
- sap
- docusign
- box
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: supplier-onboarding-pipeline
port: 8080
tools:
- name: execute
description: Creates vendor in SAP, generates contract via DocuSign, sets up folder in Box, and sends welcome via Microsoft Outlook.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: docusign.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: box.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: microsoft-outlook.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: docusign
baseUri: https://api.docusign.com/v1
authentication:
type: bearer
token: $secrets.docusign_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: box
baseUri: https://api.box.com/v1
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: microsoft-outlook
baseUri: https://api.microsoftoutlook.com/v1
authentication:
type: bearer
token: $secrets.microsoft_outlook_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Retrieves a Tableau dashboard embed URL for retail sales analytics.
naftiko: '0.5'
info:
label: Tableau Retail Analytics Dashboard
description: Retrieves a Tableau dashboard embed URL for retail sales analytics.
tags:
- analytics
- tableau
capability:
exposes:
- type: mcp
namespace: retail-analytics
port: 8080
tools:
- name: get-retail-dashboard
description: Retrieve the embed URL for a Tableau retail analytics dashboard.
inputParameters:
- name: workbook_name
in: body
type: string
description: The Tableau workbook name.
call: tableau.get-workbook
with:
workbook_name: '{{workbook_name}}'
outputParameters:
- name: embed_url
type: string
mapping: $.workbook.contentUrl
- name: updated_at
type: string
mapping: $.workbook.updatedAt
consumes:
- type: http
namespace: tableau
baseUri: https://kellanova-tableau.online/api/3.14
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: workbooks
path: /sites/{{site_id}}/workbooks?filter=name:eq:{{workbook_name}}
inputParameters:
- name: workbook_name
in: query
operations:
- name: get-workbook
method: GET
Escalates Zendesk ticket, creates Jira follow-up, notifies quality team via Slack, and logs in Snowflake.
naftiko: '0.5'
info:
label: Consumer Complaint Resolution Orchestrator
description: Escalates Zendesk ticket, creates Jira follow-up, notifies quality team via Slack, and logs in Snowflake.
tags:
- quality
- zendesk
- jira
- slack
- snowflake
capability:
exposes:
- type: mcp
namespace: consumer-complaint-resolution-orchestrator
port: 8080
tools:
- name: execute
description: Escalates Zendesk ticket, creates Jira follow-up, notifies quality team via Slack, and logs in Snowflake.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: zendesk.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: jira.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: slack.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: snowflake.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: zendesk
baseUri: https://api.zendesk.com/v1
authentication:
type: bearer
token: $secrets.zendesk_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: jira
baseUri: https://api.jira.com/v1
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: https://api.slack.com/v1
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: https://api.snowflake.com/v1
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Retrieves a Jira issue by key from the product development project, returning summary, status, assignee, and sprint.
naftiko: '0.5'
info:
label: Jira Product Development Task Lookup
description: Retrieves a Jira issue by key from the product development project, returning summary, status, assignee, and sprint.
tags:
- product-development
- jira
capability:
exposes:
- type: mcp
namespace: product-dev
port: 8080
tools:
- name: get-jira-issue
description: Look up a Jira issue by key from the product development project.
inputParameters:
- name: issue_key
in: body
type: string
description: The Jira issue key.
call: jira.get-issue
with:
issue_key: '{{issue_key}}'
outputParameters:
- name: summary
type: string
mapping: $.fields.summary
- name: status
type: string
mapping: $.fields.status.name
- name: assignee
type: string
mapping: $.fields.assignee.displayName
consumes:
- type: http
namespace: jira
baseUri: https://kellanova.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
Deactivates Workday profile, revokes Azure AD access, creates ServiceNow ticket, and archives in Box.
naftiko: '0.5'
info:
label: Employee Offboarding Pipeline
description: Deactivates Workday profile, revokes Azure AD access, creates ServiceNow ticket, and archives in Box.
tags:
- hr
- workday
- azure-active-directory
- servicenow
- box
capability:
exposes:
- type: mcp
namespace: employee-offboarding-pipeline
port: 8080
tools:
- name: execute
description: Deactivates Workday profile, revokes Azure AD access, creates ServiceNow ticket, and archives in Box.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: workday.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: azure-active-directory.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: servicenow.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: box.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: workday
baseUri: https://api.workday.com/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: azure-active-directory
baseUri: https://api.azureactivedirectory.com/v1
authentication:
type: bearer
token: $secrets.azure_active_directory_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: servicenow
baseUri: https://api.servicenow.com/v1
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: box
baseUri: https://api.box.com/v1
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Monitors product shelf life in SAP, alerts distribution teams via Slack, updates retailer notifications in Salesforce, and logs expiring inventory in Snowflake.
naftiko: '0.5'
info:
label: Shelf Life Monitoring Pipeline
description: Monitors product shelf life in SAP, alerts distribution teams via Slack, updates retailer notifications in Salesforce, and logs expiring inventory in Snowflake.
tags:
- quality
- sap
- slack
- salesforce
- snowflake
capability:
exposes:
- type: mcp
namespace: shelf-life-monitoring
port: 8080
tools:
- name: execute
description: Orchestrate shelf life monitoring across SAP, Slack, Salesforce, and Snowflake.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: slack.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: salesforce.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: snowflake.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: https://api.slack.com/v1
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: salesforce
baseUri: https://api.salesforce.com/v1
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: https://api.snowflake.com/v1
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Places quality hold in SAP, creates ServiceNow incident, notifies quality team via Slack, and logs in Snowflake.
naftiko: '0.5'
info:
label: Batch Quality Hold Pipeline
description: Places quality hold in SAP, creates ServiceNow incident, notifies quality team via Slack, and logs in Snowflake.
tags:
- quality
- sap
- servicenow
- slack
- snowflake
capability:
exposes:
- type: mcp
namespace: batch-quality-hold-pipeline
port: 8080
tools:
- name: execute
description: Places quality hold in SAP, creates ServiceNow incident, notifies quality team via Slack, and logs in Snowflake.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: servicenow.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: slack.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: snowflake.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: servicenow
baseUri: https://api.servicenow.com/v1
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: https://api.slack.com/v1
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: https://api.snowflake.com/v1
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Queries SAP S/4HANA for current inventory levels across Kimberly-Clark's distribution centers and generates a Snowflake-backed analytics summary for supply chain planning.
naftiko: '0.5'
info:
label: Supply Chain Inventory Snapshot
description: Queries SAP S/4HANA for current inventory levels across Kimberly-Clark's distribution centers and generates a Snowflake-backed analytics summary for supply chain planning.
tags:
- supply-chain
- inventory
- sap
- snowflake
- analytics
capability:
exposes:
- type: mcp
namespace: supply-chain-ops
port: 8080
tools:
- name: get-inventory-snapshot
description: Pull current inventory levels by material and plant from SAP S/4HANA, then write a snapshot to Snowflake for supply chain analytics. Use for daily inventory monitoring and replenishment planning.
inputParameters:
- name: plant_code
in: body
type: string
description: The SAP plant code to query inventory for, e.g. KC01.
steps:
- name: get-inventory
type: call
call: sap.get-inventory
with:
plant: '{{plant_code}}'
- name: write-snapshot
type: call
call: snowflake.insert-snapshot
with:
plant: '{{plant_code}}'
data: '{{get-inventory.results}}'
consumes:
- type: http
namespace: sap
baseUri: https://kimberly-clark-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
operations:
- name: get-inventory
method: GET
- type: http
namespace: snowflake
baseUri: https://kimberly-clark.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: insert-snapshot
method: POST
When an employee's role changes in Workday, updates their Okta group memberships and access profile to match the new role's permissions.
naftiko: '0.5'
info:
label: Okta Access Provisioning for New Role
description: When an employee's role changes in Workday, updates their Okta group memberships and access profile to match the new role's permissions.
tags:
- identity
- security
- hr
- okta
- workday
- access-management
capability:
exposes:
- type: mcp
namespace: identity-ops
port: 8080
tools:
- name: sync-role-access
description: Given a Workday employee ID and their new job profile, update the employee's Okta group memberships to match the new role's access entitlements. Invoke on role change events from Workday.
inputParameters:
- name: employee_id
in: body
type: string
description: The Workday worker ID of the employee whose role has changed.
- name: new_role
in: body
type: string
description: The new job profile or role name as defined in Workday.
steps:
- name: get-worker
type: call
call: workday.get-worker
with:
worker_id: '{{employee_id}}'
- name: get-okta-user
type: call
call: okta.get-user
with:
login: '{{get-worker.work_email}}'
- name: update-groups
type: call
call: okta.update-user-groups
with:
user_id: '{{get-okta-user.id}}'
profile: '{{new_role}}'
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: /kimberly-clark/workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: okta
baseUri: https://kimberly-clark.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: users
path: /users/{{login}}
inputParameters:
- name: login
in: path
operations:
- name: get-user
method: GET
- name: user-groups
path: /users/{{user_id}}/groups
inputParameters:
- name: user_id
in: path
operations:
- name: update-user-groups
method: POST
When Datadog detects a production anomaly alert, creates a ServiceNow incident, assigns the on-call engineer, and posts a triage message to the ops Teams channel.
naftiko: '0.5'
info:
label: Datadog Production Anomaly Response
description: When Datadog detects a production anomaly alert, creates a ServiceNow incident, assigns the on-call engineer, and posts a triage message to the ops Teams channel.
tags:
- observability
- monitoring
- datadog
- servicenow
- microsoft-teams
- incident-response
capability:
exposes:
- type: mcp
namespace: observability-ops
port: 8080
tools:
- name: handle-datadog-anomaly
description: Given a Datadog alert ID and monitor name, retrieve alert details, create a ServiceNow incident, and post a triage message to the operations Teams channel. Invoke when Datadog fires a production anomaly alert.
inputParameters:
- name: alert_id
in: body
type: string
description: The Datadog alert or event ID.
- name: monitor_name
in: body
type: string
description: The name of the Datadog monitor that fired.
steps:
- name: get-alert
type: call
call: datadog.get-alert
with:
alert_id: '{{alert_id}}'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Datadog anomaly: {{monitor_name}}'
category: production_monitoring
priority: '2'
- name: post-triage
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.teams_it_ops_channel_id
text: 'Datadog anomaly detected: {{monitor_name}} | SNOW: {{create-incident.number}} | Alert: {{alert_id}}'
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/{{alert_id}}
inputParameters:
- name: alert_id
in: path
operations:
- name: get-alert
method: GET
- type: http
namespace: servicenow
baseUri: https://kimberly-clark.service-now.com/api/now
authentication:
type: basic
username: $secrets.snow_user
password: $secrets.snow_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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Queries Snowflake's query history to identify long-running or expensive queries, flags policy violations, and posts a governance summary to the data platform Teams channel.
naftiko: '0.5'
info:
label: Snowflake Query Governance Audit
description: Queries Snowflake's query history to identify long-running or expensive queries, flags policy violations, and posts a governance summary to the data platform Teams channel.
tags:
- data
- governance
- snowflake
- analytics
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: data-governance
port: 8080
tools:
- name: audit-query-governance
description: Retrieve Snowflake query history for the last N hours and identify queries exceeding execution time or credit thresholds. Post a governance summary to the data platform Teams channel. Use for daily data platform cost governance.
inputParameters:
- name: hours_back
in: body
type: integer
description: Number of hours of query history to analyze, e.g. 24.
- name: threshold_seconds
in: body
type: integer
description: Query execution time threshold in seconds. Queries exceeding this are flagged.
steps:
- name: get-query-history
type: call
call: snowflake.get-query-history
with:
hours_back: '{{hours_back}}'
threshold_seconds: '{{threshold_seconds}}'
- name: post-report
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.teams_data_channel_id
text: 'Snowflake Query Governance Report (last {{hours_back}}h): {{get-query-history.flagged_count}} queries exceeded {{threshold_seconds}}s threshold.'
consumes:
- type: http
namespace: snowflake
baseUri: https://kimberly-clark.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: query-history
path: /statements
operations:
- name: get-query-history
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Retrieves LinkedIn Campaign Manager performance metrics for Kimberly-Clark brand campaigns and posts a weekly summary to the social media Teams channel.
naftiko: '0.5'
info:
label: LinkedIn Brand Campaign Performance
description: Retrieves LinkedIn Campaign Manager performance metrics for Kimberly-Clark brand campaigns and posts a weekly summary to the social media Teams channel.
tags:
- marketing
- social
- linkedin
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: social-reporting
port: 8080
tools:
- name: digest-linkedin-performance
description: Given a date range, retrieve LinkedIn campaign impressions, clicks, and engagement rates from LinkedIn Campaign Manager and post a performance summary to the social media Teams channel.
inputParameters:
- name: start_date
in: body
type: string
description: Start date for the reporting period in YYYY-MM-DD format.
- name: end_date
in: body
type: string
description: End date for the reporting period in YYYY-MM-DD format.
steps:
- name: get-campaign-stats
type: call
call: linkedin.get-campaign-analytics
with:
start_date: '{{start_date}}'
end_date: '{{end_date}}'
- name: post-digest
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.teams_social_channel_id
text: 'LinkedIn Campaign Digest {{start_date}} - {{end_date}}: {{get-campaign-stats.summary}}'
consumes:
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: ad-analytics
path: /adAnalytics
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Retrieves submitted expense reports from SAP Concur that exceed policy thresholds and flags them in ServiceNow for manager review.
naftiko: '0.5'
info:
label: SAP Concur Expense Report Audit
description: Retrieves submitted expense reports from SAP Concur that exceed policy thresholds and flags them in ServiceNow for manager review.
tags:
- finance
- expense-management
- sap-concur
- servicenow
- audit
capability:
exposes:
- type: mcp
namespace: expense-ops
port: 8080
tools:
- name: audit-expense-reports
description: Retrieve expense reports from SAP Concur that exceed the policy limit and create ServiceNow approval tasks for manager review. Invoke on a nightly schedule or before period close.
inputParameters:
- name: threshold_amount
in: body
type: number
description: The expense amount threshold in USD above which reports require additional review.
- name: submission_date
in: body
type: string
description: Filter expense reports submitted on or after this date in YYYY-MM-DD format.
steps:
- name: get-expense-reports
type: call
call: concur.get-expense-reports
with:
submitDateAfter: '{{submission_date}}'
- name: create-review-task
type: call
call: servicenow.create-approval
with:
short_description: Expense reports exceeding ${{threshold_amount}} require review
category: expense_audit
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
operations:
- name: get-expense-reports
method: GET
- type: http
namespace: servicenow
baseUri: https://kimberly-clark.service-now.com/api/now
authentication:
type: basic
username: $secrets.snow_user
password: $secrets.snow_password
resources:
- name: approvals
path: /table/sysapproval_approver
operations:
- name: create-approval
method: POST
Uses Anthropic Claude to summarize supplier contracts retrieved from SharePoint and stores the structured summary back in SharePoint alongside the original document.
naftiko: '0.5'
info:
label: AI-Assisted Contract Summarization
description: Uses Anthropic Claude to summarize supplier contracts retrieved from SharePoint and stores the structured summary back in SharePoint alongside the original document.
tags:
- ai
- procurement
- anthropic
- sharepoint
- document-management
capability:
exposes:
- type: mcp
namespace: ai-contracts
port: 8080
tools:
- name: summarize-contract
description: Given a SharePoint document URL for a supplier contract, retrieve the document content, send it to Anthropic Claude for structured summarization (key terms, obligations, renewal dates), and write the summary back to SharePoint. Use for contract review and obligation tracking.
inputParameters:
- name: document_url
in: body
type: string
description: The SharePoint document URL for the contract to summarize.
- name: site_id
in: body
type: string
description: The SharePoint site ID where the document is stored.
steps:
- name: get-document
type: call
call: sharepoint.get-document
with:
site_id: '{{site_id}}'
document_url: '{{document_url}}'
- name: summarize
type: call
call: anthropic.create-message
with:
model: claude-opus-4-5
content: 'Summarize this supplier contract, extracting: key obligations, payment terms, renewal date, and termination clauses. Document: {{get-document.content}}'
- name: write-summary
type: call
call: sharepoint.create-file
with:
site_id: '{{site_id}}'
filename: contract-summary.md
content: '{{summarize.text}}'
consumes:
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: documents
path: /sites/{{site_id}}/drive/root/children
inputParameters:
- name: site_id
in: path
operations:
- name: get-document
method: GET
- name: create-file
method: PUT
- 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
When a supplier invoice arrives in SAP Ariba, validates the invoice against a SAP S/4HANA purchase order and routes for approval if there is a discrepancy.
naftiko: '0.5'
info:
label: SAP Invoice Processing and Approval
description: When a supplier invoice arrives in SAP Ariba, validates the invoice against a SAP S/4HANA purchase order and routes for approval if there is a discrepancy.
tags:
- finance
- procurement
- sap
- sap-ariba
- invoice
- approval
capability:
exposes:
- type: mcp
namespace: invoice-ops
port: 8080
tools:
- name: process-invoice
description: Given an Ariba invoice ID, retrieve the invoice details from SAP Ariba, validate against the matching SAP S/4HANA PO, and create an approval task if amounts or quantities do not match.
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.
steps:
- name: get-invoice
type: call
call: ariba.get-invoice
with:
invoice_id: '{{invoice_id}}'
- name: get-po
type: call
call: sap.get-po
with:
po_number: '{{po_number}}'
- name: create-approval
type: call
call: servicenow.create-approval
with:
short_description: 'Invoice discrepancy: {{invoice_id}} vs PO {{po_number}}'
amount_invoiced: '{{get-invoice.total_amount}}'
amount_po: '{{get-po.total_value}}'
consumes:
- type: http
namespace: ariba
baseUri: https://openapi.ariba.com/api/invoice/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
baseUri: https://kimberly-clark-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
baseUri: https://kimberly-clark.service-now.com/api/now
authentication:
type: basic
username: $secrets.snow_user
password: $secrets.snow_password
resources:
- name: approvals
path: /table/sysapproval_approver
operations:
- name: create-approval
method: POST
Generates a daily digest of Kimberly-Clark's top accounts from Salesforce CRM including open opportunities, recent activity, and revenue to date, and posts the summary to a Teams channel.
naftiko: '0.5'
info:
label: Salesforce Account Health Digest
description: Generates a daily digest of Kimberly-Clark's top accounts from Salesforce CRM including open opportunities, recent activity, and revenue to date, and posts the summary to a Teams channel.
tags:
- sales
- crm
- reporting
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: crm-reporting
port: 8080
tools:
- name: digest-account-health
description: Retrieve active Salesforce accounts with open opportunities and recent activity logs, then post a formatted digest to the sales leadership Teams channel. Run daily for pipeline visibility.
inputParameters:
- name: days_back
in: body
type: integer
description: Number of days of activity to include in the digest, e.g. 7 for a weekly summary.
steps:
- name: get-accounts
type: call
call: salesforce.query-accounts
with:
days_back: '{{days_back}}'
- name: post-digest
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.teams_sales_channel_id
text: 'Account Health Digest: {{get-accounts.summary}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://kimberly-clark.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /query
operations:
- name: query-accounts
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Retrieves retail buyer account details from Salesforce including account health, open opportunities, and planogram compliance scores.
naftiko: '0.5'
info:
label: Salesforce Retail Buyer Account Lookup
description: Retrieves retail buyer account details from Salesforce including account health, open opportunities, and planogram compliance scores.
tags:
- sales
- retail
- salesforce
- crm
capability:
exposes:
- type: mcp
namespace: crm-retail
port: 8080
tools:
- name: get-retail-buyer
description: Look up a retail buyer account in Salesforce. Returns health score, open opportunities, and compliance metrics.
inputParameters:
- name: account_id
type: string
description: Salesforce account ID.
call: salesforce.get-account
with:
account_id: '{{account_id}}'
outputParameters:
- name: account_name
type: string
mapping: $.Name
- name: health_score
type: string
mapping: $.Health_Score__c
- name: open_opps
type: string
mapping: $.Open_Opportunity_Count__c
consumes:
- type: http
namespace: salesforce
baseUri: https://kimberlyclark.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
Polls the Meta Graph API for Kimberly-Clark brand mentions across Facebook and Instagram, and posts significant engagement spikes or negative sentiment to the brand team Teams channel.
naftiko: '0.5'
info:
label: Brand Social Media Monitoring Alert
description: Polls the Meta Graph API for Kimberly-Clark brand mentions across Facebook and Instagram, and posts significant engagement spikes or negative sentiment to the brand team Teams channel.
tags:
- marketing
- social
- meta
- microsoft-teams
- brand-monitoring
capability:
exposes:
- type: mcp
namespace: brand-monitoring
port: 8080
tools:
- name: monitor-social-mentions
description: Retrieve recent brand mentions from Meta Graph API for Kimberly-Clark brand pages. If engagement volume exceeds threshold, post an alert to the brand Teams channel. Use for real-time brand reputation monitoring.
inputParameters:
- name: page_id
in: body
type: string
description: The Meta Facebook page ID for the Kimberly-Clark brand to monitor.
- name: hours_back
in: body
type: integer
description: Number of hours to look back for mentions and engagements.
steps:
- name: get-mentions
type: call
call: meta.get-page-insights
with:
page_id: '{{page_id}}'
hours_back: '{{hours_back}}'
- name: post-alert
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.teams_brand_channel_id
text: 'Social Monitor Alert: {{get-mentions.total_impressions}} impressions in last {{hours_back}}h on page {{page_id}}.'
consumes:
- type: http
namespace: meta
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.meta_page_token
resources:
- name: page-insights
path: /{{page_id}}/insights
inputParameters:
- name: page_id
in: path
operations:
- name: get-page-insights
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
On a high-severity PagerDuty alert, creates a ServiceNow P1 incident, pages the on-call team, and posts a war-room message to the IT Teams channel.
naftiko: '0.5'
info:
label: IT Incident Response Handler
description: On a high-severity PagerDuty alert, creates a ServiceNow P1 incident, pages the on-call team, and posts a war-room message to the IT Teams channel.
tags:
- itsm
- incident-response
- pagerduty
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: itsm-ops
port: 8080
tools:
- name: handle-p1-incident
description: Given a PagerDuty alert ID for a critical production incident, create a P1 ServiceNow incident, trigger an on-call page, and post a war-room message to the IT Teams channel. Invoke when PagerDuty fires a critical-severity alert.
inputParameters:
- name: alert_id
in: body
type: string
description: The PagerDuty alert ID for the critical incident.
- name: service_name
in: body
type: string
description: The name of the affected service or system.
- name: alert_summary
in: body
type: string
description: A brief description of the alert condition.
steps:
- name: create-snow-incident
type: call
call: servicenow.create-incident
with:
priority: '1'
short_description: 'P1: {{alert_summary}} in {{service_name}}'
category: production_outage
- name: trigger-page
type: call
call: pagerduty.create-incident
with:
title: 'P1 Incident: {{alert_summary}}'
service_id: $secrets.pagerduty_it_service_id
body_details: 'ServiceNow: {{create-snow-incident.number}}'
- name: post-war-room
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.teams_it_ops_channel_id
text: 'P1 INCIDENT OPEN: {{alert_summary}} | SNOW: {{create-snow-incident.number}} | PD: {{trigger-page.incident_key}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://kimberly-clark.service-now.com/api/now
authentication:
type: basic
username: $secrets.snow_user
password: $secrets.snow_password
resources:
- name: incidents
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_api_key
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Retrieves employee certifications and training completions from Workday for compliance tracking at manufacturing facilities.
naftiko: '0.5'
info:
label: Workday Employee Certification Lookup
description: Retrieves employee certifications and training completions from Workday for compliance tracking at manufacturing facilities.
tags:
- hr
- compliance
- workday
- manufacturing
capability:
exposes:
- type: mcp
namespace: hr-compliance
port: 8080
tools:
- name: get-certifications
description: Look up employee certifications in Workday including safety training, GMP, and equipment qualifications.
inputParameters:
- name: employee_id
type: string
description: Workday employee ID.
call: workday.get-certifications
with:
worker_id: '{{employee_id}}'
outputParameters:
- name: certifications
type: string
mapping: $.certifications
- name: expired_count
type: string
mapping: $.expired_count
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: certifications
path: /kimberlyclark/workers/{{worker_id}}/certifications
inputParameters:
- name: worker_id
in: path
operations:
- name: get-certifications
method: GET
When a Salesforce opportunity is marked Closed Won, creates a corresponding sales order in SAP S/4HANA and notifies the account team via Microsoft Teams.
naftiko: '0.5'
info:
label: Salesforce Opportunity to SAP Order Sync
description: When a Salesforce opportunity is marked Closed Won, creates a corresponding sales order in SAP S/4HANA and notifies the account team via Microsoft Teams.
tags:
- sales
- crm
- erp
- salesforce
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: crm-erp-sync
port: 8080
tools:
- name: sync-opportunity-to-order
description: Given a Salesforce opportunity ID that has been marked Closed Won, retrieve opportunity details, create a SAP S/4HANA sales order, and notify the account team in Microsoft Teams.
inputParameters:
- name: opportunity_id
in: body
type: string
description: The Salesforce opportunity ID (18-character Salesforce record ID).
steps:
- name: get-opportunity
type: call
call: salesforce.get-opportunity
with:
opportunity_id: '{{opportunity_id}}'
- name: create-sap-order
type: call
call: sap.create-sales-order
with:
customer_id: '{{get-opportunity.account_sap_id}}'
amount: '{{get-opportunity.amount}}'
currency: '{{get-opportunity.currency_code}}'
- name: notify-team
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.teams_sales_channel_id
text: New SAP order {{create-sap-order.order_number}} created from Salesforce opportunity {{opportunity_id}}.
consumes:
- type: http
namespace: salesforce
baseUri: https://kimberly-clark.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://kimberly-clark-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
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Syncs IT hardware and software asset records from ServiceNow Asset Management with the Microsoft 365 device inventory to identify unmanaged devices.
naftiko: '0.5'
info:
label: ServiceNow IT Asset Inventory Sync
description: Syncs IT hardware and software asset records from ServiceNow Asset Management with the Microsoft 365 device inventory to identify unmanaged devices.
tags:
- itsm
- asset-management
- servicenow
- microsoft-365
capability:
exposes:
- type: mcp
namespace: asset-ops
port: 8080
tools:
- name: sync-asset-inventory
description: Retrieve all managed devices from Microsoft Graph (Intune) and compare with ServiceNow hardware asset records. Return a list of devices present in Intune but missing from ServiceNow for reconciliation.
steps:
- name: get-intune-devices
type: call
call: msgraph.get-managed-devices
- name: get-snow-assets
type: call
call: servicenow.get-hardware-assets
- name: create-snow-assets
type: call
call: servicenow.create-asset
with:
device_data: '{{get-intune-devices.value}}'
consumes:
- type: http
namespace: msgraph
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: managed-devices
path: /deviceManagement/managedDevices
operations:
- name: get-managed-devices
method: GET
- type: http
namespace: servicenow
baseUri: https://kimberly-clark.service-now.com/api/now
authentication:
type: basic
username: $secrets.snow_user
password: $secrets.snow_password
resources:
- name: hardware-assets
path: /table/alm_hardware
operations:
- name: get-hardware-assets
method: GET
- name: create-asset
method: POST
Pulls current compensation data from Workday and generates a cost-center benchmarking report published to Power BI for finance and HR leadership.
naftiko: '0.5'
info:
label: Workday Compensation Benchmarking Report
description: Pulls current compensation data from Workday and generates a cost-center benchmarking report published to Power BI for finance and HR leadership.
tags:
- hr
- finance
- workday
- power-bi
- reporting
- compensation
capability:
exposes:
- type: mcp
namespace: compensation-reporting
port: 8080
tools:
- name: publish-compensation-benchmark
description: Pull salary and grade data from Workday for all active employees, push the dataset to Power BI, and trigger a report refresh. Use for quarterly compensation benchmarking and HR finance reviews.
inputParameters:
- name: effective_date
in: body
type: string
description: The effective date for the compensation snapshot in YYYY-MM-DD format.
steps:
- name: get-compensation-data
type: call
call: workday.get-compensation
with:
effectiveDate: '{{effective_date}}'
- name: push-to-powerbi
type: call
call: powerbi.refresh-dataset
with:
workspace_id: $secrets.powerbi_hr_workspace_id
dataset_id: $secrets.powerbi_compensation_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: compensation
path: /kimberly-clark/compensation/workers
operations:
- name: get-compensation
method: GET
- 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
Triggers a Power BI dataset refresh for the financial reporting workspace and notifies the finance team via Teams when the refresh completes or fails.
naftiko: '0.5'
info:
label: Power BI Financial Report Refresh
description: Triggers a Power BI dataset refresh for the financial reporting workspace and notifies the finance team via Teams when the refresh completes or fails.
tags:
- finance
- analytics
- reporting
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finance-reporting
port: 8080
tools:
- name: refresh-financial-report
description: Trigger a Power BI dataset refresh for the specified financial reporting workspace and dataset, then notify the finance Teams channel of completion status. Use at period close or on demand.
inputParameters:
- name: workspace_id
in: body
type: string
description: The Power BI workspace (group) ID containing the financial dataset.
- name: dataset_id
in: body
type: string
description: The Power BI dataset ID to refresh.
steps:
- name: trigger-refresh
type: call
call: powerbi.refresh-dataset
with:
workspace_id: '{{workspace_id}}'
dataset_id: '{{dataset_id}}'
- name: notify-finance
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.teams_finance_channel_id
text: 'Power BI financial dataset {{dataset_id}} refresh triggered. 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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Runs a security vulnerability scan summary across Kimberly-Clark's GitHub repositories using the GitHub Advanced Security API and creates Jira issues for critical findings.
naftiko: '0.5'
info:
label: GitHub Repository Security Scan Summary
description: Runs a security vulnerability scan summary across Kimberly-Clark's GitHub repositories using the GitHub Advanced Security API and creates Jira issues for critical findings.
tags:
- security
- devops
- github
- jira
capability:
exposes:
- type: mcp
namespace: security-ops
port: 8080
tools:
- name: scan-repo-security
description: Given a GitHub repository name, retrieve open code scanning alerts at critical or high severity from GitHub Advanced Security and create a Jira security issue for each critical finding. Use for weekly security posture reviews.
inputParameters:
- name: repo_name
in: body
type: string
description: GitHub repository in owner/repo format to scan, e.g. kimberly-clark/digital-platform.
steps:
- name: get-alerts
type: call
call: github.get-code-scanning-alerts
with:
repo: '{{repo_name}}'
severity: critical
- name: create-jira-issue
type: call
call: jira.create-issue
with:
project_key: SEC
issuetype: Security
summary: 'Critical security alerts in {{repo_name}}: {{get-alerts.count}} findings'
description: GitHub Advanced Security found {{get-alerts.count}} critical vulnerabilities in {{repo_name}}.
consumes:
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: code-scanning-alerts
path: /repos/{{repo}}/code-scanning/alerts
inputParameters:
- name: repo
in: path
operations:
- name: get-code-scanning-alerts
method: GET
- type: http
namespace: jira
baseUri: https://kimberly-clark.atlassian.net/rest/api/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 Snowflake for failed or stalled data pipeline tasks, compiles a summary, and opens a ServiceNow incident if any critical jobs are overdue.
naftiko: '0.5'
info:
label: Snowflake Data Pipeline Health Check
description: Queries Snowflake for failed or stalled data pipeline tasks, compiles a summary, and opens a ServiceNow incident if any critical jobs are overdue.
tags:
- data
- analytics
- monitoring
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: data-ops
port: 8080
tools:
- name: check-pipeline-health
description: Query Snowflake task execution history for failures or missed schedules in the last N hours. If critical jobs are overdue, open a ServiceNow incident. Use for automated data platform monitoring.
inputParameters:
- name: hours_back
in: body
type: integer
description: Number of hours of task execution history to check, e.g. 6.
steps:
- name: get-failed-tasks
type: call
call: snowflake.query-task-history
with:
hours_back: '{{hours_back}}'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: Snowflake pipeline failures detected in last {{hours_back}} hours
category: data_platform
priority: '2'
consumes:
- type: http
namespace: snowflake
baseUri: https://kimberly-clark.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: task-history
path: /statements
operations:
- name: query-task-history
method: POST
- type: http
namespace: servicenow
baseUri: https://kimberly-clark.service-now.com/api/now
authentication:
type: basic
username: $secrets.snow_user
password: $secrets.snow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
Monitors Azure cost management for spend anomalies and, when detected, creates a ServiceNow incident and posts an alert to the cloud FinOps Teams channel.
naftiko: '0.5'
info:
label: Azure Cloud Cost Anomaly Alert
description: Monitors Azure cost management for spend anomalies and, when detected, creates a ServiceNow incident and posts an alert to the cloud FinOps Teams channel.
tags:
- cloud
- finops
- cost-management
- azure
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: cloud-finops
port: 8080
tools:
- name: handle-cost-anomaly
description: Given an Azure subscription ID and anomaly detection period, retrieve cost anomalies from Azure Cost Management, open a ServiceNow ticket, and post an alert to the FinOps Teams channel. Invoke on scheduled cost monitoring runs.
inputParameters:
- name: subscription_id
in: body
type: string
description: The Azure subscription ID to check for cost anomalies.
- name: period_days
in: body
type: integer
description: Number of days to analyze for anomalies, e.g. 7.
steps:
- name: get-anomalies
type: call
call: azure-cost.get-anomalies
with:
subscription_id: '{{subscription_id}}'
period_days: '{{period_days}}'
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: Azure cost anomaly detected in subscription {{subscription_id}}
category: cloud_cost
priority: '3'
- name: post-alert
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.teams_finops_channel_id
text: 'Cost Anomaly Alert: Azure subscription {{subscription_id}} exceeded expected spend. SNOW: {{create-ticket.number}}'
consumes:
- type: http
namespace: azure-cost
baseUri: https://management.azure.com
authentication:
type: bearer
token: $secrets.azure_token
resources:
- name: anomalies
path: /subscriptions/{{subscription_id}}/providers/Microsoft.CostManagement/anomalies
inputParameters:
- name: subscription_id
in: path
operations:
- name: get-anomalies
method: GET
- type: http
namespace: servicenow
baseUri: https://kimberly-clark.service-now.com/api/now
authentication:
type: basic
username: $secrets.snow_user
password: $secrets.snow_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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Queries Snowflake for consumer demand signals across tissue, diaper, and personal care categories by region.
naftiko: '0.5'
info:
label: Snowflake Consumer Demand Signal Query
description: Queries Snowflake for consumer demand signals across tissue, diaper, and personal care categories by region.
tags:
- analytics
- supply-chain
- snowflake
- data
capability:
exposes:
- type: mcp
namespace: demand-analytics
port: 8080
tools:
- name: query-demand-signals
description: Query Snowflake for consumer demand signals including velocity, weeks of supply, and demand trend indicators.
inputParameters:
- name: category
type: string
description: Product category (e.g., bath-tissue, diapers, fem-care).
- name: region
type: string
description: Market region code.
call: snowflake.execute-query
with:
warehouse: DEMAND_ANALYTICS_WH
query: SELECT sku, velocity, weeks_of_supply, trend FROM demand_signals WHERE category='{{category}}' AND region='{{region}}'
outputParameters:
- name: signals
type: string
mapping: $.data
consumes:
- type: http
namespace: snowflake
baseUri: https://kimberlyclark.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
Enriches a new Salesforce lead with product interest data derived from associated Jira feature requests and customer feedback tickets.
naftiko: '0.5'
info:
label: Salesforce Lead Enrichment from Jira
description: Enriches a new Salesforce lead with product interest data derived from associated Jira feature requests and customer feedback tickets.
tags:
- sales
- crm
- salesforce
- jira
- lead-enrichment
capability:
exposes:
- type: mcp
namespace: lead-enrichment
port: 8080
tools:
- name: enrich-lead-from-jira
description: Given a Salesforce lead ID and associated Jira customer ticket keys, retrieve Jira ticket details and update the Salesforce lead record with product interest and priority signals. Use for pre-sales intelligence gathering.
inputParameters:
- name: lead_id
in: body
type: string
description: The Salesforce lead ID to enrich.
- name: jira_ticket_key
in: body
type: string
description: The Jira ticket key linked to this lead's customer feedback, e.g. CUST-1234.
steps:
- name: get-jira-ticket
type: call
call: jira.get-issue
with:
issue_key: '{{jira_ticket_key}}'
- name: update-lead
type: call
call: salesforce.update-lead
with:
lead_id: '{{lead_id}}'
product_interest: '{{get-jira-ticket.summary}}'
priority: '{{get-jira-ticket.priority}}'
consumes:
- type: http
namespace: jira
baseUri: https://kimberly-clark.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: salesforce
baseUri: https://kimberly-clark.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: update-lead
method: PATCH
Triggers the annual performance review cycle in Workday for a specified population, assigns reviewers, and sends reminder notifications via Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Performance Review Cycle Launch
description: Triggers the annual performance review cycle in Workday for a specified population, assigns reviewers, and sends reminder notifications via Microsoft Teams.
tags:
- hr
- performance-management
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-performance
port: 8080
tools:
- name: launch-review-cycle
description: Given a review cycle name and due date, initiate the Workday performance review process for all eligible employees, and send kick-off reminders to managers via Teams. Use at the start of each annual or mid-year review period.
inputParameters:
- name: cycle_name
in: body
type: string
description: Name of the performance review cycle, e.g. 2025 Annual Review.
- name: due_date
in: body
type: string
description: Deadline for completing reviews in YYYY-MM-DD format.
steps:
- name: launch-cycle
type: call
call: workday.create-review-cycle
with:
name: '{{cycle_name}}'
dueDate: '{{due_date}}'
- name: notify-managers
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.teams_hr_channel_id
text: 'Performance review cycle ''{{cycle_name}}'' has launched. Deadline: {{due_date}}. Please complete your reviews in Workday.'
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: review-cycles
path: /kimberly-clark/performanceManagement/reviewCycles
operations:
- name: create-review-cycle
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Runs the month-end period close checklist in SAP S/4HANA, verifying that all posting periods are closed and all open items are resolved, then posts a status report to the finance Teams channel.
naftiko: '0.5'
info:
label: SAP Period Close Checklist
description: Runs the month-end period close checklist in SAP S/4HANA, verifying that all posting periods are closed and all open items are resolved, then posts a status report to the finance Teams channel.
tags:
- finance
- erp
- sap
- period-close
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: period-close
port: 8080
tools:
- name: run-period-close-check
description: Given a fiscal period and company code, verify SAP S/4HANA posting period status, check for open items, and post a close-readiness report to the finance Teams channel. Use at month-end close.
inputParameters:
- name: fiscal_period
in: body
type: string
description: The fiscal period in YYYYMM format, e.g. 202503.
- name: company_code
in: body
type: string
description: The SAP company code to check, e.g. 1000.
steps:
- name: check-periods
type: call
call: sap.get-posting-periods
with:
period: '{{fiscal_period}}'
companyCode: '{{company_code}}'
- name: get-open-items
type: call
call: sap.get-open-items
with:
period: '{{fiscal_period}}'
companyCode: '{{company_code}}'
- name: post-status
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.teams_finance_channel_id
text: 'Period close check for {{fiscal_period}} ({{company_code}}): {{check-periods.status}} | Open items: {{get-open-items.count}}'
consumes:
- type: http
namespace: sap
baseUri: https://kimberly-clark-s4.sap.com/sap/opu/odata/sap/API_FINANCIALPLANDATA_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: posting-periods
path: /PostingPeriods
operations:
- name: get-posting-periods
method: GET
- name: open-items
path: /OpenItems
operations:
- name: get-open-items
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
When a new job requisition is approved in Workday Recruiting, creates a corresponding Jira project tracking ticket for the hiring team and notifies the HR channel in Teams.
naftiko: '0.5'
info:
label: Workday Recruiting Requisition Sync to Jira
description: When a new job requisition is approved in Workday Recruiting, creates a corresponding Jira project tracking ticket for the hiring team and notifies the HR channel in Teams.
tags:
- hr
- recruiting
- workday
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: recruiting-ops
port: 8080
tools:
- name: sync-requisition-to-jira
description: Given a Workday job requisition ID, retrieve requisition details and create a Jira tracking issue for the hiring team. Notify the HR Teams channel with requisition and Jira details.
inputParameters:
- name: requisition_id
in: body
type: string
description: The Workday job requisition ID.
steps:
- name: get-requisition
type: call
call: workday.get-job-requisition
with:
requisition_id: '{{requisition_id}}'
- name: create-jira-ticket
type: call
call: jira.create-issue
with:
project_key: HR
issuetype: Task
summary: 'Hiring: {{get-requisition.job_title}} ({{get-requisition.department}})'
description: 'Workday requisition {{requisition_id}} approved. Target hire date: {{get-requisition.target_hire_date}}'
- name: notify-hr
type: call
call: msteams.post-channel-message
with:
channel_id: $secrets.teams_hr_channel_id
text: 'New requisition approved: {{get-requisition.job_title}} | Jira: {{create-jira-ticket.key}}'
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: job-requisitions
path: /kimberly-clark/recruiting/jobRequisitions/{{requisition_id}}
inputParameters:
- name: requisition_id
in: path
operations:
- name: get-job-requisition
method: GET
- type: http
namespace: jira
baseUri: https://kimberly-clark.atlassian.net/rest/api/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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Validates that SAP S/4HANA posting periods are properly closed at month-end by checking open items and period status, then posts a close-readiness summary to the finance Teams channel.
naftiko: '0.5'
info:
label: SAP Month-End Period Close Validation
description: Validates that SAP S/4HANA posting periods are properly closed at month-end by checking open items and period status, then posts a close-readiness summary to the finance Teams channel.
tags:
- finance
- erp
- sap
- period-close
- reporting
capability:
exposes:
- type: mcp
namespace: period-close
port: 8080
tools:
- name: validate-period-close
description: Given a fiscal period and SAP company code, check posting period status and count of open items in SAP S/4HANA, then post a close-readiness report to the finance Teams channel. Use at month-end before final close.
inputParameters:
- name: fiscal_period
in: body
type: string
description: Fiscal period in YYYYMM format, e.g. 202503.
- name: company_code
in: body
type: string
description: The SAP company code, e.g. 1000.
steps:
- name: get-period-status
type: call
call: sap.get-posting-periods
with:
period: '{{fiscal_period}}'
companyCode: '{{company_code}}'
- name: get-open-items
type: call
call: sap.get-open-items
with:
period: '{{fiscal_period}}'
companyCode: '{{company_code}}'
- name: post-summary
type: call
call: msteams.post-message
with:
channel_id: $secrets.teams_finance_channel_id
text: 'Period Close Check {{fiscal_period}} ({{company_code}}): Status={{get-period-status.status}} | Open Items={{get-open-items.count}}'
consumes:
- type: http
namespace: sap
baseUri: https://kraft-heinz-s4.sap.com/sap/opu/odata/sap/API_FINANCIALPLANDATA_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: posting-periods
path: /PostingPeriods
operations:
- name: get-posting-periods
method: GET
- name: open-items
path: /OpenItems
operations:
- name: get-open-items
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Uses Anthropic Claude to review and summarize product marketing claims documents retrieved from SharePoint, checking for regulatory compliance language and flagging ambiguous claims.
naftiko: '0.5'
info:
label: AI-Assisted Brand Claim Document Review
description: Uses Anthropic Claude to review and summarize product marketing claims documents retrieved from SharePoint, checking for regulatory compliance language and flagging ambiguous claims.
tags:
- ai
- marketing
- compliance
- anthropic
- sharepoint
capability:
exposes:
- type: mcp
namespace: ai-compliance
port: 8080
tools:
- name: review-brand-claims
description: Given a SharePoint document URL for a product marketing claims brief, retrieve the document, send it to Anthropic Claude for compliance review, and write the review summary back to SharePoint. Use before packaging or campaign approvals.
inputParameters:
- name: site_id
in: body
type: string
description: The SharePoint site ID where the claims document is stored.
- name: document_path
in: body
type: string
description: The SharePoint document relative path.
steps:
- name: get-document
type: call
call: sharepoint.get-document
with:
site_id: '{{site_id}}'
path: '{{document_path}}'
- name: review-claims
type: call
call: anthropic.create-message
with:
model: claude-opus-4-5
content: 'Review this product marketing claims document for regulatory compliance. Flag any ambiguous health, nutrition, or comparative claims. Document: {{get-document.content}}'
- name: write-review
type: call
call: sharepoint.create-file
with:
site_id: '{{site_id}}'
filename: claims-review.md
content: '{{review-claims.text}}'
consumes:
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: documents
path: /sites/{{site_id}}/drive/root/children
inputParameters:
- name: site_id
in: path
operations:
- name: get-document
method: GET
- name: create-file
method: PUT
- 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
When a food safety or quality incident is reported via Salesforce Service Cloud, creates a high-priority ServiceNow incident, notifies the quality assurance team, and escalates to the regulatory affairs Teams channel.
naftiko: '0.5'
info:
label: Food Safety Incident Triage
description: When a food safety or quality incident is reported via Salesforce Service Cloud, creates a high-priority ServiceNow incident, notifies the quality assurance team, and escalates to the regulatory affairs Teams channel.
tags:
- customer-support
- quality
- food-safety
- salesforce
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: quality-ops
port: 8080
tools:
- name: triage-food-safety-incident
description: Given a Salesforce Service Cloud case ID flagged as food safety related, retrieve case details, create a P1 ServiceNow incident, and alert the quality assurance and regulatory affairs Teams channels. Use when a consumer complaint or safety report is escalated.
inputParameters:
- name: case_id
in: body
type: string
description: The Salesforce Service Cloud case ID for the food safety incident.
- name: severity
in: body
type: string
description: 'Incident severity level: critical, high, or medium.'
steps:
- name: get-case
type: call
call: salesforce.get-case
with:
case_id: '{{case_id}}'
- name: create-snow-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Food Safety Incident: {{get-case.subject}}'
category: food_safety
priority: '1'
description: 'Salesforce Case {{case_id}}: {{get-case.description}}'
- name: alert-qa-team
type: call
call: msteams.post-message
with:
channel_id: $secrets.teams_qa_channel_id
text: 'FOOD SAFETY INCIDENT: {{get-case.subject}} | Severity: {{severity}} | SNOW: {{create-snow-incident.number}} | SF Case: {{case_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://kraft-heinz.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: servicenow
baseUri: https://kraft-heinz.service-now.com/api/now
authentication:
type: basic
username: $secrets.snow_user
password: $secrets.snow_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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Generates a weekly digest of Kraft Heinz's key retail and foodservice accounts from Salesforce CRM, including open opportunities and recent activity, then posts the summary to the sales leadership Teams channel.
naftiko: '0.5'
info:
label: Salesforce Customer Account Health Digest
description: Generates a weekly digest of Kraft Heinz's key retail and foodservice accounts from Salesforce CRM, including open opportunities and recent activity, then posts the summary to the sales leadership Teams channel.
tags:
- sales
- crm
- reporting
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: crm-reporting
port: 8080
tools:
- name: digest-account-health
description: Query Salesforce for accounts with recent activity and open opportunities, then post a formatted account health digest to the sales leadership Teams channel. Use for weekly pipeline reviews and customer health monitoring.
inputParameters:
- name: days_back
in: body
type: integer
description: Number of days of activity to include, e.g. 7 for a weekly digest.
steps:
- name: get-accounts
type: call
call: salesforce.query-accounts
with:
days_back: '{{days_back}}'
- name: post-digest
type: call
call: msteams.post-message
with:
channel_id: $secrets.teams_sales_channel_id
text: 'Weekly Account Digest (last {{days_back}} days): {{get-accounts.count}} active accounts with open opportunities.'
consumes:
- type: http
namespace: salesforce
baseUri: https://kraft-heinz.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /query
operations:
- name: query-accounts
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
When a Salesforce opportunity closes as Won, creates a corresponding SAP S/4HANA sales order and notifies the account team in Microsoft Teams.
naftiko: '0.5'
info:
label: Salesforce Opportunity to SAP Sales Order Sync
description: When a Salesforce opportunity closes as Won, creates a corresponding SAP S/4HANA sales order and notifies the account team in Microsoft Teams.
tags:
- sales
- crm
- erp
- salesforce
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: crm-erp-sync
port: 8080
tools:
- name: sync-opportunity-to-order
description: Given a Salesforce opportunity ID for a Closed Won deal, retrieve account and opportunity data, create a SAP S/4HANA sales order, and notify the account team in Teams. Use when a deal is marked Closed Won in Salesforce.
inputParameters:
- name: opportunity_id
in: body
type: string
description: The 18-character Salesforce opportunity record ID.
steps:
- name: get-opportunity
type: call
call: salesforce.get-opportunity
with:
opportunity_id: '{{opportunity_id}}'
- name: create-sap-order
type: call
call: sap.create-sales-order
with:
customer_id: '{{get-opportunity.account_sap_id}}'
amount: '{{get-opportunity.amount}}'
currency: '{{get-opportunity.currency_code}}'
- name: notify-team
type: call
call: msteams.post-message
with:
channel_id: $secrets.teams_sales_channel_id
text: SAP Order {{create-sap-order.order_number}} created for opportunity {{opportunity_id}} ({{get-opportunity.name}}).
consumes:
- type: http
namespace: salesforce
baseUri: https://kraft-heinz.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://kraft-heinz-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
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
On a high-severity PagerDuty alert for production systems, creates a ServiceNow P1 incident, pages the on-call team, and posts a war-room message to the IT operations Teams channel.
naftiko: '0.5'
info:
label: IT Incident Response and PagerDuty Escalation
description: On a high-severity PagerDuty alert for production systems, creates a ServiceNow P1 incident, pages the on-call team, and posts a war-room message to the IT operations Teams channel.
tags:
- itsm
- incident-response
- pagerduty
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: itsm-ops
port: 8080
tools:
- name: handle-p1-incident
description: Given a PagerDuty alert ID and affected service name, create a P1 ServiceNow incident, trigger an on-call PagerDuty page, and open a war-room Teams message. Invoke on critical production alerts.
inputParameters:
- name: alert_id
in: body
type: string
description: The PagerDuty alert ID for the critical production alert.
- name: service_name
in: body
type: string
description: The name of the affected production service.
- name: alert_summary
in: body
type: string
description: A brief description of the alert condition.
steps:
- name: create-snow-incident
type: call
call: servicenow.create-incident
with:
priority: '1'
short_description: 'P1: {{alert_summary}} in {{service_name}}'
category: production_outage
- name: trigger-page
type: call
call: pagerduty.create-incident
with:
title: 'P1 Incident: {{alert_summary}}'
service_id: $secrets.pagerduty_service_id
body_details: 'SNOW: {{create-snow-incident.number}}'
- name: open-war-room
type: call
call: msteams.post-message
with:
channel_id: $secrets.teams_it_ops_channel_id
text: 'P1 INCIDENT: {{alert_summary}} | Service: {{service_name}} | SNOW: {{create-snow-incident.number}} | PD: {{trigger-page.incident_key}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://kraft-heinz.service-now.com/api/now
authentication:
type: basic
username: $secrets.snow_user
password: $secrets.snow_password
resources:
- name: incidents
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_api_key
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Retrieves Facebook and Instagram campaign performance metrics from Meta Graph API and posts a weekly brand performance digest to the social media marketing Teams channel.
naftiko: '0.5'
info:
label: Meta Social Campaign Performance Digest
description: Retrieves Facebook and Instagram campaign performance metrics from Meta Graph API and posts a weekly brand performance digest to the social media marketing Teams channel.
tags:
- marketing
- social
- meta
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: social-analytics
port: 8080
tools:
- name: digest-meta-campaign-performance
description: Given a Meta ad account ID and date range, retrieve campaign impressions, clicks, and ROAS from Meta Graph API and post a performance digest to the social media Teams channel. Use for weekly brand performance reviews.
inputParameters:
- name: ad_account_id
in: body
type: string
description: The Meta ad account ID in act_XXXXXXXXX format.
- name: start_date
in: body
type: string
description: Reporting period start date in YYYY-MM-DD format.
- name: end_date
in: body
type: string
description: Reporting period end date in YYYY-MM-DD format.
steps:
- name: get-campaign-insights
type: call
call: meta.get-ad-insights
with:
ad_account_id: '{{ad_account_id}}'
start_date: '{{start_date}}'
end_date: '{{end_date}}'
- name: post-digest
type: call
call: msteams.post-message
with:
channel_id: $secrets.teams_social_channel_id
text: 'Meta Campaign Digest {{start_date}}-{{end_date}}: {{get-campaign-insights.impressions}} impressions | {{get-campaign-insights.clicks}} clicks'
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
operations:
- name: get-ad-insights
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Audits Snowflake query history for excessive credit consumption and long-running queries, posts a governance summary to the data platform Teams channel.
naftiko: '0.5'
info:
label: Snowflake Data Governance Query Audit
description: Audits Snowflake query history for excessive credit consumption and long-running queries, posts a governance summary to the data platform Teams channel.
tags:
- data
- governance
- snowflake
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: data-governance
port: 8080
tools:
- name: audit-snowflake-queries
description: Query Snowflake execution history for queries exceeding cost or duration thresholds and post a governance report to the data platform Teams channel. Use for daily FinOps and data platform cost management.
inputParameters:
- name: hours_back
in: body
type: integer
description: Number of hours of query history to audit, e.g. 24.
- name: threshold_seconds
in: body
type: integer
description: Query execution time in seconds above which queries are flagged.
steps:
- name: query-history
type: call
call: snowflake.query-history
with:
hours_back: '{{hours_back}}'
- name: post-report
type: call
call: msteams.post-message
with:
channel_id: $secrets.teams_data_channel_id
text: 'Snowflake Governance Report (last {{hours_back}}h): {{query-history.flagged_count}} queries exceeded {{threshold_seconds}}s.'
consumes:
- type: http
namespace: snowflake
baseUri: https://kraft-heinz.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: query-history
path: /statements
operations:
- name: query-history
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
When a new job requisition is approved in Workday Recruiting, creates a Jira tracking issue for the hiring team and posts a notification to the HR Teams channel.
naftiko: '0.5'
info:
label: Workday Job Requisition to Jira Tracker Sync
description: When a new job requisition is approved in Workday Recruiting, creates a Jira tracking issue for the hiring team and posts a notification to the HR Teams channel.
tags:
- hr
- recruiting
- workday
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: recruiting-ops
port: 8080
tools:
- name: sync-requisition-to-jira
description: Given a Workday job requisition ID, retrieve requisition details and create a Jira task for the hiring team. Notify the HR Teams channel with a summary. Invoke when a job requisition is approved in Workday.
inputParameters:
- name: requisition_id
in: body
type: string
description: The Workday job requisition ID.
steps:
- name: get-requisition
type: call
call: workday.get-requisition
with:
requisition_id: '{{requisition_id}}'
- name: create-jira-task
type: call
call: jira.create-issue
with:
project_key: HR
issuetype: Task
summary: 'Hire: {{get-requisition.job_title}} — {{get-requisition.department}}'
description: 'Workday requisition {{requisition_id}}. Target: {{get-requisition.target_hire_date}}'
- name: notify-hr
type: call
call: msteams.post-message
with:
channel_id: $secrets.teams_hr_channel_id
text: 'New req approved: {{get-requisition.job_title}} | Jira: {{create-jira-task.key}}'
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: requisitions
path: /kraft-heinz/recruiting/jobRequisitions/{{requisition_id}}
inputParameters:
- name: requisition_id
in: path
operations:
- name: get-requisition
method: GET
- type: http
namespace: jira
baseUri: https://kraft-heinz.atlassian.net/rest/api/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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
When an employee termination is recorded in Workday, disables the Microsoft 365 account, clears Okta sessions, and closes all open ServiceNow tickets assigned to the departing employee.
naftiko: '0.5'
info:
label: Employee Offboarding and Access Revocation
description: When an employee termination is recorded in Workday, disables the Microsoft 365 account, clears Okta sessions, and closes all open ServiceNow tickets assigned to the departing employee.
tags:
- hr
- offboarding
- workday
- okta
- servicenow
- access-management
capability:
exposes:
- type: mcp
namespace: hr-offboarding
port: 8080
tools:
- name: trigger-offboarding
description: Given a Workday employee ID for a terminating employee, disable their Microsoft 365 account, revoke all Okta sessions, and close their open ServiceNow tickets. Invoke on confirmed termination events from Workday.
inputParameters:
- name: employee_id
in: body
type: string
description: The Workday worker ID of the departing employee.
steps:
- name: get-worker
type: call
call: workday.get-worker
with:
worker_id: '{{employee_id}}'
- name: disable-m365
type: call
call: msgraph.disable-user
with:
user_id: '{{get-worker.work_email}}'
- name: revoke-okta-sessions
type: call
call: okta.clear-sessions
with:
login: '{{get-worker.work_email}}'
- name: close-snow-tickets
type: call
call: servicenow.close-tickets
with:
assigned_to: '{{get-worker.work_email}}'
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: /kraft-heinz/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: okta
baseUri: https://kraft-heinz.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
baseUri: https://kraft-heinz.service-now.com/api/now
authentication:
type: basic
username: $secrets.snow_user
password: $secrets.snow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: close-tickets
method: PATCH
Queries SAP S/4HANA for current production order status and inventory levels, then writes a demand-sensing snapshot to Snowflake for supply chain analytics and forecasting.
naftiko: '0.5'
info:
label: Supply Chain Demand Sensing Snapshot
description: Queries SAP S/4HANA for current production order status and inventory levels, then writes a demand-sensing snapshot to Snowflake for supply chain analytics and forecasting.
tags:
- supply-chain
- manufacturing
- sap
- snowflake
- analytics
capability:
exposes:
- type: mcp
namespace: supply-chain-ops
port: 8080
tools:
- name: capture-demand-snapshot
description: Pull production order status and stock levels for a given SAP plant from S/4HANA and write a timestamped demand snapshot to Snowflake for downstream forecasting models. Use for daily supply chain data ingestion.
inputParameters:
- name: plant_code
in: body
type: string
description: The SAP plant code to snapshot, e.g. KH01 for Chicago manufacturing.
steps:
- name: get-production-orders
type: call
call: sap.get-production-orders
with:
plant: '{{plant_code}}'
- name: get-stock-levels
type: call
call: sap.get-stock-levels
with:
plant: '{{plant_code}}'
- name: write-snapshot
type: call
call: snowflake.insert-snapshot
with:
plant: '{{plant_code}}'
orders: '{{get-production-orders.results}}'
stock: '{{get-stock-levels.results}}'
consumes:
- type: http
namespace: sap
baseUri: https://kraft-heinz-s4.sap.com/sap/opu/odata/sap/API_PRODUCTION_ORDERS_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: production-orders
path: /A_ProductionOrder
operations:
- name: get-production-orders
method: GET
- name: stock-levels
path: /A_MatlStkInAcctMod
operations:
- name: get-stock-levels
method: GET
- type: http
namespace: snowflake
baseUri: https://kraft-heinz.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: insert-snapshot
method: POST
Retrieves sprint completion metrics from Jira for engineering teams and posts a weekly delivery performance summary to the technology leadership Teams channel.
naftiko: '0.5'
info:
label: Jira Sprint Velocity and Delivery Report
description: Retrieves sprint completion metrics from Jira for engineering teams and posts a weekly delivery performance summary to the technology leadership Teams channel.
tags:
- devops
- engineering
- jira
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: engineering-reporting
port: 8080
tools:
- name: publish-sprint-velocity
description: Given a Jira project key and sprint ID, retrieve sprint velocity metrics (completed vs. committed points) and post a delivery summary to the technology leadership Teams channel. Use for weekly engineering stand-ups and sprint retrospectives.
inputParameters:
- name: project_key
in: body
type: string
description: The Jira project key, e.g. ENG.
- name: sprint_id
in: body
type: integer
description: The Jira sprint ID to report on.
steps:
- name: get-sprint
type: call
call: jira.get-sprint
with:
sprint_id: '{{sprint_id}}'
- name: post-summary
type: call
call: msteams.post-message
with:
channel_id: $secrets.teams_tech_channel_id
text: 'Sprint {{sprint_id}} ({{project_key}}): {{get-sprint.completed_points}} of {{get-sprint.committed_points}} story points completed.'
consumes:
- type: http
namespace: jira
baseUri: https://kraft-heinz.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: sprints
path: /board/{{sprint_id}}/sprint/{{sprint_id}}/report
inputParameters:
- name: sprint_id
in: path
operations:
- name: get-sprint
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Creates and tracks IT infrastructure change requests in ServiceNow, assigns them to the change advisory board, and sends approval reminders via Teams.
naftiko: '0.5'
info:
label: ServiceNow Change Request Lifecycle Management
description: Creates and tracks IT infrastructure change requests in ServiceNow, assigns them to the change advisory board, and sends approval reminders via Teams.
tags:
- itsm
- change-management
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: change-mgmt
port: 8080
tools:
- name: create-change-request
description: Given a change description, risk level, and planned implementation window, create a ServiceNow change request and notify the change advisory board in Teams. Use before any production infrastructure modification.
inputParameters:
- name: change_description
in: body
type: string
description: Description of the planned change and business justification.
- name: risk_level
in: body
type: string
description: 'Risk level: low, medium, or high.'
- name: implementation_window
in: body
type: string
description: Planned maintenance window in ISO 8601 format.
steps:
- name: create-cr
type: call
call: servicenow.create-change-request
with:
short_description: '{{change_description}}'
risk: '{{risk_level}}'
start_date: '{{implementation_window}}'
- name: notify-cab
type: call
call: msteams.post-message
with:
channel_id: $secrets.teams_cab_channel_id
text: 'New Change Request {{create-cr.number}} ({{risk_level}} risk) requires CAB review: {{change_description}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://kraft-heinz.service-now.com/api/now
authentication:
type: basic
username: $secrets.snow_user
password: $secrets.snow_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.msgraph_token
resources:
- name: channel-messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Retrieves supplier performance scores from SAP Ariba Supplier Risk, cross-references with open POs in SAP S/4HANA, and escalates high-risk suppliers to the procurement team via Teams.
naftiko: '0.5'
info:
label: SAP Ariba Supplier Risk Assessment
description: Retrieves supplier performance scores from SAP Ariba Supplier Risk, cross-references with open POs in SAP S/4HANA, and escalates high-risk suppliers to the procurement team via Teams.
tags:
- procurement
- sap-ariba
- sap
- supplier-risk
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: supplier-risk
port: 8080
tools:
- name: assess-supplier-risk
description: Given a supplier ID, retrieve their risk score from SAP Ariba Supplier Risk and check for open purchase orders in SAP S/4HANA. If risk score exceeds threshold, notify the procurement Teams channel. Use for quarterly supplier risk reviews.
inputParameters:
- name: supplier_id
in: body
type: string
description: The SAP Ariba supplier ID to assess.
steps:
- name: get-risk-score
type: call
call: ariba.get-supplier-risk
with:
supplier_id: '{{supplier_id}}'
- name: get-open-pos
type: call
call: sap.get-supplier-pos
with:
supplier_id: '{{supplier_id}}'
- name: notify-procurement
type: call
call: msteams.post-message
with:
channel_id: $secrets.teams_procurement_channel_id
text: 'Supplier Risk Alert: {{supplier_id}} | Risk Score: {{get-risk-score.score}} | Open POs: {{get-open-pos.count}}'
consumes:
- type: http
namespace: ariba
baseUri: https://openapi.ariba.com/api/supplierRisk/v1
authentication:
type: bearer
token: $secrets.ariba_token
resources:
- name: supplier-risk
path: /suppliers/{{supplier_id}}/riskScore
inputParameters:
- name: supplier_id
in: path
operations:
- name: get-supplier-risk
method: GET
- type: http
namespace: sap
baseUri: https://kraft-heinz-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: get-supplier-pos
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Triggers a Power BI dataset refresh for the trade spend and promotional analytics workspace and notifies the commercial finance team via Teams on completion.
naftiko: '0.5'
info:
label: Power BI Trade Spend Analytics Refresh
description: Triggers a Power BI dataset refresh for the trade spend and promotional analytics workspace and notifies the commercial finance team via Teams on completion.
tags:
- finance
- analytics
- power-bi
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: trade-analytics
port: 8080
tools:
- name: refresh-trade-spend-report
description: Trigger a Power BI dataset refresh for the trade spend analytics workspace and dataset, then post a completion notification to the commercial finance Teams channel. Use at the start of each promotional planning cycle or on demand.
inputParameters:
- name: workspace_id
in: body
type: string
description: The Power BI workspace ID containing the trade spend dataset.
- name: dataset_id
in: body
type: string
description: The Power BI dataset ID to refresh.
steps:
- name: trigger-refresh
type: call
call: powerbi.trigger-refresh
with:
workspace_id: '{{workspace_id}}'
dataset_id: '{{dataset_id}}'
- name: notify-finance
type: call
call: msteams.post-message
with:
channel_id: $secrets.teams_finance_channel_id
text: 'Trade Spend dataset {{dataset_id}} refresh triggered. 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: trigger-refresh
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
When an employee's role changes in Workday, updates their Okta group memberships to reflect the new role's access entitlements and notifies the IT security team.
naftiko: '0.5'
info:
label: Okta Role-Based Access Provisioning
description: When an employee's role changes in Workday, updates their Okta group memberships to reflect the new role's access entitlements and notifies the IT security team.
tags:
- identity
- security
- hr
- okta
- workday
- access-management
capability:
exposes:
- type: mcp
namespace: identity-ops
port: 8080
tools:
- name: sync-role-access
description: Given a Workday employee ID and new job profile, update the employee's Okta group memberships to reflect the new role's access entitlements. Notify the security team in Teams. Invoke on Workday role change events.
inputParameters:
- name: employee_id
in: body
type: string
description: The Workday worker ID of the employee whose role changed.
- name: new_role
in: body
type: string
description: The new job profile or role name as defined in Workday.
steps:
- name: get-worker
type: call
call: workday.get-worker
with:
worker_id: '{{employee_id}}'
- name: get-okta-user
type: call
call: okta.get-user
with:
login: '{{get-worker.work_email}}'
- name: update-groups
type: call
call: okta.add-user-to-group
with:
user_id: '{{get-okta-user.id}}'
profile: '{{new_role}}'
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: /kraft-heinz/workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: okta
baseUri: https://kraft-heinz.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: users
path: /users/{{login}}
inputParameters:
- name: login
in: path
operations:
- name: get-user
method: GET
- name: user-groups
path: /groups/{{group_id}}/users/{{user_id}}
inputParameters:
- name: group_id
in: path
- name: user_id
in: path
operations:
- name: add-user-to-group
method: PUT
Monitors Snowflake task execution for the consumer analytics and demand-sensing pipelines, creates a ServiceNow incident if jobs fail, and alerts the data team via Teams.
naftiko: '0.5'
info:
label: Snowflake Consumer Analytics Pipeline Monitor
description: Monitors Snowflake task execution for the consumer analytics and demand-sensing pipelines, creates a ServiceNow incident if jobs fail, and alerts the data team via Teams.
tags:
- data
- analytics
- snowflake
- servicenow
- monitoring
capability:
exposes:
- type: mcp
namespace: data-ops
port: 8080
tools:
- name: monitor-analytics-pipelines
description: Query Snowflake task history for failures in the consumer analytics and demand-sensing data pipelines over the last N hours. Open a ServiceNow incident and alert the data team if critical jobs have failed.
inputParameters:
- name: hours_back
in: body
type: integer
description: Number of hours of task execution history to check, e.g. 6.
steps:
- name: get-failed-tasks
type: call
call: snowflake.query-task-history
with:
hours_back: '{{hours_back}}'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: Snowflake pipeline failures in last {{hours_back}} hours
category: data_platform
priority: '2'
- name: notify-data-team
type: call
call: msteams.post-message
with:
channel_id: $secrets.teams_data_channel_id
text: 'Snowflake pipeline failures detected over last {{hours_back}}h. SNOW: {{create-incident.number}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://kraft-heinz.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: task-history
path: /statements
operations:
- name: query-task-history
method: POST
- type: http
namespace: servicenow
baseUri: https://kraft-heinz.service-now.com/api/now
authentication:
type: basic
username: $secrets.snow_user
password: $secrets.snow_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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Retrieves expense reports from SAP Concur that exceed policy thresholds, creates ServiceNow approval tasks for finance review, and notifies the AP team via Teams.
naftiko: '0.5'
info:
label: SAP Concur Travel and Expense Policy Audit
description: Retrieves expense reports from SAP Concur that exceed policy thresholds, creates ServiceNow approval tasks for finance review, and notifies the AP team via Teams.
tags:
- finance
- expense-management
- sap-concur
- servicenow
- audit
capability:
exposes:
- type: mcp
namespace: expense-audit
port: 8080
tools:
- name: audit-expense-reports
description: Retrieve submitted expense reports from SAP Concur exceeding the policy spending threshold and create ServiceNow approval tasks for AP review. Run nightly or before period close.
inputParameters:
- name: threshold_amount
in: body
type: number
description: Dollar threshold above which expense reports require additional approval.
- name: report_date
in: body
type: string
description: Date filter for submitted reports in YYYY-MM-DD format.
steps:
- name: get-reports
type: call
call: concur.list-expense-reports
with:
submitDateAfter: '{{report_date}}'
- name: create-review-tasks
type: call
call: servicenow.create-approval
with:
short_description: Expense reports exceeding ${{threshold_amount}} pending review
category: expense_audit
- name: notify-ap
type: call
call: msteams.post-message
with:
channel_id: $secrets.teams_ap_channel_id
text: 'Expense audit complete: reports exceeding ${{threshold_amount}} have been queued for AP review in ServiceNow.'
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
operations:
- name: list-expense-reports
method: GET
- type: http
namespace: servicenow
baseUri: https://kraft-heinz.service-now.com/api/now
authentication:
type: basic
username: $secrets.snow_user
password: $secrets.snow_password
resources:
- name: approvals
path: /table/sysapproval_approver
operations:
- name: create-approval
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
When a supplier invoice is submitted in SAP Ariba, validates it against the matching SAP S/4HANA purchase order and routes exceptions to the accounts payable team via Teams.
naftiko: '0.5'
info:
label: SAP Ariba Invoice Validation and Routing
description: When a supplier invoice is submitted in SAP Ariba, validates it against the matching SAP S/4HANA purchase order and routes exceptions to the accounts payable team via Teams.
tags:
- finance
- procurement
- sap-ariba
- sap
- invoice
- approval
capability:
exposes:
- type: mcp
namespace: invoice-ops
port: 8080
tools:
- name: validate-and-route-invoice
description: Given an Ariba invoice ID and associated PO number, retrieve invoice details from SAP Ariba, compare with the SAP S/4HANA PO, and alert the AP team via Teams if discrepancies exceed tolerance. Use for three-way match validation.
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.
steps:
- name: get-invoice
type: call
call: ariba.get-invoice
with:
invoice_id: '{{invoice_id}}'
- name: get-po
type: call
call: sap.get-po
with:
po_number: '{{po_number}}'
- name: notify-ap
type: call
call: msteams.post-message
with:
channel_id: $secrets.teams_ap_channel_id
text: 'Invoice {{invoice_id}} requires review. Invoiced: {{get-invoice.total_amount}} | PO Amount: {{get-po.total_value}}'
consumes:
- type: http
namespace: ariba
baseUri: https://openapi.ariba.com/api/invoice/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
baseUri: https://kraft-heinz-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: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Initiates the annual performance review cycle in Workday for all eligible Kraft Heinz employees and sends a kickoff reminder to managers via Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Performance Review Cycle Initiation
description: Initiates the annual performance review cycle in Workday for all eligible Kraft Heinz employees and sends a kickoff reminder to managers via Microsoft Teams.
tags:
- hr
- performance-management
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-performance
port: 8080
tools:
- name: launch-review-cycle
description: Given a review cycle name and due date, start the Workday performance review process and send reminder messages to all managers via Teams. Use at the beginning of each performance review period.
inputParameters:
- name: cycle_name
in: body
type: string
description: Name of the performance cycle, e.g. 2025 Annual Review.
- name: due_date
in: body
type: string
description: Review completion deadline in YYYY-MM-DD format.
steps:
- name: start-cycle
type: call
call: workday.create-review-cycle
with:
name: '{{cycle_name}}'
dueDate: '{{due_date}}'
- name: notify-hr
type: call
call: msteams.post-message
with:
channel_id: $secrets.teams_hr_channel_id
text: 'Performance Review ''{{cycle_name}}'' has launched in Workday. Deadline: {{due_date}}. Please complete reviews before the deadline.'
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: review-cycles
path: /kraft-heinz/performanceManagement/reviewCycles
operations:
- name: create-review-cycle
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
On a Datadog critical monitor trigger for Kraft Heinz digital commerce or manufacturing systems, creates a ServiceNow incident and posts a triage summary to the ops Teams channel.
naftiko: '0.5'
info:
label: Datadog Production Monitoring Alert Handler
description: On a Datadog critical monitor trigger for Kraft Heinz digital commerce or manufacturing systems, creates a ServiceNow incident and posts a triage summary to the ops Teams channel.
tags:
- observability
- monitoring
- datadog
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: observability-ops
port: 8080
tools:
- name: handle-datadog-alert
description: Given a Datadog alert ID and monitor name, retrieve event details, open a ServiceNow incident, and post a triage message to the ops Teams channel. Invoke when Datadog fires a critical alert on production systems.
inputParameters:
- name: alert_id
in: body
type: string
description: The Datadog event or alert ID.
- name: monitor_name
in: body
type: string
description: The Datadog monitor name that fired the alert.
steps:
- name: get-event
type: call
call: datadog.get-event
with:
alert_id: '{{alert_id}}'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Datadog Alert: {{monitor_name}}'
category: monitoring
priority: '2'
- name: post-triage
type: call
call: msteams.post-message
with:
channel_id: $secrets.teams_ops_channel_id
text: 'Datadog Alert: {{monitor_name}} | SNOW: {{create-incident.number}} | Event: {{alert_id}}'
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/{{alert_id}}
inputParameters:
- name: alert_id
in: path
operations:
- name: get-event
method: GET
- type: http
namespace: servicenow
baseUri: https://kraft-heinz.service-now.com/api/now
authentication:
type: basic
username: $secrets.snow_user
password: $secrets.snow_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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Scans a GitHub repository for critical code vulnerabilities using GitHub Advanced Security and creates Jira issues for each critical finding, notifying the security team via Teams.
naftiko: '0.5'
info:
label: GitHub Code Security Scan and Jira Triage
description: Scans a GitHub repository for critical code vulnerabilities using GitHub Advanced Security and creates Jira issues for each critical finding, notifying the security team via Teams.
tags:
- security
- devops
- github
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: security-scanning
port: 8080
tools:
- name: scan-and-triage-vulnerabilities
description: Given a GitHub repository, retrieve critical and high-severity code scanning alerts from GitHub Advanced Security, create a Jira security tracking issue, and notify the security channel in Teams. Use for weekly vulnerability management.
inputParameters:
- name: repo_name
in: body
type: string
description: GitHub repository in owner/repo format.
steps:
- name: get-vulnerabilities
type: call
call: github.get-code-scanning-alerts
with:
repo: '{{repo_name}}'
- name: create-jira-issue
type: call
call: jira.create-issue
with:
project_key: SEC
issuetype: Security
summary: 'Security scan: {{get-vulnerabilities.count}} critical findings in {{repo_name}}'
description: GitHub Advanced Security found {{get-vulnerabilities.count}} issues in {{repo_name}}.
- name: notify-security
type: call
call: msteams.post-message
with:
channel_id: $secrets.teams_security_channel_id
text: 'Security Scan: {{repo_name}} has {{get-vulnerabilities.count}} critical vulnerabilities. Jira: {{create-jira-issue.key}}'
consumes:
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: code-scanning-alerts
path: /repos/{{repo}}/code-scanning/alerts
inputParameters:
- name: repo
in: path
operations:
- name: get-code-scanning-alerts
method: GET
- type: http
namespace: jira
baseUri: https://kraft-heinz.atlassian.net/rest/api/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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Gets guide from SharePoint, shares via Box links, notifies via Microsoft Outlook, and tracks in Airtable.
naftiko: '0.5'
info:
label: Brand Style Guide Pipeline
description: Gets guide from SharePoint, shares via Box links, notifies via Microsoft Outlook, and tracks in Airtable.
tags:
- brand
- sharepoint
- box
- microsoft-outlook
- airtable
capability:
exposes:
- type: mcp
namespace: brand-style-guide-pipeline
port: 8080
tools:
- name: execute
description: Gets guide from SharePoint, shares via Box links, notifies via Microsoft Outlook, and tracks in Airtable.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sharepoint.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: box.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: microsoft-outlook.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: airtable.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sharepoint
baseUri: https://api.sharepoint.com/v1
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: box
baseUri: https://api.box.com/v1
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: microsoft-outlook
baseUri: https://api.microsoftoutlook.com/v1
authentication:
type: bearer
token: $secrets.microsoft_outlook_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: airtable
baseUri: https://api.airtable.com/v1
authentication:
type: bearer
token: $secrets.airtable_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
When launching a new LEGO set, creates the product master in SAP, sets up a Salesforce marketing campaign, configures Google Tag Manager tracking, publishes to BigCommerce, and announces to the team via Microsoft Teams.
naftiko: '0.5'
info:
label: New Set Launch Pipeline
description: When launching a new LEGO set, creates the product master in SAP, sets up a Salesforce marketing campaign, configures Google Tag Manager tracking, publishes to BigCommerce, and announces to the team via Microsoft Teams.
tags:
- product-design
- e-commerce
- sap
- salesforce
- google-tag-manager
- bigcommerce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: product-launch
port: 8080
tools:
- name: launch-new-set
description: Given set details, create product master, marketing campaign, e-commerce listing, and notify the team.
inputParameters:
- name: set_name
in: body
type: string
description: The LEGO set name.
- name: material_number
in: body
type: string
description: The SAP material number.
- name: theme
in: body
type: string
description: The product theme (e.g., Star Wars, City, Technic).
- name: launch_date
in: body
type: string
description: The launch date in YYYY-MM-DD format.
- name: retail_price
in: body
type: string
description: The retail price.
steps:
- name: create-master
type: call
call: sap.create-material
with:
material_number: '{{material_number}}'
description: '{{set_name}}'
theme: '{{theme}}'
price: '{{retail_price}}'
- name: create-campaign
type: call
call: salesforce.create-campaign
with:
name: 'Launch: {{set_name}}'
theme: '{{theme}}'
start_date: '{{launch_date}}'
- name: setup-tracking
type: call
call: gtm.create-tag
with:
tag_name: '{{set_name}}_launch'
product_id: '{{material_number}}'
- name: create-listing
type: call
call: bigcommerce.create-product
with:
name: '{{set_name}}'
sku: '{{material_number}}'
price: '{{retail_price}}'
categories: '{{theme}}'
- name: announce
type: call
call: msteams.send-message
with:
channel_id: product-launches
text: 'New set launch: {{set_name}} ({{theme}}) on {{launch_date}}. Price: ${{retail_price}}. SAP: {{material_number}}. E-commerce listing: {{create-listing.product_url}}.'
consumes:
- type: http
namespace: sap
baseUri: https://lego-s4.sap.com/sap/opu/odata/sap/MM_MATERIAL_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: materials
path: /A_Material
operations:
- name: create-material
method: POST
- type: http
namespace: salesforce
baseUri: https://lego.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: campaigns
path: /sobjects/Campaign
operations:
- name: create-campaign
method: POST
- type: http
namespace: gtm
baseUri: https://www.googleapis.com/tagmanager/v2
authentication:
type: bearer
token: $secrets.gtm_token
resources:
- name: tags
path: /accounts/{{account_id}}/containers/{{container_id}}/workspaces/{{workspace_id}}/tags
operations:
- name: create-tag
method: POST
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/{{store_hash}}/v3
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: products
path: /catalog/products
operations:
- name: create-product
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: channel_id
in: path
operations:
- name: send-message
method: POST
Creates campaign in Facebook, syncs audience from Salesforce, uploads creatives from Box, and tracks in Google Sheets.
naftiko: '0.5'
info:
label: Facebook Ad Campaign Pipeline
description: Creates campaign in Facebook, syncs audience from Salesforce, uploads creatives from Box, and tracks in Google Sheets.
tags:
- advertising
- facebook
- salesforce
- box
- google-sheets
capability:
exposes:
- type: mcp
namespace: facebook-ad-campaign-pipeline
port: 8080
tools:
- name: execute
description: Creates campaign in Facebook, syncs audience from Salesforce, uploads creatives from Box, and tracks in Google Sheets.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: facebook.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: salesforce.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: box.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: google-sheets.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: facebook
baseUri: https://api.facebook.com/v1
authentication:
type: bearer
token: $secrets.facebook_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: salesforce
baseUri: https://api.salesforce.com/v1
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: box
baseUri: https://api.box.com/v1
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: https://api.googlesheets.com/v1
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Gets Figma design, routes Asana approval, archives in Box, and updates SAP metadata.
naftiko: '0.5'
info:
label: Packaging Review Pipeline
description: Gets Figma design, routes Asana approval, archives in Box, and updates SAP metadata.
tags:
- packaging
- figma
- asana
- box
- sap
capability:
exposes:
- type: mcp
namespace: packaging-review-pipeline
port: 8080
tools:
- name: execute
description: Gets Figma design, routes Asana approval, archives in Box, and updates SAP metadata.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: figma.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: asana.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: box.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: sap.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: figma
baseUri: https://api.figma.com/v1
authentication:
type: bearer
token: $secrets.figma_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: asana
baseUri: https://api.asana.com/v1
authentication:
type: bearer
token: $secrets.asana_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: box
baseUri: https://api.box.com/v1
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Gets employee from Workday, provisions Azure AD, creates ServiceNow request, and sends welcome via Microsoft Outlook.
naftiko: '0.5'
info:
label: New Hire Provisioning Pipeline
description: Gets employee from Workday, provisions Azure AD, creates ServiceNow request, and sends welcome via Microsoft Outlook.
tags:
- it
- workday
- azure-active-directory
- servicenow
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: new-hire-provisioning-pipeline
port: 8080
tools:
- name: execute
description: Gets employee from Workday, provisions Azure AD, creates ServiceNow request, and sends welcome via Microsoft Outlook.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: workday.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: azure-active-directory.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: servicenow.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: microsoft-outlook.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: workday
baseUri: https://api.workday.com/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: azure-active-directory
baseUri: https://api.azureactivedirectory.com/v1
authentication:
type: bearer
token: $secrets.azure_active_directory_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: servicenow
baseUri: https://api.servicenow.com/v1
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: microsoft-outlook
baseUri: https://api.microsoftoutlook.com/v1
authentication:
type: bearer
token: $secrets.microsoft_outlook_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Retrieves LEGO.com website engagement metrics from Google Analytics.
naftiko: '0.5'
info:
label: Google Analytics Website Metrics
description: Retrieves LEGO.com website engagement metrics from Google Analytics.
tags:
- analytics
- e-commerce
- google-analytics
capability:
exposes:
- type: mcp
namespace: web-analytics
port: 8080
tools:
- name: get-website-metrics
description: Retrieve website metrics from Google Analytics for a date range.
inputParameters:
- 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: google-analytics.get-report
with:
property_id: lego-dotcom
start_date: '{{start_date}}'
end_date: '{{end_date}}'
outputParameters:
- name: sessions
type: string
mapping: $.rows[0].metricValues[0].value
- name: conversion_rate
type: string
mapping: $.rows[0].metricValues[1].value
consumes:
- type: http
namespace: google-analytics
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: get-report
method: POST
Detects carts in BigCommerce, sends MailChimp recovery emails, logs in Snowflake, and tracks in Google Analytics.
naftiko: '0.5'
info:
label: E-Commerce Cart Recovery Pipeline
description: Detects carts in BigCommerce, sends MailChimp recovery emails, logs in Snowflake, and tracks in Google Analytics.
tags:
- e-commerce
- bigcommerce
- mailchimp
- snowflake
- google-analytics
capability:
exposes:
- type: mcp
namespace: ecommerce-cart-recovery-pipeline
port: 8080
tools:
- name: execute
description: Detects carts in BigCommerce, sends MailChimp recovery emails, logs in Snowflake, and tracks in Google Analytics.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: bigcommerce.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: mailchimp.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: snowflake.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: google-analytics.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/v1
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: mailchimp
baseUri: https://api.mailchimp.com/v1
authentication:
type: bearer
token: $secrets.mailchimp_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: https://api.snowflake.com/v1
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-analytics
baseUri: https://api.googleanalytics.com/v1
authentication:
type: bearer
token: $secrets.google_analytics_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Retrieves LEGO set roadmap entries from Airtable.
naftiko: '0.5'
info:
label: Airtable Set Roadmap Lookup
description: Retrieves LEGO set roadmap entries from Airtable.
tags:
- product
- airtable
capability:
exposes:
- type: mcp
namespace: airtable-roadmap
port: 8080
tools:
- name: get-data
description: Retrieves LEGO set roadmap entries from Airtable.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: airtable-roadmap.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: airtable-roadmap
baseUri: https://api.airtable.com/v0/appLego
authentication:
type: bearer
token: $secrets.airtable_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Creates product in SAP, publishes to BigCommerce, notifies retailers via Salesforce, and promotes on Instagram.
naftiko: '0.5'
info:
label: New Set Retail Distribution Pipeline
description: Creates product in SAP, publishes to BigCommerce, notifies retailers via Salesforce, and promotes on Instagram.
tags:
- product
- sap
- bigcommerce
- salesforce
- instagram
capability:
exposes:
- type: mcp
namespace: new-set-retail-distribution-pipeline
port: 8080
tools:
- name: execute
description: Creates product in SAP, publishes to BigCommerce, notifies retailers via Salesforce, and promotes on Instagram.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: bigcommerce.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: salesforce.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: instagram.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/v1
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: salesforce
baseUri: https://api.salesforce.com/v1
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: instagram
baseUri: https://api.instagram.com/v1
authentication:
type: bearer
token: $secrets.instagram_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Triggers Azure DevOps build, publishes release notes to Confluence, notifies via Slack, and updates BigCommerce.
naftiko: '0.5'
info:
label: Digital Experience Release Pipeline
description: Triggers Azure DevOps build, publishes release notes to Confluence, notifies via Slack, and updates BigCommerce.
tags:
- digital
- azure-devops
- confluence
- slack
- bigcommerce
capability:
exposes:
- type: mcp
namespace: digital-experience-release-pipeline
port: 8080
tools:
- name: execute
description: Triggers Azure DevOps build, publishes release notes to Confluence, notifies via Slack, and updates BigCommerce.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: azure-devops.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: confluence.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: slack.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: bigcommerce.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: azure-devops
baseUri: https://api.azuredevops.com/v1
authentication:
type: bearer
token: $secrets.azure_devops_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: confluence
baseUri: https://api.confluence.com/v1
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: https://api.slack.com/v1
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/v1
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Enrolls in Salesforce, creates Stripe record, triggers MailChimp welcome, and logs in Snowflake.
naftiko: '0.5'
info:
label: Customer Loyalty Enrollment Pipeline
description: Enrolls in Salesforce, creates Stripe record, triggers MailChimp welcome, and logs in Snowflake.
tags:
- loyalty
- salesforce
- stripe
- mailchimp
- snowflake
capability:
exposes:
- type: mcp
namespace: customer-loyalty-enrollment-pipeline
port: 8080
tools:
- name: execute
description: Enrolls in Salesforce, creates Stripe record, triggers MailChimp welcome, and logs in Snowflake.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: salesforce.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: stripe.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: mailchimp.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: snowflake.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://api.salesforce.com/v1
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: stripe
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: mailchimp
baseUri: https://api.mailchimp.com/v1
authentication:
type: bearer
token: $secrets.mailchimp_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: https://api.snowflake.com/v1
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Queries retail partner performance data from Teradata.
naftiko: '0.5'
info:
label: Teradata Retail Data Query
description: Queries retail partner performance data from Teradata.
tags:
- analytics
- teradata
capability:
exposes:
- type: mcp
namespace: teradata-retail
port: 8080
tools:
- name: get-data
description: Queries retail partner performance data from Teradata.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: teradata-retail.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: teradata-retail
baseUri: https://lego.teradata.com/api/v1
authentication:
type: bearer
token: $secrets.teradata_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Creates and sends a VIP insider newsletter via MailChimp to LEGO fans.
naftiko: '0.5'
info:
label: MailChimp VIP Newsletter Campaign
description: Creates and sends a VIP insider newsletter via MailChimp to LEGO fans.
tags:
- marketing
- email
- mailchimp
capability:
exposes:
- type: mcp
namespace: email-marketing
port: 8080
tools:
- name: send-vip-newsletter
description: Create and send a MailChimp VIP newsletter campaign.
inputParameters:
- name: campaign_name
in: body
type: string
description: The campaign name.
- name: subject
in: body
type: string
description: The email subject line.
- name: template_id
in: body
type: string
description: The email template ID.
call: mailchimp.create-campaign
with:
name: '{{campaign_name}}'
list_id: vip-insiders
template_id: '{{template_id}}'
subject: '{{subject}}'
consumes:
- type: http
namespace: mailchimp
baseUri: https://us1.api.mailchimp.com/3.0
authentication:
type: basic
username: anystring
password: $secrets.mailchimp_api_key
resources:
- name: campaigns
path: /campaigns
operations:
- name: create-campaign
method: POST
When a licensing agreement is submitted in Salesforce, validates terms, creates a legal review in ServiceNow, stores the contract in SharePoint, and notifies the licensing team via Microsoft Teams.
naftiko: '0.5'
info:
label: Licensing Agreement Approval Pipeline
description: When a licensing agreement is submitted in Salesforce, validates terms, creates a legal review in ServiceNow, stores the contract in SharePoint, and notifies the licensing team via Microsoft Teams.
tags:
- licensing
- legal
- salesforce
- servicenow
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: licensing-agreements
port: 8080
tools:
- name: process-licensing-agreement
description: Given a licensing agreement ID, validate terms, create legal review, and notify the team.
inputParameters:
- name: agreement_id
in: body
type: string
description: The Salesforce licensing agreement ID.
- name: partner_name
in: body
type: string
description: The licensing partner name.
steps:
- name: get-agreement
type: call
call: salesforce.get-agreement
with:
agreement_id: '{{agreement_id}}'
- name: create-review
type: call
call: servicenow.create-case
with:
short_description: 'Legal review: Licensing agreement with {{partner_name}}'
category: legal_review
description: 'Agreement ID: {{agreement_id}}. Partner: {{partner_name}}. Terms: {{get-agreement.terms_summary}}.'
- name: store-contract
type: call
call: sharepoint.upload-file
with:
site_id: legal-docs
folder_path: LicensingAgreements/{{partner_name}}
file_name: agreement_{{agreement_id}}.pdf
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: licensing
text: 'Licensing agreement {{agreement_id}} with {{partner_name}} submitted for review. Legal case: {{create-review.number}}. Contract stored: {{store-contract.url}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://lego.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: agreements
path: /sobjects/LicensingAgreement__c/{{agreement_id}}
inputParameters:
- name: agreement_id
in: path
operations:
- name: get-agreement
method: GET
- type: http
namespace: servicenow
baseUri: https://lego.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: 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}}/{{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
- 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: channel_id
in: path
operations:
- name: send-message
method: POST
Creates promotion in SAP, publishes to BigCommerce, sends MailChimp campaign, and tracks in Google Sheets.
naftiko: '0.5'
info:
label: Seasonal Promotion Pipeline
description: Creates promotion in SAP, publishes to BigCommerce, sends MailChimp campaign, and tracks in Google Sheets.
tags:
- promotions
- sap
- bigcommerce
- mailchimp
- google-sheets
capability:
exposes:
- type: mcp
namespace: seasonal-promotion-pipeline
port: 8080
tools:
- name: execute
description: Creates promotion in SAP, publishes to BigCommerce, sends MailChimp campaign, and tracks in Google Sheets.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: bigcommerce.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: mailchimp.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: google-sheets.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/v1
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: mailchimp
baseUri: https://api.mailchimp.com/v1
authentication:
type: bearer
token: $secrets.mailchimp_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: https://api.googlesheets.com/v1
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Updates a product listing on BigCommerce with new pricing, description, or availability.
naftiko: '0.5'
info:
label: BigCommerce Product Listing Update
description: Updates a product listing on BigCommerce with new pricing, description, or availability.
tags:
- e-commerce
- bigcommerce
capability:
exposes:
- type: mcp
namespace: ecommerce-management
port: 8080
tools:
- name: update-product-listing
description: Update a BigCommerce product listing.
inputParameters:
- name: product_id
in: body
type: string
description: The BigCommerce product ID.
- name: price
in: body
type: string
description: The new price.
- name: availability
in: body
type: string
description: The availability status.
call: bigcommerce.update-product
with:
product_id: '{{product_id}}'
price: '{{price}}'
availability: '{{availability}}'
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/{{store_hash}}/v3
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: products
path: /catalog/products/{{product_id}}
inputParameters:
- name: product_id
in: path
operations:
- name: update-product
method: PUT
Queries aggregated LEGO set sales data from Snowflake.
naftiko: '0.5'
info:
label: Snowflake Set Sales Query
description: Queries aggregated LEGO set sales data from Snowflake.
tags:
- analytics
- snowflake
capability:
exposes:
- type: mcp
namespace: snowflake-sales
port: 8080
tools:
- name: get-data
description: Queries aggregated LEGO set sales data from Snowflake.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: snowflake-sales.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: snowflake-sales
baseUri: https://lego.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Retrieves a Zendesk support ticket by ID.
naftiko: '0.5'
info:
label: Zendesk Customer Support Ticket Lookup
description: Retrieves a Zendesk support ticket by ID.
tags:
- customer-service
- zendesk
capability:
exposes:
- type: mcp
namespace: customer-support
port: 8080
tools:
- name: get-support-ticket
description: Look up a Zendesk support ticket by ticket ID.
inputParameters:
- name: ticket_id
in: body
type: string
description: The Zendesk ticket ID.
call: zendesk.get-ticket
with:
ticket_id: '{{ticket_id}}'
outputParameters:
- name: subject
type: string
mapping: $.ticket.subject
- name: status
type: string
mapping: $.ticket.status
- name: priority
type: string
mapping: $.ticket.priority
consumes:
- type: http
namespace: zendesk
baseUri: https://lego.zendesk.com/api/v2
authentication:
type: basic
username: $secrets.zendesk_user
password: $secrets.zendesk_token
resources:
- name: tickets
path: /tickets/{{ticket_id}}
inputParameters:
- name: ticket_id
in: path
operations:
- name: get-ticket
method: GET
Archives a legal document to Box in the licensing compliance folder.
naftiko: '0.5'
info:
label: Box Legal Document Archive
description: Archives a legal document to Box in the licensing compliance folder.
tags:
- licensing
- legal
- box
capability:
exposes:
- type: mcp
namespace: legal-archive
port: 8080
tools:
- name: archive-document
description: Upload a legal document to Box.
inputParameters:
- name: file_name
in: body
type: string
description: The document file name.
- name: folder_id
in: body
type: string
description: The Box target folder ID.
call: box.upload-file
with:
folder_id: '{{folder_id}}'
file_name: '{{file_name}}'
consumes:
- type: http
namespace: box
baseUri: https://upload.box.com/api/2.0
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: files
path: /files/content
operations:
- name: upload-file
method: POST
Schedules maintenance in SAP, creates ServiceNow work order, notifies plant team via Slack, and updates Google Sheets.
naftiko: '0.5'
info:
label: Mold Maintenance Scheduling Pipeline
description: Schedules maintenance in SAP, creates ServiceNow work order, notifies plant team via Slack, and updates Google Sheets.
tags:
- manufacturing
- sap
- servicenow
- slack
- google-sheets
capability:
exposes:
- type: mcp
namespace: mold-maintenance-scheduling-pipeline
port: 8080
tools:
- name: execute
description: Schedules maintenance in SAP, creates ServiceNow work order, notifies plant team via Slack, and updates Google Sheets.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: servicenow.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: slack.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: google-sheets.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: servicenow
baseUri: https://api.servicenow.com/v1
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: https://api.slack.com/v1
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: https://api.googlesheets.com/v1
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Retrieves a Tableau dashboard embed URL for retail performance analytics.
naftiko: '0.5'
info:
label: Tableau Retail Performance Dashboard
description: Retrieves a Tableau dashboard embed URL for retail performance analytics.
tags:
- analytics
- retail
- tableau
capability:
exposes:
- type: mcp
namespace: retail-dashboards
port: 8080
tools:
- name: get-retail-dashboard
description: Retrieve the embed URL for a Tableau retail performance dashboard.
inputParameters:
- name: workbook_name
in: body
type: string
description: The Tableau workbook name.
call: tableau.get-workbook
with:
workbook_name: '{{workbook_name}}'
outputParameters:
- name: embed_url
type: string
mapping: $.workbook.contentUrl
consumes:
- type: http
namespace: tableau
baseUri: https://lego-tableau.online/api/3.14
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: workbooks
path: /sites/{{site_id}}/workbooks?filter=name:eq:{{workbook_name}}
inputParameters:
- name: workbook_name
in: query
operations:
- name: get-workbook
method: GET
Enrolls collectors in Salesforce, provisions rewards in Stripe, triggers MailChimp welcome series, and tracks engagement in Snowflake.
naftiko: '0.5'
info:
label: Minifigure Collector Program Pipeline
description: Enrolls collectors in Salesforce, provisions rewards in Stripe, triggers MailChimp welcome series, and tracks engagement in Snowflake.
tags:
- loyalty
- salesforce
- stripe
- mailchimp
- snowflake
capability:
exposes:
- type: mcp
namespace: minifigure-collector
port: 8080
tools:
- name: execute
description: Orchestrate minifigure collector program across Salesforce, Stripe, MailChimp, and Snowflake.
inputParameters:
- name: input_id
in: body
type: string
description: The collector email.
- name: context
in: body
type: string
description: Additional context.
steps:
- name: step-1
type: call
call: salesforce.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: stripe.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: mailchimp.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: snowflake.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://api.salesforce.com/v1
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: stripe
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: mailchimp
baseUri: https://api.mailchimp.com/v1
authentication:
type: bearer
token: $secrets.mailchimp_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: https://api.snowflake.com/v1
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Analyzes SAP inventory, optimizes in Snowflake, refreshes Power BI, and alerts via Slack.
naftiko: '0.5'
info:
label: Warehouse Optimization Pipeline
description: Analyzes SAP inventory, optimizes in Snowflake, refreshes Power BI, and alerts via Slack.
tags:
- logistics
- sap
- snowflake
- power-bi
- slack
capability:
exposes:
- type: mcp
namespace: warehouse-optimization-pipeline
port: 8080
tools:
- name: execute
description: Analyzes SAP inventory, optimizes in Snowflake, refreshes Power BI, and alerts via Slack.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: snowflake.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: power-bi.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: slack.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: https://api.snowflake.com/v1
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: power-bi
baseUri: https://api.powerbi.com/v1
authentication:
type: bearer
token: $secrets.power_bi_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: https://api.slack.com/v1
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Pulls from Google Search Console, updates BigCommerce, and reports via Google Sheets.
naftiko: '0.5'
info:
label: SEO Optimization Pipeline
description: Pulls from Google Search Console, updates BigCommerce, and reports via Google Sheets.
tags:
- seo
- google-search-console
- bigcommerce
- google-sheets
capability:
exposes:
- type: mcp
namespace: seo-optimization-pipeline
port: 8080
tools:
- name: execute
description: Pulls from Google Search Console, updates BigCommerce, and reports via Google Sheets.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: google-search-console.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: bigcommerce.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: google-sheets.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: google-sheets.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: google-search-console
baseUri: https://api.googlesearchconsole.com/v1
authentication:
type: bearer
token: $secrets.google_search_console_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/v1
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: https://api.googlesheets.com/v1
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Retrieves design project status from Asana.
naftiko: '0.5'
info:
label: Asana Design Project Lookup
description: Retrieves design project status from Asana.
tags:
- project-management
- asana
capability:
exposes:
- type: mcp
namespace: asana-design
port: 8080
tools:
- name: get-data
description: Retrieves design project status from Asana.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: asana-design.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: asana-design
baseUri: https://app.asana.com/api/1.0
authentication:
type: bearer
token: $secrets.asana_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Retrieves a Figma packaging design file by key.
naftiko: '0.5'
info:
label: Figma Set Packaging Lookup
description: Retrieves a Figma packaging design file by key.
tags:
- design
- figma
capability:
exposes:
- type: mcp
namespace: figma-packaging
port: 8080
tools:
- name: get-data
description: Retrieves a Figma packaging design file by key.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: figma-packaging.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: figma-packaging
baseUri: https://api.figma.com/v1
authentication:
type: bearer
token: $secrets.figma_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
When a production run completes, retrieves mold quality data from SAP, analyzes defect rates in Azure Databricks, stores the report in SharePoint, and notifies the quality team via Microsoft Teams.
naftiko: '0.5'
info:
label: Manufacturing Mold Quality Pipeline
description: When a production run completes, retrieves mold quality data from SAP, analyzes defect rates in Azure Databricks, stores the report in SharePoint, and notifies the quality team via Microsoft Teams.
tags:
- manufacturing
- quality-control
- sap
- azure-databricks
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: mold-quality
port: 8080
tools:
- name: analyze-mold-quality
description: Given a production run ID, analyze mold quality metrics and notify the team.
inputParameters:
- name: production_run_id
in: body
type: string
description: The SAP production run identifier.
- name: plant_code
in: body
type: string
description: The manufacturing plant code.
steps:
- name: get-quality-data
type: call
call: sap.get-production-quality
with:
run_id: '{{production_run_id}}'
plant: '{{plant_code}}'
- name: analyze-defects
type: call
call: databricks.run-query
with:
query: SELECT * FROM mold_defect_analysis WHERE run_id = '{{production_run_id}}'
- name: store-report
type: call
call: sharepoint.upload-file
with:
site_id: quality-docs
folder_path: MoldQuality/{{plant_code}}/{{production_run_id}}
file_name: quality_report.pdf
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: quality-assurance
text: 'Mold quality report for run {{production_run_id}} at {{plant_code}}: Defect rate: {{analyze-defects.defect_rate}}%. Top defect: {{analyze-defects.top_defect}}. Report: {{store-report.url}}.'
consumes:
- type: http
namespace: sap
baseUri: https://lego-s4.sap.com/sap/opu/odata/sap/QM_INSPECTION_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: quality
path: /ProductionQuality(RunId='{{run_id}}',Plant='{{plant}}')
inputParameters:
- name: run_id
in: path
- name: plant
in: path
operations:
- name: get-production-quality
method: GET
- type: http
namespace: databricks
baseUri: https://lego-analytics.azuredatabricks.net/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: sql-queries
path: /sql/statements
operations:
- name: run-query
method: POST
- 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}}/{{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
- 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: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves e-commerce platform health from New Relic.
naftiko: '0.5'
info:
label: New Relic E-Commerce Health Lookup
description: Retrieves e-commerce platform health from New Relic.
tags:
- monitoring
- new-relic
capability:
exposes:
- type: mcp
namespace: newrelic-ecom
port: 8080
tools:
- name: get-data
description: Retrieves e-commerce platform health from New Relic.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: newrelic-ecom.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: newrelic-ecom
baseUri: https://api.newrelic.com/v2
authentication:
type: bearer
token: $secrets.newrelic_api_key
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Creates case in Salesforce, generates documents in SharePoint, assigns Jira review, and notifies via Microsoft Teams.
naftiko: '0.5'
info:
label: Patent Coordination Pipeline
description: Creates case in Salesforce, generates documents in SharePoint, assigns Jira review, and notifies via Microsoft Teams.
tags:
- legal
- salesforce
- sharepoint
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: patent-coordination-pipeline
port: 8080
tools:
- name: execute
description: Creates case in Salesforce, generates documents in SharePoint, assigns Jira review, and notifies via Microsoft Teams.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: salesforce.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: sharepoint.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: jira.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: microsoft-teams.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://api.salesforce.com/v1
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: sharepoint
baseUri: https://api.sharepoint.com/v1
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: jira
baseUri: https://api.jira.com/v1
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: microsoft-teams
baseUri: https://api.microsoftteams.com/v1
authentication:
type: bearer
token: $secrets.microsoft_teams_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Aggregates community content from Snowflake, curates newsletter in MailChimp, tracks engagement in Google Analytics, and reports in Google Sheets.
naftiko: '0.5'
info:
label: Adult Fan Community Newsletter Pipeline
description: Aggregates community content from Snowflake, curates newsletter in MailChimp, tracks engagement in Google Analytics, and reports in Google Sheets.
tags:
- community
- snowflake
- mailchimp
- google-analytics
- google-sheets
capability:
exposes:
- type: mcp
namespace: afol-newsletter
port: 8080
tools:
- name: execute
description: Orchestrate adult fan community newsletter across Snowflake, MailChimp, Google Analytics, and Google Sheets.
inputParameters:
- name: input_id
in: body
type: string
description: The newsletter edition ID.
- name: context
in: body
type: string
description: Additional context.
steps:
- name: step-1
type: call
call: snowflake.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: mailchimp.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: google-analytics.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: google-sheets.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://api.snowflake.com/v1
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: mailchimp
baseUri: https://api.mailchimp.com/v1
authentication:
type: bearer
token: $secrets.mailchimp_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-analytics
baseUri: https://api.googleanalytics.com/v1
authentication:
type: bearer
token: $secrets.google_analytics_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: https://api.googlesheets.com/v1
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Validates batch in SAP quality, creates inspection report in Confluence, updates tracker in Airtable, and notifies via Slack.
naftiko: '0.5'
info:
label: Brick Quality Control Pipeline
description: Validates batch in SAP quality, creates inspection report in Confluence, updates tracker in Airtable, and notifies via Slack.
tags:
- quality
- sap
- confluence
- airtable
- slack
capability:
exposes:
- type: mcp
namespace: brick-quality-control-pipeline
port: 8080
tools:
- name: execute
description: Validates batch in SAP quality, creates inspection report in Confluence, updates tracker in Airtable, and notifies via Slack.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: confluence.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: airtable.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: slack.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: confluence
baseUri: https://api.confluence.com/v1
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: airtable
baseUri: https://api.airtable.com/v1
authentication:
type: bearer
token: $secrets.airtable_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: https://api.slack.com/v1
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Retrieves quality inspection results from SAP for brick batches.
naftiko: '0.5'
info:
label: SAP Quality Inspection Lookup
description: Retrieves quality inspection results from SAP for brick batches.
tags:
- quality
- sap
capability:
exposes:
- type: mcp
namespace: sap-quality
port: 8080
tools:
- name: get-data
description: Retrieves quality inspection results from SAP for brick batches.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: sap-quality.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: sap-quality
baseUri: https://lego-s4.sap.com/sap/opu/odata/sap/ZQUALITY_SRV
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Retrieves production order details from SAP for brick manufacturing.
naftiko: '0.5'
info:
label: SAP Production Order Lookup
description: Retrieves production order details from SAP for brick manufacturing.
tags:
- manufacturing
- sap
capability:
exposes:
- type: mcp
namespace: sap-prodorders
port: 8080
tools:
- name: get-data
description: Retrieves production order details from SAP for brick manufacturing.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: sap-prodorders.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: sap-prodorders
baseUri: https://lego-s4.sap.com/sap/opu/odata/sap/ZPRODORDER_SRV
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Searches Google Drive for product design assets and creative files.
naftiko: '0.5'
info:
label: Google Drive Design Asset Search
description: Searches Google Drive for product design assets and creative files.
tags:
- product-design
- google-drive
capability:
exposes:
- type: mcp
namespace: design-assets
port: 8080
tools:
- name: search-design-assets
description: Search Google Drive for design assets.
inputParameters:
- name: keyword
in: body
type: string
description: The search keyword.
call: google-drive.search-files
with:
query: name contains '{{keyword}}'
outputParameters:
- name: files
type: string
mapping: $.files
consumes:
- type: http
namespace: google-drive
baseUri: https://www.googleapis.com/drive/v3
authentication:
type: bearer
token: $secrets.google_drive_token
resources:
- name: files
path: /files?q={{query}}
inputParameters:
- name: query
in: query
operations:
- name: search-files
method: GET
Collects from Zendesk, analyzes via Azure ML, stores in Snowflake, and publishes to Confluence.
naftiko: '0.5'
info:
label: Customer Feedback Pipeline
description: Collects from Zendesk, analyzes via Azure ML, stores in Snowflake, and publishes to Confluence.
tags:
- feedback
- zendesk
- azure-machine-learning
- snowflake
- confluence
capability:
exposes:
- type: mcp
namespace: customer-feedback-pipeline
port: 8080
tools:
- name: execute
description: Collects from Zendesk, analyzes via Azure ML, stores in Snowflake, and publishes to Confluence.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: zendesk.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: azure-machine-learning.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: snowflake.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: confluence.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: zendesk
baseUri: https://api.zendesk.com/v1
authentication:
type: bearer
token: $secrets.zendesk_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: azure-machine-learning
baseUri: https://api.azuremachinelearning.com/v1
authentication:
type: bearer
token: $secrets.azure_machine_learning_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: https://api.snowflake.com/v1
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: confluence
baseUri: https://api.confluence.com/v1
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
When a LEGO.com order is placed, creates a delivery in SAP, updates BigCommerce order status, and sends a shipping confirmation via MailChimp.
naftiko: '0.5'
info:
label: E-Commerce Fulfillment Pipeline
description: When a LEGO.com order is placed, creates a delivery in SAP, updates BigCommerce order status, and sends a shipping confirmation via MailChimp.
tags:
- e-commerce
- fulfillment
- sap
- bigcommerce
- mailchimp
capability:
exposes:
- type: mcp
namespace: order-fulfillment
port: 8080
tools:
- name: fulfill-order
description: Given an order, create delivery, update status, and send confirmation.
inputParameters:
- name: order_id
in: body
type: string
description: The BigCommerce order ID.
- name: customer_email
in: body
type: string
description: The customer email.
steps:
- name: get-order
type: call
call: bigcommerce.get-order
with:
order_id: '{{order_id}}'
- name: create-delivery
type: call
call: sap.create-delivery
with:
order_id: '{{order_id}}'
items: '{{get-order.products}}'
- name: update-status
type: call
call: bigcommerce.update-order
with:
order_id: '{{order_id}}'
status: shipped
tracking: '{{create-delivery.tracking_number}}'
- name: send-confirmation
type: call
call: mailchimp.send-transactional
with:
template: shipping-confirmation
recipient: '{{customer_email}}'
tracking: '{{create-delivery.tracking_number}}'
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/{{store_hash}}/v2
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: orders
path: /orders/{{order_id}}
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- name: update-order
method: PUT
- type: http
namespace: sap
baseUri: https://lego-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: /Deliveries
operations:
- name: create-delivery
method: POST
- type: http
namespace: mailchimp
baseUri: https://us1.api.mailchimp.com/3.0
authentication:
type: basic
username: anystring
password: $secrets.mailchimp_api_key
resources:
- name: transactional
path: /messages/send-template
operations:
- name: send-transactional
method: POST
Collects consumer feedback from Zendesk, analyzes sentiment in Azure Databricks, creates product improvement tasks in Jira, and shares insights with the design team via Microsoft Teams.
naftiko: '0.5'
info:
label: Consumer Feedback Pipeline
description: Collects consumer feedback from Zendesk, analyzes sentiment in Azure Databricks, creates product improvement tasks in Jira, and shares insights with the design team via Microsoft Teams.
tags:
- product-design
- customer-feedback
- zendesk
- azure-databricks
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: consumer-feedback
port: 8080
tools:
- name: analyze-feedback
description: Given a product theme and date range, analyze consumer feedback and create improvement tasks.
inputParameters:
- name: theme
in: body
type: string
description: The LEGO theme to analyze.
- name: start_date
in: body
type: string
description: Start date.
- name: end_date
in: body
type: string
description: End date.
steps:
- name: get-tickets
type: call
call: zendesk.search-tickets
with:
query: type:ticket tags:{{theme}} created>{{start_date}} created<{{end_date}}
- name: analyze-sentiment
type: call
call: databricks.run-query
with:
query: SELECT * FROM feedback_sentiment WHERE theme = '{{theme}}' AND date BETWEEN '{{start_date}}' AND '{{end_date}}'
- name: create-improvement-task
type: call
call: jira.create-issue
with:
project: DESIGN
summary: 'Consumer feedback insights: {{theme}} ({{start_date}} to {{end_date}})'
description: 'Sentiment score: {{analyze-sentiment.avg_score}}. Top themes: {{analyze-sentiment.top_themes}}. Ticket count: {{get-tickets.count}}.'
- name: notify-design
type: call
call: msteams.send-message
with:
channel_id: product-design
text: 'Consumer feedback for {{theme}}: Avg sentiment: {{analyze-sentiment.avg_score}}. {{get-tickets.count}} tickets analyzed. Improvement task: {{create-improvement-task.key}}.'
consumes:
- type: http
namespace: zendesk
baseUri: https://lego.zendesk.com/api/v2
authentication:
type: basic
username: $secrets.zendesk_user
password: $secrets.zendesk_token
resources:
- name: search
path: /search.json?query={{query}}
inputParameters:
- name: query
in: query
operations:
- name: search-tickets
method: GET
- type: http
namespace: databricks
baseUri: https://lego-analytics.azuredatabricks.net/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: sql-queries
path: /sql/statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira
baseUri: https://lego.atlassian.net/rest/api/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: channel_id
in: path
operations:
- name: send-message
method: POST
Creates vendor in SAP, sets up folder in Box, creates Salesforce account, and sends welcome via Microsoft Outlook.
naftiko: '0.5'
info:
label: Vendor Onboarding Pipeline
description: Creates vendor in SAP, sets up folder in Box, creates Salesforce account, and sends welcome via Microsoft Outlook.
tags:
- procurement
- sap
- box
- salesforce
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: vendor-onboarding-pipeline
port: 8080
tools:
- name: execute
description: Creates vendor in SAP, sets up folder in Box, creates Salesforce account, and sends welcome via Microsoft Outlook.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: box.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: salesforce.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: microsoft-outlook.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: box
baseUri: https://api.box.com/v1
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: salesforce
baseUri: https://api.salesforce.com/v1
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: microsoft-outlook
baseUri: https://api.microsoftoutlook.com/v1
authentication:
type: bearer
token: $secrets.microsoft_outlook_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Retrieves a Jira issue by key from the product design project.
naftiko: '0.5'
info:
label: Jira Design Task Lookup
description: Retrieves a Jira issue by key from the product design project.
tags:
- product-design
- jira
capability:
exposes:
- type: mcp
namespace: design-tasks
port: 8080
tools:
- name: get-jira-issue
description: Look up a Jira issue by key.
inputParameters:
- name: issue_key
in: body
type: string
description: The Jira issue key.
call: jira.get-issue
with:
issue_key: '{{issue_key}}'
outputParameters:
- name: summary
type: string
mapping: $.fields.summary
- name: status
type: string
mapping: $.fields.status.name
- name: assignee
type: string
mapping: $.fields.assignee.displayName
consumes:
- type: http
namespace: jira
baseUri: https://lego.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
Retrieves Qlik Sense inventory analytics dashboard status.
naftiko: '0.5'
info:
label: Qlik Sense Inventory Analytics
description: Retrieves Qlik Sense inventory analytics dashboard status.
tags:
- analytics
- qlik-sense
capability:
exposes:
- type: mcp
namespace: qlik-inventory
port: 8080
tools:
- name: get-data
description: Retrieves Qlik Sense inventory analytics dashboard status.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: qlik-inventory.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: qlik-inventory
baseUri: https://lego.qlikcloud.com/api/v1
authentication:
type: bearer
token: $secrets.qlik_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Syncs merchandise from SAP, updates ticketing in Salesforce, promotes on Instagram, and tracks in Google Analytics.
naftiko: '0.5'
info:
label: Theme Park Integration Pipeline
description: Syncs merchandise from SAP, updates ticketing in Salesforce, promotes on Instagram, and tracks in Google Analytics.
tags:
- entertainment
- sap
- salesforce
- instagram
- google-analytics
capability:
exposes:
- type: mcp
namespace: theme-park-integration-pipeline
port: 8080
tools:
- name: execute
description: Syncs merchandise from SAP, updates ticketing in Salesforce, promotes on Instagram, and tracks in Google Analytics.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: salesforce.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: instagram.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: google-analytics.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: salesforce
baseUri: https://api.salesforce.com/v1
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: instagram
baseUri: https://api.instagram.com/v1
authentication:
type: bearer
token: $secrets.instagram_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-analytics
baseUri: https://api.googleanalytics.com/v1
authentication:
type: bearer
token: $secrets.google_analytics_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Retrieves DocuSign licensing agreement envelope status.
naftiko: '0.5'
info:
label: DocuSign Licensing Agreement Lookup
description: Retrieves DocuSign licensing agreement envelope status.
tags:
- legal
- docusign
capability:
exposes:
- type: mcp
namespace: docusign-licenses
port: 8080
tools:
- name: get-data
description: Retrieves DocuSign licensing agreement envelope status.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: docusign-licenses.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: docusign-licenses
baseUri: https://na4.docusign.net/restapi/v2.1/accounts/lego
authentication:
type: bearer
token: $secrets.docusign_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Creates partner in Salesforce, generates contract via DocuSign, sets up folder in Box, and sends welcome via Microsoft Outlook.
naftiko: '0.5'
info:
label: Licensing Partner Onboarding Pipeline
description: Creates partner in Salesforce, generates contract via DocuSign, sets up folder in Box, and sends welcome via Microsoft Outlook.
tags:
- licensing
- salesforce
- docusign
- box
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: licensing-partner-onboarding-pipeline
port: 8080
tools:
- name: execute
description: Creates partner in Salesforce, generates contract via DocuSign, sets up folder in Box, and sends welcome via Microsoft Outlook.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: salesforce.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: docusign.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: box.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: microsoft-outlook.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://api.salesforce.com/v1
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: docusign
baseUri: https://api.docusign.com/v1
authentication:
type: bearer
token: $secrets.docusign_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: box
baseUri: https://api.box.com/v1
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: microsoft-outlook
baseUri: https://api.microsoftoutlook.com/v1
authentication:
type: bearer
token: $secrets.microsoft_outlook_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Retrieves employee benefits enrollment from Workday.
naftiko: '0.5'
info:
label: Workday Employee Benefits Lookup
description: Retrieves employee benefits enrollment from Workday.
tags:
- hr
- workday
capability:
exposes:
- type: mcp
namespace: workday-benefits
port: 8080
tools:
- name: get-data
description: Retrieves employee benefits enrollment from Workday.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: workday-benefits.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: workday-benefits
baseUri: https://wd5-impl-services1.workday.com/ccx/service/lego
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Collects production data from SAP, analyzes in Snowflake, updates Power BI dashboards, and alerts plant managers via Slack.
naftiko: '0.5'
info:
label: Manufacturing Efficiency Pipeline
description: Collects production data from SAP, analyzes in Snowflake, updates Power BI dashboards, and alerts plant managers via Slack.
tags:
- manufacturing
- sap
- snowflake
- power-bi
- slack
capability:
exposes:
- type: mcp
namespace: manufacturing-efficiency-pipeline
port: 8080
tools:
- name: execute
description: Collects production data from SAP, analyzes in Snowflake, updates Power BI dashboards, and alerts plant managers via Slack.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: snowflake.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: power-bi.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: slack.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: https://api.snowflake.com/v1
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: power-bi
baseUri: https://api.powerbi.com/v1
authentication:
type: bearer
token: $secrets.power_bi_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: https://api.slack.com/v1
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Identifies VIPs in Snowflake, creates segments in Salesforce, triggers MailChimp campaigns, and tracks in Google Sheets.
naftiko: '0.5'
info:
label: VIP Collector Engagement Pipeline
description: Identifies VIPs in Snowflake, creates segments in Salesforce, triggers MailChimp campaigns, and tracks in Google Sheets.
tags:
- loyalty
- snowflake
- salesforce
- mailchimp
- google-sheets
capability:
exposes:
- type: mcp
namespace: vip-collector-engagement-pipeline
port: 8080
tools:
- name: execute
description: Identifies VIPs in Snowflake, creates segments in Salesforce, triggers MailChimp campaigns, and tracks in Google Sheets.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: snowflake.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: salesforce.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: mailchimp.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: google-sheets.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://api.snowflake.com/v1
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: salesforce
baseUri: https://api.salesforce.com/v1
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: mailchimp
baseUri: https://api.mailchimp.com/v1
authentication:
type: bearer
token: $secrets.mailchimp_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: https://api.googlesheets.com/v1
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Processes return via Zendesk, initiates Stripe refund, updates SAP inventory, and logs in Snowflake.
naftiko: '0.5'
info:
label: Customer Returns Pipeline
description: Processes return via Zendesk, initiates Stripe refund, updates SAP inventory, and logs in Snowflake.
tags:
- returns
- zendesk
- stripe
- sap
- snowflake
capability:
exposes:
- type: mcp
namespace: customer-returns-pipeline
port: 8080
tools:
- name: execute
description: Processes return via Zendesk, initiates Stripe refund, updates SAP inventory, and logs in Snowflake.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: zendesk.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: stripe.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: sap.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: snowflake.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: zendesk
baseUri: https://api.zendesk.com/v1
authentication:
type: bearer
token: $secrets.zendesk_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: stripe
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: https://api.snowflake.com/v1
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Creates HubSpot campaign, sets up Facebook ads, tracks in Google Analytics, and reports in Google Sheets.
naftiko: '0.5'
info:
label: Digital Marketing Pipeline
description: Creates HubSpot campaign, sets up Facebook ads, tracks in Google Analytics, and reports in Google Sheets.
tags:
- marketing
- hubspot
- facebook
- google-analytics
- google-sheets
capability:
exposes:
- type: mcp
namespace: digital-marketing-pipeline
port: 8080
tools:
- name: execute
description: Creates HubSpot campaign, sets up Facebook ads, tracks in Google Analytics, and reports in Google Sheets.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: hubspot.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: facebook.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: google-analytics.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: google-sheets.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: hubspot
baseUri: https://api.hubspot.com/v1
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: facebook
baseUri: https://api.facebook.com/v1
authentication:
type: bearer
token: $secrets.facebook_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-analytics
baseUri: https://api.googleanalytics.com/v1
authentication:
type: bearer
token: $secrets.google_analytics_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: https://api.googlesheets.com/v1
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Retrieves Power BI sales KPI dashboard refresh status.
naftiko: '0.5'
info:
label: Power BI Sales KPI Report
description: Retrieves Power BI sales KPI dashboard refresh status.
tags:
- analytics
- power-bi
capability:
exposes:
- type: mcp
namespace: powerbi-sales
port: 8080
tools:
- name: get-data
description: Retrieves Power BI sales KPI dashboard refresh status.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: powerbi-sales.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: powerbi-sales
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Generates instructions from design data, uploads to Amazon S3, publishes to BigCommerce, and notifies via Slack.
naftiko: '0.5'
info:
label: Building Instruction Publishing Pipeline
description: Generates instructions from design data, uploads to Amazon S3, publishes to BigCommerce, and notifies via Slack.
tags:
- content
- amazon-s3
- bigcommerce
- slack
capability:
exposes:
- type: mcp
namespace: building-instruction-publishing-pipeline
port: 8080
tools:
- name: execute
description: Generates instructions from design data, uploads to Amazon S3, publishes to BigCommerce, and notifies via Slack.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: amazon-s3.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: bigcommerce.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: slack.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: slack.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: amazon-s3
baseUri: https://api.amazons3.com/v1
authentication:
type: bearer
token: $secrets.amazon_s3_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/v1
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: https://api.slack.com/v1
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Publishes a LEGO product video to YouTube, creates a social post linking to it on Instagram, and tracks engagement in Google Analytics.
naftiko: '0.5'
info:
label: YouTube Brand Content Publishing Pipeline
description: Publishes a LEGO product video to YouTube, creates a social post linking to it on Instagram, and tracks engagement in Google Analytics.
tags:
- marketing
- youtube
- instagram
- google-analytics
capability:
exposes:
- type: mcp
namespace: video-marketing
port: 8080
tools:
- name: publish-video-campaign
description: Given video details, publish to YouTube, cross-promote on Instagram, and set up tracking.
inputParameters:
- name: video_title
in: body
type: string
description: The video title.
- name: description
in: body
type: string
description: The video description.
- name: theme
in: body
type: string
description: The LEGO theme.
steps:
- name: upload-video
type: call
call: youtube.upload-video
with:
title: '{{video_title}}'
description: '{{description}}'
tags: LEGO,{{theme}}
- name: cross-promote
type: call
call: instagram.create-post
with:
caption: 'New video: {{video_title}}! Watch now on our YouTube channel. #LEGO #{{theme}}'
- name: setup-tracking
type: call
call: google-analytics.create-event
with:
event_name: video_launch_{{theme}}
video_id: '{{upload-video.video_id}}'
consumes:
- type: http
namespace: youtube
baseUri: https://www.googleapis.com/youtube/v3
authentication:
type: bearer
token: $secrets.youtube_token
resources:
- name: videos
path: /videos?part=snippet,status
operations:
- name: upload-video
method: POST
- type: http
namespace: instagram
baseUri: https://graph.facebook.com/v17.0
authentication:
type: bearer
token: $secrets.meta_token
resources:
- name: posts
path: /{{ig_user_id}}/media
operations:
- name: create-post
method: POST
- type: http
namespace: google-analytics
baseUri: https://www.google-analytics.com
authentication:
type: apikey
key: $secrets.ga_measurement_id
resources:
- name: events
path: /mp/collect
operations:
- name: create-event
method: POST
Collects feedback from Zendesk, analyzes via Azure ML, shares insights in Confluence, and posts updates to Instagram.
naftiko: '0.5'
info:
label: Fan Community Engagement Pipeline
description: Collects feedback from Zendesk, analyzes via Azure ML, shares insights in Confluence, and posts updates to Instagram.
tags:
- community
- zendesk
- azure-machine-learning
- confluence
- instagram
capability:
exposes:
- type: mcp
namespace: fan-community-engagement-pipeline
port: 8080
tools:
- name: execute
description: Collects feedback from Zendesk, analyzes via Azure ML, shares insights in Confluence, and posts updates to Instagram.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: zendesk.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: azure-machine-learning.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: confluence.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: instagram.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: zendesk
baseUri: https://api.zendesk.com/v1
authentication:
type: bearer
token: $secrets.zendesk_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: azure-machine-learning
baseUri: https://api.azuremachinelearning.com/v1
authentication:
type: bearer
token: $secrets.azure_machine_learning_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: confluence
baseUri: https://api.confluence.com/v1
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: instagram
baseUri: https://api.instagram.com/v1
authentication:
type: bearer
token: $secrets.instagram_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Retrieves a LEGO.com order from Salesforce Commerce by order ID, returning status, total, and shipping details.
naftiko: '0.5'
info:
label: E-Commerce Order Status Lookup
description: Retrieves a LEGO.com order from Salesforce Commerce by order ID, returning status, total, and shipping details.
tags:
- e-commerce
- salesforce
capability:
exposes:
- type: mcp
namespace: ecommerce
port: 8080
tools:
- name: get-order-status
description: Look up a LEGO.com order by order ID.
inputParameters:
- name: order_id
in: body
type: string
description: The order ID.
call: salesforce.get-order
with:
order_id: '{{order_id}}'
outputParameters:
- name: status
type: string
mapping: $.Status
- name: total
type: string
mapping: $.TotalAmount
- name: shipping_status
type: string
mapping: $.ShippingStatus__c
consumes:
- type: http
namespace: salesforce
baseUri: https://lego.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: get-order
method: GET
Retrieves Salesforce retailer account details by ID.
naftiko: '0.5'
info:
label: Salesforce Retailer Account Lookup
description: Retrieves Salesforce retailer account details by ID.
tags:
- sales
- salesforce
capability:
exposes:
- type: mcp
namespace: sf-retailers
port: 8080
tools:
- name: get-data
description: Retrieves Salesforce retailer account details by ID.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: sf-retailers.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: sf-retailers
baseUri: https://lego.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Creates a corporate content post on LinkedIn and logs it in Salesforce.
naftiko: '0.5'
info:
label: LinkedIn Corporate Content Post
description: Creates a corporate content post on LinkedIn and logs it in Salesforce.
tags:
- marketing
- linkedin
- salesforce
capability:
exposes:
- type: mcp
namespace: corporate-social
port: 8080
tools:
- name: post-corporate-content
description: Create a LinkedIn post and log it in Salesforce.
inputParameters:
- name: content_text
in: body
type: string
description: The post content text.
- name: campaign_id
in: body
type: string
description: The Salesforce campaign ID.
steps:
- name: create-post
type: call
call: linkedin.create-post
with:
text: '{{content_text}}'
- name: log-post
type: call
call: salesforce.create-activity
with:
campaign_id: '{{campaign_id}}'
platform: linkedin
post_id: '{{create-post.post_id}}'
consumes:
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: posts
path: /ugcPosts
operations:
- name: create-post
method: POST
- type: http
namespace: salesforce
baseUri: https://lego.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: activities
path: /sobjects/CampaignActivity__c
operations:
- name: create-activity
method: POST
Pulls licensing revenue data from SAP, enriches with partner performance from Salesforce, generates a report in Google Sheets, and shares with the licensing team via Microsoft Teams.
naftiko: '0.5'
info:
label: Licensing Partner Revenue Pipeline
description: Pulls licensing revenue data from SAP, enriches with partner performance from Salesforce, generates a report in Google Sheets, and shares with the licensing team via Microsoft Teams.
tags:
- licensing
- revenue
- sap
- salesforce
- google-sheets
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: licensing-revenue
port: 8080
tools:
- name: generate-licensing-report
description: Given a partner and period, generate a licensing revenue report.
inputParameters:
- name: partner_id
in: body
type: string
description: The licensing partner ID.
- name: period
in: body
type: string
description: The reporting period.
steps:
- name: get-revenue
type: call
call: sap.get-licensing-revenue
with:
partner_id: '{{partner_id}}'
period: '{{period}}'
- name: get-partner-data
type: call
call: salesforce.get-partner-account
with:
partner_id: '{{partner_id}}'
- name: create-report
type: call
call: google-sheets.create-spreadsheet
with:
title: Licensing Revenue - {{get-partner-data.partner_name}} - {{period}}
data: '{{get-revenue.results}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: licensing
text: 'Licensing revenue report for {{get-partner-data.partner_name}} ({{period}}): Total royalties: ${{get-revenue.total_royalties}}. Report: {{create-report.spreadsheet_url}}.'
consumes:
- type: http
namespace: sap
baseUri: https://lego-s4.sap.com/sap/opu/odata/sap/FI_REVENUE_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: licensing-revenue
path: /LicensingRevenue?$filter=PartnerId eq '{{partner_id}}' and Period eq '{{period}}'
inputParameters:
- name: partner_id
in: query
- name: period
in: query
operations:
- name: get-licensing-revenue
method: GET
- type: http
namespace: salesforce
baseUri: https://lego.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: partners
path: /sobjects/Account/{{partner_id}}
inputParameters:
- name: partner_id
in: path
operations:
- name: get-partner-account
method: GET
- type: http
namespace: google-sheets
baseUri: https://sheets.googleapis.com/v4
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: spreadsheets
path: /spreadsheets
operations:
- name: create-spreadsheet
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: channel_id
in: path
operations:
- name: send-message
method: POST
Matches SAP invoices, validates Salesforce contracts, processes payments, and logs in Google Sheets.
naftiko: '0.5'
info:
label: Vendor Invoice Pipeline
description: Matches SAP invoices, validates Salesforce contracts, processes payments, and logs in Google Sheets.
tags:
- finance
- sap
- salesforce
- google-sheets
capability:
exposes:
- type: mcp
namespace: vendor-invoice-pipeline
port: 8080
tools:
- name: execute
description: Matches SAP invoices, validates Salesforce contracts, processes payments, and logs in Google Sheets.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: salesforce.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: google-sheets.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: google-sheets.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: salesforce
baseUri: https://api.salesforce.com/v1
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: https://api.googlesheets.com/v1
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Retrieves Tableau retail analytics dashboard view.
naftiko: '0.5'
info:
label: Tableau Retail Analytics Lookup
description: Retrieves Tableau retail analytics dashboard view.
tags:
- analytics
- tableau
capability:
exposes:
- type: mcp
namespace: tableau-retail
port: 8080
tools:
- name: get-data
description: Retrieves Tableau retail analytics dashboard view.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: tableau-retail.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: tableau-retail
baseUri: https://tableau.lego.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Retrieves brick inventory levels from SAP by material number.
naftiko: '0.5'
info:
label: SAP Material Inventory Lookup
description: Retrieves brick inventory levels from SAP by material number.
tags:
- inventory
- sap
capability:
exposes:
- type: mcp
namespace: sap-inventory
port: 8080
tools:
- name: get-data
description: Retrieves brick inventory levels from SAP by material number.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: sap-inventory.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: sap-inventory
baseUri: https://lego-s4.sap.com/sap/opu/odata/sap/ZINVENTORY_SRV
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Aggregates SAP data, scores in Snowflake, creates Google Sheets scorecards, and distributes via Microsoft Outlook.
naftiko: '0.5'
info:
label: Supplier Performance Pipeline
description: Aggregates SAP data, scores in Snowflake, creates Google Sheets scorecards, and distributes via Microsoft Outlook.
tags:
- procurement
- sap
- snowflake
- google-sheets
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: supplier-performance-pipeline
port: 8080
tools:
- name: execute
description: Aggregates SAP data, scores in Snowflake, creates Google Sheets scorecards, and distributes via Microsoft Outlook.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: snowflake.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: google-sheets.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: microsoft-outlook.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: https://api.snowflake.com/v1
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: https://api.googlesheets.com/v1
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: microsoft-outlook
baseUri: https://api.microsoftoutlook.com/v1
authentication:
type: bearer
token: $secrets.microsoft_outlook_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Uploads to YouTube, promotes via HubSpot, updates Airtable calendar, and notifies via Microsoft Teams.
naftiko: '0.5'
info:
label: YouTube Content Pipeline
description: Uploads to YouTube, promotes via HubSpot, updates Airtable calendar, and notifies via Microsoft Teams.
tags:
- content
- youtube
- hubspot
- airtable
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: youtube-content-pipeline
port: 8080
tools:
- name: execute
description: Uploads to YouTube, promotes via HubSpot, updates Airtable calendar, and notifies via Microsoft Teams.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: youtube.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: hubspot.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: airtable.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: microsoft-teams.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: youtube
baseUri: https://api.youtube.com/v1
authentication:
type: bearer
token: $secrets.youtube_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: hubspot
baseUri: https://api.hubspot.com/v1
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: airtable
baseUri: https://api.airtable.com/v1
authentication:
type: bearer
token: $secrets.airtable_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: microsoft-teams
baseUri: https://api.microsoftteams.com/v1
authentication:
type: bearer
token: $secrets.microsoft_teams_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Routes a customer complaint from Zendesk to a quality investigation by looking up the product batch in SAP, creating a Jira investigation ticket, and updating the Zendesk ticket.
naftiko: '0.5'
info:
label: Customer Complaint to Quality Investigation
description: Routes a customer complaint from Zendesk to a quality investigation by looking up the product batch in SAP, creating a Jira investigation ticket, and updating the Zendesk ticket.
tags:
- quality
- customer-service
- zendesk
- sap
- jira
capability:
exposes:
- type: mcp
namespace: complaint-quality
port: 8080
tools:
- name: route-complaint-to-quality
description: Route a customer complaint to the quality team by tracing the product batch and creating an investigation ticket.
inputParameters:
- name: ticket_id
type: string
description: Zendesk complaint ticket ID.
- name: batch_number
type: string
description: Product batch number from the complaint.
- name: material_number
type: string
description: Product material number.
steps:
- name: get-ticket
type: call
call: zendesk.get-ticket
with:
ticket_id: '{{ticket_id}}'
- name: trace-batch
type: call
call: sap.get-batch
with:
batch: '{{batch_number}}'
material: '{{material_number}}'
- name: create-investigation
type: call
call: jira.create-issue
with:
project_key: QUAL
issuetype: Bug
summary: 'Customer complaint investigation: batch {{batch_number}}'
description: 'Complaint: {{get-ticket.subject}}. Batch produced at {{trace-batch.plant}} on {{trace-batch.production_date}}.'
- name: update-ticket
type: call
call: zendesk.update-ticket
with:
ticket_id: '{{ticket_id}}'
comment: 'Quality investigation opened: {{create-investigation.key}}. Our quality team is reviewing batch {{batch_number}}.'
consumes:
- type: http
namespace: zendesk
baseUri: https://loreal.zendesk.com/api/v2
authentication:
type: bearer
token: $secrets.zendesk_token
resources:
- name: tickets
path: /tickets/{{ticket_id}}
inputParameters:
- name: ticket_id
in: path
operations:
- name: get-ticket
method: GET
- name: update-ticket
method: PUT
- type: http
namespace: sap
baseUri: https://loreal-s4.sap.com/sap/opu/odata/sap/API_BATCH_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: batches
path: /A_Batch
operations:
- name: get-batch
method: GET
- type: http
namespace: jira
baseUri: https://loreal.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Pulls demand forecast data from Snowflake, checks current inventory in SAP, and creates or adjusts planned production orders to meet projected demand.
naftiko: '0.5'
info:
label: Demand Forecast to Production Planning Sync
description: Pulls demand forecast data from Snowflake, checks current inventory in SAP, and creates or adjusts planned production orders to meet projected demand.
tags:
- supply-chain
- manufacturing
- snowflake
- sap
- planning
capability:
exposes:
- type: mcp
namespace: demand-planning
port: 8080
tools:
- name: sync-demand-to-production
description: Synchronize demand forecasts with production planning by querying forecast data, checking inventory, and creating planned orders in SAP.
inputParameters:
- name: product_category
type: string
description: Product category for demand forecast.
- name: planning_horizon_weeks
type: number
description: Number of weeks for the planning horizon.
- name: plant_code
type: string
description: SAP plant code.
steps:
- name: get-forecast
type: call
call: snowflake.execute-query
with:
warehouse: DEMAND_PLANNING_WH
query: SELECT sku, forecasted_units FROM demand_forecast WHERE category='{{product_category}}' AND weeks_ahead<={{planning_horizon_weeks}}
- name: check-inventory
type: call
call: sap.get-plant-stock
with:
plant: '{{plant_code}}'
category: '{{product_category}}'
- name: create-planned-orders
type: call
call: sap.create-planned-order
with:
plant: '{{plant_code}}'
forecast_data: '{{get-forecast.data}}'
current_stock: '{{check-inventory.stock_levels}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://loreal.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: sap
baseUri: https://loreal-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
operations:
- name: get-plant-stock
method: GET
- name: planned-orders
path: /A_PlannedOrder
operations:
- name: create-planned-order
method: POST
Coordinates brand ambassador events by creating a Salesforce campaign, setting up attendee registration in Google Forms, and notifying event coordinators via Teams.
naftiko: '0.5'
info:
label: Brand Ambassador Event Coordinator
description: Coordinates brand ambassador events by creating a Salesforce campaign, setting up attendee registration in Google Forms, and notifying event coordinators via Teams.
tags:
- marketing
- events
- salesforce
- google-forms
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: event-management
port: 8080
tools:
- name: coordinate-ambassador-event
description: Coordinate a brand ambassador event by setting up campaign tracking, registration, and team notification.
inputParameters:
- name: event_name
type: string
description: Name of the event.
- name: brand
type: string
description: Brand name.
- name: event_date
type: string
description: Event date.
- name: location
type: string
description: Event location.
steps:
- name: create-campaign
type: call
call: salesforce.create-campaign
with:
Name: '{{event_name}}'
Type: Ambassador Event
Brand__c: '{{brand}}'
StartDate: '{{event_date}}'
- name: notify-coordinators
type: call
call: msteams.send-message
with:
channel_id: brand-events
text: 'Event created: {{event_name}} for {{brand}} on {{event_date}} at {{location}}. Campaign ID: {{create-campaign.id}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://loreal.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: campaigns
path: /sobjects/Campaign
operations:
- name: create-campaign
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/channels/messages
operations:
- name: send-message
method: POST
Tracks fragrance stability testing by pulling test schedules from Jira, querying lab results from Snowflake, and storing completed reports in SharePoint.
naftiko: '0.5'
info:
label: Fragrance Stability Test Tracker
description: Tracks fragrance stability testing by pulling test schedules from Jira, querying lab results from Snowflake, and storing completed reports in SharePoint.
tags:
- r-and-d
- quality
- jira
- snowflake
- sharepoint
capability:
exposes:
- type: mcp
namespace: rd-stability
port: 8080
tools:
- name: track-stability-test
description: Track fragrance stability tests by correlating schedules with lab results and archiving reports.
inputParameters:
- name: test_id
type: string
description: Jira stability test ticket key.
steps:
- name: get-schedule
type: call
call: jira.get-issue
with:
issue_key: '{{test_id}}'
- name: get-results
type: call
call: snowflake.execute-query
with:
warehouse: RD_ANALYTICS_WH
query: SELECT test_point, color_delta, odor_score, viscosity FROM stability_results WHERE test_id='{{test_id}}' ORDER BY test_point
- name: archive-report
type: call
call: sharepoint.upload-file
with:
site: rd-stability
folder: completed-tests
filename: '{{test_id}}-stability-report.json'
consumes:
- type: http
namespace: jira
baseUri: https://loreal.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: snowflake
baseUri: https://loreal.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: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: files
path: /sites/rd-stability/drive/root:/{{folder}}/{{filename}}:/content
operations:
- name: upload-file
method: PUT
Queries AWS Cost Explorer for spend anomalies exceeding a threshold and creates a Jira task and a Datadog event to track remediation.
naftiko: '0.5'
info:
label: Cloud Cost Anomaly Detection
description: Queries AWS Cost Explorer for spend anomalies exceeding a threshold and creates a Jira task and a Datadog event to track remediation.
tags:
- cloud
- finops
- aws
- datadog
- jira
capability:
exposes:
- type: mcp
namespace: cloud-finops
port: 8080
tools:
- name: handle-cost-anomaly
description: Given an AWS account ID and spend threshold, query Cost Explorer for anomalies, create a Jira tracking ticket, and post a Datadog event. Use when automated cost alerts fire.
inputParameters:
- name: account_id
type: string
description: AWS account ID to check for spend anomalies.
- name: threshold_usd
type: number
description: Anomaly threshold in USD. Anomalies above this value are reported.
- name: date_from
type: string
description: Start date for the cost lookback period in YYYY-MM-DD format.
steps:
- name: get-anomalies
type: call
call: aws-cost.get-anomalies
with:
accountId: '{{account_id}}'
threshold: '{{threshold_usd}}'
startDate: '{{date_from}}'
- name: create-task
type: call
call: jira.create-issue
with:
project_key: CLOUD
issuetype: Task
summary: Cost anomaly detected on AWS account {{account_id}}
description: 'Anomaly details: {{get-anomalies.summary}}'
- name: post-event
type: call
call: datadog.create-event
with:
title: 'AWS cost anomaly: {{account_id}}'
text: 'Threshold {{threshold_usd}} USD exceeded. Jira: {{create-task.key}}'
alert_type: warning
consumes:
- type: http
namespace: aws-cost
baseUri: https://ce.us-east-1.amazonaws.com
authentication:
type: bearer
token: $secrets.aws_cost_explorer_token
resources:
- name: anomalies
path: /GetAnomalies
operations:
- name: get-anomalies
method: POST
- type: http
namespace: jira
baseUri: https://loreal.atlassian.net/rest/api/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
Analyzes production yield by comparing planned vs actual output in SAP, identifying waste trends in Snowflake, and creating improvement tasks in Jira.
naftiko: '0.5'
info:
label: SAP Production Yield Analysis
description: Analyzes production yield by comparing planned vs actual output in SAP, identifying waste trends in Snowflake, and creating improvement tasks in Jira.
tags:
- manufacturing
- quality
- sap
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: production-analytics
port: 8080
tools:
- name: analyze-production-yield
description: Analyze production yield to identify waste and efficiency improvement opportunities.
inputParameters:
- name: production_line
type: string
description: Production line identifier.
- name: plant_code
type: string
description: SAP plant code.
- name: period
type: string
description: Analysis period in YYYY-MM format.
steps:
- name: get-yield-data
type: call
call: sap.get-production-confirmations
with:
plant: '{{plant_code}}'
line: '{{production_line}}'
period: '{{period}}'
- name: get-waste-trends
type: call
call: snowflake.execute-query
with:
warehouse: MANUFACTURING_WH
query: SELECT waste_category, waste_pct, trend FROM production_waste WHERE line='{{production_line}}' AND plant='{{plant_code}}' AND period='{{period}}'
- name: create-improvement
type: call
call: jira.create-issue
with:
project_key: MFG
issuetype: Task
summary: 'Yield improvement: {{production_line}} at {{plant_code}} ({{period}})'
description: 'Yield: {{get-yield-data.yield_pct}}%. Top waste: {{get-waste-trends.top_category}} at {{get-waste-trends.top_pct}}%.'
consumes:
- type: http
namespace: sap
baseUri: https://loreal-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: confirmations
path: /A_ProdnOrdConf2
operations:
- name: get-production-confirmations
method: GET
- type: http
namespace: snowflake
baseUri: https://loreal.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: jira
baseUri: https://loreal.atlassian.net/rest/api/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 e-commerce conversion funnel metrics from Google Analytics for a specific brand property.
naftiko: '0.5'
info:
label: Google Analytics E-commerce Funnel Report
description: Retrieves e-commerce conversion funnel metrics from Google Analytics for a specific brand property.
tags:
- marketing
- analytics
- google-analytics
- ecommerce
capability:
exposes:
- type: mcp
namespace: web-analytics
port: 8080
tools:
- name: get-ecommerce-funnel
description: Fetch e-commerce funnel data from Google Analytics including sessions, add-to-cart rate, checkout rate, and purchase conversion rate.
inputParameters:
- name: property_id
type: string
description: Google Analytics 4 property ID.
- name: date_from
type: string
description: Start date in YYYY-MM-DD format.
- name: date_to
type: string
description: End date in YYYY-MM-DD format.
call: ga.run-report
with:
property: '{{property_id}}'
dateRanges_startDate: '{{date_from}}'
dateRanges_endDate: '{{date_to}}'
outputParameters:
- name: sessions
type: string
mapping: $.rows[0].metricValues[0].value
- name: add_to_cart_rate
type: string
mapping: $.rows[0].metricValues[1].value
- name: purchase_rate
type: string
mapping: $.rows[0].metricValues[2].value
consumes:
- type: http
namespace: ga
baseUri: https://analyticsdata.googleapis.com/v1beta
authentication:
type: bearer
token: $secrets.google_analytics_token
resources:
- name: reports
path: /properties/{{property}}/runReport
inputParameters:
- name: property
in: path
operations:
- name: run-report
method: POST
Triggers a refresh of a Power BI brand sales dashboard dataset and returns the refresh status.
naftiko: '0.5'
info:
label: Power BI Brand Sales Dashboard Refresh
description: Triggers a refresh of a Power BI brand sales dashboard dataset and returns the refresh status.
tags:
- analytics
- reporting
- power-bi
- sales
capability:
exposes:
- type: mcp
namespace: bi-reporting
port: 8080
tools:
- name: refresh-brand-dashboard
description: Trigger a dataset refresh for a Power BI brand sales dashboard and return the resulting refresh status.
inputParameters:
- name: dataset_id
type: string
description: Power BI dataset ID for the brand sales dashboard.
call: powerbi.refresh-dataset
with:
datasetId: '{{dataset_id}}'
outputParameters:
- name: refresh_id
type: string
mapping: $.id
- name: status
type: string
mapping: $.status
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/{{datasetId}}/refreshes
inputParameters:
- name: datasetId
in: path
operations:
- name: refresh-dataset
method: POST
Generates beauty advisor performance metrics by pulling sales data from Salesforce, attendance from Workday, and refreshing the Power BI performance dashboard.
naftiko: '0.5'
info:
label: Beauty Advisor Performance Dashboard
description: Generates beauty advisor performance metrics by pulling sales data from Salesforce, attendance from Workday, and refreshing the Power BI performance dashboard.
tags:
- sales
- hr
- salesforce
- workday
- power-bi
capability:
exposes:
- type: mcp
namespace: retail-performance
port: 8080
tools:
- name: generate-advisor-dashboard
description: Generate beauty advisor performance metrics combining sales achievements with workforce data.
inputParameters:
- name: region
type: string
description: Sales region code.
- name: period
type: string
description: Reporting period in YYYY-MM format.
steps:
- name: get-sales
type: call
call: salesforce.get-advisor-sales
with:
region: '{{region}}'
period: '{{period}}'
- name: get-attendance
type: call
call: workday.get-attendance
with:
region: '{{region}}'
period: '{{period}}'
- name: refresh-dashboard
type: call
call: powerbi.refresh-dataset
with:
datasetId: beauty-advisor-performance
consumes:
- type: http
namespace: salesforce
baseUri: https://loreal.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: reports
path: /analytics/reports
operations:
- name: get-advisor-sales
method: POST
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: attendance
path: /loreal/attendance
operations:
- name: get-attendance
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/{{datasetId}}/refreshes
inputParameters:
- name: datasetId
in: path
operations:
- name: refresh-dataset
method: POST
When an employee changes roles in Workday, updates their Okta group assignments, adjusts Microsoft 365 license, and notifies the employee and manager via Teams.
naftiko: '0.5'
info:
label: Workday Role Change Provisioning
description: When an employee changes roles in Workday, updates their Okta group assignments, adjusts Microsoft 365 license, and notifies the employee and manager via Teams.
tags:
- hr
- identity
- workday
- okta
- access-management
capability:
exposes:
- type: mcp
namespace: hr-identity
port: 8080
tools:
- name: sync-role-change
description: Given a Workday employee ID and new role details, update Okta group memberships to reflect the new role, adjust Microsoft 365 license tier, and notify both the employee and their new manager via Teams.
inputParameters:
- name: employee_id
type: string
description: Workday worker ID.
- name: new_role
type: string
description: New job role or title.
- name: okta_new_group_id
type: string
description: Okta group ID for the new role.
- name: okta_old_group_id
type: string
description: Okta group ID of the previous role to remove.
steps:
- name: get-worker
type: call
call: workday.get-worker
with:
worker_id: '{{employee_id}}'
- name: remove-old-group
type: call
call: okta.remove-user-from-group
with:
groupId: '{{okta_old_group_id}}'
userId: '{{get-worker.work_email}}'
- name: add-new-group
type: call
call: okta.add-user-to-group
with:
groupId: '{{okta_new_group_id}}'
userId: '{{get-worker.work_email}}'
- name: notify-employee
type: call
call: msteams.send-message
with:
recipient_upn: '{{get-worker.work_email}}'
text: Your role has been updated to {{new_role}}. System access has been adjusted accordingly.
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: /loreal/workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: okta
baseUri: https://loreal.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: group-members
path: /groups/{{groupId}}/users/{{userId}}
inputParameters:
- name: groupId
in: path
- name: userId
in: path
operations:
- name: remove-user-from-group
method: DELETE
- name: add-user-to-group
method: PUT
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: chats
path: /chats
operations:
- name: send-message
method: POST
Generates workforce diversity metrics by pulling demographic data from Workday, enriching with analytics from Snowflake, and refreshing the Power BI diversity dashboard.
naftiko: '0.5'
info:
label: Workday Diversity Metrics Report Generator
description: Generates workforce diversity metrics by pulling demographic data from Workday, enriching with analytics from Snowflake, and refreshing the Power BI diversity dashboard.
tags:
- hr
- analytics
- workday
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: hr-analytics
port: 8080
tools:
- name: generate-diversity-report
description: Generate workforce diversity metrics combining HR data with analytics and publishing to the dashboard.
inputParameters:
- name: business_unit
type: string
description: Business unit for the report.
- name: period
type: string
description: Reporting period in YYYY-QN format.
steps:
- name: get-demographics
type: call
call: workday.get-demographics
with:
business_unit: '{{business_unit}}'
- name: get-analytics
type: call
call: snowflake.execute-query
with:
warehouse: HR_ANALYTICS_WH
query: SELECT gender_pct, ethnicity_pct, leadership_diversity FROM diversity_metrics WHERE bu='{{business_unit}}' AND period='{{period}}'
- name: refresh-dashboard
type: call
call: powerbi.refresh-dataset
with:
datasetId: diversity-inclusion-dashboard
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: demographics
path: /loreal/workers/demographics
operations:
- name: get-demographics
method: GET
- type: http
namespace: snowflake
baseUri: https://loreal.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: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /datasets/{{datasetId}}/refreshes
inputParameters:
- name: datasetId
in: path
operations:
- name: refresh-dataset
method: POST
Fetches engagement metrics for a brand Instagram account over a date range including likes, comments, and follower growth.
naftiko: '0.5'
info:
label: Instagram Brand Engagement Lookup
description: Fetches engagement metrics for a brand Instagram account over a date range including likes, comments, and follower growth.
tags:
- marketing
- social
- instagram
- reporting
capability:
exposes:
- type: mcp
namespace: social-analytics
port: 8080
tools:
- name: get-instagram-engagement
description: Retrieve Instagram engagement metrics for a brand account including total likes, comments, shares, and follower delta.
inputParameters:
- name: account_id
type: string
description: Instagram business account ID.
- name: date_from
type: string
description: Start date in YYYY-MM-DD format.
- name: date_to
type: string
description: End date in YYYY-MM-DD format.
call: instagram.get-insights
with:
ig_user_id: '{{account_id}}'
since: '{{date_from}}'
until: '{{date_to}}'
outputParameters:
- name: total_likes
type: string
mapping: $.data[0].values[0].value
- name: total_comments
type: string
mapping: $.data[1].values[0].value
- name: follower_count
type: string
mapping: $.data[2].values[0].value
consumes:
- type: http
namespace: instagram
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.meta_token
resources:
- name: insights
path: /{{ig_user_id}}/insights
inputParameters:
- name: ig_user_id
in: path
- name: since
in: query
- name: until
in: query
operations:
- name: get-insights
method: GET
Creates an intercompany stock transfer in SAP between plants, updates the receiving plant inventory forecast in Snowflake, and notifies both plant teams via Teams.
naftiko: '0.5'
info:
label: SAP Intercompany Transfer Order Workflow
description: Creates an intercompany stock transfer in SAP between plants, updates the receiving plant inventory forecast in Snowflake, and notifies both plant teams via Teams.
tags:
- supply-chain
- logistics
- sap
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: intercompany-logistics
port: 8080
tools:
- name: create-intercompany-transfer
description: Create an intercompany stock transfer between plants, update forecasts, and notify plant teams.
inputParameters:
- name: material_number
type: string
description: SAP material number.
- name: source_plant
type: string
description: Source plant code.
- name: target_plant
type: string
description: Target plant code.
- name: quantity
type: number
description: Transfer quantity.
steps:
- name: create-transfer
type: call
call: sap.create-stock-transfer
with:
material: '{{material_number}}'
from_plant: '{{source_plant}}'
to_plant: '{{target_plant}}'
quantity: '{{quantity}}'
- name: update-forecast
type: call
call: snowflake.execute-query
with:
warehouse: SUPPLY_CHAIN_WH
query: CALL update_plant_forecast('{{target_plant}}', '{{material_number}}', {{quantity}})
- name: notify-plants
type: call
call: msteams.send-message
with:
channel_id: supply-chain-ops
text: 'Intercompany transfer {{create-transfer.document_number}}: {{quantity}} units of {{material_number}} from {{source_plant}} to {{target_plant}}.'
consumes:
- type: http
namespace: sap
baseUri: https://loreal-s4.sap.com/sap/opu/odata/sap/API_STOCK_TRANSFER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: transfers
path: /A_StockTransfer
operations:
- name: create-stock-transfer
method: POST
- type: http
namespace: snowflake
baseUri: https://loreal.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
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/channels/messages
operations:
- name: send-message
method: POST
Coordinates a new market launch by creating Jira epic with subtasks, setting up Salesforce territory records, and notifying the regional team via Teams.
naftiko: '0.5'
info:
label: New Market Launch Checklist Coordinator
description: Coordinates a new market launch by creating Jira epic with subtasks, setting up Salesforce territory records, and notifying the regional team via Teams.
tags:
- sales
- marketing
- jira
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: market-launch
port: 8080
tools:
- name: coordinate-market-launch
description: Coordinate the launch of products in a new market by creating project tasks, setting up CRM territories, and notifying regional teams.
inputParameters:
- name: market_name
type: string
description: Name of the new market (e.g., Vietnam, Colombia).
- name: brand
type: string
description: Brand being launched.
- name: launch_date
type: string
description: Target launch date.
steps:
- name: create-epic
type: call
call: jira.create-issue
with:
project_key: LAUNCH
issuetype: Epic
summary: 'New market launch: {{brand}} in {{market_name}}'
description: 'Target launch: {{launch_date}}. Brand: {{brand}}.'
- name: setup-territory
type: call
call: salesforce.create-territory
with:
Name: '{{market_name}} - {{brand}}'
Territory_Type__c: New Market
Launch_Date__c: '{{launch_date}}'
- name: notify-regional
type: call
call: msteams.send-message
with:
channel_id: international-launches
text: 'New market launch initiated: {{brand}} in {{market_name}}. Target: {{launch_date}}. Epic: {{create-epic.key}}.'
consumes:
- type: http
namespace: jira
baseUri: https://loreal.atlassian.net/rest/api/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: salesforce
baseUri: https://loreal.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: territories
path: /sobjects/Territory__c
operations:
- name: create-territory
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/channels/messages
operations:
- name: send-message
method: POST
On a GitHub Actions pipeline failure on a protected branch, creates a Jira bug, posts a Datadog event marker, and alerts the engineering Teams channel.
naftiko: '0.5'
info:
label: CI/CD Pipeline Failure Response
description: On a GitHub Actions pipeline failure on a protected branch, creates a Jira bug, posts a Datadog event marker, and alerts the engineering Teams channel.
tags:
- devops
- cicd
- github
- jira
- datadog
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: handle-pipeline-failure
description: Given a GitHub Actions pipeline failure event, create a Jira bug in the engineering project, post a Datadog deployment event, and alert the engineering Teams channel with full context.
inputParameters:
- name: repo
type: string
description: GitHub repository full name (org/repo).
- name: branch
type: string
description: Branch name where the failure occurred.
- name: workflow_run_id
type: string
description: GitHub Actions workflow run ID.
- name: commit_sha
type: string
description: Git commit SHA that triggered the pipeline.
steps:
- name: create-bug
type: call
call: jira.create-issue
with:
project_key: ENG
issuetype: Bug
summary: '[CI Failure] {{repo}} / {{branch}}'
description: Workflow run {{workflow_run_id}} failed on commit {{commit_sha}}
- name: post-event
type: call
call: datadog.create-event
with:
title: 'CI failure: {{repo}}'
text: 'Branch {{branch}} pipeline failed. Jira: {{create-bug.key}}'
alert_type: error
- name: alert-team
type: call
call: msteams.post-channel-message
with:
channel_id: engineering-alerts
text: 'Pipeline failure: {{repo}} | Branch: {{branch}} | Jira: {{create-bug.key}} | Run: {{workflow_run_id}}'
consumes:
- type: http
namespace: jira
baseUri: https://loreal.atlassian.net/rest/api/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/engineering/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Creates a new job requisition in Workday when a headcount request is approved and opens the corresponding Jira ticket for the recruiting team.
naftiko: '0.5'
info:
label: Workday Open Position Requisition
description: Creates a new job requisition in Workday when a headcount request is approved and opens the corresponding Jira ticket for the recruiting team.
tags:
- hr
- recruiting
- workday
- jira
capability:
exposes:
- type: mcp
namespace: talent-acquisition
port: 8080
tools:
- name: open-job-requisition
description: Given headcount request details, create a job requisition in Workday Recruiting and open a Jira ticket in the TA board to track sourcing progress.
inputParameters:
- name: job_title
type: string
description: Job title for the open position.
- name: department
type: string
description: Department requesting the headcount.
- name: hiring_manager_id
type: string
description: Workday worker ID of the hiring manager.
steps:
- name: create-requisition
type: call
call: workday.create-job-requisition
with:
jobTitle: '{{job_title}}'
department: '{{department}}'
hiringManagerId: '{{hiring_manager_id}}'
- name: create-ta-ticket
type: call
call: jira.create-issue
with:
project_key: TA
issuetype: Task
summary: 'Recruit for: {{job_title}} ({{department}})'
description: 'Workday requisition: {{create-requisition.requisitionId}}'
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: job-requisitions
path: /loreal/jobRequisitions
operations:
- name: create-job-requisition
method: POST
- type: http
namespace: jira
baseUri: https://loreal.atlassian.net/rest/api/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 a GitHub release is published, generates AI-assisted release notes using Anthropic Claude and posts them to the engineering Teams channel and Confluence.
naftiko: '0.5'
info:
label: GitHub Deployment Release Notes
description: When a GitHub release is published, generates AI-assisted release notes using Anthropic Claude and posts them to the engineering Teams channel and Confluence.
tags:
- devops
- github
- anthropic
- confluence
- release-management
capability:
exposes:
- type: mcp
namespace: release-ops
port: 8080
tools:
- name: publish-release-notes
description: Given a GitHub release tag and repository, fetch the commit log, generate polished release notes using Anthropic Claude, and publish to Confluence and the engineering Teams channel.
inputParameters:
- name: repo_owner
type: string
description: GitHub organization or owner name.
- name: repo_name
type: string
description: GitHub repository name.
- name: tag
type: string
description: Release tag name (e.g., v1.4.0).
- name: teams_channel_id
type: string
description: Teams channel ID for engineering announcements.
steps:
- name: get-release
type: call
call: github.get-release
with:
owner: '{{repo_owner}}'
repo: '{{repo_name}}'
tag: '{{tag}}'
- name: generate-notes
type: call
call: anthropic.create-message
with:
model: claude-3-5-sonnet-20241022
prompt: 'Generate professional release notes from these commits: {{get-release.body}}'
- name: publish-to-confluence
type: call
call: confluence.create-page
with:
space_key: ENG
title: Release Notes {{tag}} — {{repo_name}}
content: '{{generate-notes.content}}'
- name: notify-team
type: call
call: msteams.post-channel-message
with:
channel_id: '{{teams_channel_id}}'
text: 'Release {{tag}} published for {{repo_name}}. Confluence: {{publish-to-confluence.url}}'
consumes:
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: releases
path: /repos/{{owner}}/{{repo}}/releases/tags/{{tag}}
inputParameters:
- name: owner
in: path
- name: repo
in: path
- name: tag
in: path
operations:
- name: get-release
method: GET
- 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: confluence
baseUri: https://loreal.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_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/engineering/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Analyzes customer return patterns by pulling return data from SAP, correlating with quality data in Snowflake, and creating improvement tasks in Jira.
naftiko: '0.5'
info:
label: SAP Customer Returns Analysis
description: Analyzes customer return patterns by pulling return data from SAP, correlating with quality data in Snowflake, and creating improvement tasks in Jira.
tags:
- quality
- sales
- sap
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: returns-analytics
port: 8080
tools:
- name: analyze-customer-returns
description: Analyze customer return patterns to identify quality issues and create improvement actions.
inputParameters:
- name: material_number
type: string
description: SAP material number.
- name: period
type: string
description: Analysis period in YYYY-QN format.
steps:
- name: get-returns
type: call
call: sap.get-return-orders
with:
material: '{{material_number}}'
period: '{{period}}'
- name: get-quality-data
type: call
call: snowflake.execute-query
with:
warehouse: QUALITY_WH
query: SELECT return_reason, count, pct_of_sales FROM return_analysis WHERE material='{{material_number}}' AND period='{{period}}'
- name: create-improvement
type: call
call: jira.create-issue
with:
project_key: QUAL
issuetype: Task
summary: 'Returns analysis: {{material_number}} ({{period}})'
description: 'Return count: {{get-returns.count}}. Top reason: {{get-quality-data.top_reason}}. Rate: {{get-quality-data.return_rate}}%.'
consumes:
- type: http
namespace: sap
baseUri: https://loreal-s4.sap.com/sap/opu/odata/sap/API_RETURNS_DELIVERY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: returns
path: /A_ReturnsDeliveryHeader
operations:
- name: get-return-orders
method: GET
- type: http
namespace: snowflake
baseUri: https://loreal.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: jira
baseUri: https://loreal.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Syncs Facebook lead gen ad form submissions to Salesforce leads, enriches with ZoomInfo data, and notifies the sales team via Teams.
naftiko: '0.5'
info:
label: Facebook Ad to Salesforce Lead Sync
description: Syncs Facebook lead gen ad form submissions to Salesforce leads, enriches with ZoomInfo data, and notifies the sales team via Teams.
tags:
- marketing
- sales
- facebook
- salesforce
- zoominfo
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: lead-management
port: 8080
tools:
- name: sync-fb-leads
description: Sync Facebook lead ad submissions to Salesforce with enrichment and team notification.
inputParameters:
- name: form_id
type: string
description: Facebook lead form ID.
- name: campaign_id
type: string
description: Salesforce campaign ID for attribution.
steps:
- name: get-leads
type: call
call: facebook.get-lead-forms
with:
form_id: '{{form_id}}'
- name: enrich-leads
type: call
call: zoominfo.enrich-contact
with:
email: '{{get-leads.email}}'
- name: create-sf-lead
type: call
call: salesforce.create-lead
with:
Email: '{{get-leads.email}}'
FirstName: '{{get-leads.first_name}}'
LastName: '{{get-leads.last_name}}'
Company: '{{enrich-leads.company}}'
Title: '{{enrich-leads.title}}'
CampaignId: '{{campaign_id}}'
- name: notify-sales
type: call
call: msteams.send-message
with:
channel_id: sales-leads
text: 'New lead from Facebook: {{get-leads.first_name}} {{get-leads.last_name}} at {{enrich-leads.company}}. SF Lead: {{create-sf-lead.id}}.'
consumes:
- type: http
namespace: facebook
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.meta_token
resources:
- name: leads
path: /{{form_id}}/leads
inputParameters:
- name: form_id
in: path
operations:
- name: get-lead-forms
method: GET
- type: http
namespace: zoominfo
baseUri: https://api.zoominfo.com/enrich
authentication:
type: bearer
token: $secrets.zoominfo_token
resources:
- name: contacts
path: /contact
operations:
- name: enrich-contact
method: POST
- type: http
namespace: salesforce
baseUri: https://loreal.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: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/channels/messages
operations:
- name: send-message
method: POST
Onboards a new SKU by creating the material master in SAP, setting up the Salesforce product record, and notifying the supply chain team via Teams.
naftiko: '0.5'
info:
label: New SKU Listing Onboarding Workflow
description: Onboards a new SKU by creating the material master in SAP, setting up the Salesforce product record, and notifying the supply chain team via Teams.
tags:
- supply-chain
- sales
- sap
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sku-management
port: 8080
tools:
- name: onboard-new-sku
description: Orchestrate the onboarding of a new SKU across ERP, CRM, and notification systems.
inputParameters:
- name: sku_name
type: string
description: Product name for the new SKU.
- name: brand
type: string
description: Brand name.
- name: category
type: string
description: Product category.
- name: unit_cost
type: number
description: Unit cost in USD.
steps:
- name: create-material
type: call
call: sap.create-material
with:
description: '{{sku_name}}'
material_group: '{{category}}'
brand: '{{brand}}'
standard_price: '{{unit_cost}}'
- name: create-sf-product
type: call
call: salesforce.create-product
with:
Name: '{{sku_name}}'
ProductCode: '{{create-material.material_number}}'
Family: '{{category}}'
IsActive: true
- name: notify-supply-chain
type: call
call: msteams.send-message
with:
channel_id: supply-chain-ops
text: 'New SKU onboarded: {{sku_name}} ({{create-material.material_number}}). Brand: {{brand}}. Category: {{category}}.'
consumes:
- type: http
namespace: sap
baseUri: https://loreal-s4.sap.com/sap/opu/odata/sap/API_PRODUCT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: materials
path: /A_Product
operations:
- name: create-material
method: POST
- type: http
namespace: salesforce
baseUri: https://loreal.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: products
path: /sobjects/Product2
operations:
- name: create-product
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/channels/messages
operations:
- name: send-message
method: POST
Triggers a GitHub Advanced Security scan on a repository, checks Dependabot alerts, and creates Jira issues for critical vulnerabilities.
naftiko: '0.5'
info:
label: GitHub Repository Security Scan
description: Triggers a GitHub Advanced Security scan on a repository, checks Dependabot alerts, and creates Jira issues for critical vulnerabilities.
tags:
- security
- devops
- github
- jira
- vulnerability-management
capability:
exposes:
- type: mcp
namespace: security-ops
port: 8080
tools:
- name: scan-repo-vulnerabilities
description: Given a GitHub repository, retrieve critical Dependabot and code scanning alerts, then create Jira security issues for each critical finding. Use during security review cycles or on-demand.
inputParameters:
- name: repo_owner
type: string
description: GitHub organization or owner name.
- name: repo_name
type: string
description: GitHub repository name.
steps:
- name: get-dependabot-alerts
type: call
call: github.list-dependabot-alerts
with:
owner: '{{repo_owner}}'
repo: '{{repo_name}}'
severity: critical
- name: create-security-issue
type: call
call: jira.create-issue
with:
project_key: SEC
issuetype: Bug
summary: Critical vulnerability in {{repo_owner}}/{{repo_name}}
description: 'Dependabot alerts: {{get-dependabot-alerts.count}} critical findings. Repo: {{repo_owner}}/{{repo_name}}'
consumes:
- type: http
namespace: github
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: list-dependabot-alerts
method: GET
- type: http
namespace: jira
baseUri: https://loreal.atlassian.net/rest/api/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 plant maintenance order in SAP based on a ServiceNow request, assigns technicians, and notifies the maintenance team via Teams.
naftiko: '0.5'
info:
label: SAP Maintenance Order Creation Workflow
description: Creates a plant maintenance order in SAP based on a ServiceNow request, assigns technicians, and notifies the maintenance team via Teams.
tags:
- manufacturing
- operations
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: plant-maintenance
port: 8080
tools:
- name: create-maintenance-order
description: Create a maintenance order from a ServiceNow request, assign resources, and notify the team.
inputParameters:
- name: snow_ticket
type: string
description: ServiceNow request number.
- name: equipment_id
type: string
description: SAP equipment ID.
- name: priority
type: string
description: 'Maintenance priority: emergency, high, normal, low.'
steps:
- name: get-request
type: call
call: servicenow.get-request
with:
number: '{{snow_ticket}}'
- name: create-order
type: call
call: sap.create-maintenance-order
with:
equipment: '{{equipment_id}}'
priority: '{{priority}}'
description: '{{get-request.short_description}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: maintenance-ops
text: 'Maintenance order {{create-order.order_number}} created for equipment {{equipment_id}}. Priority: {{priority}}. Source: {{snow_ticket}}.'
consumes:
- type: http
namespace: servicenow
baseUri: https://loreal.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: requests
path: /table/sc_request/{{number}}
inputParameters:
- name: number
in: path
operations:
- name: get-request
method: GET
- type: http
namespace: sap
baseUri: https://loreal-s4.sap.com/sap/opu/odata/sap/API_MAINTENANCEORDER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: orders
path: /MaintenanceOrder
operations:
- name: create-maintenance-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: /teams/channels/messages
operations:
- name: send-message
method: POST
Generates a plant maintenance schedule report by pulling upcoming maintenance orders from SAP, enriching with equipment history from Snowflake, and posting to Teams.
naftiko: '0.5'
info:
label: SAP Plant Maintenance Schedule Report
description: Generates a plant maintenance schedule report by pulling upcoming maintenance orders from SAP, enriching with equipment history from Snowflake, and posting to Teams.
tags:
- manufacturing
- operations
- sap
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: maintenance-reporting
port: 8080
tools:
- name: generate-maintenance-report
description: Generate a maintenance schedule report combining upcoming orders with equipment history.
inputParameters:
- name: plant_code
type: string
description: SAP plant code.
- name: weeks_ahead
type: number
description: Number of weeks to look ahead.
steps:
- name: get-schedule
type: call
call: sap.get-maintenance-orders
with:
plant: '{{plant_code}}'
horizon_weeks: '{{weeks_ahead}}'
- name: get-equipment-history
type: call
call: snowflake.execute-query
with:
warehouse: MANUFACTURING_WH
query: SELECT equipment_id, mtbf_hours, last_failure_date FROM equipment_history WHERE plant='{{plant_code}}' AND equipment_id IN ({{get-schedule.equipment_ids}})
- name: post-report
type: call
call: msteams.send-message
with:
channel_id: maintenance-planning
text: 'Maintenance schedule for {{plant_code}} (next {{weeks_ahead}} weeks): {{get-schedule.order_count}} orders. Equipment at risk: {{get-equipment-history.at_risk_count}}.'
consumes:
- type: http
namespace: sap
baseUri: https://loreal-s4.sap.com/sap/opu/odata/sap/API_MAINTENANCEORDER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: orders
path: /MaintenanceOrder
operations:
- name: get-maintenance-orders
method: GET
- type: http
namespace: snowflake
baseUri: https://loreal.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
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/channels/messages
operations:
- name: send-message
method: POST
Initiates a quality audit for a contract manufacturer by pulling supplier data from SAP Ariba, creating a Jira audit task, and sharing the audit checklist via SharePoint.
naftiko: '0.5'
info:
label: Contract Manufacturer Quality Audit Workflow
description: Initiates a quality audit for a contract manufacturer by pulling supplier data from SAP Ariba, creating a Jira audit task, and sharing the audit checklist via SharePoint.
tags:
- quality
- procurement
- sap
- jira
- sharepoint
capability:
exposes:
- type: mcp
namespace: quality-audit
port: 8080
tools:
- name: initiate-cm-audit
description: Start a contract manufacturer quality audit by gathering supplier data, creating an audit task, and sharing the checklist.
inputParameters:
- name: supplier_id
type: string
description: SAP Ariba supplier ID.
- name: audit_type
type: string
description: 'Type of audit: routine, for-cause, pre-approval.'
steps:
- name: get-supplier
type: call
call: ariba.get-supplier
with:
supplier_id: '{{supplier_id}}'
- name: create-audit-task
type: call
call: jira.create-issue
with:
project_key: QAUDIT
issuetype: Task
summary: 'CM Quality Audit: {{get-supplier.name}} ({{audit_type}})'
description: 'Audit type: {{audit_type}}. Supplier: {{get-supplier.name}}. Location: {{get-supplier.address}}.'
- name: share-checklist
type: call
call: sharepoint.copy-template
with:
template: quality-audit-checklist-{{audit_type}}
destination: audits/{{supplier_id}}
name: audit-{{supplier_id}}-checklist
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: jira
baseUri: https://loreal.atlassian.net/rest/api/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: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: files
path: /sites/quality/drive/items
operations:
- name: copy-template
method: POST
Retrieves the current live container version from Google Tag Manager for a brand website property.
naftiko: '0.5'
info:
label: Google Tag Manager Container Version Lookup
description: Retrieves the current live container version from Google Tag Manager for a brand website property.
tags:
- marketing
- analytics
- google-tag-manager
- web
capability:
exposes:
- type: mcp
namespace: tag-management
port: 8080
tools:
- name: get-container-version
description: Fetch the current live GTM container version including tag count, trigger count, and publish date.
inputParameters:
- name: account_id
type: string
description: GTM account ID.
- name: container_id
type: string
description: GTM container ID.
call: gtm.get-live-version
with:
accountId: '{{account_id}}'
containerId: '{{container_id}}'
outputParameters:
- name: version_id
type: string
mapping: $.containerVersionId
- name: tag_count
type: string
mapping: $.tag.length
- name: publish_date
type: string
mapping: $.fingerprint
consumes:
- type: http
namespace: gtm
baseUri: https://www.googleapis.com/tagmanager/v2
authentication:
type: bearer
token: $secrets.google_gtm_token
resources:
- name: versions
path: /accounts/{{accountId}}/containers/{{containerId}}/versions/live
inputParameters:
- name: accountId
in: path
- name: containerId
in: path
operations:
- name: get-live-version
method: GET
When an R&D formulation is submitted, retrieves the bill of materials from SAP, checks regulatory compliance documents in SharePoint, and creates a review task in Jira.
naftiko: '0.5'
info:
label: New Product Formulation Review Workflow
description: When an R&D formulation is submitted, retrieves the bill of materials from SAP, checks regulatory compliance documents in SharePoint, and creates a review task in Jira.
tags:
- r-and-d
- quality
- sap
- sharepoint
- jira
capability:
exposes:
- type: mcp
namespace: rd-formulation
port: 8080
tools:
- name: initiate-formulation-review
description: Orchestrate a new product formulation review by pulling the BOM, checking regulatory docs, and creating a review task.
inputParameters:
- name: material_number
type: string
description: SAP material number for the new formulation.
- name: plant_code
type: string
description: SAP plant code.
- name: formulation_name
type: string
description: Name of the new formulation.
steps:
- name: get-bom
type: call
call: sap.get-bom
with:
material: '{{material_number}}'
plant: '{{plant_code}}'
- name: check-regulatory
type: call
call: sharepoint.search-docs
with:
query: '{{formulation_name}} regulatory INCI'
site: regulatory-affairs
- name: create-review-task
type: call
call: jira.create-issue
with:
project_key: RND
issuetype: Task
summary: 'Formulation review: {{formulation_name}}'
description: 'BOM contains {{get-bom.component_count}} components. Regulatory docs found: {{check-regulatory.result_count}}.'
consumes:
- type: http
namespace: sap
baseUri: https://loreal-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
operations:
- name: get-bom
method: GET
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: search
path: /sites/regulatory-affairs/drive/root/search
operations:
- name: search-docs
method: GET
- type: http
namespace: jira
baseUri: https://loreal.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Searches Jira for open quality defect issues in a project and returns defect counts by priority.
naftiko: '0.5'
info:
label: Jira Quality Defect Lookup
description: Searches Jira for open quality defect issues in a project and returns defect counts by priority.
tags:
- quality
- project-management
- jira
- defects
capability:
exposes:
- type: mcp
namespace: quality-tracking
port: 8080
tools:
- name: get-quality-defects
description: Search Jira for open quality defects in a project. Returns issue count grouped by priority.
inputParameters:
- name: project_key
type: string
description: Jira project key for the quality project.
call: jira.search-issues
with:
jql: project={{project_key}} AND type=Bug AND status!=Done
outputParameters:
- name: total
type: string
mapping: $.total
- name: issues
type: string
mapping: $.issues
consumes:
- type: http
namespace: jira
baseUri: https://loreal.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: search
path: /search
operations:
- name: search-issues
method: POST
Handles contractor access expiry by checking Okta account status, verifying contract end dates in Workday, and creating deprovisioning tasks in ServiceNow.
naftiko: '0.5'
info:
label: Okta Contractor Access Expiry Handler
description: Handles contractor access expiry by checking Okta account status, verifying contract end dates in Workday, and creating deprovisioning tasks in ServiceNow.
tags:
- security
- identity
- okta
- workday
- servicenow
capability:
exposes:
- type: mcp
namespace: access-lifecycle
port: 8080
tools:
- name: handle-contractor-expiry
description: Handle contractor access expiry by verifying employment status and creating deprovisioning tasks.
inputParameters:
- name: contractor_email
type: string
description: Contractor email address.
steps:
- name: get-okta-status
type: call
call: okta.get-user
with:
email: '{{contractor_email}}'
- name: check-workday
type: call
call: workday.get-worker-by-email
with:
email: '{{contractor_email}}'
- name: create-deprovision-task
type: call
call: servicenow.create-task
with:
short_description: 'Contractor access expiry: {{contractor_email}}'
description: 'Okta status: {{get-okta-status.status}}. Workday end date: {{check-workday.contract_end_date}}. Deprovisioning required.'
category: identity_management
consumes:
- type: http
namespace: okta
baseUri: https://loreal.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
- 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: /loreal/workers
operations:
- name: get-worker-by-email
method: GET
- type: http
namespace: servicenow
baseUri: https://loreal.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
Optimizes production scheduling by pulling demand signals from Snowflake, checking plant capacity in SAP, and creating optimized schedule proposals in Jira.
naftiko: '0.5'
info:
label: SAP Production Scheduling Optimizer
description: Optimizes production scheduling by pulling demand signals from Snowflake, checking plant capacity in SAP, and creating optimized schedule proposals in Jira.
tags:
- manufacturing
- supply-chain
- snowflake
- sap
- jira
capability:
exposes:
- type: mcp
namespace: production-planning
port: 8080
tools:
- name: optimize-production-schedule
description: Optimize production scheduling by balancing demand signals with plant capacity constraints.
inputParameters:
- name: plant_code
type: string
description: SAP plant code.
- name: planning_period
type: string
description: Planning period in YYYY-WW format.
steps:
- name: get-demand
type: call
call: snowflake.execute-query
with:
warehouse: DEMAND_PLANNING_WH
query: SELECT sku, required_units, priority FROM demand_signals WHERE plant='{{plant_code}}' AND week='{{planning_period}}'
- name: get-capacity
type: call
call: sap.get-plant-capacity
with:
plant: '{{plant_code}}'
period: '{{planning_period}}'
- name: create-schedule
type: call
call: jira.create-issue
with:
project_key: PROD
issuetype: Task
summary: 'Production schedule: {{plant_code}} week {{planning_period}}'
description: 'Demand: {{get-demand.total_units}} units across {{get-demand.sku_count}} SKUs. Available capacity: {{get-capacity.available_hours}} hours.'
consumes:
- type: http
namespace: snowflake
baseUri: https://loreal.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: sap
baseUri: https://loreal-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: capacity
path: /A_ProductionOrderCapacity
operations:
- name: get-plant-capacity
method: GET
- type: http
namespace: jira
baseUri: https://loreal.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Assembles a product launch briefing by pulling campaign assets from Adobe Creative Cloud and distributing the package to brand teams via SharePoint and Teams.
naftiko: '0.5'
info:
label: Product Launch Content Briefing
description: Assembles a product launch briefing by pulling campaign assets from Adobe Creative Cloud and distributing the package to brand teams via SharePoint and Teams.
tags:
- marketing
- content
- adobe
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: content-ops
port: 8080
tools:
- name: assemble-launch-briefing
description: Given a product launch ID, retrieve approved creative assets from Adobe Experience Manager, upload them to a SharePoint brand folder, and notify the brand team via Teams.
inputParameters:
- name: launch_id
type: string
description: Internal product launch ID.
- name: brand_name
type: string
description: Brand name (e.g., Lancôme, Maybelline) for folder routing.
- name: teams_channel_id
type: string
description: Teams channel ID for the brand team notification.
steps:
- name: get-assets
type: call
call: aem.list-assets
with:
launchId: '{{launch_id}}'
brand: '{{brand_name}}'
- name: upload-to-sharepoint
type: call
call: sharepoint.upload-file
with:
site_id: brand_launches
folder_path: Launches/{{brand_name}}/{{launch_id}}
content: '{{get-assets.packageUrl}}'
- name: notify-team
type: call
call: msteams.post-channel-message
with:
channel_id: '{{teams_channel_id}}'
text: 'Launch briefing ready for {{brand_name}} ({{launch_id}}). Assets: {{upload-to-sharepoint.sharepoint_url}}'
consumes:
- type: http
namespace: aem
baseUri: https://author.loreal.adobecqms.net/api/assets
authentication:
type: basic
username: $secrets.aem_user
password: $secrets.aem_password
resources:
- name: assets
path: /loreal/launches/{{launchId}}
inputParameters:
- name: launchId
in: path
operations:
- name: list-assets
method: GET
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: files
path: /sites/{{site_id}}/drive/items/root:/{{folder_path}}:/children
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: upload-file
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/brand/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Audits privileged access by pulling Okta admin role assignments, cross-referencing with Workday employment status, and creating a ServiceNow review task for stale accounts.
naftiko: '0.5'
info:
label: Okta Privileged Access Audit Workflow
description: Audits privileged access by pulling Okta admin role assignments, cross-referencing with Workday employment status, and creating a ServiceNow review task for stale accounts.
tags:
- security
- identity
- okta
- workday
- servicenow
capability:
exposes:
- type: mcp
namespace: security-audit
port: 8080
tools:
- name: audit-privileged-access
description: Audit privileged Okta accounts by verifying employment status and flagging stale or orphaned admin accounts.
inputParameters:
- name: role_type
type: string
description: Okta admin role type to audit (e.g., SUPER_ADMIN, ORG_ADMIN).
steps:
- name: get-admin-users
type: call
call: okta.list-role-assignments
with:
role_type: '{{role_type}}'
- name: check-employment
type: call
call: workday.get-active-workers
with:
email_list: '{{get-admin-users.emails}}'
- name: create-review
type: call
call: servicenow.create-task
with:
short_description: 'Privileged access audit: {{role_type}} role'
description: 'Total admins: {{get-admin-users.count}}. Inactive employees with admin access: {{check-employment.stale_count}}.'
category: security
consumes:
- type: http
namespace: okta
baseUri: https://loreal.okta.com/api/v1
authentication:
type: bearer
token: $secrets.okta_api_token
resources:
- name: roles
path: /users
operations:
- name: list-role-assignments
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: /loreal/workers
operations:
- name: get-active-workers
method: GET
- type: http
namespace: servicenow
baseUri: https://loreal.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
Fetches marketing campaign attribution data from Adobe Analytics for a given campaign and date range.
naftiko: '0.5'
info:
label: Adobe Analytics Campaign Attribution
description: Fetches marketing campaign attribution data from Adobe Analytics for a given campaign and date range.
tags:
- marketing
- analytics
- adobe-analytics
- reporting
capability:
exposes:
- type: mcp
namespace: digital-analytics
port: 8080
tools:
- name: get-campaign-attribution
description: Pull campaign attribution metrics from Adobe Analytics including visits, conversions, and revenue attributed to a campaign.
inputParameters:
- name: campaign_id
type: string
description: Adobe Analytics campaign tracking code.
- name: date_from
type: string
description: Start date in YYYY-MM-DD format.
- name: date_to
type: string
description: End date in YYYY-MM-DD format.
call: adobe.get-report
with:
rsid: lorealproduction
campaign_id: '{{campaign_id}}'
dateFrom: '{{date_from}}'
dateTo: '{{date_to}}'
outputParameters:
- name: visits
type: string
mapping: $.report.data.visits
- name: conversions
type: string
mapping: $.report.data.conversions
- name: revenue
type: string
mapping: $.report.data.revenue
consumes:
- type: http
namespace: adobe
baseUri: https://analytics.adobe.io/api/loreal
authentication:
type: bearer
token: $secrets.adobe_analytics_token
resources:
- name: reports
path: /reports
operations:
- name: get-report
method: POST
Tracks regulatory submission status by querying Jira for submission tasks, checking document completeness in SharePoint, and updating the compliance dashboard in Power BI.
naftiko: '0.5'
info:
label: Cosmetics Regulatory Submission Tracker
description: Tracks regulatory submission status by querying Jira for submission tasks, checking document completeness in SharePoint, and updating the compliance dashboard in Power BI.
tags:
- regulatory
- quality
- jira
- sharepoint
- power-bi
capability:
exposes:
- type: mcp
namespace: regulatory-ops
port: 8080
tools:
- name: track-regulatory-submission
description: Track the status of a cosmetics regulatory submission across project management, document storage, and reporting systems.
inputParameters:
- name: submission_id
type: string
description: Jira issue key for the regulatory submission.
steps:
- name: get-submission-status
type: call
call: jira.get-issue
with:
issue_key: '{{submission_id}}'
- name: check-documents
type: call
call: sharepoint.list-folder
with:
site: regulatory-submissions
folder: '{{submission_id}}'
- name: refresh-dashboard
type: call
call: powerbi.refresh-dataset
with:
datasetId: regulatory-compliance-tracker
consumes:
- type: http
namespace: jira
baseUri: https://loreal.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: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: folders
path: /sites/{{site}}/drive/root:/{{folder}}:/children
inputParameters:
- name: site
in: path
- name: folder
in: path
operations:
- name: list-folder
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/{{datasetId}}/refreshes
inputParameters:
- name: datasetId
in: path
operations:
- name: refresh-dataset
method: POST
Pulls current compensation data for an employee from Workday including base pay, bonus eligibility, and pay grade.
naftiko: '0.5'
info:
label: Workday Compensation Review Snapshot
description: Pulls current compensation data for an employee from Workday including base pay, bonus eligibility, and pay grade.
tags:
- hr
- compensation
- workday
- reporting
capability:
exposes:
- type: mcp
namespace: hr-compensation
port: 8080
tools:
- name: get-compensation-snapshot
description: Retrieve compensation details for a Workday employee including base salary, bonus target, and pay grade.
inputParameters:
- name: employee_id
type: string
description: Workday employee ID.
call: workday.get-compensation
with:
worker_id: '{{employee_id}}'
outputParameters:
- name: base_salary
type: string
mapping: $.compensation.base_pay
- name: bonus_target
type: string
mapping: $.compensation.bonus_target_percent
- name: pay_grade
type: string
mapping: $.compensation.pay_grade
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: compensation
path: /loreal/workers/{{worker_id}}/compensation
inputParameters:
- name: worker_id
in: path
operations:
- name: get-compensation
method: GET
Aggregates completed story points from the last Jira sprint and posts a velocity digest to the engineering Teams channel.
naftiko: '0.5'
info:
label: Jira Sprint Velocity Digest
description: Aggregates completed story points from the last Jira sprint and posts a velocity digest to the engineering Teams channel.
tags:
- devops
- project-management
- jira
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: agile-reporting
port: 8080
tools:
- name: digest-sprint-velocity
description: Given a Jira board ID and sprint ID, fetch completed issues and story points, then post a velocity summary to the engineering Teams channel.
inputParameters:
- name: board_id
type: string
description: Jira board ID.
- name: sprint_id
type: string
description: Jira sprint ID to summarize.
- name: teams_channel_id
type: string
description: Teams channel ID for the engineering team.
steps:
- name: get-sprint-issues
type: call
call: jira.get-sprint-issues
with:
boardId: '{{board_id}}'
sprintId: '{{sprint_id}}'
- name: post-digest
type: call
call: msteams.post-channel-message
with:
channel_id: '{{teams_channel_id}}'
text: Sprint {{sprint_id}} complete — {{get-sprint-issues.totalPoints}} story points delivered across {{get-sprint-issues.issueCount}} issues.
consumes:
- type: http
namespace: jira
baseUri: https://loreal.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: sprint-issues
path: /board/{{boardId}}/sprint/{{sprintId}}/issue
inputParameters:
- name: boardId
in: path
- name: sprintId
in: path
operations:
- name: get-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/engineering/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Processes DTC product returns by updating the Salesforce case, creating a return goods receipt in SAP, and issuing a refund notification via email.
naftiko: '0.5'
info:
label: Direct-to-Consumer Returns Processing
description: Processes DTC product returns by updating the Salesforce case, creating a return goods receipt in SAP, and issuing a refund notification via email.
tags:
- ecommerce
- supply-chain
- salesforce
- sap
- customer-service
capability:
exposes:
- type: mcp
namespace: dtc-returns
port: 8080
tools:
- name: process-dtc-return
description: Process a direct-to-consumer product return across CRM, ERP, and customer notification systems.
inputParameters:
- name: case_id
type: string
description: Salesforce case ID for the return.
- name: order_number
type: string
description: Original SAP sales order number.
- name: reason
type: string
description: Return reason code.
steps:
- name: update-case
type: call
call: salesforce.update-case
with:
case_id: '{{case_id}}'
Status: In Progress
Return_Reason__c: '{{reason}}'
- name: create-return-order
type: call
call: sap.create-return-order
with:
reference_order: '{{order_number}}'
reason: '{{reason}}'
- name: send-notification
type: call
call: msgraph.send-mail
with:
to: '{{update-case.contact_email}}'
subject: 'Return processed: {{order_number}}'
body: 'Your return has been processed. Return reference: {{create-return-order.return_number}}. Refund will be issued within 5-7 business days.'
consumes:
- type: http
namespace: salesforce
baseUri: https://loreal.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: sap
baseUri: https://loreal-s4.sap.com/sap/opu/odata/sap/API_RETURNS_DELIVERY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: returns
path: /A_ReturnsDeliveryHeader
operations:
- name: create-return-order
method: POST
- 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
Generates a media mix optimization report by pulling spend data from Meta and Google Ads via Snowflake, correlating with sales, and refreshing the Power BI dashboard.
naftiko: '0.5'
info:
label: Media Mix Optimization Report Generator
description: Generates a media mix optimization report by pulling spend data from Meta and Google Ads via Snowflake, correlating with sales, and refreshing the Power BI dashboard.
tags:
- marketing
- analytics
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: media-planning
port: 8080
tools:
- name: generate-media-mix-report
description: Generate a media mix optimization report combining multi-channel spend with sales outcomes.
inputParameters:
- name: brand
type: string
description: Brand name.
- name: date_from
type: string
description: Start date.
- name: date_to
type: string
description: End date.
steps:
- name: get-media-data
type: call
call: snowflake.execute-query
with:
warehouse: MARKETING_ANALYTICS_WH
query: SELECT channel, spend, impressions, conversions, roas FROM media_mix WHERE brand='{{brand}}' AND date BETWEEN '{{date_from}}' AND '{{date_to}}' GROUP BY channel
- name: refresh-dashboard
type: call
call: powerbi.refresh-dataset
with:
datasetId: media-mix-optimization
- name: post-summary
type: call
call: msteams.send-message
with:
channel_id: media-planning
text: 'Media mix report ready for {{brand}} ({{date_from}} to {{date_to}}). Best ROAS channel: {{get-media-data.top_channel}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://loreal.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: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /datasets/{{datasetId}}/refreshes
inputParameters:
- name: datasetId
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: messages
path: /teams/channels/messages
operations:
- name: send-message
method: POST
When a manufacturing line goes down, creates a ServiceNow incident, updates the production order status in SAP, and alerts the plant operations team via Teams.
naftiko: '0.5'
info:
label: Manufacturing Downtime Incident Handler
description: When a manufacturing line goes down, creates a ServiceNow incident, updates the production order status in SAP, and alerts the plant operations team via Teams.
tags:
- manufacturing
- operations
- servicenow
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: mfg-ops
port: 8080
tools:
- name: handle-downtime
description: Orchestrate the response to a manufacturing line downtime event by creating an incident, updating SAP, and notifying operations.
inputParameters:
- name: production_line
type: string
description: Manufacturing production line identifier.
- name: plant_code
type: string
description: SAP plant code.
- name: reason
type: string
description: Reason for downtime.
steps:
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Line down: {{production_line}} at plant {{plant_code}}'
category: manufacturing
urgency: '1'
description: 'Production line {{production_line}} is down. Reason: {{reason}}.'
- name: update-sap-order
type: call
call: sap.update-production-status
with:
plant: '{{plant_code}}'
line: '{{production_line}}'
status: INTERRUPTED
- name: alert-ops
type: call
call: msteams.send-message
with:
channel_id: plant-operations
text: 'LINE DOWN: {{production_line}} at {{plant_code}}. Reason: {{reason}}. Incident: {{create-incident.number}}.'
consumes:
- type: http
namespace: servicenow
baseUri: https://loreal.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://loreal-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-orders
path: /A_ProductionOrder
operations:
- name: update-production-status
method: PATCH
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/channels/messages
operations:
- name: send-message
method: POST
Submits a vendor invoice to SAP Ariba for three-way match validation, creates an approval task in ServiceNow, and notifies the approver via Teams.
naftiko: '0.5'
info:
label: Invoice Processing and Approval
description: Submits a vendor invoice to SAP Ariba for three-way match validation, creates an approval task in ServiceNow, and notifies the approver via Teams.
tags:
- finance
- procurement
- sap-ariba
- servicenow
- approval
capability:
exposes:
- type: mcp
namespace: finance-ops
port: 8080
tools:
- name: process-invoice
description: Given a vendor invoice number and amount, submit it to SAP Ariba for three-way match, create a ServiceNow approval task, and notify the finance approver via Teams.
inputParameters:
- name: invoice_number
type: string
description: Vendor invoice number.
- name: vendor_id
type: string
description: SAP vendor ID.
- name: amount
type: number
description: Invoice total amount.
- name: approver_upn
type: string
description: UPN (email) of the finance approver in Microsoft 365.
steps:
- name: submit-invoice
type: call
call: sap-ariba.create-invoice
with:
invoiceNumber: '{{invoice_number}}'
vendorId: '{{vendor_id}}'
totalAmount: '{{amount}}'
- name: create-approval-task
type: call
call: servicenow.create-task
with:
short_description: 'Invoice approval required: {{invoice_number}}'
assigned_to: '{{approver_upn}}'
description: 'Ariba invoice ID: {{submit-invoice.invoiceId}}'
- name: notify-approver
type: call
call: msteams.send-message
with:
recipient_upn: '{{approver_upn}}'
text: 'Invoice {{invoice_number}} for {{amount}} requires your approval. ServiceNow task: {{create-approval-task.number}}'
consumes:
- type: http
namespace: sap-ariba
baseUri: https://openapi.ariba.com/api/invoice/v1
authentication:
type: bearer
token: $secrets.ariba_token
resources:
- name: invoices
path: /invoices
operations:
- name: create-invoice
method: POST
- type: http
namespace: servicenow
baseUri: https://loreal.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
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: chats
path: /chats
operations:
- name: send-message
method: POST
Pulls engagement metrics from LinkedIn and Meta for L'Oréal brand accounts and posts a weekly summary to a Teams channel.
naftiko: '0.5'
info:
label: Social Media Performance Report
description: Pulls engagement metrics from LinkedIn and Meta for L'Oréal brand accounts and posts a weekly summary to a Teams channel.
tags:
- marketing
- social
- linkedin
- meta
- reporting
capability:
exposes:
- type: mcp
namespace: social-reporting
port: 8080
tools:
- name: digest-social-performance
description: Fetch weekly post engagement metrics from LinkedIn and Meta brand pages and post a combined summary to the specified Teams channel. Use for weekly brand performance reviews.
inputParameters:
- name: linkedin_org_id
type: string
description: LinkedIn organization URN for the brand page.
- name: meta_page_id
type: string
description: Meta (Facebook) page ID for the brand.
- name: teams_channel_id
type: string
description: Microsoft Teams channel ID to post the report to.
steps:
- name: get-linkedin-stats
type: call
call: linkedin.get-org-stats
with:
org_id: '{{linkedin_org_id}}'
- name: get-meta-stats
type: call
call: meta.get-page-insights
with:
page_id: '{{meta_page_id}}'
- name: post-report
type: call
call: msteams.post-message
with:
channel_id: '{{teams_channel_id}}'
text: 'Weekly Social Report — LinkedIn impressions: {{get-linkedin-stats.impressionCount}}, Meta reach: {{get-meta-stats.reach}}'
consumes:
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: org-stats
path: /organizationalEntityShareStatistics
inputParameters:
- name: org_id
in: query
operations:
- name: get-org-stats
method: GET
- type: http
namespace: meta
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.meta_token
resources:
- name: page-insights
path: /{{page_id}}/insights
inputParameters:
- name: page_id
in: path
operations:
- name: get-page-insights
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/marketing/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Retrieves IT asset details from ServiceNow CMDB by asset tag or serial number.
naftiko: '0.5'
info:
label: ServiceNow IT Asset Lookup
description: Retrieves IT asset details from ServiceNow CMDB by asset tag or serial number.
tags:
- operations
- it-asset
- servicenow
- cmdb
capability:
exposes:
- type: mcp
namespace: it-assets
port: 8080
tools:
- name: get-asset
description: Look up an IT asset in ServiceNow CMDB by asset tag. Returns asset name, status, assigned user, and warranty expiration.
inputParameters:
- name: asset_tag
type: string
description: ServiceNow asset tag identifier.
call: servicenow.get-asset
with:
asset_tag: '{{asset_tag}}'
outputParameters:
- name: name
type: string
mapping: $.result.name
- name: status
type: string
mapping: $.result.install_status
- name: assigned_to
type: string
mapping: $.result.assigned_to.display_value
- name: warranty_expiry
type: string
mapping: $.result.warranty_expiration
consumes:
- type: http
namespace: servicenow
baseUri: https://loreal.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: assets
path: /table/alm_hardware
inputParameters:
- name: asset_tag
in: query
operations:
- name: get-asset
method: GET
Extracts budget vs. actuals data from SAP S/4HANA by cost center and publishes the variance report to Power BI and SharePoint.
naftiko: '0.5'
info:
label: SAP Budget Variance Report
description: Extracts budget vs. actuals data from SAP S/4HANA by cost center and publishes the variance report to Power BI and SharePoint.
tags:
- finance
- erp
- sap
- power-bi
- reporting
capability:
exposes:
- type: mcp
namespace: finance-reporting
port: 8080
tools:
- name: publish-budget-variance
description: Given a fiscal period and cost center, extract budget vs. actuals from SAP S/4HANA, push the data to a Power BI dataset, and upload a summary report to SharePoint.
inputParameters:
- name: fiscal_period
type: string
description: Fiscal period in YYYYMM format (e.g., 202603).
- name: cost_center
type: string
description: SAP cost center code.
steps:
- name: get-variance-data
type: call
call: sap.get-cost-center-actuals
with:
fiscalPeriod: '{{fiscal_period}}'
costCenter: '{{cost_center}}'
- name: push-to-powerbi
type: call
call: powerbi.push-rows
with:
datasetId: $secrets.powerbi_budget_dataset_id
tableName: BudgetVariance
rows: '{{get-variance-data.rows}}'
- name: upload-report
type: call
call: sharepoint.upload-file
with:
site_id: finance_reports
folder_path: BudgetVariance/{{fiscal_period}}
content: '{{get-variance-data.summary}}'
consumes:
- type: http
namespace: sap
baseUri: https://loreal-s4.sap.com/sap/opu/odata/sap/YY1_COSTCENTERACTUALS_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: cost-center-actuals
path: /CostCenterActuals
inputParameters:
- name: fiscalPeriod
in: query
- name: costCenter
in: query
operations:
- name: get-cost-center-actuals
method: GET
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: dataset-rows
path: /datasets/{{datasetId}}/tables/{{tableName}}/rows
inputParameters:
- name: datasetId
in: path
- name: tableName
in: path
operations:
- name: push-rows
method: POST
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: files
path: /sites/{{site_id}}/drive/items/root:/{{folder_path}}:/children
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: upload-file
method: POST
Checks hazardous material compliance for shipping by querying SAP material safety data, validating against regulations in Snowflake, and creating a ServiceNow task for non-compliance.
naftiko: '0.5'
info:
label: SAP Hazardous Material Compliance Check
description: Checks hazardous material compliance for shipping by querying SAP material safety data, validating against regulations in Snowflake, and creating a ServiceNow task for non-compliance.
tags:
- quality
- regulatory
- sap
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: hazmat-compliance
port: 8080
tools:
- name: check-hazmat-compliance
description: Verify hazardous material compliance for a shipment by checking safety data and regulatory requirements.
inputParameters:
- name: material_number
type: string
description: SAP material number.
- name: destination_country
type: string
description: Destination country code.
steps:
- name: get-safety-data
type: call
call: sap.get-material-safety
with:
material: '{{material_number}}'
- name: check-regulations
type: call
call: snowflake.execute-query
with:
warehouse: REGULATORY_WH
query: SELECT regulation, compliant, required_docs FROM hazmat_regulations WHERE un_number='{{get-safety-data.un_number}}' AND country='{{destination_country}}'
- name: create-task
type: call
call: servicenow.create-task
with:
short_description: 'Hazmat compliance: {{material_number}} to {{destination_country}}'
description: 'UN number: {{get-safety-data.un_number}}. Compliance status: {{check-regulations.compliant}}.'
category: regulatory
consumes:
- type: http
namespace: sap
baseUri: https://loreal-s4.sap.com/sap/opu/odata/sap/API_PRODUCT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: materials
path: /A_Product('{{material}}')/to_ProductSafetyData
inputParameters:
- name: material
in: path
operations:
- name: get-material-safety
method: GET
- type: http
namespace: snowflake
baseUri: https://loreal.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
baseUri: https://loreal.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 influencer campaign spend from Salesforce, engagement data from Instagram, and sales lift from Snowflake to calculate ROI and post results to Teams.
naftiko: '0.5'
info:
label: Influencer Campaign ROI Analyzer
description: Pulls influencer campaign spend from Salesforce, engagement data from Instagram, and sales lift from Snowflake to calculate ROI and post results to Teams.
tags:
- marketing
- social
- salesforce
- instagram
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: influencer-analytics
port: 8080
tools:
- name: analyze-influencer-roi
description: Calculate influencer campaign ROI by combining spend data, engagement metrics, and sales lift, then post the summary to Teams.
inputParameters:
- name: campaign_id
type: string
description: Salesforce campaign ID for the influencer program.
- name: ig_account_id
type: string
description: Instagram business account ID.
- name: date_from
type: string
description: Start date in YYYY-MM-DD format.
- name: date_to
type: string
description: End date in YYYY-MM-DD format.
steps:
- name: get-spend
type: call
call: salesforce.get-campaign
with:
campaign_id: '{{campaign_id}}'
- name: get-engagement
type: call
call: instagram.get-insights
with:
ig_user_id: '{{ig_account_id}}'
since: '{{date_from}}'
until: '{{date_to}}'
- name: get-sales-lift
type: call
call: snowflake.execute-query
with:
warehouse: MARKETING_ANALYTICS_WH
query: SELECT sales_lift_pct FROM influencer_attribution WHERE campaign_id='{{campaign_id}}'
- name: post-results
type: call
call: msteams.send-message
with:
channel_id: influencer-marketing
text: 'Influencer ROI for {{campaign_id}}: Spend ${{get-spend.actual_cost}}, Engagement {{get-engagement.total_interactions}}, Sales lift {{get-sales-lift.sales_lift_pct}}%.'
consumes:
- type: http
namespace: salesforce
baseUri: https://loreal.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: campaigns
path: /sobjects/Campaign/{{campaign_id}}
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-campaign
method: GET
- type: http
namespace: instagram
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.meta_token
resources:
- name: insights
path: /{{ig_user_id}}/insights
inputParameters:
- name: ig_user_id
in: path
operations:
- name: get-insights
method: GET
- type: http
namespace: snowflake
baseUri: https://loreal.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
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/channels/messages
operations:
- name: send-message
method: POST
Queries Datadog APM for application latency percentiles over a time window for a specified service.
naftiko: '0.5'
info:
label: Datadog Application Latency Report
description: Queries Datadog APM for application latency percentiles over a time window for a specified service.
tags:
- operations
- monitoring
- datadog
- performance
capability:
exposes:
- type: mcp
namespace: observability
port: 8080
tools:
- name: get-latency-report
description: Fetch p50, p95, and p99 latency metrics from Datadog APM for a given service over a specified time range.
inputParameters:
- name: service_name
type: string
description: Datadog APM service name.
- name: time_from
type: string
description: Start timestamp in epoch seconds.
- name: time_to
type: string
description: End timestamp in epoch seconds.
call: datadog.query-timeseries
with:
query: avg:trace.servlet.request.duration{service:{{service_name}}}
from: '{{time_from}}'
to: '{{time_to}}'
outputParameters:
- name: p50_ms
type: string
mapping: $.series[0].pointlist[0][1]
- name: p95_ms
type: string
mapping: $.series[1].pointlist[0][1]
- name: p99_ms
type: string
mapping: $.series[2].pointlist[0][1]
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: query
path: /query
operations:
- name: query-timeseries
method: GET
Uses Anthropic Claude to classify and summarize incoming customer complaints from Salesforce Service Cloud, then routes them to the appropriate ServiceNow queue.
naftiko: '0.5'
info:
label: AI-Assisted Customer Complaint Triage
description: Uses Anthropic Claude to classify and summarize incoming customer complaints from Salesforce Service Cloud, then routes them to the appropriate ServiceNow queue.
tags:
- customer-support
- ai
- salesforce
- servicenow
- anthropic
capability:
exposes:
- type: mcp
namespace: cx-ops
port: 8080
tools:
- name: triage-customer-complaint
description: Given a Salesforce Service Cloud case ID, retrieve case details, use Anthropic Claude to classify severity and summarize the complaint, then create a routed ServiceNow incident with the summary.
inputParameters:
- name: case_id
type: string
description: Salesforce Service Cloud case record ID.
steps:
- name: get-case
type: call
call: salesforce.get-case
with:
case_id: '{{case_id}}'
- name: classify-complaint
type: call
call: anthropic.create-message
with:
model: claude-3-5-sonnet-20241022
prompt: 'Classify and summarize this customer complaint for routing: {{get-case.Description}}'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Customer complaint: {{get-case.Subject}}'
description: 'AI summary: {{classify-complaint.content}}'
category: customer_complaint
consumes:
- type: http
namespace: salesforce
baseUri: https://loreal.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: 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: servicenow
baseUri: https://loreal.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 Terraform Cloud workspace run to provision or update infrastructure, then posts run status to the DevOps Teams channel and creates a Jira tracking task.
naftiko: '0.5'
info:
label: Terraform Cloud Infrastructure Provisioning
description: Triggers a Terraform Cloud workspace run to provision or update infrastructure, then posts run status to the DevOps Teams channel and creates a Jira tracking task.
tags:
- cloud
- devops
- terraform
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: infra-provisioning
port: 8080
tools:
- name: trigger-terraform-run
description: Given a Terraform Cloud workspace ID, trigger a new plan-and-apply run, create a Jira task to track the provisioning change, and post status to the DevOps Teams channel.
inputParameters:
- name: workspace_id
type: string
description: Terraform Cloud workspace ID.
- name: message
type: string
description: Commit message or description of the infrastructure change.
- name: teams_channel_id
type: string
description: Teams channel ID for DevOps notifications.
steps:
- name: create-run
type: call
call: terraform.create-run
with:
workspaceId: '{{workspace_id}}'
message: '{{message}}'
- name: create-task
type: call
call: jira.create-issue
with:
project_key: CLOUD
issuetype: Task
summary: 'Terraform run: {{message}}'
description: 'Workspace: {{workspace_id}} | Run ID: {{create-run.runId}}'
- name: notify-team
type: call
call: msteams.post-channel-message
with:
channel_id: '{{teams_channel_id}}'
text: 'Terraform run triggered: {{message}} | Workspace: {{workspace_id}} | Jira: {{create-task.key}}'
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: jira
baseUri: https://loreal.atlassian.net/rest/api/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/devops/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Checks packaging materials against sustainability requirements by querying SAP BOM data, verifying compliance in Snowflake, and creating a Jira task for non-compliant items.
naftiko: '0.5'
info:
label: Packaging Sustainability Compliance Checker
description: Checks packaging materials against sustainability requirements by querying SAP BOM data, verifying compliance in Snowflake, and creating a Jira task for non-compliant items.
tags:
- sustainability
- quality
- sap
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: sustainability
port: 8080
tools:
- name: check-packaging-compliance
description: Verify packaging sustainability compliance by cross-referencing BOM materials with sustainability standards and flagging non-compliant components.
inputParameters:
- name: material_number
type: string
description: SAP material number for the packaged product.
- name: plant_code
type: string
description: SAP plant code.
steps:
- name: get-packaging-bom
type: call
call: sap.get-bom
with:
material: '{{material_number}}'
plant: '{{plant_code}}'
- name: check-compliance
type: call
call: snowflake.execute-query
with:
warehouse: SUSTAINABILITY_WH
query: SELECT material_id, recyclable_pct, compliant FROM packaging_sustainability WHERE material_id IN ({{get-packaging-bom.component_ids}})
- name: create-task
type: call
call: jira.create-issue
with:
project_key: SUSTAIN
issuetype: Task
summary: 'Packaging compliance review: {{material_number}}'
description: 'Non-compliant components found: {{check-compliance.non_compliant_count}}. Review required.'
consumes:
- type: http
namespace: sap
baseUri: https://loreal-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
operations:
- name: get-bom
method: GET
- type: http
namespace: snowflake
baseUri: https://loreal.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: jira
baseUri: https://loreal.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Orchestrates clinical trial data collection by pulling trial metadata from Jira, collecting results from Snowflake, and storing the summary report in SharePoint.
naftiko: '0.5'
info:
label: Clinical Trial Data Collection Orchestrator
description: Orchestrates clinical trial data collection by pulling trial metadata from Jira, collecting results from Snowflake, and storing the summary report in SharePoint.
tags:
- r-and-d
- quality
- jira
- snowflake
- sharepoint
capability:
exposes:
- type: mcp
namespace: clinical-trials
port: 8080
tools:
- name: collect-trial-data
description: Collect and organize clinical trial data from multiple sources into a structured report.
inputParameters:
- name: trial_id
type: string
description: Clinical trial identifier.
- name: phase
type: string
description: Trial phase (e.g., Phase I, Phase II).
steps:
- name: get-trial-metadata
type: call
call: jira.get-issue
with:
issue_key: '{{trial_id}}'
- name: get-trial-results
type: call
call: snowflake.execute-query
with:
warehouse: RD_ANALYTICS_WH
query: SELECT subject_count, adverse_events, efficacy_score FROM clinical_results WHERE trial_id='{{trial_id}}' AND phase='{{phase}}'
- name: store-report
type: call
call: sharepoint.upload-file
with:
site: rd-clinical-trials
folder: '{{trial_id}}'
filename: '{{trial_id}}-{{phase}}-results.json'
content: '{{get-trial-results.data}}'
consumes:
- type: http
namespace: jira
baseUri: https://loreal.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: snowflake
baseUri: https://loreal.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: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: files
path: /sites/{{site}}/drive/root:/{{folder}}/{{filename}}:/content
inputParameters:
- name: site
in: path
- name: folder
in: path
- name: filename
in: path
operations:
- name: upload-file
method: PUT
Searches SharePoint for regulatory compliance documents matching a keyword and returns document titles, URLs, and last modified dates.
naftiko: '0.5'
info:
label: SharePoint Regulatory Document Search
description: Searches SharePoint for regulatory compliance documents matching a keyword and returns document titles, URLs, and last modified dates.
tags:
- quality
- regulatory
- sharepoint
- documents
capability:
exposes:
- type: mcp
namespace: doc-management
port: 8080
tools:
- name: search-regulatory-docs
description: Search SharePoint regulatory library for documents matching a keyword. Returns title, URL, and last modified date.
inputParameters:
- name: keyword
type: string
description: Search keyword for regulatory documents.
- name: site_id
type: string
description: SharePoint site ID for the regulatory library.
call: sharepoint.search
with:
siteId: '{{site_id}}'
queryText: '{{keyword}}'
outputParameters:
- name: results
type: string
mapping: $.value
consumes:
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: search
path: /sites/{{siteId}}/drive/root/search(q='{{queryText}}')
inputParameters:
- name: siteId
in: path
- name: queryText
in: path
operations:
- name: search
method: GET
When a Datadog monitor fires a critical alert, creates a ServiceNow incident, assigns an on-call engineer via PagerDuty, and notifies the ops Teams channel.
naftiko: '0.5'
info:
label: Datadog Infrastructure Alert Response
description: When a Datadog monitor fires a critical alert, creates a ServiceNow incident, assigns an on-call engineer via PagerDuty, and notifies the ops Teams channel.
tags:
- itsm
- observability
- datadog
- servicenow
- pagerduty
capability:
exposes:
- type: mcp
namespace: infra-ops
port: 8080
tools:
- name: handle-infrastructure-alert
description: Given a Datadog monitor alert ID and severity, create a ServiceNow incident, trigger a PagerDuty incident to page on-call, and post context to the ops Teams channel.
inputParameters:
- name: monitor_id
type: string
description: Datadog monitor ID that triggered the alert.
- name: severity
type: string
description: 'Alert severity: critical, warning, or info.'
- name: affected_service
type: string
description: Name of the affected service or host.
steps:
- name: get-monitor
type: call
call: datadog.get-monitor
with:
monitor_id: '{{monitor_id}}'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Infrastructure alert: {{affected_service}} — {{severity}}'
urgency: '1'
impact: '1'
description: 'Datadog monitor {{monitor_id}}: {{get-monitor.message}}'
- name: page-oncall
type: call
call: pagerduty.create-incident
with:
title: 'Infrastructure alert: {{affected_service}}'
service_id: $secrets.pagerduty_infra_service_id
body: 'ServiceNow: {{create-incident.number}} | Monitor: {{monitor_id}}'
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/{{monitor_id}}
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
- type: http
namespace: servicenow
baseUri: https://loreal.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: apikey
key: Authorization
value: $secrets.pagerduty_token
placement: header
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
Executes a consumer analytics query in Snowflake and returns aggregated purchase behavior data for a product category.
naftiko: '0.5'
info:
label: Snowflake Consumer Insights Query
description: Executes a consumer analytics query in Snowflake and returns aggregated purchase behavior data for a product category.
tags:
- analytics
- marketing
- snowflake
- data
capability:
exposes:
- type: mcp
namespace: consumer-analytics
port: 8080
tools:
- name: query-consumer-insights
description: Query Snowflake consumer analytics warehouse for purchase frequency, basket size, and brand affinity by product category.
inputParameters:
- name: category
type: string
description: Product category to analyze (e.g., skincare, haircare).
- name: region
type: string
description: Market region code.
call: snowflake.execute-query
with:
warehouse: CONSUMER_ANALYTICS_WH
query: SELECT * FROM consumer_insights WHERE category='{{category}}' AND region='{{region}}'
outputParameters:
- name: avg_basket_size
type: string
mapping: $.data[0].avg_basket_size
- name: purchase_frequency
type: string
mapping: $.data[0].purchase_frequency
- name: brand_affinity_score
type: string
mapping: $.data[0].brand_affinity
consumes:
- type: http
namespace: snowflake
baseUri: https://loreal.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
Publishes a sponsored content post to a L'Oréal LinkedIn brand page and records the post ID in Salesforce for attribution tracking.
naftiko: '0.5'
info:
label: LinkedIn Brand Campaign Publisher
description: Publishes a sponsored content post to a L'Oréal LinkedIn brand page and records the post ID in Salesforce for attribution tracking.
tags:
- marketing
- social
- linkedin
- salesforce
- content
capability:
exposes:
- type: mcp
namespace: social-publishing
port: 8080
tools:
- name: publish-linkedin-post
description: Given post copy, image URL, and a Salesforce campaign ID, publish a LinkedIn sponsored content post on the brand page and log the post ID back to the Salesforce campaign record.
inputParameters:
- name: org_urn
type: string
description: LinkedIn organization URN for the brand page.
- name: post_text
type: string
description: Post copy text to publish.
- name: image_url
type: string
description: URL of the image asset to attach.
- name: campaign_id
type: string
description: Salesforce campaign record ID for attribution.
steps:
- name: publish-post
type: call
call: linkedin.create-post
with:
author: '{{org_urn}}'
commentary: '{{post_text}}'
content_url: '{{image_url}}'
- name: update-campaign
type: call
call: salesforce.update-campaign
with:
campaign_id: '{{campaign_id}}'
LinkedIn_Post_ID__c: '{{publish-post.id}}'
consumes:
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: posts
path: /posts
operations:
- name: create-post
method: POST
- type: http
namespace: salesforce
baseUri: https://loreal.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: campaigns
path: /sobjects/Campaign/{{campaign_id}}
inputParameters:
- name: campaign_id
in: path
operations:
- name: update-campaign
method: PATCH
Assesses ingredient safety by pulling INCI data from SharePoint, checking regulatory status in Snowflake, and creating a Jira review ticket for the toxicology team.
naftiko: '0.5'
info:
label: Ingredient Safety Assessment Workflow
description: Assesses ingredient safety by pulling INCI data from SharePoint, checking regulatory status in Snowflake, and creating a Jira review ticket for the toxicology team.
tags:
- r-and-d
- quality
- regulatory
- sharepoint
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: ingredient-safety
port: 8080
tools:
- name: assess-ingredient-safety
description: Conduct an ingredient safety assessment by gathering INCI data, checking regulatory status, and routing for toxicology review.
inputParameters:
- name: ingredient_name
type: string
description: INCI ingredient name.
- name: concentration_pct
type: number
description: Proposed concentration percentage.
steps:
- name: get-inci-docs
type: call
call: sharepoint.search-docs
with:
query: '{{ingredient_name}} safety INCI'
site: rd-safety
- name: check-regulatory
type: call
call: snowflake.execute-query
with:
warehouse: REGULATORY_WH
query: SELECT status, max_concentration, restricted_markets FROM ingredient_regulatory WHERE inci_name='{{ingredient_name}}'
- name: create-review
type: call
call: jira.create-issue
with:
project_key: SAFETY
issuetype: Task
summary: 'Ingredient safety review: {{ingredient_name}} at {{concentration_pct}}%'
description: 'Regulatory status: {{check-regulatory.status}}. Max allowed: {{check-regulatory.max_concentration}}%. Documents found: {{get-inci-docs.count}}.'
consumes:
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: search
path: /sites/rd-safety/drive/root/search
operations:
- name: search-docs
method: GET
- type: http
namespace: snowflake
baseUri: https://loreal.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: jira
baseUri: https://loreal.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Assesses supply chain risk by analyzing supplier concentration in Snowflake, checking SAP Ariba supplier status, and posting risk alerts to Teams.
naftiko: '0.5'
info:
label: Supply Chain Risk Assessment Workflow
description: Assesses supply chain risk by analyzing supplier concentration in Snowflake, checking SAP Ariba supplier status, and posting risk alerts to Teams.
tags:
- supply-chain
- procurement
- snowflake
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: supply-risk
port: 8080
tools:
- name: assess-supply-chain-risk
description: Assess supply chain risk by analyzing supplier concentration and geopolitical exposure.
inputParameters:
- name: material_group
type: string
description: SAP material group to assess.
steps:
- name: get-concentration
type: call
call: snowflake.execute-query
with:
warehouse: SUPPLY_CHAIN_WH
query: SELECT supplier_id, spend_share_pct, country, risk_score FROM supplier_concentration WHERE material_group='{{material_group}}' ORDER BY spend_share_pct DESC
- name: get-supplier-status
type: call
call: ariba.get-supplier-risk
with:
material_group: '{{material_group}}'
- name: post-alert
type: call
call: msteams.send-message
with:
channel_id: supply-chain-risk
text: 'Supply chain risk for {{material_group}}: Top supplier share {{get-concentration.top_share}}%. High-risk suppliers: {{get-supplier-status.high_risk_count}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://loreal.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: ariba
baseUri: https://openapi.ariba.com/api/supplier-management/v1
authentication:
type: bearer
token: $secrets.ariba_token
resources:
- name: risk
path: /suppliers/risk
operations:
- name: get-supplier-risk
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/channels/messages
operations:
- name: send-message
method: POST
Processes credit memos by validating the original invoice in SAP, creating the credit memo, and updating the Salesforce account with the credit balance.
naftiko: '0.5'
info:
label: SAP Credit Memo Processing Workflow
description: Processes credit memos by validating the original invoice in SAP, creating the credit memo, and updating the Salesforce account with the credit balance.
tags:
- finance
- sales
- sap
- salesforce
capability:
exposes:
- type: mcp
namespace: finance-ar
port: 8080
tools:
- name: process-credit-memo
description: Process a credit memo by validating the original invoice, creating the credit document, and updating the customer account.
inputParameters:
- name: invoice_number
type: string
description: Original SAP invoice number.
- name: credit_amount
type: number
description: Credit amount to issue.
- name: reason
type: string
description: Reason for credit memo.
steps:
- name: validate-invoice
type: call
call: sap.get-invoice
with:
invoice_number: '{{invoice_number}}'
- name: create-credit-memo
type: call
call: sap.create-credit-memo
with:
reference_invoice: '{{invoice_number}}'
amount: '{{credit_amount}}'
reason: '{{reason}}'
- name: update-sf-account
type: call
call: salesforce.update-account
with:
account_id: '{{validate-invoice.customer_id}}'
Credit_Balance__c: '{{credit_amount}}'
Last_Credit_Memo__c: '{{create-credit-memo.document_number}}'
consumes:
- type: http
namespace: sap
baseUri: https://loreal-s4.sap.com/sap/opu/odata/sap/API_BILLING_DOCUMENT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: billing
path: /A_BillingDocument
operations:
- name: get-invoice
method: GET
- name: create-credit-memo
method: POST
- type: http
namespace: salesforce
baseUri: https://loreal.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
Reviews the R&D patent portfolio by querying SharePoint for patent documents, pulling innovation metrics from Snowflake, and creating a review summary in Jira.
naftiko: '0.5'
info:
label: R&D Patent Portfolio Review
description: Reviews the R&D patent portfolio by querying SharePoint for patent documents, pulling innovation metrics from Snowflake, and creating a review summary in Jira.
tags:
- r-and-d
- innovation
- sharepoint
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: rd-innovation
port: 8080
tools:
- name: review-patent-portfolio
description: Review the patent portfolio by pulling documents, analyzing metrics, and creating a summary task.
inputParameters:
- name: technology_area
type: string
description: Technology area for patent review.
- name: review_year
type: string
description: Year for the review.
steps:
- name: get-patents
type: call
call: sharepoint.search-docs
with:
query: patent {{technology_area}} {{review_year}}
site: rd-innovation
- name: get-metrics
type: call
call: snowflake.execute-query
with:
warehouse: RD_ANALYTICS_WH
query: SELECT patent_count, pending_count, granted_count FROM patent_metrics WHERE tech_area='{{technology_area}}' AND year='{{review_year}}'
- name: create-review
type: call
call: jira.create-issue
with:
project_key: RND
issuetype: Task
summary: 'Patent portfolio review: {{technology_area}} ({{review_year}})'
description: 'Total patents: {{get-metrics.patent_count}}. Pending: {{get-metrics.pending_count}}. Granted: {{get-metrics.granted_count}}. Documents found: {{get-patents.count}}.'
consumes:
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: search
path: /sites/rd-innovation/drive/root/search
operations:
- name: search-docs
method: GET
- type: http
namespace: snowflake
baseUri: https://loreal.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: jira
baseUri: https://loreal.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
Pulls YouTube channel analytics, compares with campaign targets in Salesforce, and posts a performance digest to the marketing Teams channel.
naftiko: '0.5'
info:
label: YouTube Brand Channel Performance Digest
description: Pulls YouTube channel analytics, compares with campaign targets in Salesforce, and posts a performance digest to the marketing Teams channel.
tags:
- marketing
- social
- youtube
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: video-analytics
port: 8080
tools:
- name: generate-youtube-digest
description: Generate a YouTube brand channel performance digest by combining analytics with campaign targets.
inputParameters:
- name: channel_id
type: string
description: YouTube channel ID.
- name: campaign_id
type: string
description: Salesforce campaign ID.
steps:
- name: get-channel-stats
type: call
call: youtube.get-channel-analytics
with:
channel_id: '{{channel_id}}'
- name: get-campaign-targets
type: call
call: salesforce.get-campaign
with:
campaign_id: '{{campaign_id}}'
- name: post-digest
type: call
call: msteams.send-message
with:
channel_id: marketing-digital
text: 'YouTube digest: Views {{get-channel-stats.views}}, Subs {{get-channel-stats.subscribers}}. Target views: {{get-campaign-targets.video_target}}.'
consumes:
- type: http
namespace: youtube
baseUri: https://www.googleapis.com/youtube/v3
authentication:
type: bearer
token: $secrets.google_youtube_token
resources:
- name: analytics
path: /channels
operations:
- name: get-channel-analytics
method: GET
- type: http
namespace: salesforce
baseUri: https://loreal.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: campaigns
path: /sobjects/Campaign/{{campaign_id}}
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-campaign
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/channels/messages
operations:
- name: send-message
method: POST
When an access request is approved in ServiceNow, provisions the requested Okta group membership and confirms via Teams.
naftiko: '0.5'
info:
label: Okta Access Request Provisioning
description: When an access request is approved in ServiceNow, provisions the requested Okta group membership and confirms via Teams.
tags:
- identity
- security
- okta
- servicenow
- access-management
capability:
exposes:
- type: mcp
namespace: identity-ops
port: 8080
tools:
- name: provision-access
description: Given an approved ServiceNow access request ticket, assign the user to the corresponding Okta group and update the ticket status to resolved. Use for access provisioning automation.
inputParameters:
- name: snow_ticket_id
type: string
description: ServiceNow request ticket sys_id.
- name: user_email
type: string
description: User email address to provision access for.
- name: okta_group_id
type: string
description: Okta group ID to assign the user to.
steps:
- name: add-to-group
type: call
call: okta.add-user-to-group
with:
groupId: '{{okta_group_id}}'
userId: '{{user_email}}'
- name: resolve-ticket
type: call
call: servicenow.update-request
with:
sys_id: '{{snow_ticket_id}}'
state: '3'
close_notes: Access provisioned to Okta group {{okta_group_id}}
- name: notify-user
type: call
call: msteams.send-message
with:
recipient_upn: '{{user_email}}'
text: 'Your access request has been fulfilled. You now have access to the requested resources (Okta group: {{okta_group_id}}).'
consumes:
- type: http
namespace: okta
baseUri: https://loreal.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: group-members
path: /groups/{{groupId}}/users/{{userId}}
inputParameters:
- name: groupId
in: path
- name: userId
in: path
operations:
- name: add-user-to-group
method: PUT
- type: http
namespace: servicenow
baseUri: https://loreal.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: requests
path: /table/sc_request/{{sys_id}}
inputParameters:
- name: sys_id
in: path
operations:
- name: update-request
method: PATCH
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: chats
path: /chats
operations:
- name: send-message
method: POST
Processes a salon professional order by creating a Salesforce order, triggering SAP sales order creation, and sending an order confirmation via email through Microsoft Graph.
naftiko: '0.5'
info:
label: Salon Professional Order Processing
description: Processes a salon professional order by creating a Salesforce order, triggering SAP sales order creation, and sending an order confirmation via email through Microsoft Graph.
tags:
- sales
- supply-chain
- salesforce
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: salon-sales
port: 8080
tools:
- name: process-salon-order
description: Process a salon professional order by creating CRM and ERP records and sending confirmation.
inputParameters:
- name: salon_account_id
type: string
description: Salesforce salon account ID.
- name: product_list
type: string
description: JSON array of products and quantities.
steps:
- name: create-sf-order
type: call
call: salesforce.create-order
with:
AccountId: '{{salon_account_id}}'
Status: Draft
products: '{{product_list}}'
- name: create-sap-order
type: call
call: sap.create-sales-order
with:
customer: '{{salon_account_id}}'
items: '{{product_list}}'
sf_reference: '{{create-sf-order.id}}'
- name: send-confirmation
type: call
call: msgraph.send-mail
with:
to: '{{create-sf-order.contact_email}}'
subject: 'Order confirmation: {{create-sf-order.OrderNumber}}'
body: 'Your order {{create-sf-order.OrderNumber}} has been placed. SAP reference: {{create-sap-order.order_number}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://loreal.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: orders
path: /sobjects/Order
operations:
- name: create-order
method: POST
- type: http
namespace: sap
baseUri: https://loreal-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: 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
Personalizes luxury gifts by pulling client preferences from Salesforce, recommending products from the catalog, creating gift packages, and sending confirmations via WhatsApp.
naftiko: '0.5'
info:
label: Luxury Gifting Personalization Pipeline
description: Personalizes luxury gifts by pulling client preferences from Salesforce, recommending products from the catalog, creating gift packages, and sending confirmations via WhatsApp.
tags:
- gifting
- personalization
- salesforce
- whatsapp
capability:
exposes:
- type: mcp
namespace: luxury-ops
port: 8080
tools:
- name: luxury-gifting-personalization
description: Personalizes luxury gifts.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Luxury Gifting Personalization Pipeline complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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 luxury after-sales service tickets from Zendesk including repair status and estimated completion.
naftiko: '0.5'
info:
label: Zendesk Luxury Service Ticket
description: Retrieves luxury after-sales service tickets from Zendesk including repair status and estimated completion.
tags:
- after-sales
- zendesk
capability:
exposes:
- type: mcp
namespace: after-sales
port: 8080
tools:
- name: zendesk_luxury_service_ticket
description: Retrieves luxury after-sales service tickets from Zendesk including repair status and estimated completion..
inputParameters:
- name: record_id
in: body
type: string
description: The record identifier.
call: zendesk.get-record
with:
record_id: '{{record_id}}'
outputParameters:
- name: data
type: object
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: zendesk
baseUri: https://lvmh-zendesk.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.zendesk_token
resources:
- name: records
path: /records/{{record_id}}
inputParameters:
- name: record_id
in: path
operations:
- name: get-record
method: GET
Retrieves atelier artisan workforce data from Workday including skill certifications and capacity.
naftiko: '0.5'
info:
label: Workday Atelier Workforce Lookup
description: Retrieves atelier artisan workforce data from Workday including skill certifications and capacity.
tags:
- workforce
- workday
capability:
exposes:
- type: mcp
namespace: workforce
port: 8080
tools:
- name: workday_atelier_workforce_lookup
description: Retrieves atelier artisan workforce data from Workday including skill certifications and capacity..
inputParameters:
- name: record_id
in: body
type: string
description: The record identifier.
call: workday.get-record
with:
record_id: '{{record_id}}'
outputParameters:
- name: data
type: object
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: workday
baseUri: https://lvmh-workday.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: records
path: /records/{{record_id}}
inputParameters:
- name: record_id
in: path
operations:
- name: get-record
method: GET
Fetches a digital asset entry from Contentful CMS by entry ID, returning asset URL, title, description, and associated Maison tag.
naftiko: '0.5'
info:
label: Contentful Asset Retrieval
description: Fetches a digital asset entry from Contentful CMS by entry ID, returning asset URL, title, description, and associated Maison tag.
tags:
- content-management
- digital-asset
- contentful
capability:
exposes:
- type: mcp
namespace: cms
port: 8080
tools:
- name: get-asset
description: Retrieve a Contentful CMS asset by entry ID. Returns asset URL, title, description, and Maison tag.
inputParameters:
- name: entry_id
in: body
type: string
description: The Contentful entry ID.
call: contentful.get-entry
with:
entry_id: '{{entry_id}}'
outputParameters:
- name: title
type: string
mapping: $.fields.title
- name: asset_url
type: string
mapping: $.fields.file.url
- name: maison
type: string
mapping: $.fields.maisonTag
consumes:
- type: http
namespace: contentful
baseUri: https://cdn.contentful.com/spaces/lvmh_space_id
authentication:
type: bearer
token: $secrets.contentful_token
resources:
- name: entries
path: /entries/{{entry_id}}
inputParameters:
- name: entry_id
in: path
operations:
- name: get-entry
method: GET
Reviews luxury packaging designs by collecting submissions from the DAM, routing for approval in Jira, tracking feedback in Confluence, and notifying the creative team.
naftiko: '0.5'
info:
label: Luxury Packaging Design Review Pipeline
description: Reviews luxury packaging designs by collecting submissions from the DAM, routing for approval in Jira, tracking feedback in Confluence, and notifying the creative team.
tags:
- packaging
- design
- jira
- confluence
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: luxury-ops
port: 8080
tools:
- name: luxury-packaging-design-review
description: Reviews luxury packaging designs.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Luxury Packaging Design Review Pipeline complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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
Consolidates financial data across LVMH maisons by extracting from SAP, harmonizing in Snowflake, generating consolidated reports in Power BI, and distributing to CFO office.
naftiko: '0.5'
info:
label: Maison Financial Consolidation Pipeline
description: Consolidates financial data across LVMH maisons by extracting from SAP, harmonizing in Snowflake, generating consolidated reports in Power BI, and distributing to CFO office.
tags:
- finance
- consolidation
- sap
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: maison-ops
port: 8080
tools:
- name: maison-financial-consolidation
description: Consolidates financial data across LVMH maisons.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Maison Financial Consolidation Pipeline complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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 Stripe payment intent by ID to check payment status, amount, and currency for LVMH e-commerce transactions.
naftiko: '0.5'
info:
label: Stripe Payment Intent Lookup
description: Retrieves a Stripe payment intent by ID to check payment status, amount, and currency for LVMH e-commerce transactions.
tags:
- payments
- e-commerce
- stripe
capability:
exposes:
- type: mcp
namespace: payments
port: 8080
tools:
- name: get-payment-intent
description: Retrieve a Stripe payment intent by ID. Returns status, amount, currency, and payment method.
inputParameters:
- name: payment_intent_id
in: body
type: string
description: The Stripe payment intent ID (pi_xxx).
call: stripe.get-payment-intent
with:
pi_id: '{{payment_intent_id}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: amount
type: string
mapping: $.amount
- name: currency
type: string
mapping: $.currency
consumes:
- type: http
namespace: stripe
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: payment-intents
path: /payment_intents/{{pi_id}}
inputParameters:
- name: pi_id
in: path
operations:
- name: get-payment-intent
method: GET
Launches a multi-channel marketing campaign by creating a Klaviyo campaign, publishing Contentful content, and tracking the campaign in Google Analytics.
naftiko: '0.5'
info:
label: Brand Campaign Launch Orchestrator
description: Launches a multi-channel marketing campaign by creating a Klaviyo campaign, publishing Contentful content, and tracking the campaign in Google Analytics.
tags:
- marketing
- brand-management
- klaviyo
- contentful
- google-analytics
capability:
exposes:
- type: mcp
namespace: campaign-launch
port: 8080
tools:
- name: launch-campaign
description: Given a campaign name, content entry ID, and email list ID, publish CMS content, create Klaviyo campaign, and register GA tracking.
inputParameters:
- name: campaign_name
in: body
type: string
description: The name of the marketing campaign.
- name: content_entry_id
in: body
type: string
description: The Contentful entry ID for campaign content.
- name: email_list_id
in: body
type: string
description: The Klaviyo list ID for target audience.
- name: maison
in: body
type: string
description: The Maison brand (e.g., Louis Vuitton, Dior, Fendi).
steps:
- name: get-content
type: call
call: contentful.get-entry
with:
entry_id: '{{content_entry_id}}'
- name: publish-content
type: call
call: contentful.publish-entry
with:
entry_id: '{{content_entry_id}}'
- name: create-email-campaign
type: call
call: klaviyo.create-campaign
with:
name: '{{campaign_name}} — {{maison}}'
list_id: '{{email_list_id}}'
subject: '{{get-content.fields.emailSubject}}'
template_html: '{{get-content.fields.emailBody}}'
consumes:
- type: http
namespace: contentful
baseUri: https://api.contentful.com/spaces/lvmh_space_id/environments/master
authentication:
type: bearer
token: $secrets.contentful_mgmt_token
resources:
- name: entries
path: /entries/{{entry_id}}
inputParameters:
- name: entry_id
in: path
operations:
- name: get-entry
method: GET
- name: publish-entry
method: PUT
- type: http
namespace: klaviyo
baseUri: https://a.klaviyo.com/api
authentication:
type: bearer
token: $secrets.klaviyo_api_key
resources:
- name: campaigns
path: /campaigns
operations:
- name: create-campaign
method: POST
Syncs boutique associate schedules from Workday to Microsoft Teams shifts, creating shift entries and sending confirmation notifications to each associate.
naftiko: '0.5'
info:
label: Store Associate Scheduling Sync
description: Syncs boutique associate schedules from Workday to Microsoft Teams shifts, creating shift entries and sending confirmation notifications to each associate.
tags:
- retail
- hr
- scheduling
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: scheduling
port: 8080
tools:
- name: sync-boutique-schedule
description: Given a Workday location ID and schedule date, pull associate shifts from Workday and create corresponding Teams shift entries.
inputParameters:
- name: location_id
in: body
type: string
description: The Workday location ID for the boutique.
- name: schedule_date
in: body
type: string
description: The schedule date in YYYY-MM-DD format.
steps:
- name: get-shifts
type: call
call: workday.get-schedules
with:
location: '{{location_id}}'
date: '{{schedule_date}}'
- name: create-teams-shifts
type: call
call: msteams.create-shift
with:
teamId: boutique_{{location_id}}
startDateTime: '{{get-shifts.shifts[0].start_time}}'
endDateTime: '{{get-shifts.shifts[0].end_time}}'
userId: '{{get-shifts.shifts[0].worker_upn}}'
- name: notify-associates
type: call
call: msteams.send-message
with:
recipient_upn: '{{get-shifts.shifts[0].worker_upn}}'
text: 'Your shift on {{schedule_date}} is confirmed: {{get-shifts.shifts[0].start_time}} to {{get-shifts.shifts[0].end_time}}.'
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: schedules
path: /schedules?location={{location}}&date={{date}}
inputParameters:
- name: location
in: query
- name: date
in: query
operations:
- name: get-schedules
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: shifts
path: /teams/{{teamId}}/schedule/shifts
inputParameters:
- name: teamId
in: path
operations:
- name: create-shift
method: POST
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Retrieves VIP client profile details from Salesforce including purchase history and brand preferences.
naftiko: '0.5'
info:
label: Salesforce VIP Client Lookup
description: Retrieves VIP client profile details from Salesforce including purchase history and brand preferences.
tags:
- clienteling
- salesforce
capability:
exposes:
- type: mcp
namespace: clienteling
port: 8080
tools:
- name: salesforce_vip_client_lookup
description: Retrieves VIP client profile details from Salesforce including purchase history and brand preferences..
inputParameters:
- name: record_id
in: body
type: string
description: The record identifier.
call: salesforce.get-record
with:
record_id: '{{record_id}}'
outputParameters:
- name: data
type: object
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: salesforce
baseUri: https://lvmh-salesforce.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: records
path: /records/{{record_id}}
inputParameters:
- name: record_id
in: path
operations:
- name: get-record
method: GET
Generates a transformed image URL from Cloudinary for a given public ID, applying brand-standard transformations for luxury product imagery.
naftiko: '0.5'
info:
label: Cloudinary Image URL Generator
description: Generates a transformed image URL from Cloudinary for a given public ID, applying brand-standard transformations for luxury product imagery.
tags:
- digital-asset
- media
- cloudinary
capability:
exposes:
- type: mcp
namespace: media
port: 8080
tools:
- name: get-image-url
description: Generate a Cloudinary image URL with luxury-standard transformations for a given public ID.
inputParameters:
- name: public_id
in: body
type: string
description: The Cloudinary public ID of the image.
call: cloudinary.get-resource
with:
public_id: '{{public_id}}'
outputParameters:
- name: secure_url
type: string
mapping: $.secure_url
- name: format
type: string
mapping: $.format
consumes:
- type: http
namespace: cloudinary
baseUri: https://api.cloudinary.com/v1_1/lvmh
authentication:
type: basic
username: $secrets.cloudinary_api_key
password: $secrets.cloudinary_api_secret
resources:
- name: resources
path: /resources/image/upload/{{public_id}}
inputParameters:
- name: public_id
in: path
operations:
- name: get-resource
method: GET
Executes a product search query against the Algolia index, returning matching products with facets for brand, category, and price range.
naftiko: '0.5'
info:
label: Algolia Search Query
description: Executes a product search query against the Algolia index, returning matching products with facets for brand, category, and price range.
tags:
- e-commerce
- search
- algolia
capability:
exposes:
- type: mcp
namespace: search
port: 8080
tools:
- name: search-products
description: Execute a product search query on Algolia. Returns matching products with brand, category, and price facets.
inputParameters:
- name: query
in: body
type: string
description: The search query string.
- name: brand_filter
in: body
type: string
description: Optional brand facet filter (e.g., Louis Vuitton, Dior).
call: algolia.search
with:
query: '{{query}}'
facetFilters: brand:{{brand_filter}}
consumes:
- type: http
namespace: algolia
baseUri: https://lvmh-app.algolia.net/1/indexes/products
authentication:
type: bearer
token: $secrets.algolia_api_key
inputParameters:
- name: X-Algolia-Application-Id
in: header
value: $secrets.algolia_app_id
resources:
- name: search
path: /query
operations:
- name: search
method: POST
Launches luxury e-commerce experiences by syncing product catalog from SAP, configuring Shopify storefront, loading content from the DAM, and notifying digital teams.
naftiko: '0.5'
info:
label: Luxury E-Commerce Launch Orchestrator
description: Launches luxury e-commerce experiences by syncing product catalog from SAP, configuring Shopify storefront, loading content from the DAM, and notifying digital teams.
tags:
- e-commerce
- launch
- sap
- shopify
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: luxury-ops
port: 8080
tools:
- name: luxury-e-commerce-launch
description: Launches luxury e-commerce experiences.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Luxury E-Commerce Launch Orchestrator complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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
Manages artisan training programs by pulling competency data from Workday, assigning courses in the LMS, tracking completion, and reporting to atelier directors.
naftiko: '0.5'
info:
label: Atelier Artisan Training Pipeline
description: Manages artisan training programs by pulling competency data from Workday, assigning courses in the LMS, tracking completion, and reporting to atelier directors.
tags:
- training
- artisans
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: atelier-ops
port: 8080
tools:
- name: atelier-artisan-training
description: Manages artisan training programs.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Atelier Artisan Training Pipeline complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Processes a return request by validating the order in SFCC, initiating a Stripe refund, updating the Salesforce case, and notifying the client via Zendesk.
naftiko: '0.5'
info:
label: Return and Exchange Processor
description: Processes a return request by validating the order in SFCC, initiating a Stripe refund, updating the Salesforce case, and notifying the client via Zendesk.
tags:
- e-commerce
- returns
- salesforce-commerce-cloud
- stripe
- salesforce
- zendesk
capability:
exposes:
- type: mcp
namespace: returns
port: 8080
tools:
- name: process-return
description: Given an order ID, payment intent ID, and client ID, validate the order, issue a refund, update the CRM case, and notify the client.
inputParameters:
- name: order_id
in: body
type: string
description: The SFCC order ID.
- name: payment_intent_id
in: body
type: string
description: The Stripe payment intent ID.
- name: client_id
in: body
type: string
description: The Salesforce contact ID.
- name: reason
in: body
type: string
description: The return reason.
steps:
- name: get-order
type: call
call: sfcc.get-order
with:
order_no: '{{order_id}}'
- name: issue-refund
type: call
call: stripe.create-refund
with:
payment_intent: '{{payment_intent_id}}'
reason: '{{reason}}'
- name: update-crm
type: call
call: salesforce.create-case
with:
ContactId: '{{client_id}}'
Subject: 'Return processed: Order {{order_id}}'
Description: 'Refund {{issue-refund.id}} issued for {{get-order.order_total}}. Reason: {{reason}}.'
Status: Closed
- name: notify-client
type: call
call: zendesk.create-ticket
with:
requester_email: '{{get-order.customer_info.email}}'
subject: Your return for order {{order_id}} has been processed
body: 'Your refund of {{get-order.order_total}} has been initiated. Refund reference: {{issue-refund.id}}. Please allow 5-10 business days.'
consumes:
- type: http
namespace: sfcc
baseUri: https://lvmh.demandware.net/s/-/dw/data/v21_10
authentication:
type: bearer
token: $secrets.sfcc_token
resources:
- name: orders
path: /orders/{{order_no}}
inputParameters:
- name: order_no
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: stripe
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: refunds
path: /refunds
operations:
- name: create-refund
method: POST
- type: http
namespace: salesforce
baseUri: https://lvmh.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: zendesk
baseUri: https://lvmh.zendesk.com/api/v2
authentication:
type: bearer
token: $secrets.zendesk_token
resources:
- name: tickets
path: /tickets.json
operations:
- name: create-ticket
method: POST
Retrieves a subscriber profile from Klaviyo by email address, returning subscription status, lists, and engagement metrics for email marketing.
naftiko: '0.5'
info:
label: Klaviyo Subscriber Profile
description: Retrieves a subscriber profile from Klaviyo by email address, returning subscription status, lists, and engagement metrics for email marketing.
tags:
- marketing
- email
- klaviyo
capability:
exposes:
- type: mcp
namespace: email-marketing
port: 8080
tools:
- name: get-subscriber
description: Look up a Klaviyo subscriber profile by email. Returns subscription status, list memberships, and open/click rates.
inputParameters:
- name: email
in: body
type: string
description: The subscriber email address.
call: klaviyo.get-profile
with:
email: '{{email}}'
consumes:
- type: http
namespace: klaviyo
baseUri: https://a.klaviyo.com/api
authentication:
type: bearer
token: $secrets.klaviyo_api_key
inputParameters:
- name: revision
in: header
value: '2024-02-15'
resources:
- name: profiles
path: /profiles/?filter=equals(email,'{{email}}')
inputParameters:
- name: email
in: query
operations:
- name: get-profile
method: GET
Orchestrates haute couture collection launches by syncing designs from the PLM system, creating production orders in SAP, scheduling ateliers, and coordinating press via Teams.
naftiko: '0.5'
info:
label: Haute Couture Collection Launch Orchestrator
description: Orchestrates haute couture collection launches by syncing designs from the PLM system, creating production orders in SAP, scheduling ateliers, and coordinating press via Teams.
tags:
- fashion
- collection-launch
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: haute-ops
port: 8080
tools:
- name: haute-couture-collection-launch
description: Orchestrates haute couture collection launches.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Haute Couture Collection Launch Orchestrator complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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 point-of-sale transaction from Shopify POS by transaction ID, returning payment details, line items, and store location.
naftiko: '0.5'
info:
label: Shopify POS Transaction Lookup
description: Retrieves a point-of-sale transaction from Shopify POS by transaction ID, returning payment details, line items, and store location.
tags:
- retail
- pos
- shopify
capability:
exposes:
- type: mcp
namespace: pos
port: 8080
tools:
- name: get-pos-transaction
description: Retrieve a Shopify POS transaction by ID. Returns payment method, line items, store location, and associate.
inputParameters:
- name: transaction_id
in: body
type: string
description: The Shopify POS transaction ID.
call: shopify.get-order
with:
order_id: '{{transaction_id}}'
outputParameters:
- name: total_price
type: string
mapping: $.order.total_price
- name: payment_method
type: string
mapping: $.order.payment_gateway_names[0]
- name: location
type: string
mapping: $.order.location_id
consumes:
- type: http
namespace: shopify
baseUri: https://lvmh-retail.myshopify.com/admin/api/2024-01
authentication:
type: bearer
token: $secrets.shopify_token
resources:
- name: orders
path: /orders/{{order_id}}.json
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
Processes a luxury item repair request by creating a Salesforce case, logging the item details from SAP serial lookup, and scheduling a courier pickup via ShipStation.
naftiko: '0.5'
info:
label: Luxury Repair Service Intake
description: Processes a luxury item repair request by creating a Salesforce case, logging the item details from SAP serial lookup, and scheduling a courier pickup via ShipStation.
tags:
- after-sales
- repair
- salesforce
- sap-s4hana
- shipstation
capability:
exposes:
- type: mcp
namespace: repair-intake
port: 8080
tools:
- name: intake-repair-request
description: Given a client ID, serial number, and defect description, create a CRM case, validate the item, and schedule courier pickup.
inputParameters:
- name: client_id
in: body
type: string
description: The Salesforce contact ID.
- name: serial_number
in: body
type: string
description: The product serial number.
- name: defect_description
in: body
type: string
description: Description of the repair needed.
- name: pickup_address
in: body
type: string
description: The client pickup address.
steps:
- name: get-client
type: call
call: salesforce.get-contact
with:
contact_id: '{{client_id}}'
- name: get-item
type: call
call: sap.get-serial
with:
serial: '{{serial_number}}'
- name: create-repair-case
type: call
call: salesforce.create-case
with:
ContactId: '{{client_id}}'
Subject: 'Repair request: {{get-item.material_description}} — SN {{serial_number}}'
Description: '{{defect_description}}. Product: {{get-item.material_description}}. Manufactured: {{get-item.production_date}}.'
Type: Repair
- name: schedule-pickup
type: call
call: shipstation.create-order
with:
orderNumber: REPAIR-{{create-repair-case.id}}
shipTo_name: LVMH Repair Center
shipFrom_name: '{{get-client.Name}}'
shipFrom_address: '{{pickup_address}}'
serviceCode: courier_pickup
consumes:
- type: http
namespace: salesforce
baseUri: https://lvmh.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: contacts
path: /sobjects/Contact/{{contact_id}}
inputParameters:
- name: contact_id
in: path
operations:
- name: get-contact
method: GET
- name: cases
path: /sobjects/Case
operations:
- name: create-case
method: POST
- type: http
namespace: sap
baseUri: https://lvmh-s4.sap.com/sap/opu/odata/sap/API_SERIALNUMBER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
inputParameters:
- name: Accept
in: header
value: application/json
resources:
- name: serials
path: /A_SerialNumber('{{serial}}')
inputParameters:
- name: serial
in: path
operations:
- name: get-serial
method: GET
- type: http
namespace: shipstation
baseUri: https://ssapi.shipstation.com
authentication:
type: basic
username: $secrets.shipstation_key
password: $secrets.shipstation_secret
resources:
- name: orders
path: /orders/createorder
operations:
- name: create-order
method: POST
For international shipments, retrieves product details from SAP, generates customs documentation metadata, and attaches documents to the ShipStation shipment record.
naftiko: '0.5'
info:
label: Cross-Border Customs Documentation Generator
description: For international shipments, retrieves product details from SAP, generates customs documentation metadata, and attaches documents to the ShipStation shipment record.
tags:
- logistics
- customs
- sap-s4hana
- shipstation
capability:
exposes:
- type: mcp
namespace: customs
port: 8080
tools:
- name: generate-customs-docs
description: Given a shipment order number and destination country, retrieve material data from SAP and update ShipStation with customs information.
inputParameters:
- name: order_number
in: body
type: string
description: The ShipStation order number.
- name: material_number
in: body
type: string
description: The SAP material number.
- name: destination_country
in: body
type: string
description: The destination country ISO code.
- name: declared_value
in: body
type: number
description: The declared customs value.
steps:
- name: get-material-details
type: call
call: sap.get-material
with:
material: '{{material_number}}'
- name: update-shipment-customs
type: call
call: shipstation.update-order
with:
order_number: '{{order_number}}'
customs_country: '{{destination_country}}'
customs_value: '{{declared_value}}'
hs_tariff_number: '{{get-material-details.hs_code}}'
description: '{{get-material-details.description}}'
consumes:
- type: http
namespace: sap
baseUri: https://lvmh-s4.sap.com/sap/opu/odata/sap/API_PRODUCT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
inputParameters:
- name: Accept
in: header
value: application/json
resources:
- name: materials
path: /A_Product('{{material}}')
inputParameters:
- name: material
in: path
operations:
- name: get-material
method: GET
- type: http
namespace: shipstation
baseUri: https://ssapi.shipstation.com
authentication:
type: basic
username: $secrets.shipstation_key
password: $secrets.shipstation_secret
resources:
- name: orders
path: /orders/createorder
operations:
- name: update-order
method: POST
When a new seasonal collection is priced, updates product prices in SFCC, syncs to Algolia search index, and triggers a price-change notification to regional merchandising via Microsoft Teams.
naftiko: '0.5'
info:
label: Seasonal Collection Pricing Sync
description: When a new seasonal collection is priced, updates product prices in SFCC, syncs to Algolia search index, and triggers a price-change notification to regional merchandising via Microsoft Teams.
tags:
- merchandising
- pricing
- salesforce-commerce-cloud
- algolia
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: pricing
port: 8080
tools:
- name: sync-collection-pricing
description: Given a product SKU, new price, currency, and merchandising channel, update SFCC, Algolia, and notify the regional team.
inputParameters:
- name: sku
in: body
type: string
description: The product SKU.
- name: new_price
in: body
type: number
description: The new retail price.
- name: currency
in: body
type: string
description: The currency code (EUR, USD, GBP, etc.).
- name: region_channel_upn
in: body
type: string
description: The Teams UPN of the regional merchandising lead.
steps:
- name: update-sfcc-price
type: call
call: sfcc.update-product-price
with:
product_id: '{{sku}}'
price: '{{new_price}}'
currency: '{{currency}}'
- name: update-algolia
type: call
call: algolia.partial-update
with:
objectID: '{{sku}}'
price: '{{new_price}}'
currency: '{{currency}}'
- name: notify-merchandising
type: call
call: msteams.send-message
with:
recipient_upn: '{{region_channel_upn}}'
text: 'Price update: SKU {{sku}} now {{currency}} {{new_price}}. SFCC and search index updated.'
consumes:
- type: http
namespace: sfcc
baseUri: https://lvmh.demandware.net/s/-/dw/data/v21_10
authentication:
type: bearer
token: $secrets.sfcc_token
resources:
- name: products
path: /products/{{product_id}}
inputParameters:
- name: product_id
in: path
operations:
- name: update-product-price
method: PATCH
- type: http
namespace: algolia
baseUri: https://lvmh-app.algolia.net/1/indexes/products
authentication:
type: bearer
token: $secrets.algolia_api_key
inputParameters:
- name: X-Algolia-Application-Id
in: header
value: $secrets.algolia_app_id
resources:
- name: objects
path: /{{objectID}}/partial
inputParameters:
- name: objectID
in: path
operations:
- name: partial-update
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 Google Trends API for luxury brand sentiment and search interest data across markets.
naftiko: '0.5'
info:
label: Google Trends Luxury Sentiment
description: Queries Google Trends API for luxury brand sentiment and search interest data across markets.
tags:
- market-intelligence
- google
capability:
exposes:
- type: mcp
namespace: market-intelligence
port: 8080
tools:
- name: google_trends_luxury_sentiment
description: Queries Google Trends API for luxury brand sentiment and search interest data across markets..
inputParameters:
- name: record_id
in: body
type: string
description: The record identifier.
call: google.get-record
with:
record_id: '{{record_id}}'
outputParameters:
- name: data
type: object
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: google
baseUri: https://lvmh-google.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.google_token
resources:
- name: records
path: /records/{{record_id}}
inputParameters:
- name: record_id
in: path
operations:
- name: get-record
method: GET
After a purchase, waits for delivery confirmation from ShipStation, then triggers a Klaviyo post-purchase survey email and creates a Salesforce follow-up task for the sales associate.
naftiko: '0.5'
info:
label: Clienteling After-Sales Follow-Up
description: After a purchase, waits for delivery confirmation from ShipStation, then triggers a Klaviyo post-purchase survey email and creates a Salesforce follow-up task for the sales associate.
tags:
- clienteling
- after-sales
- shipstation
- klaviyo
- salesforce
capability:
exposes:
- type: mcp
namespace: after-sales
port: 8080
tools:
- name: trigger-after-sales-followup
description: Given an order ID and client ID, check delivery status, trigger post-purchase email, and create a CRM follow-up task.
inputParameters:
- name: order_id
in: body
type: string
description: The order ID.
- name: client_id
in: body
type: string
description: The Salesforce contact ID.
- name: associate_id
in: body
type: string
description: The Salesforce user ID of the sales associate.
steps:
- name: get-shipment
type: call
call: shipstation.get-shipment
with:
order_number: '{{order_id}}'
- name: get-client
type: call
call: salesforce.get-contact
with:
contact_id: '{{client_id}}'
- name: send-survey
type: call
call: klaviyo.send-event
with:
email: '{{get-client.Email}}'
event: Post_Purchase_Survey
properties: '{order_id: ''{{order_id}}'', delivery_date: ''{{get-shipment.ship_date}}''}'
- name: create-followup-task
type: call
call: salesforce.create-task
with:
WhoId: '{{client_id}}'
OwnerId: '{{associate_id}}'
Subject: 'Post-purchase follow-up: Order {{order_id}}'
Description: Delivered on {{get-shipment.ship_date}}. Survey sent. Follow up with {{get-client.FirstName}} within 7 days.
ActivityDate: '{{get-shipment.ship_date}}'
consumes:
- type: http
namespace: shipstation
baseUri: https://ssapi.shipstation.com
authentication:
type: basic
username: $secrets.shipstation_key
password: $secrets.shipstation_secret
resources:
- name: shipments
path: /shipments?orderNumber={{order_number}}
inputParameters:
- name: order_number
in: query
operations:
- name: get-shipment
method: GET
- type: http
namespace: salesforce
baseUri: https://lvmh.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: contacts
path: /sobjects/Contact/{{contact_id}}
inputParameters:
- name: contact_id
in: path
operations:
- name: get-contact
method: GET
- name: tasks
path: /sobjects/Task
operations:
- name: create-task
method: POST
- type: http
namespace: klaviyo
baseUri: https://a.klaviyo.com/api
authentication:
type: bearer
token: $secrets.klaviyo_api_key
resources:
- name: events
path: /events
operations:
- name: send-event
method: POST
Enriches client profiles by aggregating purchase history from SAP, social engagement from Instagram, service interactions from Zendesk, and consolidating in Salesforce.
naftiko: '0.5'
info:
label: Luxury Client 360 Enrichment Pipeline
description: Enriches client profiles by aggregating purchase history from SAP, social engagement from Instagram, service interactions from Zendesk, and consolidating in Salesforce.
tags:
- clienteling
- client-360
- sap
- salesforce
- zendesk
capability:
exposes:
- type: mcp
namespace: luxury-ops
port: 8080
tools:
- name: luxury-client-360-enrichment
description: Enriches client profiles.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Luxury Client 360 Enrichment Pipeline complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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
Pulls supplier sustainability metrics from SAP, cross-references with compliance records in ServiceNow, and generates a dashboard update posted to the ESG Slack channel.
naftiko: '0.5'
info:
label: Sustainability Compliance Tracker
description: Pulls supplier sustainability metrics from SAP, cross-references with compliance records in ServiceNow, and generates a dashboard update posted to the ESG Slack channel.
tags:
- sustainability
- compliance
- sap-s4hana
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: sustainability
port: 8080
tools:
- name: track-sustainability-compliance
description: Given a supplier ID, pull sustainability data from SAP, check compliance status in ServiceNow, and post a summary to the ESG channel.
inputParameters:
- name: supplier_id
in: body
type: string
description: The SAP supplier ID.
- name: slack_channel
in: body
type: string
description: The Slack channel for ESG/sustainability reporting.
steps:
- name: get-supplier-data
type: call
call: sap.get-supplier
with:
supplier_id: '{{supplier_id}}'
- name: get-compliance-records
type: call
call: servicenow.get-compliance
with:
supplier_id: '{{supplier_id}}'
- name: post-summary
type: call
call: slack.post-message
with:
channel: '{{slack_channel}}'
text: 'Sustainability Report — Supplier {{get-supplier-data.name}} ({{supplier_id}}): Compliance status: {{get-compliance-records.status}}. Last audit: {{get-compliance-records.last_audit_date}}. Certifications: {{get-supplier-data.certifications}}.'
consumes:
- type: http
namespace: sap
baseUri: https://lvmh-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
inputParameters:
- name: Accept
in: header
value: application/json
resources:
- name: suppliers
path: /A_Supplier('{{supplier_id}}')
inputParameters:
- name: supplier_id
in: path
operations:
- name: get-supplier
method: GET
- type: http
namespace: servicenow
baseUri: https://lvmh.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: compliance
path: /table/u_supplier_compliance?sysparm_query=u_supplier_id={{supplier_id}}
inputParameters:
- name: supplier_id
in: query
operations:
- name: get-compliance
method: GET
- 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 editorial and storytelling content from Contentstack CMS for luxury brand digital experiences.
naftiko: '0.5'
info:
label: Contentstack Editorial Content Lookup
description: Retrieves editorial and storytelling content from Contentstack CMS for luxury brand digital experiences.
tags:
- content
- contentstack
capability:
exposes:
- type: mcp
namespace: content
port: 8080
tools:
- name: contentstack_editorial_content_lookup
description: Retrieves editorial and storytelling content from Contentstack CMS for luxury brand digital experiences..
inputParameters:
- name: record_id
in: body
type: string
description: The record identifier.
call: contentstack.get-record
with:
record_id: '{{record_id}}'
outputParameters:
- name: data
type: object
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: contentstack
baseUri: https://lvmh-contentstack.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.contentstack_token
resources:
- name: records
path: /records/{{record_id}}
inputParameters:
- name: record_id
in: path
operations:
- name: get-record
method: GET
Validates a product serial number against the SAP master data, checks blockchain provenance records, and logs the authentication event in Salesforce for traceability.
naftiko: '0.5'
info:
label: Anti-Counterfeit Product Authentication
description: Validates a product serial number against the SAP master data, checks blockchain provenance records, and logs the authentication event in Salesforce for traceability.
tags:
- brand-protection
- authentication
- sap-s4hana
- salesforce
- supply-chain
capability:
exposes:
- type: mcp
namespace: brand-protection
port: 8080
tools:
- name: authenticate-product
description: Given a product serial number, validate against SAP master data, check provenance, and log the authentication event in Salesforce.
inputParameters:
- name: serial_number
in: body
type: string
description: The product serial number or NFC tag ID.
- name: client_id
in: body
type: string
description: The Salesforce contact ID of the client requesting authentication.
steps:
- name: check-sap-master
type: call
call: sap.get-serial
with:
serial: '{{serial_number}}'
- name: log-authentication
type: call
call: salesforce.create-event
with:
WhoId: '{{client_id}}'
Subject: 'Product Authentication: {{serial_number}}'
Description: 'Serial {{serial_number}} verified. Material: {{check-sap-master.material_number}}. Production date: {{check-sap-master.production_date}}. Origin: {{check-sap-master.plant}}.'
Type: Authentication
consumes:
- type: http
namespace: sap
baseUri: https://lvmh-s4.sap.com/sap/opu/odata/sap/API_SERIALNUMBER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
inputParameters:
- name: Accept
in: header
value: application/json
resources:
- name: serials
path: /A_SerialNumber('{{serial}}')
inputParameters:
- name: serial
in: path
operations:
- name: get-serial
method: GET
- type: http
namespace: salesforce
baseUri: https://lvmh.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: events
path: /sobjects/Event
operations:
- name: create-event
method: POST
Queries SAP S/4HANA for real-time inventory levels of a given material number across LVMH warehouses.
naftiko: '0.5'
info:
label: Inventory Stock Check
description: Queries SAP S/4HANA for real-time inventory levels of a given material number across LVMH warehouses.
tags:
- supply-chain
- inventory
- sap
- sap-s4hana
capability:
exposes:
- type: mcp
namespace: inventory
port: 8080
tools:
- name: check-stock
description: Check real-time inventory levels for a material number across all LVMH distribution centers in SAP S/4HANA.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number.
call: sap.get-material-stock
with:
material: '{{material_number}}'
outputParameters:
- name: total_stock
type: string
mapping: $.d.MatlWrhsStkQtyInMatlBaseUnit
- name: plant
type: string
mapping: $.d.Plant
- name: storage_location
type: string
mapping: $.d.StorageLocation
consumes:
- type: http
namespace: sap
baseUri: https://lvmh-s4.sap.com/sap/opu/odata/sap/API_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_MatlStkInAcctMod(Material='{{material}}')
inputParameters:
- name: material
in: path
operations:
- name: get-material-stock
method: GET
Sources perfume ingredients by checking availability from suppliers in SAP, evaluating quality certificates, placing orders, and tracking shipments.
naftiko: '0.5'
info:
label: Perfume Ingredient Sourcing Orchestrator
description: Sources perfume ingredients by checking availability from suppliers in SAP, evaluating quality certificates, placing orders, and tracking shipments.
tags:
- sourcing
- perfume
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: perfume-ops
port: 8080
tools:
- name: perfume-ingredient-sourcing
description: Sources perfume ingredients.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Perfume Ingredient Sourcing Orchestrator complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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
Manages influencer collaborations by tracking campaigns in HubSpot, measuring reach via Instagram API, calculating ROI in Snowflake, and reporting to marketing directors.
naftiko: '0.5'
info:
label: Influencer Collaboration Orchestrator
description: Manages influencer collaborations by tracking campaigns in HubSpot, measuring reach via Instagram API, calculating ROI in Snowflake, and reporting to marketing directors.
tags:
- marketing
- influencer
- hubspot
- instagram
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: influencer-ops
port: 8080
tools:
- name: influencer-collaboration
description: Manages influencer collaborations.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Influencer Collaboration Orchestrator complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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
Plans watch service center capacity by analyzing repair volumes in ServiceNow, forecasting demand in Snowflake, scheduling technicians in Workday, and reporting to management.
naftiko: '0.5'
info:
label: Watch Service Center Capacity Pipeline
description: Plans watch service center capacity by analyzing repair volumes in ServiceNow, forecasting demand in Snowflake, scheduling technicians in Workday, and reporting to management.
tags:
- watches
- service-capacity
- servicenow
- snowflake
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: watch-ops
port: 8080
tools:
- name: watch-service-center-capacity
description: Plans watch service center capacity.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Watch Service Center Capacity Pipeline complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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
Manages fragrance batch quality by pulling lab test results, comparing against specifications in SAP, releasing or holding batches, and notifying production teams.
naftiko: '0.5'
info:
label: Fragrance Batch Quality Pipeline
description: Manages fragrance batch quality by pulling lab test results, comparing against specifications in SAP, releasing or holding batches, and notifying production teams.
tags:
- fragrance
- quality
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: fragrance-ops
port: 8080
tools:
- name: fragrance-batch-quality
description: Manages fragrance batch quality.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Fragrance Batch Quality Pipeline complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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 Zendesk ticket is escalated, fetches the client profile from Salesforce, retrieves the associated order from SFCC, and sends a resolution notification via Microsoft Teams to the boutique manager.
naftiko: '0.5'
info:
label: Customer Complaint Resolution Pipeline
description: When a Zendesk ticket is escalated, fetches the client profile from Salesforce, retrieves the associated order from SFCC, and sends a resolution notification via Microsoft Teams to the boutique manager.
tags:
- customer-service
- zendesk
- salesforce
- salesforce-commerce-cloud
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: complaint-resolution
port: 8080
tools:
- name: resolve-complaint
description: Given a Zendesk ticket ID and client email, fetch the ticket, client profile, related order, and notify the boutique manager in Teams.
inputParameters:
- name: ticket_id
in: body
type: string
description: The Zendesk ticket ID.
- name: client_email
in: body
type: string
description: The client email address.
- name: boutique_manager_upn
in: body
type: string
description: The Microsoft Teams UPN of the boutique manager.
steps:
- name: get-ticket
type: call
call: zendesk.get-ticket
with:
ticket_id: '{{ticket_id}}'
- name: get-client
type: call
call: salesforce.get-contact-by-email
with:
email: '{{client_email}}'
- name: notify-manager
type: call
call: msteams.send-message
with:
recipient_upn: '{{boutique_manager_upn}}'
text: 'Escalated complaint from {{get-client.Name}} ({{get-client.Loyalty_Tier__c}}). Ticket #{{ticket_id}}: {{get-ticket.ticket.subject}}. Lifetime spend: {{get-client.Lifetime_Spend__c}}. Please review and authorize resolution.'
consumes:
- type: http
namespace: zendesk
baseUri: https://lvmh.zendesk.com/api/v2
authentication:
type: bearer
token: $secrets.zendesk_token
resources:
- name: tickets
path: /tickets/{{ticket_id}}.json
inputParameters:
- name: ticket_id
in: path
operations:
- name: get-ticket
method: GET
- type: http
namespace: salesforce
baseUri: https://lvmh.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: contacts
path: /sobjects/Contact/{{contact_id}}
inputParameters:
- name: contact_id
in: path
operations:
- name: get-contact-by-email
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
Produces fashion shows by coordinating venue logistics, managing guest lists in Salesforce, scheduling rehearsals, and synchronizing with press teams via Teams.
naftiko: '0.5'
info:
label: Fashion Show Production Orchestrator
description: Produces fashion shows by coordinating venue logistics, managing guest lists in Salesforce, scheduling rehearsals, and synchronizing with press teams via Teams.
tags:
- events
- fashion-show
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: fashion-ops
port: 8080
tools:
- name: fashion-show-production
description: Produces fashion shows.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Fashion Show Production Orchestrator complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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 counterfeits by scanning online marketplaces, analyzing listings with AI, creating takedown requests, and reporting to the brand protection team.
naftiko: '0.5'
info:
label: Brand Protection Counterfeit Detection Pipeline
description: Detects counterfeits by scanning online marketplaces, analyzing listings with AI, creating takedown requests, and reporting to the brand protection team.
tags:
- brand-protection
- counterfeit
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: brand-ops
port: 8080
tools:
- name: brand-protection-counterfeit-detection
description: Detects counterfeits.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Brand Protection Counterfeit Detection Pipeline complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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
Facilitates talent mobility across maisons by matching profiles in Workday, coordinating transfers in Salesforce, creating onboarding plans in SharePoint, and notifying HR teams.
naftiko: '0.5'
info:
label: Cross-Maison Talent Mobility Pipeline
description: Facilitates talent mobility across maisons by matching profiles in Workday, coordinating transfers in Salesforce, creating onboarding plans in SharePoint, and notifying HR teams.
tags:
- hr
- talent-mobility
- workday
- salesforce
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: cross-ops
port: 8080
tools:
- name: cross-maison-talent-mobility
description: Facilitates talent mobility across maisons.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Cross-Maison Talent Mobility Pipeline complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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
Aggregates daily revenue data from Shopify POS for boutique sales and SFCC for e-commerce, then posts a consolidated summary to the finance Slack channel.
naftiko: '0.5'
info:
label: Multi-Maison Revenue Consolidation
description: Aggregates daily revenue data from Shopify POS for boutique sales and SFCC for e-commerce, then posts a consolidated summary to the finance Slack channel.
tags:
- finance
- analytics
- shopify
- salesforce-commerce-cloud
- slack
capability:
exposes:
- type: mcp
namespace: revenue-consolidation
port: 8080
tools:
- name: consolidate-daily-revenue
description: Given a date and Maison, pull POS and e-commerce revenue and post a consolidated summary to Slack.
inputParameters:
- name: date
in: body
type: string
description: The date in YYYY-MM-DD format.
- name: maison
in: body
type: string
description: The Maison brand name.
- name: slack_channel
in: body
type: string
description: The Slack channel for finance reporting.
steps:
- name: get-pos-revenue
type: call
call: shopify.get-orders-by-date
with:
created_at_min: '{{date}}T00:00:00Z'
created_at_max: '{{date}}T23:59:59Z'
- name: get-ecommerce-revenue
type: call
call: sfcc.search-orders
with:
created_from: '{{date}}T00:00:00Z'
created_to: '{{date}}T23:59:59Z'
- name: post-summary
type: call
call: slack.post-message
with:
channel: '{{slack_channel}}'
text: 'Daily Revenue — {{maison}} ({{date}}): Boutique POS: {{get-pos-revenue.orders.length}} orders. E-Commerce: {{get-ecommerce-revenue.count}} orders.'
consumes:
- type: http
namespace: shopify
baseUri: https://lvmh-retail.myshopify.com/admin/api/2024-01
authentication:
type: bearer
token: $secrets.shopify_token
resources:
- name: orders
path: /orders.json?created_at_min={{created_at_min}}&created_at_max={{created_at_max}}
inputParameters:
- name: created_at_min
in: query
- name: created_at_max
in: query
operations:
- name: get-orders-by-date
method: GET
- type: http
namespace: sfcc
baseUri: https://lvmh.demandware.net/s/-/dw/data/v21_10
authentication:
type: bearer
token: $secrets.sfcc_token
resources:
- name: order-search
path: /order_search
operations:
- name: search-orders
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 luxury repair lifecycles by creating service orders in Zendesk, tracking parts in SAP, scheduling artisan time in Workday, and updating clients via WhatsApp.
naftiko: '0.5'
info:
label: Luxury Repair Lifecycle Orchestrator
description: Manages luxury repair lifecycles by creating service orders in Zendesk, tracking parts in SAP, scheduling artisan time in Workday, and updating clients via WhatsApp.
tags:
- after-sales
- repair
- zendesk
- sap
- workday
- whatsapp
capability:
exposes:
- type: mcp
namespace: luxury-ops
port: 8080
tools:
- name: luxury-repair-lifecycle
description: Manages luxury repair lifecycles.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Luxury Repair Lifecycle Orchestrator complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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
Optimizes travel retail inventory by analyzing passenger flow data, forecasting demand in Snowflake, adjusting allocations in SAP, and notifying travel retail managers.
naftiko: '0.5'
info:
label: Travel Retail Inventory Optimization Pipeline
description: Optimizes travel retail inventory by analyzing passenger flow data, forecasting demand in Snowflake, adjusting allocations in SAP, and notifying travel retail managers.
tags:
- travel-retail
- inventory
- snowflake
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: travel-ops
port: 8080
tools:
- name: travel-retail-inventory-optimization
description: Optimizes travel retail inventory.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Travel Retail Inventory Optimization Pipeline complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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
Schedules a private digital showroom appointment by creating a Salesforce event, sending a calendar invite via Microsoft Graph, and triggering a personalized Klaviyo pre-visit email.
naftiko: '0.5'
info:
label: Digital Showroom Appointment Scheduler
description: Schedules a private digital showroom appointment by creating a Salesforce event, sending a calendar invite via Microsoft Graph, and triggering a personalized Klaviyo pre-visit email.
tags:
- clienteling
- crm
- salesforce
- microsoft-graph
- klaviyo
capability:
exposes:
- type: mcp
namespace: showroom
port: 8080
tools:
- name: schedule-showroom-appointment
description: Given a client ID, date/time, and boutique advisor email, create a CRM event, send calendar invite, and trigger a pre-visit email.
inputParameters:
- name: client_id
in: body
type: string
description: The Salesforce contact ID.
- name: appointment_datetime
in: body
type: string
description: The appointment date/time in ISO 8601 format.
- name: advisor_email
in: body
type: string
description: The boutique advisor email.
- name: maison
in: body
type: string
description: The Maison for the showroom (e.g., Louis Vuitton, Dior).
steps:
- name: get-client
type: call
call: salesforce.get-contact
with:
contact_id: '{{client_id}}'
- name: create-crm-event
type: call
call: salesforce.create-event
with:
WhoId: '{{client_id}}'
Subject: Digital Showroom — {{maison}}
StartDateTime: '{{appointment_datetime}}'
Description: Private showroom for {{get-client.Name}}.
- name: send-calendar-invite
type: call
call: msgraph.create-event
with:
organizer: '{{advisor_email}}'
attendee: '{{get-client.Email}}'
subject: Your Private {{maison}} Showroom Experience
start: '{{appointment_datetime}}'
- name: send-pre-visit-email
type: call
call: klaviyo.send-event
with:
email: '{{get-client.Email}}'
event: Showroom_Appointment_Booked
properties: '{maison: ''{{maison}}'', datetime: ''{{appointment_datetime}}'', advisor: ''{{advisor_email}}''}'
consumes:
- type: http
namespace: salesforce
baseUri: https://lvmh.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: contacts
path: /sobjects/Contact/{{contact_id}}
inputParameters:
- name: contact_id
in: path
operations:
- name: get-contact
method: GET
- name: events
path: /sobjects/Event
operations:
- name: create-event
method: POST
- type: http
namespace: msgraph
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: events
path: /users/{{organizer}}/events
inputParameters:
- name: organizer
in: path
operations:
- name: create-event
method: POST
- type: http
namespace: klaviyo
baseUri: https://a.klaviyo.com/api
authentication:
type: bearer
token: $secrets.klaviyo_api_key
resources:
- name: events
path: /events
operations:
- name: send-event
method: POST
Compares boutique display imagery uploaded to Cloudinary against brand guidelines stored in Contentful, and creates a ServiceNow task for any non-compliant displays.
naftiko: '0.5'
info:
label: Visual Merchandising Compliance Checker
description: Compares boutique display imagery uploaded to Cloudinary against brand guidelines stored in Contentful, and creates a ServiceNow task for any non-compliant displays.
tags:
- visual-merchandising
- brand-management
- cloudinary
- contentful
- servicenow
capability:
exposes:
- type: mcp
namespace: vm-compliance
port: 8080
tools:
- name: check-display-compliance
description: Given a display image public ID and guidelines entry ID, fetch both assets and create a compliance review task if needed.
inputParameters:
- name: image_public_id
in: body
type: string
description: The Cloudinary public ID of the boutique display photo.
- name: guidelines_entry_id
in: body
type: string
description: The Contentful entry ID for the VM guidelines.
- name: boutique_name
in: body
type: string
description: The name of the boutique.
- name: maison
in: body
type: string
description: The Maison brand.
steps:
- name: get-display-image
type: call
call: cloudinary.get-resource
with:
public_id: '{{image_public_id}}'
- name: get-guidelines
type: call
call: contentful.get-entry
with:
entry_id: '{{guidelines_entry_id}}'
- name: create-review-task
type: call
call: servicenow.create-task
with:
short_description: 'VM compliance review: {{boutique_name}} — {{maison}}'
description: 'Display image: {{get-display-image.secure_url}}. Guidelines: {{get-guidelines.fields.title}}. Please verify compliance with current {{maison}} visual merchandising standards.'
assigned_group: Visual_Merchandising
category: vm_compliance
consumes:
- type: http
namespace: cloudinary
baseUri: https://api.cloudinary.com/v1_1/lvmh
authentication:
type: basic
username: $secrets.cloudinary_api_key
password: $secrets.cloudinary_api_secret
resources:
- name: resources
path: /resources/image/upload/{{public_id}}
inputParameters:
- name: public_id
in: path
operations:
- name: get-resource
method: GET
- type: http
namespace: contentful
baseUri: https://cdn.contentful.com/spaces/lvmh_space_id
authentication:
type: bearer
token: $secrets.contentful_token
resources:
- name: entries
path: /entries/{{entry_id}}
inputParameters:
- name: entry_id
in: path
operations:
- name: get-entry
method: GET
- type: http
namespace: servicenow
baseUri: https://lvmh.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 product images and marketing assets from the digital asset management system for campaign use.
naftiko: '0.5'
info:
label: DAM Product Asset Retrieval
description: Retrieves product images and marketing assets from the digital asset management system for campaign use.
tags:
- marketing
- dam
capability:
exposes:
- type: mcp
namespace: marketing
port: 8080
tools:
- name: dam_product_asset_retrieval
description: Retrieves product images and marketing assets from the digital asset management system for campaign use..
inputParameters:
- name: record_id
in: body
type: string
description: The record identifier.
call: dam.get-record
with:
record_id: '{{record_id}}'
outputParameters:
- name: data
type: object
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: dam
baseUri: https://lvmh-dam.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.dam_token
resources:
- name: records
path: /records/{{record_id}}
inputParameters:
- name: record_id
in: path
operations:
- name: get-record
method: GET
Checks intercompany stock transfer status between LVMH maisons in SAP.
naftiko: '0.5'
info:
label: SAP Intercompany Transfer Status
description: Checks intercompany stock transfer status between LVMH maisons in SAP.
tags:
- supply-chain
- sap
capability:
exposes:
- type: mcp
namespace: supply-chain
port: 8080
tools:
- name: sap_intercompany_transfer_status
description: Checks intercompany stock transfer status between LVMH maisons in SAP..
inputParameters:
- name: record_id
in: body
type: string
description: The record identifier.
call: sap.get-record
with:
record_id: '{{record_id}}'
outputParameters:
- name: data
type: object
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: sap
baseUri: https://lvmh-sap.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: records
path: /records/{{record_id}}
inputParameters:
- name: record_id
in: path
operations:
- name: get-record
method: GET
Retrieves Instagram engagement metrics for LVMH brand accounts including reach, impressions, and engagement rate.
naftiko: '0.5'
info:
label: Instagram Brand Engagement Metrics
description: Retrieves Instagram engagement metrics for LVMH brand accounts including reach, impressions, and engagement rate.
tags:
- social-media
- instagram
capability:
exposes:
- type: mcp
namespace: social-media
port: 8080
tools:
- name: instagram_brand_engagement_metrics
description: Retrieves Instagram engagement metrics for LVMH brand accounts including reach.
inputParameters:
- name: record_id
in: body
type: string
description: The record identifier.
call: instagram.get-record
with:
record_id: '{{record_id}}'
outputParameters:
- name: data
type: object
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: instagram
baseUri: https://lvmh-instagram.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.instagram_token
resources:
- name: records
path: /records/{{record_id}}
inputParameters:
- name: record_id
in: path
operations:
- name: get-record
method: GET
Fetches a VIC (Very Important Client) profile from Salesforce CRM by client ID, returning contact details, purchase history summary, and loyalty tier.
naftiko: '0.5'
info:
label: Client Profile Lookup
description: Fetches a VIC (Very Important Client) profile from Salesforce CRM by client ID, returning contact details, purchase history summary, and loyalty tier.
tags:
- crm
- clienteling
- salesforce
capability:
exposes:
- type: mcp
namespace: crm-client
port: 8080
tools:
- name: get-client-profile
description: Retrieve a client profile from Salesforce by client ID. Returns name, email, loyalty tier, lifetime spend, and preferred Maison.
inputParameters:
- name: client_id
in: body
type: string
description: The Salesforce contact ID for the client.
call: salesforce.get-contact
with:
contact_id: '{{client_id}}'
outputParameters:
- name: full_name
type: string
mapping: $.Name
- name: email
type: string
mapping: $.Email
- name: loyalty_tier
type: string
mapping: $.Loyalty_Tier__c
- name: lifetime_spend
type: string
mapping: $.Lifetime_Spend__c
- name: preferred_maison
type: string
mapping: $.Preferred_Maison__c
consumes:
- type: http
namespace: salesforce
baseUri: https://lvmh.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: contacts
path: /sobjects/Contact/{{contact_id}}
inputParameters:
- name: contact_id
in: path
operations:
- name: get-contact
method: GET
Retrieves an order from Salesforce Commerce Cloud by order number and returns status, shipping method, and line items.
naftiko: '0.5'
info:
label: E-Commerce Order Status
description: Retrieves an order from Salesforce Commerce Cloud by order number and returns status, shipping method, and line items.
tags:
- e-commerce
- order-management
- salesforce-commerce-cloud
capability:
exposes:
- type: mcp
namespace: orders
port: 8080
tools:
- name: get-order-status
description: Look up an e-commerce order by order number. Returns current status, shipping carrier, tracking number, and line item summary.
inputParameters:
- name: order_number
in: body
type: string
description: The SFCC order number.
call: sfcc.get-order
with:
order_no: '{{order_number}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: shipping_status
type: string
mapping: $.shipping_status
- name: total
type: string
mapping: $.order_total
consumes:
- type: http
namespace: sfcc
baseUri: https://lvmh.demandware.net/s/-/dw/data/v21_10
authentication:
type: bearer
token: $secrets.sfcc_token
resources:
- name: orders
path: /orders/{{order_no}}
inputParameters:
- name: order_no
in: path
operations:
- name: get-order
method: GET
Traces leather goods provenance by pulling tannery certificates from SAP, logging in the blockchain ledger, and providing digital product passports to clients.
naftiko: '0.5'
info:
label: Leather Goods Traceability Pipeline
description: Traces leather goods provenance by pulling tannery certificates from SAP, logging in the blockchain ledger, and providing digital product passports to clients.
tags:
- traceability
- leather
- sap
- blockchain
capability:
exposes:
- type: mcp
namespace: leather-ops
port: 8080
tools:
- name: leather-goods-traceability
description: Traces leather goods provenance.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Leather Goods Traceability Pipeline complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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
Creates digital product passports for EU compliance by pulling product data from SAP, generating QR codes, recording in the blockchain, and distributing to retail.
naftiko: '0.5'
info:
label: Digital Product Passport Pipeline
description: Creates digital product passports for EU compliance by pulling product data from SAP, generating QR codes, recording in the blockchain, and distributing to retail.
tags:
- compliance
- product-passport
- sap
- blockchain
capability:
exposes:
- type: mcp
namespace: digital-ops
port: 8080
tools:
- name: digital-product-passport
description: Creates digital product passports for EU compliance.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Digital Product Passport Pipeline complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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
For a VIC gifting request, looks up the client in Salesforce, searches available products in SFCC, creates a personalized gift order, and schedules white-glove delivery via ShipStation.
naftiko: '0.5'
info:
label: Luxury Gifting Concierge Orchestrator
description: For a VIC gifting request, looks up the client in Salesforce, searches available products in SFCC, creates a personalized gift order, and schedules white-glove delivery via ShipStation.
tags:
- clienteling
- e-commerce
- gifting
- salesforce
- salesforce-commerce-cloud
- shipstation
capability:
exposes:
- type: mcp
namespace: gifting
port: 8080
tools:
- name: create-gift-order
description: Given a VIC client ID, product SKU, gift message, and recipient address, create a personalized gift order with white-glove delivery.
inputParameters:
- name: client_id
in: body
type: string
description: The Salesforce contact ID of the VIC.
- name: product_sku
in: body
type: string
description: The SKU of the gift product.
- name: gift_message
in: body
type: string
description: The personalized gift message.
- name: recipient_name
in: body
type: string
description: The gift recipient name.
- name: recipient_address
in: body
type: string
description: The delivery address.
steps:
- name: get-client
type: call
call: salesforce.get-contact
with:
contact_id: '{{client_id}}'
- name: get-product
type: call
call: sfcc.get-product
with:
product_id: '{{product_sku}}'
- name: create-order
type: call
call: sfcc.create-order
with:
customer_email: '{{get-client.Email}}'
product_id: '{{product_sku}}'
gift_message: '{{gift_message}}'
shipping_address: '{{recipient_address}}'
- name: schedule-delivery
type: call
call: shipstation.create-order
with:
orderNumber: '{{create-order.order_no}}'
shipTo_name: '{{recipient_name}}'
shipTo_address: '{{recipient_address}}'
serviceCode: white_glove
consumes:
- type: http
namespace: salesforce
baseUri: https://lvmh.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: contacts
path: /sobjects/Contact/{{contact_id}}
inputParameters:
- name: contact_id
in: path
operations:
- name: get-contact
method: GET
- type: http
namespace: sfcc
baseUri: https://lvmh.demandware.net/s/-/dw/data/v21_10
authentication:
type: bearer
token: $secrets.sfcc_token
resources:
- name: products
path: /products/{{product_id}}
inputParameters:
- name: product_id
in: path
operations:
- name: get-product
method: GET
- name: orders
path: /orders
operations:
- name: create-order
method: POST
- type: http
namespace: shipstation
baseUri: https://ssapi.shipstation.com
authentication:
type: basic
username: $secrets.shipstation_key
password: $secrets.shipstation_secret
resources:
- name: orders
path: /orders/createorder
operations:
- name: create-order
method: POST
Manages raw material price hedging by monitoring commodity prices, analyzing exposure in Snowflake, recommending hedging strategies, and notifying the treasury team.
naftiko: '0.5'
info:
label: Raw Material Price Hedging Pipeline
description: Manages raw material price hedging by monitoring commodity prices, analyzing exposure in Snowflake, recommending hedging strategies, and notifying the treasury team.
tags:
- treasury
- hedging
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: raw-ops
port: 8080
tools:
- name: raw-material-price-hedging
description: Manages raw material price hedging.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Raw Material Price Hedging Pipeline complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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 luxury goods production order status in SAP including completion percentage and quality holds.
naftiko: '0.5'
info:
label: SAP Production Order Tracking
description: Tracks luxury goods production order status in SAP including completion percentage and quality holds.
tags:
- manufacturing
- sap
capability:
exposes:
- type: mcp
namespace: manufacturing
port: 8080
tools:
- name: sap_production_order_tracking
description: Tracks luxury goods production order status in SAP including completion percentage and quality holds..
inputParameters:
- name: record_id
in: body
type: string
description: The record identifier.
call: sap.get-record
with:
record_id: '{{record_id}}'
outputParameters:
- name: data
type: object
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: sap
baseUri: https://lvmh-sap.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: records
path: /records/{{record_id}}
inputParameters:
- name: record_id
in: path
operations:
- name: get-record
method: GET
Orchestrates luxury pop-up store launches by sourcing inventory from SAP, coordinating logistics, creating event pages, and notifying the experiential marketing team.
naftiko: '0.5'
info:
label: Luxury Pop-Up Store Orchestrator
description: Orchestrates luxury pop-up store launches by sourcing inventory from SAP, coordinating logistics, creating event pages, and notifying the experiential marketing team.
tags:
- retail
- pop-up
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: luxury-ops
port: 8080
tools:
- name: luxury-pop-up-store
description: Orchestrates luxury pop-up store launches.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Luxury Pop-Up Store Orchestrator complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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
Optimizes seasonal markdowns by analyzing sell-through rates in Snowflake, recommending mark-down levels, updating pricing in SAP, and notifying merchandising teams.
naftiko: '0.5'
info:
label: Seasonal Markdown Optimization Pipeline
description: Optimizes seasonal markdowns by analyzing sell-through rates in Snowflake, recommending mark-down levels, updating pricing in SAP, and notifying merchandising teams.
tags:
- merchandising
- markdowns
- snowflake
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: seasonal-ops
port: 8080
tools:
- name: seasonal-markdown-optimization
description: Optimizes seasonal markdowns.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Seasonal Markdown Optimization Pipeline complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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
Plans artisan succession by analyzing skill matrices in Workday, identifying succession gaps in Snowflake, creating training plans in SharePoint, and notifying atelier directors.
naftiko: '0.5'
info:
label: Artisan Succession Planning Pipeline
description: Plans artisan succession by analyzing skill matrices in Workday, identifying succession gaps in Snowflake, creating training plans in SharePoint, and notifying atelier directors.
tags:
- hr
- succession
- workday
- snowflake
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: artisan-ops
port: 8080
tools:
- name: artisan-succession-planning
description: Plans artisan succession.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Artisan Succession Planning Pipeline complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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
Orchestrates luxury concierge services by pulling client preferences from Salesforce, arranging reservations, coordinating deliveries, and confirming via WhatsApp.
naftiko: '0.5'
info:
label: Luxury Concierge Service Orchestrator
description: Orchestrates luxury concierge services by pulling client preferences from Salesforce, arranging reservations, coordinating deliveries, and confirming via WhatsApp.
tags:
- concierge
- luxury-service
- salesforce
- whatsapp
capability:
exposes:
- type: mcp
namespace: luxury-ops
port: 8080
tools:
- name: luxury-concierge-service
description: Orchestrates luxury concierge services.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Luxury Concierge Service Orchestrator complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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
Optimizes duty-free product allocations by analyzing travel hub performance in Snowflake, adjusting stock levels in SAP, and notifying regional managers.
naftiko: '0.5'
info:
label: Duty Free Allocation Optimizer Pipeline
description: Optimizes duty-free product allocations by analyzing travel hub performance in Snowflake, adjusting stock levels in SAP, and notifying regional managers.
tags:
- duty-free
- allocation
- snowflake
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: duty-ops
port: 8080
tools:
- name: duty-free-allocation-optimizer
description: Optimizes duty-free product allocations.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Duty Free Allocation Optimizer Pipeline complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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
Aggregates historical sales from SFCC, current inventory from SAP, and search trend data from Algolia analytics to feed into demand forecasting models.
naftiko: '0.5'
info:
label: Demand Forecasting Data Aggregator
description: Aggregates historical sales from SFCC, current inventory from SAP, and search trend data from Algolia analytics to feed into demand forecasting models.
tags:
- supply-chain
- demand-planning
- salesforce-commerce-cloud
- sap-s4hana
- algolia
capability:
exposes:
- type: mcp
namespace: demand-forecasting
port: 8080
tools:
- name: aggregate-forecast-data
description: Given a product SKU and date range, aggregate sales history, current stock, and search trends for demand forecasting.
inputParameters:
- name: sku
in: body
type: string
description: The product SKU.
- name: start_date
in: body
type: string
description: The start of the historical period YYYY-MM-DD.
- name: end_date
in: body
type: string
description: The end of the historical period YYYY-MM-DD.
steps:
- name: get-sales-history
type: call
call: sfcc.search-orders
with:
product_id: '{{sku}}'
created_from: '{{start_date}}'
created_to: '{{end_date}}'
- name: get-current-stock
type: call
call: sap.get-material-stock
with:
material: '{{sku}}'
- name: get-search-trends
type: call
call: algolia.get-analytics
with:
index: products
search: '{{sku}}'
startDate: '{{start_date}}'
endDate: '{{end_date}}'
consumes:
- type: http
namespace: sfcc
baseUri: https://lvmh.demandware.net/s/-/dw/data/v21_10
authentication:
type: bearer
token: $secrets.sfcc_token
resources:
- name: order-search
path: /order_search
operations:
- name: search-orders
method: POST
- type: http
namespace: sap
baseUri: https://lvmh-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
inputParameters:
- name: Accept
in: header
value: application/json
resources:
- name: material-stock
path: /A_MatlStkInAcctMod(Material='{{material}}')
inputParameters:
- name: material
in: path
operations:
- name: get-material-stock
method: GET
- type: http
namespace: algolia
baseUri: https://analytics.algolia.com/2
authentication:
type: bearer
token: $secrets.algolia_api_key
inputParameters:
- name: X-Algolia-Application-Id
in: header
value: $secrets.algolia_app_id
resources:
- name: analytics
path: /searches?index={{index}}&search={{search}}&startDate={{startDate}}&endDate={{endDate}}
inputParameters:
- name: index
in: query
- name: search
in: query
- name: startDate
in: query
- name: endDate
in: query
operations:
- name: get-analytics
method: GET
Retrieves point-of-sale transaction details from the Cegid retail system used across LVMH boutiques.
naftiko: '0.5'
info:
label: Cegid POS Transaction Lookup
description: Retrieves point-of-sale transaction details from the Cegid retail system used across LVMH boutiques.
tags:
- retail
- cegid
capability:
exposes:
- type: mcp
namespace: retail
port: 8080
tools:
- name: cegid_pos_transaction_lookup
description: Retrieves point-of-sale transaction details from the Cegid retail system used across LVMH boutiques..
inputParameters:
- name: record_id
in: body
type: string
description: The record identifier.
call: cegid.get-record
with:
record_id: '{{record_id}}'
outputParameters:
- name: data
type: object
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: cegid
baseUri: https://lvmh-cegid.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.cegid_token
resources:
- name: records
path: /records/{{record_id}}
inputParameters:
- name: record_id
in: path
operations:
- name: get-record
method: GET
Aggregates a customer's profile from Salesforce CRM, purchase history from SFCC, behavioral events from Segment, and email engagement from Klaviyo to build a unified client 360 view.
naftiko: '0.5'
info:
label: Cross-Maison Customer 360 Builder
description: Aggregates a customer's profile from Salesforce CRM, purchase history from SFCC, behavioral events from Segment, and email engagement from Klaviyo to build a unified client 360 view.
tags:
- crm
- clienteling
- customer-data
- salesforce
- salesforce-commerce-cloud
- segment
- klaviyo
capability:
exposes:
- type: mcp
namespace: customer-360
port: 8080
tools:
- name: build-customer-360
description: Given a client email, aggregate CRM profile, order history, behavioral events, and email engagement into a unified customer 360 view.
inputParameters:
- name: client_email
in: body
type: string
description: The client's email address.
- name: segment_user_id
in: body
type: string
description: The Segment user ID.
steps:
- name: get-crm-profile
type: call
call: salesforce.search-contact
with:
email: '{{client_email}}'
- name: get-order-history
type: call
call: sfcc.search-orders
with:
customer_email: '{{client_email}}'
- name: get-behavior
type: call
call: segment.get-events
with:
user_id: '{{segment_user_id}}'
- name: get-email-engagement
type: call
call: klaviyo.get-profile
with:
email: '{{client_email}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://lvmh.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: contacts
path: /parameterizedSearch/?q={{email}}&sobject=Contact
inputParameters:
- name: email
in: query
operations:
- name: search-contact
method: GET
- type: http
namespace: sfcc
baseUri: https://lvmh.demandware.net/s/-/dw/data/v21_10
authentication:
type: bearer
token: $secrets.sfcc_token
resources:
- name: order-search
path: /order_search
operations:
- name: search-orders
method: POST
- type: http
namespace: segment
baseUri: https://profiles.segment.com/v1/spaces/lvmh_space
authentication:
type: bearer
token: $secrets.segment_token
resources:
- name: events
path: /collections/users/{{user_id}}/events
inputParameters:
- name: user_id
in: path
operations:
- name: get-events
method: GET
- type: http
namespace: klaviyo
baseUri: https://a.klaviyo.com/api
authentication:
type: bearer
token: $secrets.klaviyo_api_key
resources:
- name: profiles
path: /profiles/?filter=equals(email,'{{email}}')
inputParameters:
- name: email
in: query
operations:
- name: get-profile
method: GET
Analyzes press coverage by collecting clippings, running sentiment analysis in Snowflake, generating media reports in SharePoint, and briefing the communications team.
naftiko: '0.5'
info:
label: Press Clipping Analysis Pipeline
description: Analyzes press coverage by collecting clippings, running sentiment analysis in Snowflake, generating media reports in SharePoint, and briefing the communications team.
tags:
- communications
- press
- snowflake
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: press-ops
port: 8080
tools:
- name: press-clipping-analysis
description: Analyzes press coverage.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Press Clipping Analysis Pipeline complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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
Generates authentication certificates for luxury goods by pulling product data from SAP, creating digital certificates, recording in the blockchain, and delivering to clients.
naftiko: '0.5'
info:
label: Luxury Authentication Certificate Pipeline
description: Generates authentication certificates for luxury goods by pulling product data from SAP, creating digital certificates, recording in the blockchain, and delivering to clients.
tags:
- authentication
- certificates
- sap
- blockchain
capability:
exposes:
- type: mcp
namespace: luxury-ops
port: 8080
tools:
- name: luxury-authentication-certificate
description: Generates authentication certificates for luxury goods.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Luxury Authentication Certificate Pipeline complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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
Audits visual merchandising across boutiques by collecting photos, analyzing display compliance via AI, creating audit reports in SharePoint, and alerting visual teams.
naftiko: '0.5'
info:
label: Visual Merchandising Audit Pipeline
description: Audits visual merchandising across boutiques by collecting photos, analyzing display compliance via AI, creating audit reports in SharePoint, and alerting visual teams.
tags:
- visual-merchandising
- audit
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: visual-ops
port: 8080
tools:
- name: visual-merchandising-audit
description: Audits visual merchandising across boutiques.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Visual Merchandising Audit Pipeline complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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 inventory positions in Manhattan warehouse management system for luxury goods fulfillment.
naftiko: '0.5'
info:
label: Manhattan WMS Inventory Position
description: Checks inventory positions in Manhattan warehouse management system for luxury goods fulfillment.
tags:
- warehouse
- manhattan-wms
capability:
exposes:
- type: mcp
namespace: warehouse
port: 8080
tools:
- name: manhattan_wms_inventory_position
description: Checks inventory positions in Manhattan warehouse management system for luxury goods fulfillment..
inputParameters:
- name: record_id
in: body
type: string
description: The record identifier.
call: manhattan-wms.get-record
with:
record_id: '{{record_id}}'
outputParameters:
- name: data
type: object
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: manhattan-wms
baseUri: https://lvmh-manhattan-wms.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.manhattan_wms_token
resources:
- name: records
path: /records/{{record_id}}
inputParameters:
- name: record_id
in: path
operations:
- name: get-record
method: GET
Allocates wine and spirits vintages by analyzing demand in SAP, optimizing allocation across markets, creating distribution plans, and notifying commercial teams.
naftiko: '0.5'
info:
label: Wine Spirits Vintage Allocation Orchestrator
description: Allocates wine and spirits vintages by analyzing demand in SAP, optimizing allocation across markets, creating distribution plans, and notifying commercial teams.
tags:
- wine-spirits
- allocation
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: wine-ops
port: 8080
tools:
- name: wine-spirits-vintage-allocation
description: Allocates wine and spirits vintages.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Wine Spirits Vintage Allocation Orchestrator complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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
Manages custom jewelry orders by capturing designs in the PLM, sourcing stones from SAP, scheduling artisan time in Workday, and updating clients via WhatsApp.
naftiko: '0.5'
info:
label: Jewelry Custom Order Orchestrator
description: Manages custom jewelry orders by capturing designs in the PLM, sourcing stones from SAP, scheduling artisan time in Workday, and updating clients via WhatsApp.
tags:
- jewelry
- custom-orders
- sap
- workday
- whatsapp
capability:
exposes:
- type: mcp
namespace: jewelry-ops
port: 8080
tools:
- name: jewelry-custom-order
description: Manages custom jewelry orders.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Jewelry Custom Order Orchestrator complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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 client's lifetime spend crosses a tier threshold, upgrades their Salesforce loyalty tier, triggers a congratulatory Klaviyo email, and notifies the assigned sales associate in Microsoft Teams.
naftiko: '0.5'
info:
label: Loyalty Tier Upgrade Orchestrator
description: When a client's lifetime spend crosses a tier threshold, upgrades their Salesforce loyalty tier, triggers a congratulatory Klaviyo email, and notifies the assigned sales associate in Microsoft Teams.
tags:
- crm
- loyalty
- salesforce
- klaviyo
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: loyalty
port: 8080
tools:
- name: upgrade-loyalty-tier
description: Given a client ID and new tier, update Salesforce, send congratulatory email via Klaviyo, and notify the sales associate.
inputParameters:
- name: client_id
in: body
type: string
description: The Salesforce contact ID.
- name: new_tier
in: body
type: string
description: The new loyalty tier (Silver, Gold, Platinum, VIC).
- name: associate_upn
in: body
type: string
description: The Microsoft Teams UPN of the assigned sales associate.
steps:
- name: get-client
type: call
call: salesforce.get-contact
with:
contact_id: '{{client_id}}'
- name: update-tier
type: call
call: salesforce.update-contact
with:
contact_id: '{{client_id}}'
Loyalty_Tier__c: '{{new_tier}}'
- name: send-congratulations
type: call
call: klaviyo.send-event
with:
email: '{{get-client.Email}}'
event: Loyalty_Tier_Upgrade
properties: '{new_tier: ''{{new_tier}}'', client_name: ''{{get-client.FirstName}}''}'
- name: notify-associate
type: call
call: msteams.send-message
with:
recipient_upn: '{{associate_upn}}'
text: 'Loyalty upgrade: {{get-client.Name}} promoted to {{new_tier}}. Lifetime spend: {{get-client.Lifetime_Spend__c}}. Consider a personalized outreach.'
consumes:
- type: http
namespace: salesforce
baseUri: https://lvmh.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: contacts
path: /sobjects/Contact/{{contact_id}}
inputParameters:
- name: contact_id
in: path
operations:
- name: get-contact
method: GET
- name: update-contact
method: PATCH
- type: http
namespace: klaviyo
baseUri: https://a.klaviyo.com/api
authentication:
type: bearer
token: $secrets.klaviyo_api_key
resources:
- name: events
path: /events
operations:
- name: send-event
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
Coordinates fashion show logistics by creating a Salesforce event, provisioning a SharePoint collaboration site, sending invitations via Microsoft Graph, and posting announcements in Slack.
naftiko: '0.5'
info:
label: Fashion Show Event Logistics Coordinator
description: Coordinates fashion show logistics by creating a Salesforce event, provisioning a SharePoint collaboration site, sending invitations via Microsoft Graph, and posting announcements in Slack.
tags:
- events
- brand-management
- salesforce
- sharepoint
- microsoft-graph
- slack
capability:
exposes:
- type: mcp
namespace: event-logistics
port: 8080
tools:
- name: coordinate-fashion-show
description: Given event details, create CRM records, provision collaboration space, send invitations, and announce in Slack.
inputParameters:
- name: event_name
in: body
type: string
description: The fashion show event name.
- name: event_date
in: body
type: string
description: The event date in ISO 8601 format.
- name: maison
in: body
type: string
description: The Maison hosting the show.
- name: venue
in: body
type: string
description: The venue name and location.
- name: slack_channel
in: body
type: string
description: The Slack channel for event coordination.
steps:
- name: create-event-record
type: call
call: salesforce.create-event
with:
Subject: '{{event_name}} — {{maison}}'
StartDateTime: '{{event_date}}'
Location: '{{venue}}'
Description: Fashion show for {{maison}} at {{venue}}.
- name: create-collab-site
type: call
call: sharepoint.create-folder
with:
site_id: events_site
folder_path: FashionShows/{{maison}}/{{event_name}}
- name: announce-event
type: call
call: slack.post-message
with:
channel: '{{slack_channel}}'
text: 'Fashion Show Announced: {{event_name}} by {{maison}} on {{event_date}} at {{venue}}. Collaboration space: {{create-collab-site.url}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://lvmh.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: events
path: /sobjects/Event
operations:
- name: create-event
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: 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
Processes wholesale buyer orders by capturing orders in Salesforce, checking inventory in SAP, confirming delivery dates, and sending order confirmations.
naftiko: '0.5'
info:
label: Wholesale Buyer Order Pipeline
description: Processes wholesale buyer orders by capturing orders in Salesforce, checking inventory in SAP, confirming delivery dates, and sending order confirmations.
tags:
- wholesale
- orders
- salesforce
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: wholesale-ops
port: 8080
tools:
- name: wholesale-buyer-order
description: Processes wholesale buyer orders.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Wholesale Buyer Order Pipeline complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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
Aggregates boutique sales from Shopify POS, foot traffic from Google Analytics, and staffing data from Workday to build a daily boutique performance snapshot.
naftiko: '0.5'
info:
label: Boutique Performance Dashboard Builder
description: Aggregates boutique sales from Shopify POS, foot traffic from Google Analytics, and staffing data from Workday to build a daily boutique performance snapshot.
tags:
- retail
- analytics
- shopify
- google-analytics
- workday
capability:
exposes:
- type: mcp
namespace: boutique-performance
port: 8080
tools:
- name: build-boutique-snapshot
description: Given a boutique location ID and date, aggregate POS sales, foot traffic analytics, and staffing levels into a daily performance snapshot.
inputParameters:
- name: location_id
in: body
type: string
description: The Shopify location ID for the boutique.
- name: date
in: body
type: string
description: The date for the snapshot in YYYY-MM-DD format.
- name: ga_property_id
in: body
type: string
description: The GA4 property ID for the boutique.
steps:
- name: get-pos-sales
type: call
call: shopify.get-orders-by-location
with:
location_id: '{{location_id}}'
created_at_min: '{{date}}T00:00:00Z'
created_at_max: '{{date}}T23:59:59Z'
- name: get-foot-traffic
type: call
call: ga.run-report
with:
property: '{{ga_property_id}}'
dateRanges: '[{startDate: ''{{date}}'', endDate: ''{{date}}''}]'
- name: get-staffing
type: call
call: workday.get-workers-by-location
with:
location: '{{location_id}}'
consumes:
- type: http
namespace: shopify
baseUri: https://lvmh-retail.myshopify.com/admin/api/2024-01
authentication:
type: bearer
token: $secrets.shopify_token
resources:
- name: orders
path: /orders.json?location_id={{location_id}}&created_at_min={{created_at_min}}&created_at_max={{created_at_max}}
inputParameters:
- name: location_id
in: query
- name: created_at_min
in: query
- name: created_at_max
in: query
operations:
- name: get-orders-by-location
method: GET
- type: http
namespace: ga
baseUri: https://analyticsdata.googleapis.com/v1beta
authentication:
type: bearer
token: $secrets.google_analytics_token
resources:
- name: reports
path: /properties/{{property}}:runReport
inputParameters:
- name: property
in: path
operations:
- name: run-report
method: POST
- 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?location={{location}}
inputParameters:
- name: location
in: query
operations:
- name: get-workers-by-location
method: GET
Retrieves luxury raw material details from SAP including origin, quality grade, and current stock levels.
naftiko: '0.5'
info:
label: SAP Luxury Material Lookup
description: Retrieves luxury raw material details from SAP including origin, quality grade, and current stock levels.
tags:
- materials
- sap
capability:
exposes:
- type: mcp
namespace: materials
port: 8080
tools:
- name: sap_luxury_material_lookup
description: Retrieves luxury raw material details from SAP including origin.
inputParameters:
- name: record_id
in: body
type: string
description: The record identifier.
call: sap.get-record
with:
record_id: '{{record_id}}'
outputParameters:
- name: data
type: object
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: sap
baseUri: https://lvmh-sap.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: records
path: /records/{{record_id}}
inputParameters:
- name: record_id
in: path
operations:
- name: get-record
method: GET
Retrieves customer event history from Segment by user ID, returning recent track events for behavioral analysis and clienteling insights.
naftiko: '0.5'
info:
label: Segment Customer Event Lookup
description: Retrieves customer event history from Segment by user ID, returning recent track events for behavioral analysis and clienteling insights.
tags:
- customer-data
- analytics
- segment
capability:
exposes:
- type: mcp
namespace: cdp
port: 8080
tools:
- name: get-customer-events
description: Fetch recent Segment track events for a user ID. Returns event names, timestamps, and properties.
inputParameters:
- name: user_id
in: body
type: string
description: The Segment user ID.
call: segment.get-events
with:
user_id: '{{user_id}}'
consumes:
- type: http
namespace: segment
baseUri: https://profiles.segment.com/v1/spaces/lvmh_space
authentication:
type: bearer
token: $secrets.segment_token
resources:
- name: events
path: /collections/users/{{user_id}}/events
inputParameters:
- name: user_id
in: path
operations:
- name: get-events
method: GET
When an employee submits an IT request via ServiceNow, resolves their identity in Workday, provisions access in Azure AD via Microsoft Graph, and sends confirmation in Teams.
naftiko: '0.5'
info:
label: IT Service Request Handler
description: When an employee submits an IT request via ServiceNow, resolves their identity in Workday, provisions access in Azure AD via Microsoft Graph, and sends confirmation in Teams.
tags:
- it
- servicenow
- workday
- microsoft-graph
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: it-service
port: 8080
tools:
- name: handle-it-request
description: Given a ServiceNow ticket ID and employee ID, resolve identity, provision access, and confirm via Teams.
inputParameters:
- name: ticket_id
in: body
type: string
description: The ServiceNow incident ID.
- name: employee_id
in: body
type: string
description: The Workday employee ID.
- name: application_name
in: body
type: string
description: The application to provision access to.
steps:
- name: get-ticket
type: call
call: servicenow.get-incident
with:
ticket_id: '{{ticket_id}}'
- name: get-employee
type: call
call: workday.get-worker
with:
worker_id: '{{employee_id}}'
- name: provision-access
type: call
call: msgraph.add-app-role
with:
user_upn: '{{get-employee.work_email}}'
app_name: '{{application_name}}'
- name: confirm-provision
type: call
call: msteams.send-message
with:
recipient_upn: '{{get-employee.work_email}}'
text: Your IT request ({{ticket_id}}) for {{application_name}} has been provisioned. You should now have access.
consumes:
- type: http
namespace: servicenow
baseUri: https://lvmh.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident/{{ticket_id}}
inputParameters:
- name: ticket_id
in: path
operations:
- name: get-incident
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: msgraph
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: app-roles
path: /users/{{user_upn}}/appRoleAssignments
inputParameters:
- name: user_upn
in: path
operations:
- name: add-app-role
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 wholesale partner places a bulk order, creates the SAP sales order, generates an invoice draft, and sends order confirmation to the partner via email through Microsoft Graph.
naftiko: '0.5'
info:
label: Wholesale Order Pipeline
description: When a wholesale partner places a bulk order, creates the SAP sales order, generates an invoice draft, and sends order confirmation to the partner via email through Microsoft Graph.
tags:
- wholesale
- erp
- sap-s4hana
- microsoft-graph
capability:
exposes:
- type: mcp
namespace: wholesale
port: 8080
tools:
- name: process-wholesale-order
description: Given a partner ID, material list, and quantities, create a SAP sales order and send confirmation to the wholesale partner.
inputParameters:
- name: partner_id
in: body
type: string
description: The SAP business partner ID.
- name: materials
in: body
type: string
description: JSON array of material numbers and quantities.
- name: partner_email
in: body
type: string
description: The partner contact email.
steps:
- name: create-sales-order
type: call
call: sap.create-sales-order
with:
sold_to_party: '{{partner_id}}'
items: '{{materials}}'
- name: send-confirmation
type: call
call: msgraph.send-mail
with:
recipient: '{{partner_email}}'
subject: LVMH Wholesale Order Confirmation — {{create-sales-order.sales_order_id}}
body: 'Your order {{create-sales-order.sales_order_id}} has been created. Estimated delivery: {{create-sales-order.delivery_date}}. Total: {{create-sales-order.net_value}} EUR.'
consumes:
- type: http
namespace: sap
baseUri: https://lvmh-s4.sap.com/sap/opu/odata/sap/API_SALES_ORDER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
inputParameters:
- name: Accept
in: header
value: application/json
resources:
- name: sales-orders
path: /A_SalesOrder
operations:
- name: create-sales-order
method: POST
- type: http
namespace: msgraph
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: mail
path: /users/wholesale@lvmh.com/sendMail
operations:
- name: send-mail
method: POST
Tracks influencer campaign performance by pulling engagement data from Google Analytics, matching it to the campaign in Salesforce Marketing, and sending a summary report to the brand team via Slack.
naftiko: '0.5'
info:
label: Influencer Campaign Tracking Pipeline
description: Tracks influencer campaign performance by pulling engagement data from Google Analytics, matching it to the campaign in Salesforce Marketing, and sending a summary report to the brand team via Slack.
tags:
- marketing
- influencer
- google-analytics
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: influencer-tracking
port: 8080
tools:
- name: track-influencer-campaign
description: Given a campaign ID and GA property, pull engagement metrics, update the Salesforce campaign record, and send a summary to the brand team Slack channel.
inputParameters:
- name: campaign_id
in: body
type: string
description: The Salesforce campaign ID.
- name: ga_property_id
in: body
type: string
description: The GA4 property ID.
- name: start_date
in: body
type: string
description: Campaign start date YYYY-MM-DD.
- name: end_date
in: body
type: string
description: Campaign end date YYYY-MM-DD.
- name: slack_channel
in: body
type: string
description: The Slack channel ID for the brand team.
steps:
- name: get-ga-report
type: call
call: ga.run-report
with:
property: '{{ga_property_id}}'
dateRanges: '[{startDate: ''{{start_date}}'', endDate: ''{{end_date}}''}]'
- name: update-campaign
type: call
call: salesforce.update-campaign
with:
campaign_id: '{{campaign_id}}'
NumberOfResponses: '{{get-ga-report.rows[0].metricValues[0].value}}'
- name: notify-brand-team
type: call
call: slack.post-message
with:
channel: '{{slack_channel}}'
text: 'Influencer Campaign Report ({{start_date}} to {{end_date}}): Sessions: {{get-ga-report.rows[0].metricValues[0].value}}, Conversions: {{get-ga-report.rows[0].metricValues[1].value}}.'
consumes:
- type: http
namespace: ga
baseUri: https://analyticsdata.googleapis.com/v1beta
authentication:
type: bearer
token: $secrets.google_analytics_token
resources:
- name: reports
path: /properties/{{property}}:runReport
inputParameters:
- name: property
in: path
operations:
- name: run-report
method: POST
- type: http
namespace: salesforce
baseUri: https://lvmh.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: campaigns
path: /sobjects/Campaign/{{campaign_id}}
inputParameters:
- name: campaign_id
in: path
operations:
- name: update-campaign
method: PATCH
- 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
Audits supply chain sustainability by collecting supplier certifications from SAP, analyzing ESG scores in Snowflake, generating audit reports, and notifying CSR teams.
naftiko: '0.5'
info:
label: Sustainability Supply Chain Audit Orchestrator
description: Audits supply chain sustainability by collecting supplier certifications from SAP, analyzing ESG scores in Snowflake, generating audit reports, and notifying CSR teams.
tags:
- sustainability
- audit
- sap
- snowflake
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sustainability-ops
port: 8080
tools:
- name: sustainability-supply-chain-audit
description: Audits supply chain sustainability.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Sustainability Supply Chain Audit Orchestrator complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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
On a high-value purchase event, enriches the client profile in Salesforce, triggers a personalized thank-you email via Klaviyo, and logs the interaction in the clienteling app.
naftiko: '0.5'
info:
label: VIC Clienteling Orchestrator
description: On a high-value purchase event, enriches the client profile in Salesforce, triggers a personalized thank-you email via Klaviyo, and logs the interaction in the clienteling app.
tags:
- clienteling
- crm
- salesforce
- klaviyo
- luxury-retail
capability:
exposes:
- type: mcp
namespace: clienteling
port: 8080
tools:
- name: process-vic-purchase
description: Given a client ID and order ID, enrich the Salesforce profile, send a personalized Klaviyo thank-you, and log the clienteling interaction.
inputParameters:
- name: client_id
in: body
type: string
description: The Salesforce contact ID.
- name: order_id
in: body
type: string
description: The e-commerce order ID.
- name: sales_associate_id
in: body
type: string
description: The ID of the sales associate who assisted.
steps:
- name: get-client
type: call
call: salesforce.get-contact
with:
contact_id: '{{client_id}}'
- name: get-order
type: call
call: sfcc.get-order
with:
order_no: '{{order_id}}'
- name: update-client-spend
type: call
call: salesforce.update-contact
with:
contact_id: '{{client_id}}'
Last_Purchase_Date__c: '{{get-order.creation_date}}'
Last_Purchase_Amount__c: '{{get-order.order_total}}'
- name: send-thank-you
type: call
call: klaviyo.send-event
with:
email: '{{get-client.Email}}'
event: VIC_Purchase_Thank_You
properties: '{amount: ''{{get-order.order_total}}'', associate: ''{{sales_associate_id}}''}'
consumes:
- type: http
namespace: salesforce
baseUri: https://lvmh.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: contacts
path: /sobjects/Contact/{{contact_id}}
inputParameters:
- name: contact_id
in: path
operations:
- name: get-contact
method: GET
- name: update-contact
method: PATCH
- type: http
namespace: sfcc
baseUri: https://lvmh.demandware.net/s/-/dw/data/v21_10
authentication:
type: bearer
token: $secrets.sfcc_token
resources:
- name: orders
path: /orders/{{order_no}}
inputParameters:
- name: order_no
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: klaviyo
baseUri: https://a.klaviyo.com/api
authentication:
type: bearer
token: $secrets.klaviyo_api_key
resources:
- name: events
path: /events
operations:
- name: send-event
method: POST
Builds personalized product recommendations by fetching client preferences from Salesforce, recent browse history from Segment, and searching matching products in Algolia.
naftiko: '0.5'
info:
label: Personalized Product Recommendation Engine
description: Builds personalized product recommendations by fetching client preferences from Salesforce, recent browse history from Segment, and searching matching products in Algolia.
tags:
- e-commerce
- personalization
- salesforce
- segment
- algolia
capability:
exposes:
- type: mcp
namespace: recommendations
port: 8080
tools:
- name: get-recommendations
description: Given a client ID and Segment user ID, generate personalized product recommendations based on CRM preferences and browsing behavior.
inputParameters:
- name: client_id
in: body
type: string
description: The Salesforce contact ID.
- name: segment_user_id
in: body
type: string
description: The Segment user ID.
steps:
- name: get-client
type: call
call: salesforce.get-contact
with:
contact_id: '{{client_id}}'
- name: get-browse-history
type: call
call: segment.get-events
with:
user_id: '{{segment_user_id}}'
- name: search-products
type: call
call: algolia.search
with:
query: '{{get-client.Preferred_Maison__c}} {{get-browse-history.data[0].properties.category}}'
facetFilters: brand:{{get-client.Preferred_Maison__c}}
consumes:
- type: http
namespace: salesforce
baseUri: https://lvmh.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: contacts
path: /sobjects/Contact/{{contact_id}}
inputParameters:
- name: contact_id
in: path
operations:
- name: get-contact
method: GET
- type: http
namespace: segment
baseUri: https://profiles.segment.com/v1/spaces/lvmh_space
authentication:
type: bearer
token: $secrets.segment_token
resources:
- name: events
path: /collections/users/{{user_id}}/events
inputParameters:
- name: user_id
in: path
operations:
- name: get-events
method: GET
- type: http
namespace: algolia
baseUri: https://lvmh-app.algolia.net/1/indexes/products
authentication:
type: bearer
token: $secrets.algolia_api_key
inputParameters:
- name: X-Algolia-Application-Id
in: header
value: $secrets.algolia_app_id
resources:
- name: search
path: /query
operations:
- name: search
method: POST
On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder for brand training materials, 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 brand training materials, 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 the full onboarding sequence 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: maison
in: body
type: string
description: The Maison the new hire is joining (e.g., Louis Vuitton, Dior).
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}} — {{maison}}'
category: hr_onboarding
assigned_group: IT_Onboarding
description: Onboarding for {{get-employee.full_name}} starting {{start_date}} at {{maison}}.
- name: provision-folder
type: call
call: sharepoint.create-folder
with:
site_id: hr_onboarding_site
folder_path: OnboardingDocs/{{maison}}/{{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 LVMH and {{maison}}, {{get-employee.first_name}}! Your onboarding ticket is {{open-ticket.number}}. Training materials are at {{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://lvmh.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
Manages VIP event invitations by selecting guests from Salesforce, generating personalized invitations, tracking RSVPs, and coordinating logistics via Teams.
naftiko: '0.5'
info:
label: VIP Event Invitation Orchestrator
description: Manages VIP event invitations by selecting guests from Salesforce, generating personalized invitations, tracking RSVPs, and coordinating logistics via Teams.
tags:
- events
- vip
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: vip-ops
port: 8080
tools:
- name: vip-event-invitation
description: Manages VIP event invitations.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'VIP Event Invitation Orchestrator complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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 payment reconciliation details from Adyen payment platform for luxury retail transactions.
naftiko: '0.5'
info:
label: Adyen Payment Reconciliation Lookup
description: Retrieves payment reconciliation details from Adyen payment platform for luxury retail transactions.
tags:
- payments
- adyen
capability:
exposes:
- type: mcp
namespace: payments
port: 8080
tools:
- name: adyen_payment_reconciliation_lookup
description: Retrieves payment reconciliation details from Adyen payment platform for luxury retail transactions..
inputParameters:
- name: record_id
in: body
type: string
description: The record identifier.
call: adyen.get-record
with:
record_id: '{{record_id}}'
outputParameters:
- name: data
type: object
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: adyen
baseUri: https://lvmh-adyen.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.adyen_token
resources:
- name: records
path: /records/{{record_id}}
inputParameters:
- name: record_id
in: path
operations:
- name: get-record
method: GET
When a quality issue is reported, creates a SAP quality notification, opens a ServiceNow incident for the supply chain team, and alerts the supplier manager in Microsoft Teams.
naftiko: '0.5'
info:
label: Supplier Quality Incident Pipeline
description: When a quality issue is reported, creates a SAP quality notification, opens a ServiceNow incident for the supply chain team, and alerts the supplier manager in Microsoft Teams.
tags:
- supply-chain
- quality
- sap-s4hana
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: quality-incident
port: 8080
tools:
- name: report-quality-incident
description: Given a material number, supplier ID, and defect description, create a SAP quality notification, open a ServiceNow incident, and alert the supply chain manager.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number of the affected product.
- name: supplier_id
in: body
type: string
description: The SAP supplier/vendor ID.
- name: defect_description
in: body
type: string
description: Description of the quality defect.
- name: manager_upn
in: body
type: string
description: The Teams UPN of the supply chain manager.
steps:
- name: create-quality-notification
type: call
call: sap.create-quality-notification
with:
material: '{{material_number}}'
supplier: '{{supplier_id}}'
defect_text: '{{defect_description}}'
- name: open-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Quality defect: Material {{material_number}} from supplier {{supplier_id}}'
description: '{{defect_description}}. SAP QN: {{create-quality-notification.notification_id}}.'
category: supply_chain_quality
assigned_group: Quality_Assurance
- name: notify-manager
type: call
call: msteams.send-message
with:
recipient_upn: '{{manager_upn}}'
text: 'Quality Alert: Material {{material_number}} — {{defect_description}}. SAP QN {{create-quality-notification.notification_id}}, ServiceNow {{open-incident.number}}.'
consumes:
- type: http
namespace: sap
baseUri: https://lvmh-s4.sap.com/sap/opu/odata/sap/API_QUALITYNOTIFICATION_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
inputParameters:
- name: Accept
in: header
value: application/json
resources:
- name: quality-notifications
path: /A_QualityNotification
operations:
- name: create-quality-notification
method: POST
- type: http
namespace: servicenow
baseUri: https://lvmh.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
Coordinates cross-maison product collaborations by syncing design specs in Confluence, aligning production in SAP, creating marketing plans, and launching via e-commerce.
naftiko: '0.5'
info:
label: Maison Collaboration Product Pipeline
description: Coordinates cross-maison product collaborations by syncing design specs in Confluence, aligning production in SAP, creating marketing plans, and launching via e-commerce.
tags:
- collaboration
- cross-maison
- confluence
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: maison-ops
port: 8080
tools:
- name: maison-collaboration-product
description: Coordinates cross-maison product collaborations.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Maison Collaboration Product Pipeline complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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 new e-commerce order is placed, checks SAP inventory across warehouses and boutiques, selects optimal fulfillment location, and creates a shipping request in ShipStation.
naftiko: '0.5'
info:
label: Omnichannel Order Fulfillment Router
description: When a new e-commerce order is placed, checks SAP inventory across warehouses and boutiques, selects optimal fulfillment location, and creates a shipping request in ShipStation.
tags:
- supply-chain
- e-commerce
- order-management
- sap-s4hana
- shipstation
- salesforce-commerce-cloud
capability:
exposes:
- type: mcp
namespace: fulfillment
port: 8080
tools:
- name: route-order-fulfillment
description: Given an order ID, check inventory across locations, select the optimal fulfillment center, and create a ShipStation shipping label.
inputParameters:
- name: order_id
in: body
type: string
description: The SFCC order ID.
- name: destination_country
in: body
type: string
description: The destination country ISO code.
steps:
- name: get-order
type: call
call: sfcc.get-order
with:
order_no: '{{order_id}}'
- name: check-warehouse-stock
type: call
call: sap.get-material-stock
with:
material: '{{get-order.product_items[0].product_id}}'
- name: create-shipment
type: call
call: shipstation.create-order
with:
orderNumber: '{{order_id}}'
shipTo_country: '{{destination_country}}'
shipTo_name: '{{get-order.billing_address.full_name}}'
items: '{{get-order.product_items}}'
warehouseId: '{{check-warehouse-stock.plant}}'
consumes:
- type: http
namespace: sfcc
baseUri: https://lvmh.demandware.net/s/-/dw/data/v21_10
authentication:
type: bearer
token: $secrets.sfcc_token
resources:
- name: orders
path: /orders/{{order_no}}
inputParameters:
- name: order_no
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: sap
baseUri: https://lvmh-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
inputParameters:
- name: Accept
in: header
value: application/json
resources:
- name: material-stock
path: /A_MatlStkInAcctMod(Material='{{material}}')
inputParameters:
- name: material
in: path
operations:
- name: get-material-stock
method: GET
- type: http
namespace: shipstation
baseUri: https://ssapi.shipstation.com
authentication:
type: basic
username: $secrets.shipstation_key
password: $secrets.shipstation_secret
resources:
- name: orders
path: /orders/createorder
operations:
- name: create-order
method: POST
Supports global retail expansion by analyzing market data in Snowflake, identifying locations via Google Maps, creating business cases in SharePoint, and presenting to leadership.
naftiko: '0.5'
info:
label: Global Retail Expansion Pipeline
description: Supports global retail expansion by analyzing market data in Snowflake, identifying locations via Google Maps, creating business cases in SharePoint, and presenting to leadership.
tags:
- retail-expansion
- global
- snowflake
- google-maps
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: global-ops
port: 8080
tools:
- name: global-retail-expansion
description: Supports global retail expansion.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Global Retail Expansion Pipeline complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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
Manages luxury rental programs by checking item availability in SAP, processing reservations in Salesforce, scheduling cleaning in ServiceNow, and notifying boutique teams.
naftiko: '0.5'
info:
label: Luxury Rental Program Orchestrator
description: Manages luxury rental programs by checking item availability in SAP, processing reservations in Salesforce, scheduling cleaning in ServiceNow, and notifying boutique teams.
tags:
- rental
- luxury-program
- sap
- salesforce
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: luxury-ops
port: 8080
tools:
- name: luxury-rental-program
description: Manages luxury rental programs.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
- name: notification_email
in: body
type: string
description: Notification email address.
steps:
- name: gather-data
type: call
call: primary.get-data
with:
entity_id: '{{entity_id}}'
- name: process-data
type: call
call: analytics.process
with:
entity_id: '{{entity_id}}'
input: '{{gather-data.results}}'
- name: execute-action
type: call
call: action.execute
with:
entity_id: '{{entity_id}}'
recommendations: '{{process-data.output}}'
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
recipient_upn: '{{notification_email}}'
text: 'Luxury Rental Program Orchestrator complete for {{entity_id}}. Summary: {{process-data.summary}}. Actions: {{execute-action.count}}.'
consumes:
- type: http
namespace: primary
baseUri: https://lvmh-api.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.lvmh_api_token
resources:
- name: data
path: /data
operations:
- name: get-data
method: GET
- type: http
namespace: analytics
baseUri: https://lvmh-analytics.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.analytics_token
resources:
- name: processing
path: /process
operations:
- name: process
method: POST
- type: http
namespace: action
baseUri: https://lvmh-ops.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.ops_token
resources:
- name: actions
path: /execute
operations:
- name: execute
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 boutique key performance indicators from Tableau dashboards including traffic, conversion, and average transaction.
naftiko: '0.5'
info:
label: Tableau Boutique KPI Dashboard
description: Retrieves boutique key performance indicators from Tableau dashboards including traffic, conversion, and average transaction.
tags:
- analytics
- tableau
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: tableau_boutique_kpi_dashboard
description: Retrieves boutique key performance indicators from Tableau dashboards including traffic.
inputParameters:
- name: record_id
in: body
type: string
description: The record identifier.
call: tableau.get-record
with:
record_id: '{{record_id}}'
outputParameters:
- name: data
type: object
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: tableau
baseUri: https://lvmh-tableau.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: records
path: /records/{{record_id}}
inputParameters:
- name: record_id
in: path
operations:
- name: get-record
method: GET
Initiates an inter-warehouse stock transfer in SAP, creates a ServiceNow logistics task, and notifies the warehouse manager in Microsoft Teams.
naftiko: '0.5'
info:
label: Warehouse Transfer Request
description: Initiates an inter-warehouse stock transfer in SAP, creates a ServiceNow logistics task, and notifies the warehouse manager in Microsoft Teams.
tags:
- supply-chain
- logistics
- sap-s4hana
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: warehouse-transfer
port: 8080
tools:
- name: request-stock-transfer
description: Given a material number, source plant, destination plant, and quantity, create a SAP transfer order, log a ServiceNow task, and notify the warehouse manager.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number.
- name: source_plant
in: body
type: string
description: The source warehouse/plant code.
- name: destination_plant
in: body
type: string
description: The destination warehouse/plant code.
- name: quantity
in: body
type: number
description: The quantity to transfer.
- name: manager_upn
in: body
type: string
description: The Teams UPN of the warehouse manager.
steps:
- name: create-transfer
type: call
call: sap.create-stock-transfer
with:
material: '{{material_number}}'
source: '{{source_plant}}'
destination: '{{destination_plant}}'
quantity: '{{quantity}}'
- name: create-logistics-task
type: call
call: servicenow.create-task
with:
short_description: 'Stock transfer: {{material_number}} from {{source_plant}} to {{destination_plant}}'
description: 'Transfer order {{create-transfer.transfer_order_id}}: {{quantity}} units of {{material_number}}.'
assigned_group: Logistics
category: warehouse_transfer
- name: notify-manager
type: call
call: msteams.send-message
with:
recipient_upn: '{{manager_upn}}'
text: 'Stock transfer initiated: {{quantity}} units of {{material_number}} from {{source_plant}} to {{destination_plant}}. SAP TO: {{create-transfer.transfer_order_id}}. ServiceNow: {{create-logistics-task.number}}.'
consumes:
- type: http
namespace: sap
baseUri: https://lvmh-s4.sap.com/sap/opu/odata/sap/API_STOCK_TRANSFER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
inputParameters:
- name: Accept
in: header
value: application/json
resources:
- name: transfers
path: /A_StockTransfer
operations:
- name: create-stock-transfer
method: POST
- type: http
namespace: servicenow
baseUri: https://lvmh.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: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
When a high-value cart is abandoned in SFCC, fetches the cart contents, enriches with Salesforce client data, and triggers a personalized Klaviyo recovery email with product recommendations.
naftiko: '0.5'
info:
label: E-Commerce Abandoned Cart Recovery
description: When a high-value cart is abandoned in SFCC, fetches the cart contents, enriches with Salesforce client data, and triggers a personalized Klaviyo recovery email with product recommendations.
tags:
- e-commerce
- marketing
- cart-recovery
- salesforce-commerce-cloud
- salesforce
- klaviyo
capability:
exposes:
- type: mcp
namespace: cart-recovery
port: 8080
tools:
- name: recover-abandoned-cart
description: Given a basket ID and client email, fetch cart contents, enrich with CRM data, and trigger a personalized recovery email.
inputParameters:
- name: basket_id
in: body
type: string
description: The SFCC basket ID.
- name: client_email
in: body
type: string
description: The client email address.
steps:
- name: get-basket
type: call
call: sfcc.get-basket
with:
basket_id: '{{basket_id}}'
- name: get-client
type: call
call: salesforce.search-contact
with:
email: '{{client_email}}'
- name: trigger-recovery-email
type: call
call: klaviyo.send-event
with:
email: '{{client_email}}'
event: Abandoned_Cart_Recovery
properties: '{cart_total: ''{{get-basket.order_total}}'', items: ''{{get-basket.product_items}}'', loyalty_tier: ''{{get-client.Loyalty_Tier__c}}''}'
consumes:
- type: http
namespace: sfcc
baseUri: https://lvmh.demandware.net/s/-/dw/data/v21_10
authentication:
type: bearer
token: $secrets.sfcc_token
resources:
- name: baskets
path: /baskets/{{basket_id}}
inputParameters:
- name: basket_id
in: path
operations:
- name: get-basket
method: GET
- type: http
namespace: salesforce
baseUri: https://lvmh.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: contacts
path: /parameterizedSearch/?q={{email}}&sobject=Contact
inputParameters:
- name: email
in: query
operations:
- name: search-contact
method: GET
- type: http
namespace: klaviyo
baseUri: https://a.klaviyo.com/api
authentication:
type: bearer
token: $secrets.klaviyo_api_key
resources:
- name: events
path: /events
operations:
- name: send-event
method: POST
Checks the status of luxury e-commerce orders in Shopify Plus including fulfillment and delivery tracking.
naftiko: '0.5'
info:
label: Shopify Plus Order Status
description: Checks the status of luxury e-commerce orders in Shopify Plus including fulfillment and delivery tracking.
tags:
- e-commerce
- shopify
capability:
exposes:
- type: mcp
namespace: e-commerce
port: 8080
tools:
- name: shopify_plus_order_status
description: Checks the status of luxury e-commerce orders in Shopify Plus including fulfillment and delivery tracking..
inputParameters:
- name: record_id
in: body
type: string
description: The record identifier.
call: shopify.get-record
with:
record_id: '{{record_id}}'
outputParameters:
- name: data
type: object
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: shopify
baseUri: https://lvmh-shopify.lvmh.com/api/v1
authentication:
type: bearer
token: $secrets.shopify_token
resources:
- name: records
path: /records/{{record_id}}
inputParameters:
- name: record_id
in: path
operations:
- name: get-record
method: GET
When a SAP Concur travel expense is submitted, resolves the employee in Workday to determine their Maison and cost center, updates the expense category, and notifies the finance approver in Microsoft Teams.
naftiko: '0.5'
info:
label: Concur Travel Expense Auto-Categorizer
description: When a SAP Concur travel expense is submitted, resolves the employee in Workday to determine their Maison and cost center, updates the expense category, and notifies the finance approver in Microsoft Teams.
tags:
- finance
- travel
- sap-concur
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: travel-expense
port: 8080
tools:
- name: categorize-travel-expense
description: Given a Concur expense report ID and employee ID, resolve the cost center from Workday, update the expense category, and notify the approver.
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.
- name: approver_upn
in: body
type: string
description: The Teams UPN of the finance approver.
steps:
- name: get-expense
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: notify-approver
type: call
call: msteams.send-message
with:
recipient_upn: '{{approver_upn}}'
text: 'Travel expense pending: {{get-employee.full_name}} ({{get-employee.department}}) submitted report {{expense_report_id}} for {{get-expense.total_amount}} {{get-expense.currency}}. Cost center: {{get-employee.cost_center}}.'
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: 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 operational data for Mars food-manufacturing workflows.
naftiko: '0.5'
info:
label: Mars Data Lookup 10
description: Retrieves operational data for Mars food-manufacturing workflows.
tags:
- food-manufacturing
- operations
capability:
exposes:
- type: mcp
namespace: mars-data
port: 8080
tools:
- name: get-data-10
description: Retrieves operational data for Mars food-manufacturing workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mars-data.get-data-10
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mars-data
baseUri: https://api.mars.com/data/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: data-10
path: /data-10/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-10
method: GET
Monitors GitHub Actions CI workflows for Mars digital and data science repositories, alerting on failures via Slack.
naftiko: '0.5'
info:
label: GitHub Actions CI Monitor
description: Monitors GitHub Actions CI workflows for Mars digital and data science repositories, alerting on failures via Slack.
tags:
- devops
- github-actions
- slack
- ci-cd
capability:
exposes:
- type: mcp
namespace: ci-monitor
port: 8080
tools:
- name: monitor-ci
description: Check GitHub Actions workflow status and alert on failures.
inputParameters:
- name: repo_name
in: body
type: string
description: GitHub repository (org/repo).
- name: workflow_name
in: body
type: string
description: Workflow file name.
steps:
- name: get-runs
type: call
call: github.get-workflow-runs
with:
repo: '{{repo_name}}'
workflow: '{{workflow_name}}'
- name: notify-failure
type: call
call: slack.post-message
with:
channel: ci-alerts
text: CI {{get-runs.latest_run.conclusion}} for {{repo_name}}/{{workflow_name}}.
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/workflows/{{workflow}}/runs
inputParameters:
- name: repo
in: path
- name: workflow
in: path
operations:
- name: get-workflow-runs
method: GET
- 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
Creates Zendesk support tickets for consumer complaints and inquiries about Mars products.
naftiko: '0.5'
info:
label: Zendesk Consumer Support Ticket
description: Creates Zendesk support tickets for consumer complaints and inquiries about Mars products.
tags:
- customer-support
- zendesk
- consumer-care
capability:
exposes:
- type: mcp
namespace: consumer-support
port: 8080
tools:
- name: create-consumer-ticket
description: Create a Zendesk support ticket for a consumer inquiry.
inputParameters:
- name: consumer_email
in: body
type: string
description: Consumer email address.
- name: product_name
in: body
type: string
description: Product name.
- name: issue_type
in: body
type: string
description: Issue type (quality, ingredients, allergens, packaging).
- name: description
in: body
type: string
description: Issue description.
call: zendesk.create-ticket
with:
requester_email: '{{consumer_email}}'
subject: 'Consumer inquiry: {{product_name}} - {{issue_type}}'
description: '{{description}}'
tags: consumer-care,{{issue_type}}
consumes:
- type: http
namespace: zendesk
baseUri: https://mars.zendesk.com/api/v2
authentication:
type: bearer
token: $secrets.zendesk_token
resources:
- name: tickets
path: /tickets
operations:
- name: create-ticket
method: POST
Creates and tracks food safety audit records in ServiceNow, stores audit reports in SharePoint, and notifies the food safety team via Slack.
naftiko: '0.5'
info:
label: Food Safety Audit Tracker
description: Creates and tracks food safety audit records in ServiceNow, stores audit reports in SharePoint, and notifies the food safety team via Slack.
tags:
- food-safety
- audit
- servicenow
- sharepoint
- slack
capability:
exposes:
- type: mcp
namespace: food-safety-audit
port: 8080
tools:
- name: log-audit
description: Log a food safety audit across ServiceNow, SharePoint, and Slack.
inputParameters:
- name: plant_code
in: body
type: string
description: Manufacturing plant code.
- name: audit_type
in: body
type: string
description: Audit type (GFSI, FSMA, internal, supplier).
- name: findings
in: body
type: string
description: Audit findings summary.
- name: score
in: body
type: string
description: Audit score.
steps:
- name: create-audit-record
type: call
call: servicenow.create-incident
with:
short_description: 'Food safety audit: {{audit_type}} at {{plant_code}}'
category: food_safety
description: 'Score: {{score}}. Findings: {{findings}}.'
- name: store-report
type: call
call: sharepoint.upload-file
with:
site_id: food_safety
folder_path: Audits/{{plant_code}}/{{audit_type}}
content: 'Plant: {{plant_code}}. Type: {{audit_type}}. Score: {{score}}. Findings: {{findings}}.'
- name: notify-team
type: call
call: slack.post-message
with:
channel: food-safety-audits
text: 'Audit completed: {{audit_type}} at {{plant_code}}. Score: {{score}}. ServiceNow: {{create-audit-record.number}}. Report: {{store-report.url}}.'
consumes:
- type: http
namespace: servicenow
baseUri: https://mars.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: upload-file
method: PUT
- 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 operational data for Mars food-manufacturing workflows.
naftiko: '0.5'
info:
label: Mars Data Lookup 11
description: Retrieves operational data for Mars food-manufacturing workflows.
tags:
- food-manufacturing
- operations
capability:
exposes:
- type: mcp
namespace: mars-data
port: 8080
tools:
- name: get-data-11
description: Retrieves operational data for Mars food-manufacturing workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mars-data.get-data-11
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mars-data
baseUri: https://api.mars.com/data/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: data-11
path: /data-11/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-11
method: GET
Generates Microsoft Excel financial reports for Mars division performance, pulling data from SAP HANA and distributing via Microsoft Outlook.
naftiko: '0.5'
info:
label: Microsoft Excel Financial Report Generator
description: Generates Microsoft Excel financial reports for Mars division performance, pulling data from SAP HANA and distributing via Microsoft Outlook.
tags:
- finance
- microsoft-excel
- sap-hana
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: financial-reports
port: 8080
tools:
- name: generate-financial-report
description: Generate financial report from SAP HANA and email to stakeholders.
inputParameters:
- name: division
in: body
type: string
description: Mars division (confectionery, petcare, food, wrigley).
- name: period
in: body
type: string
description: Reporting period.
- name: recipient_email
in: body
type: string
description: Recipient email address.
steps:
- name: get-data
type: call
call: sap-hana.get-financial-data
with:
division: '{{division}}'
period: '{{period}}'
- name: send-report
type: call
call: outlook.send-email
with:
to: '{{recipient_email}}'
subject: 'Financial Report: {{division}} - {{period}}'
body: '{{division}} division financial summary for {{period}}. Revenue: {{get-data.revenue}}. EBITDA: {{get-data.ebitda}}. Margin: {{get-data.margin}}%.'
consumes:
- type: http
namespace: sap-hana
baseUri: https://mars-hana.sap.com/sap/opu/odata/sap
authentication:
type: basic
username: $secrets.sap_hana_user
password: $secrets.sap_hana_password
resources:
- name: financial
path: /FIN_REPORTING_SRV/DivisionPerformance
inputParameters:
- name: division
in: query
- name: period
in: query
operations:
- name: get-financial-data
method: GET
- type: http
namespace: outlook
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: send-mail
path: /me/sendMail
operations:
- name: send-email
method: POST
Retrieves operational data for Mars food-manufacturing workflows.
naftiko: '0.5'
info:
label: Mars Data Lookup 13
description: Retrieves operational data for Mars food-manufacturing workflows.
tags:
- food-manufacturing
- operations
capability:
exposes:
- type: mcp
namespace: mars-data
port: 8080
tools:
- name: get-data-13
description: Retrieves operational data for Mars food-manufacturing workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mars-data.get-data-13
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mars-data
baseUri: https://api.mars.com/data/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: data-13
path: /data-13/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-13
method: GET
Synchronizes payroll data between Workday and ADP for Mars associates, ensuring accurate compensation processing.
naftiko: '0.5'
info:
label: ADP Payroll Data Sync
description: Synchronizes payroll data between Workday and ADP for Mars associates, ensuring accurate compensation processing.
tags:
- hr
- payroll
- adp
- workday
capability:
exposes:
- type: mcp
namespace: payroll-sync
port: 8080
tools:
- name: sync-payroll
description: Sync payroll data between Workday and ADP.
inputParameters:
- name: pay_period
in: body
type: string
description: Pay period identifier.
steps:
- name: get-workday-data
type: call
call: workday.get-payroll
with:
period: '{{pay_period}}'
- name: push-to-adp
type: call
call: adp.submit-payroll
with:
period: '{{pay_period}}'
data: '{{get-workday-data.payroll_records}}'
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: payroll
path: /payroll/periods/{{period}}
inputParameters:
- name: period
in: path
operations:
- name: get-payroll
method: GET
- type: http
namespace: adp
baseUri: https://api.adp.com/payroll/v1
authentication:
type: bearer
token: $secrets.adp_token
resources:
- name: payroll
path: /pay-distributions
operations:
- name: submit-payroll
method: POST
Retrieves operational data for Mars food-manufacturing workflows.
naftiko: '0.5'
info:
label: Mars Data Lookup 12
description: Retrieves operational data for Mars food-manufacturing workflows.
tags:
- food-manufacturing
- operations
capability:
exposes:
- type: mcp
namespace: mars-data
port: 8080
tools:
- name: get-data-12
description: Retrieves operational data for Mars food-manufacturing workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mars-data.get-data-12
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mars-data
baseUri: https://api.mars.com/data/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: data-12
path: /data-12/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-12
method: GET
Pulls website traffic metrics from Google Analytics for Mars brand websites including page views, sessions, and conversion rates.
naftiko: '0.5'
info:
label: Google Analytics Web Traffic Reporter
description: Pulls website traffic metrics from Google Analytics for Mars brand websites including page views, sessions, and conversion rates.
tags:
- marketing
- google-analytics
- web-analytics
capability:
exposes:
- type: mcp
namespace: web-analytics
port: 8080
tools:
- name: get-traffic-report
description: Retrieve web traffic from Google Analytics for a date range.
inputParameters:
- 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: ga.get-report
with:
start_date: '{{start_date}}'
end_date: '{{end_date}}'
consumes:
- type: http
namespace: ga
baseUri: https://analyticsdata.googleapis.com/v1beta
authentication:
type: bearer
token: $secrets.google_analytics_token
resources:
- name: reports
path: /properties/{{property_id}}:runReport
operations:
- name: get-report
method: POST
Retrieves Google Tag Manager configurations for Mars brand websites to validate marketing and analytics tag implementations.
naftiko: '0.5'
info:
label: Google Tag Manager Configuration Audit
description: Retrieves Google Tag Manager configurations for Mars brand websites to validate marketing and analytics tag implementations.
tags:
- marketing
- google-tag-manager
- analytics
capability:
exposes:
- type: mcp
namespace: gtm-audit
port: 8080
tools:
- name: audit-tags
description: Retrieve GTM container tags for a Mars brand website.
inputParameters:
- name: container_id
in: body
type: string
description: GTM container ID.
call: gtm.get-tags
with:
container_id: '{{container_id}}'
consumes:
- type: http
namespace: gtm
baseUri: https://www.googleapis.com/tagmanager/v2
authentication:
type: bearer
token: $secrets.google_gtm_token
resources:
- name: tags
path: /accounts/{{account_id}}/containers/{{container_id}}/workspaces/default/tags
inputParameters:
- name: container_id
in: path
operations:
- name: get-tags
method: GET
Retrieves travel expense reports from SAP Concur for Mars associates, enabling finance review and approval tracking.
naftiko: '0.5'
info:
label: SAP Concur Travel Expense Reporter
description: Retrieves travel expense reports from SAP Concur for Mars associates, enabling finance review and approval tracking.
tags:
- travel
- expenses
- sap-concur
- finance
capability:
exposes:
- type: mcp
namespace: travel-expenses
port: 8080
tools:
- name: get-expense-report
description: Retrieve a SAP Concur expense report by report ID.
inputParameters:
- name: report_id
in: body
type: string
description: Concur expense report ID.
call: concur.get-report
with:
report_id: '{{report_id}}'
consumes:
- type: http
namespace: concur
baseUri: https://us.api.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-report
method: GET
When a supplier quality issue is detected, creates a SAP quality notification, opens a ServiceNow ticket, and alerts the supplier management team via Microsoft Teams.
naftiko: '0.5'
info:
label: Supplier Quality Incident Processor
description: When a supplier quality issue is detected, creates a SAP quality notification, opens a ServiceNow ticket, and alerts the supplier management team via Microsoft Teams.
tags:
- quality-control
- supplier-management
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: supplier-quality
port: 8080
tools:
- name: report-supplier-issue
description: Process a supplier quality issue across SAP, ServiceNow, and Teams.
inputParameters:
- name: supplier_id
in: body
type: string
description: SAP vendor/supplier ID.
- name: material_number
in: body
type: string
description: Affected material number.
- name: defect_type
in: body
type: string
description: Type of defect (contamination, packaging, specification, foreign-body).
- name: description
in: body
type: string
description: Detailed description of the issue.
steps:
- name: create-notification
type: call
call: sap.create-quality-notification
with:
supplier: '{{supplier_id}}'
material: '{{material_number}}'
defect_type: '{{defect_type}}'
description: '{{description}}'
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'Supplier quality: {{defect_type}} - Material {{material_number}}'
category: quality
priority: '2'
description: 'Supplier: {{supplier_id}}. Material: {{material_number}}. Defect: {{defect_type}}. SAP notification: {{create-notification.notification_number}}. {{description}}'
- name: alert-team
type: call
call: msteams.send-message
with:
channel_id: supplier-quality-alerts
text: 'Supplier quality issue: {{defect_type}} from supplier {{supplier_id}} on material {{material_number}}. SAP: {{create-notification.notification_number}}. ServiceNow: {{create-ticket.number}}.'
consumes:
- type: http
namespace: sap
baseUri: https://mars-s4.sap.com/sap/opu/odata/sap/QM_NOTIFICATION_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: notifications
path: /A_QualityNotification
operations:
- name: create-quality-notification
method: POST
- type: http
namespace: servicenow
baseUri: https://mars.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/{{channel_id}}/channels/General/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Runs Informatica data quality jobs on product and supplier master data to ensure consistency across Mars global operations.
naftiko: '0.5'
info:
label: Informatica Master Data Pipeline
description: Runs Informatica data quality jobs on product and supplier master data to ensure consistency across Mars global operations.
tags:
- data-quality
- informatica
- master-data
capability:
exposes:
- type: mcp
namespace: data-quality
port: 8080
tools:
- name: run-mdm-pipeline
description: Execute Informatica master data management pipeline.
inputParameters:
- name: job_name
in: body
type: string
description: Informatica job name.
- name: data_domain
in: body
type: string
description: Data domain (product, supplier, customer, material).
call: informatica.run-job
with:
job_name: '{{job_name}}'
domain: '{{data_domain}}'
consumes:
- type: http
namespace: informatica
baseUri: https://mars-iics.informatica.com/saas/api/v2
authentication:
type: bearer
token: $secrets.informatica_token
resources:
- name: jobs
path: /job
operations:
- name: run-job
method: POST
Retrieves consumer engagement analytics from Mixpanel for Mars consumer-facing mobile apps and digital platforms.
naftiko: '0.5'
info:
label: Mixpanel Consumer App Analytics
description: Retrieves consumer engagement analytics from Mixpanel for Mars consumer-facing mobile apps and digital platforms.
tags:
- analytics
- mixpanel
- consumer-engagement
capability:
exposes:
- type: mcp
namespace: app-analytics
port: 8080
tools:
- name: get-app-metrics
description: Retrieve Mixpanel consumer app engagement metrics.
inputParameters:
- name: event_name
in: body
type: string
description: Mixpanel event name to query.
- name: from_date
in: body
type: string
description: Start date.
- name: to_date
in: body
type: string
description: End date.
call: mixpanel.get-event-data
with:
event: '{{event_name}}'
from_date: '{{from_date}}'
to_date: '{{to_date}}'
consumes:
- type: http
namespace: mixpanel
baseUri: https://mixpanel.com/api/2.0
authentication:
type: basic
username: $secrets.mixpanel_api_secret
password: ''
resources:
- name: events
path: /events
inputParameters:
- name: event
in: query
- name: from_date
in: query
- name: to_date
in: query
operations:
- name: get-event-data
method: GET
Retrieves production analytics from Oracle APEX dashboards for Mars manufacturing facilities, including OEE, throughput, and downtime.
naftiko: '0.5'
info:
label: Oracle APEX Production Dashboard
description: Retrieves production analytics from Oracle APEX dashboards for Mars manufacturing facilities, including OEE, throughput, and downtime.
tags:
- manufacturing
- oracle-apex
- production-analytics
capability:
exposes:
- type: mcp
namespace: production-dashboard
port: 8080
tools:
- name: get-production-metrics
description: Retrieve production metrics from Oracle APEX.
inputParameters:
- name: plant_code
in: body
type: string
description: Manufacturing plant code.
- name: date
in: body
type: string
description: Date for metrics in YYYY-MM-DD format.
call: oracle-apex.get-metrics
with:
plant: '{{plant_code}}'
date: '{{date}}'
consumes:
- type: http
namespace: oracle-apex
baseUri: https://mars-apex.oraclecloud.com/ords/prod/api
authentication:
type: bearer
token: $secrets.oracle_apex_token
resources:
- name: production-metrics
path: /production/metrics
inputParameters:
- name: plant
in: query
- name: date
in: query
operations:
- name: get-metrics
method: GET
Creates and manages R&D knowledge articles in Notion for Mars product development teams, documenting formulations and testing protocols.
naftiko: '0.5'
info:
label: Notion R&D Knowledge Base
description: Creates and manages R&D knowledge articles in Notion for Mars product development teams, documenting formulations and testing protocols.
tags:
- research-development
- notion
- knowledge-management
capability:
exposes:
- type: mcp
namespace: rd-knowledge
port: 8080
tools:
- name: create-knowledge-article
description: Create a knowledge article in Notion for R&D documentation.
inputParameters:
- name: title
in: body
type: string
description: Article title.
- name: content
in: body
type: string
description: Article content.
- name: database_id
in: body
type: string
description: Notion database ID.
call: notion.create-page
with:
database_id: '{{database_id}}'
title: '{{title}}'
content: '{{content}}'
consumes:
- type: http
namespace: notion
baseUri: https://api.notion.com/v1
authentication:
type: bearer
token: $secrets.notion_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Retrieves operational data for Mars food-manufacturing workflows.
naftiko: '0.5'
info:
label: Mars Data Lookup 15
description: Retrieves operational data for Mars food-manufacturing workflows.
tags:
- food-manufacturing
- operations
capability:
exposes:
- type: mcp
namespace: mars-data
port: 8080
tools:
- name: get-data-15
description: Retrieves operational data for Mars food-manufacturing workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mars-data.get-data-15
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mars-data
baseUri: https://api.mars.com/data/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: data-15
path: /data-15/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-15
method: GET
Retrieves operational data for Mars food-manufacturing workflows.
naftiko: '0.5'
info:
label: Mars Data Lookup 9
description: Retrieves operational data for Mars food-manufacturing workflows.
tags:
- food-manufacturing
- operations
capability:
exposes:
- type: mcp
namespace: mars-data
port: 8080
tools:
- name: get-data-9
description: Retrieves operational data for Mars food-manufacturing workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mars-data.get-data-9
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mars-data
baseUri: https://api.mars.com/data/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: data-9
path: /data-9/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-9
method: GET
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 8
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- tableau
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-8
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-8
with:
identifier: '{{identifier}}'
- name: refresh
type: call
call: tableau.publish-datasource
with:
dataset_id: workflow_8
data: '{{process.metrics}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-8
method: POST
- type: http
namespace: tableau
baseUri: https://mars-tableau.online.tableau.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: datasources
path: /datasources
operations:
- name: publish-datasource
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 9
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- box
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-9
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-9
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: box.upload-file
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-9
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
operations:
- name: upload-file
method: POST
Retrieves operational data for Mars food-manufacturing workflows.
naftiko: '0.5'
info:
label: Mars Data Lookup 8
description: Retrieves operational data for Mars food-manufacturing workflows.
tags:
- food-manufacturing
- operations
capability:
exposes:
- type: mcp
namespace: mars-data
port: 8080
tools:
- name: get-data-8
description: Retrieves operational data for Mars food-manufacturing workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mars-data.get-data-8
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mars-data
baseUri: https://api.mars.com/data/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: data-8
path: /data-8/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-8
method: GET
Retrieves operational data for Mars food-manufacturing workflows.
naftiko: '0.5'
info:
label: Mars Data Lookup 14
description: Retrieves operational data for Mars food-manufacturing workflows.
tags:
- food-manufacturing
- operations
capability:
exposes:
- type: mcp
namespace: mars-data
port: 8080
tools:
- name: get-data-14
description: Retrieves operational data for Mars food-manufacturing workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mars-data.get-data-14
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mars-data
baseUri: https://api.mars.com/data/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: data-14
path: /data-14/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-14
method: GET
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 19
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- teams
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-19
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-19
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: teams.send-message
with:
channel_id: food-manufacturing
message: 'Workflow 19 complete: {{process.summary}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-19
method: POST
- type: http
namespace: teams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.teams_token
resources:
- name: messages
path: /messages
operations:
- name: send-message
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 25
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- salesforce
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-25
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-25
with:
identifier: '{{identifier}}'
- name: create
type: call
call: salesforce.create-account
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-25
method: POST
- type: http
namespace: salesforce
baseUri: https://mars.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /accounts
operations:
- name: create-account
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 31
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- teams
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-31
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-31
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: teams.send-message
with:
channel_id: food-manufacturing
message: 'Workflow 31 complete: {{process.summary}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-31
method: POST
- type: http
namespace: teams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.teams_token
resources:
- name: messages
path: /messages
operations:
- name: send-message
method: POST
Monitors Palo Alto Networks firewall configurations at Mars manufacturing plants and data centers for security compliance.
naftiko: '0.5'
info:
label: Palo Alto Network Security Monitor
description: Monitors Palo Alto Networks firewall configurations at Mars manufacturing plants and data centers for security compliance.
tags:
- security
- palo-alto-networks
- manufacturing
capability:
exposes:
- type: mcp
namespace: network-security
port: 8080
tools:
- name: audit-firewall-rules
description: Audit Palo Alto firewall rules for a Mars facility.
inputParameters:
- name: device_group
in: body
type: string
description: Palo Alto device group name.
call: paloalto.get-security-rules
with:
device_group: '{{device_group}}'
consumes:
- type: http
namespace: paloalto
baseUri: https://mars-panorama.paloaltonetworks.com/restapi/v10.2
authentication:
type: apiKey
key: $secrets.paloalto_api_key
resources:
- name: security-rules
path: /Policies/SecurityRules
inputParameters:
- name: device_group
in: query
operations:
- name: get-security-rules
method: GET
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 30
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- jira
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-30
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-30
with:
identifier: '{{identifier}}'
- name: create-ticket
type: call
call: jira.create-issue
with:
project: FOOD
summary: Task from workflow 30
description: '{{process.details}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-30
method: POST
- type: http
namespace: jira
baseUri: https://mars.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issues
operations:
- name: create-issue
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 24
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- datadog
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-24
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-24
with:
identifier: '{{identifier}}'
- name: push
type: call
call: datadog.submit-metrics
with:
metric_name: food-manufacturing.workflow_24
data: '{{process.metrics}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-24
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: bearer
token: $secrets.datadog_token
resources:
- name: metrics
path: /metrics
operations:
- name: submit-metrics
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 18
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- jira
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-18
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-18
with:
identifier: '{{identifier}}'
- name: create-ticket
type: call
call: jira.create-issue
with:
project: FOOD
summary: Task from workflow 18
description: '{{process.details}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-18
method: POST
- type: http
namespace: jira
baseUri: https://mars.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issues
operations:
- name: create-issue
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 32
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- tableau
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-32
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-32
with:
identifier: '{{identifier}}'
- name: refresh
type: call
call: tableau.publish-datasource
with:
dataset_id: workflow_32
data: '{{process.metrics}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-32
method: POST
- type: http
namespace: tableau
baseUri: https://mars-tableau.online.tableau.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: datasources
path: /datasources
operations:
- name: publish-datasource
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 26
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- servicenow
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-26
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-26
with:
identifier: '{{identifier}}'
- name: create
type: call
call: servicenow.create-incident
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-26
method: POST
- type: http
namespace: servicenow
baseUri: https://mars.service-now.com/api/now/v1
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
Logs R&D experiment results in SharePoint, tracks formulation iterations, and updates the Jira project board for product development teams.
naftiko: '0.5'
info:
label: R&D Experiment Tracker
description: Logs R&D experiment results in SharePoint, tracks formulation iterations, and updates the Jira project board for product development teams.
tags:
- research-development
- sharepoint
- jira
- innovation
capability:
exposes:
- type: mcp
namespace: rd-experiments
port: 8080
tools:
- name: log-experiment
description: Log an R&D experiment and update project tracking.
inputParameters:
- name: experiment_id
in: body
type: string
description: Experiment identifier.
- name: formulation
in: body
type: string
description: Formulation details.
- name: results
in: body
type: string
description: Experiment results summary.
- name: jira_issue_key
in: body
type: string
description: Associated Jira issue key.
steps:
- name: store-results
type: call
call: sharepoint.upload-file
with:
site_id: rd_experiments
folder_path: Experiments/{{experiment_id}}
content: 'Formulation: {{formulation}}. Results: {{results}}.'
- name: update-jira
type: call
call: jira.add-comment
with:
issue_key: '{{jira_issue_key}}'
comment: 'Experiment {{experiment_id}} completed. Results: {{results}}. Full report: {{store-results.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:/{{folder_path}}
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: upload-file
method: PUT
- type: http
namespace: jira
baseUri: https://mars.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_token
resources:
- name: issues
path: /issue/{{issue_key}}/comment
inputParameters:
- name: issue_key
in: path
operations:
- name: add-comment
method: POST
Pulls market share and competitive data from Circana for Mars brands, storing insights in SharePoint for brand management teams.
naftiko: '0.5'
info:
label: Circana Market Share Tracker
description: Pulls market share and competitive data from Circana for Mars brands, storing insights in SharePoint for brand management teams.
tags:
- market-intelligence
- circana
- sharepoint
- brand-management
capability:
exposes:
- type: mcp
namespace: market-share
port: 8080
tools:
- name: track-market-share
description: Fetch market share data from Circana and store in SharePoint.
inputParameters:
- name: brand
in: body
type: string
description: Mars brand name.
- name: category
in: body
type: string
description: Product category.
- name: region
in: body
type: string
description: Geographic region.
steps:
- name: get-data
type: call
call: circana.get-market-share
with:
brand: '{{brand}}'
category: '{{category}}'
region: '{{region}}'
- name: store-report
type: call
call: sharepoint.upload-file
with:
site_id: market_intelligence
folder_path: MarketShare/{{brand}}/{{region}}
content: '{{get-data.report}}'
consumes:
- type: http
namespace: circana
baseUri: https://api.circana.com/v1
authentication:
type: bearer
token: $secrets.circana_token
resources:
- name: market-share
path: /market-share
inputParameters:
- name: brand
in: query
- name: category
in: query
- name: region
in: query
operations:
- name: get-market-share
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:/{{folder_path}}
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: upload-file
method: PUT
Publishes Mars brand marketing content across Instagram, Facebook, and Twitter with creative assets from Adobe Creative Cloud.
naftiko: '0.5'
info:
label: Social Media Brand Campaign Publisher
description: Publishes Mars brand marketing content across Instagram, Facebook, and Twitter with creative assets from Adobe Creative Cloud.
tags:
- marketing
- social-media
- instagram
- facebook
- twitter
- adobe-creative-cloud
capability:
exposes:
- type: mcp
namespace: social-campaigns
port: 8080
tools:
- name: publish-campaign
description: Pull creative asset and publish across social media platforms.
inputParameters:
- name: asset_id
in: body
type: string
description: Adobe Creative Cloud asset ID.
- name: caption
in: body
type: string
description: Social media caption.
- name: brand
in: body
type: string
description: Mars brand name.
steps:
- name: get-asset
type: call
call: adobe-cc.get-asset
with:
asset_id: '{{asset_id}}'
- name: post-instagram
type: call
call: instagram.create-media
with:
image_url: '{{get-asset.download_url}}'
caption: '{{caption}} #{{brand}}'
- name: post-facebook
type: call
call: facebook.create-post
with:
message: '{{caption}}'
image_url: '{{get-asset.download_url}}'
- name: post-twitter
type: call
call: twitter.create-tweet
with:
text: '{{caption}} #{{brand}}'
media_url: '{{get-asset.download_url}}'
consumes:
- type: http
namespace: adobe-cc
baseUri: https://cc-api-storage.adobe.io/v1
authentication:
type: bearer
token: $secrets.adobe_cc_token
resources:
- name: assets
path: /assets/{{asset_id}}
inputParameters:
- name: asset_id
in: path
operations:
- name: get-asset
method: GET
- type: http
namespace: instagram
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.instagram_token
resources:
- name: media
path: /{{ig_user_id}}/media
operations:
- name: create-media
method: POST
- type: http
namespace: facebook
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.facebook_token
resources:
- name: posts
path: /{{page_id}}/feed
operations:
- name: create-post
method: POST
- type: http
namespace: twitter
baseUri: https://api.twitter.com/2
authentication:
type: bearer
token: $secrets.twitter_token
resources:
- name: tweets
path: /tweets
operations:
- name: create-tweet
method: POST
Archives Mars regulatory and food safety compliance documents from SharePoint to Box with retention policies.
naftiko: '0.5'
info:
label: Box Compliance Document Archive
description: Archives Mars regulatory and food safety compliance documents from SharePoint to Box with retention policies.
tags:
- compliance
- box
- sharepoint
- document-management
capability:
exposes:
- type: mcp
namespace: compliance-archive
port: 8080
tools:
- name: archive-compliance-docs
description: Archive compliance documents from SharePoint to Box.
inputParameters:
- name: document_category
in: body
type: string
description: Category (food-safety, environmental, regulatory, gmp).
- name: year
in: body
type: string
description: Document year.
steps:
- name: get-docs
type: call
call: sharepoint.list-files
with:
site_id: compliance_docs
folder_path: '{{document_category}}/{{year}}'
- name: upload-to-box
type: call
call: box.upload-file
with:
folder_id: compliance_archive
file_name: '{{document_category}}_{{year}}_archive.zip'
metadata: category:{{document_category}},year:{{year}},retention:10years
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: list-files
method: GET
- type: http
namespace: box
baseUri: https://upload.box.com/api/2.0
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: files
path: /files/content
operations:
- name: upload-file
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 27
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- slack
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-27
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-27
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: slack.post-message
with:
channel: '#food-manufacturing'
text: 'Completed workflow 27: {{process.summary}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-27
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /messages
operations:
- name: post-message
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 33
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- box
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-33
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-33
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: box.upload-file
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-33
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
operations:
- name: upload-file
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 23
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- hubspot
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-23
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-23
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: hubspot.send-email
with:
to: '{{process.email}}'
subject: Workflow 23 Complete
body: '{{process.summary}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-23
method: POST
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com/crm/v3
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: contacts
path: /contacts
operations:
- name: send-email
method: POST
Monitors Azure Data Factory pipeline runs for Mars data warehouse ETL processes, alerting on failures via Slack.
naftiko: '0.5'
info:
label: Azure Data Factory ETL Monitor
description: Monitors Azure Data Factory pipeline runs for Mars data warehouse ETL processes, alerting on failures via Slack.
tags:
- data-engineering
- azure-data-factory
- slack
- monitoring
capability:
exposes:
- type: mcp
namespace: etl-monitor
port: 8080
tools:
- name: check-etl-status
description: Check Azure Data Factory pipeline run status and alert on failures.
inputParameters:
- name: pipeline_name
in: body
type: string
description: ADF pipeline name.
- name: run_id
in: body
type: string
description: Pipeline run ID.
steps:
- name: get-run-status
type: call
call: adf.get-pipeline-run
with:
pipeline: '{{pipeline_name}}'
run_id: '{{run_id}}'
- name: alert-failure
type: call
call: slack.post-message
with:
channel: data-engineering-alerts
text: 'ADF pipeline {{pipeline_name}} run {{run_id}}: {{get-run-status.status}}. Duration: {{get-run-status.duration}}.'
consumes:
- type: http
namespace: adf
baseUri: https://management.azure.com/subscriptions/{{subscription_id}}/resourceGroups/{{rg}}/providers/Microsoft.DataFactory/factories/{{factory}}
authentication:
type: bearer
token: $secrets.azure_mgmt_token
resources:
- name: pipeline-runs
path: /pipelineruns/{{run_id}}
inputParameters:
- name: run_id
in: path
operations:
- name: get-pipeline-run
method: GET
- 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
Monitors Mars consumer-facing digital platforms via New Relic for performance, availability, and error tracking.
naftiko: '0.5'
info:
label: New Relic Digital Platform Monitor
description: Monitors Mars consumer-facing digital platforms via New Relic for performance, availability, and error tracking.
tags:
- monitoring
- new-relic
- digital-platforms
capability:
exposes:
- type: mcp
namespace: digital-monitoring
port: 8080
tools:
- name: get-platform-health
description: Retrieve New Relic APM metrics for a Mars digital platform.
inputParameters:
- name: app_name
in: body
type: string
description: New Relic application name.
call: newrelic.get-app-metrics
with:
app_name: '{{app_name}}'
consumes:
- type: http
namespace: newrelic
baseUri: https://api.newrelic.com/v2
authentication:
type: apiKey
key: $secrets.newrelic_api_key
resources:
- name: applications
path: /applications.json
inputParameters:
- name: app_name
in: query
operations:
- name: get-app-metrics
method: GET
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 22
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- sharepoint
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-22
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-22
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: sharepoint.upload-document
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-22
method: POST
- type: http
namespace: sharepoint
baseUri: https://mars.sharepoint.com/_api/v2.0
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: documents
path: /documents
operations:
- name: upload-document
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 20
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- tableau
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-20
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-20
with:
identifier: '{{identifier}}'
- name: refresh
type: call
call: tableau.publish-datasource
with:
dataset_id: workflow_20
data: '{{process.metrics}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-20
method: POST
- type: http
namespace: tableau
baseUri: https://mars-tableau.online.tableau.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: datasources
path: /datasources
operations:
- name: publish-datasource
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 34
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- sharepoint
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-34
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-34
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: sharepoint.upload-document
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-34
method: POST
- type: http
namespace: sharepoint
baseUri: https://mars.sharepoint.com/_api/v2.0
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: documents
path: /documents
operations:
- name: upload-document
method: POST
Monitors Azure DevOps build pipelines for Mars digital platforms, checking build status and deployment health.
naftiko: '0.5'
info:
label: Azure DevOps Build Pipeline Monitor
description: Monitors Azure DevOps build pipelines for Mars digital platforms, checking build status and deployment health.
tags:
- devops
- azure-devops
- ci-cd
capability:
exposes:
- type: mcp
namespace: devops-builds
port: 8080
tools:
- name: get-build-status
description: Check the latest build status for an Azure DevOps pipeline.
inputParameters:
- name: project_name
in: body
type: string
description: Azure DevOps project name.
- name: pipeline_id
in: body
type: string
description: Pipeline definition ID.
call: azuredevops.get-latest-build
with:
project: '{{project_name}}'
definition_id: '{{pipeline_id}}'
consumes:
- type: http
namespace: azuredevops
baseUri: https://dev.azure.com/mars
authentication:
type: basic
username: ''
password: $secrets.azuredevops_pat
resources:
- name: builds
path: /{{project}}/_apis/build/builds?definitions={{definition_id}}&$top=1&api-version=7.0
inputParameters:
- name: project
in: path
- name: definition_id
in: query
operations:
- name: get-latest-build
method: GET
Creates and manages production tasks in Microsoft Planner for plant operations, including maintenance schedules and changeover planning.
naftiko: '0.5'
info:
label: Microsoft Planner Production Task Manager
description: Creates and manages production tasks in Microsoft Planner for plant operations, including maintenance schedules and changeover planning.
tags:
- manufacturing
- microsoft-planner
- task-management
capability:
exposes:
- type: mcp
namespace: production-tasks
port: 8080
tools:
- name: create-production-task
description: Create a production operations task in Microsoft Planner.
inputParameters:
- name: task_title
in: body
type: string
description: Task title.
- name: plan_id
in: body
type: string
description: Planner plan ID.
- name: due_date
in: body
type: string
description: Due date.
- name: plant_code
in: body
type: string
description: Plant code.
call: planner.create-task
with:
plan_id: '{{plan_id}}'
title: '[{{plant_code}}] {{task_title}}'
due_date: '{{due_date}}'
consumes:
- type: http
namespace: planner
baseUri: https://graph.microsoft.com/v1.0/planner
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: tasks
path: /tasks
operations:
- name: create-task
method: POST
Monitors Mars manufacturing execution system applications via Dynatrace, tracking uptime, response times, and error rates.
naftiko: '0.5'
info:
label: Dynatrace Manufacturing App Monitor
description: Monitors Mars manufacturing execution system applications via Dynatrace, tracking uptime, response times, and error rates.
tags:
- monitoring
- dynatrace
- manufacturing
capability:
exposes:
- type: mcp
namespace: mes-monitoring
port: 8080
tools:
- name: check-mes-health
description: Check Dynatrace health metrics for manufacturing execution systems.
inputParameters:
- name: application_id
in: body
type: string
description: Dynatrace application entity ID.
call: dynatrace.get-metrics
with:
entity_id: '{{application_id}}'
consumes:
- type: http
namespace: dynatrace
baseUri: https://mars.live.dynatrace.com/api/v2
authentication:
type: bearer
token: $secrets.dynatrace_token
resources:
- name: metrics
path: /metrics/query
inputParameters:
- name: entity_id
in: query
operations:
- name: get-metrics
method: GET
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 35
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- hubspot
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-35
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-35
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: hubspot.send-email
with:
to: '{{process.email}}'
subject: Workflow 35 Complete
body: '{{process.summary}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-35
method: POST
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com/crm/v3
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: contacts
path: /contacts
operations:
- name: send-email
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 21
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- box
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-21
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-21
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: box.upload-file
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-21
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
operations:
- name: upload-file
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 10
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- sharepoint
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-10
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-10
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: sharepoint.upload-document
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-10
method: POST
- type: http
namespace: sharepoint
baseUri: https://mars.sharepoint.com/_api/v2.0
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: documents
path: /documents
operations:
- name: upload-document
method: POST
Pulls campaign performance from Google Marketing Platform for Mars brand advertising, analyzing ROI and audience reach.
naftiko: '0.5'
info:
label: Google Marketing Platform Campaign Optimizer
description: Pulls campaign performance from Google Marketing Platform for Mars brand advertising, analyzing ROI and audience reach.
tags:
- marketing
- google-marketing-platform
- advertising
capability:
exposes:
- type: mcp
namespace: ad-campaigns
port: 8080
tools:
- name: get-campaign-performance
description: Retrieve Google Marketing Platform campaign performance metrics.
inputParameters:
- name: campaign_id
in: body
type: string
description: Campaign ID.
- name: date_range
in: body
type: string
description: Date range for reporting.
call: gmp.get-campaign-report
with:
campaign_id: '{{campaign_id}}'
date_range: '{{date_range}}'
consumes:
- type: http
namespace: gmp
baseUri: https://www.googleapis.com/dfareporting/v4
authentication:
type: bearer
token: $secrets.google_marketing_token
resources:
- name: reports
path: /userprofiles/{{profile_id}}/reports
operations:
- name: get-campaign-report
method: POST
Manages a pet care product recall by updating SAP batch status, creating ServiceNow case, notifying retailers via Salesforce, and alerting the public via social media.
naftiko: '0.5'
info:
label: Pet Care Product Recall Manager
description: Manages a pet care product recall by updating SAP batch status, creating ServiceNow case, notifying retailers via Salesforce, and alerting the public via social media.
tags:
- pet-care
- recall
- sap
- servicenow
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: recall-management
port: 8080
tools:
- name: initiate-recall
description: Initiate a product recall process across all systems.
inputParameters:
- name: batch_number
in: body
type: string
description: The batch number to recall.
- name: product_name
in: body
type: string
description: Product name.
- name: reason
in: body
type: string
description: Recall reason.
- name: severity
in: body
type: string
description: Recall severity (voluntary, mandatory, class-1, class-2).
steps:
- name: block-batch
type: call
call: sap.block-batch
with:
batch: '{{batch_number}}'
status: blocked
reason: '{{reason}}'
- name: create-case
type: call
call: servicenow.create-incident
with:
short_description: 'Product recall: {{product_name}} - Batch {{batch_number}}'
category: recall
priority: '1'
description: 'Reason: {{reason}}. Severity: {{severity}}.'
- name: notify-retailers
type: call
call: salesforce.create-mass-notification
with:
subject: 'Recall: {{product_name}} Batch {{batch_number}}'
message: 'Please remove {{product_name}} batch {{batch_number}} from shelves. Reason: {{reason}}.'
- name: alert-crisis-team
type: call
call: msteams.send-message
with:
channel_id: crisis-management
text: 'RECALL INITIATED: {{product_name}} batch {{batch_number}}. Severity: {{severity}}. Reason: {{reason}}. ServiceNow: {{create-case.number}}.'
consumes:
- type: http
namespace: sap
baseUri: https://mars-s4.sap.com/sap/opu/odata/sap/QM_BATCH_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: batches
path: /A_Batch
operations:
- name: block-batch
method: PATCH
- type: http
namespace: servicenow
baseUri: https://mars.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: salesforce
baseUri: https://mars.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: notifications
path: /sobjects/Mass_Notification__c
operations:
- name: create-mass-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/{{channel_id}}/channels/General/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 11
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- hubspot
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-11
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-11
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: hubspot.send-email
with:
to: '{{process.email}}'
subject: Workflow 11 Complete
body: '{{process.summary}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-11
method: POST
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com/crm/v3
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: contacts
path: /contacts
operations:
- name: send-email
method: POST
Creates and manages R&D knowledge articles in Confluence for Mars food science, pet nutrition, and manufacturing process documentation.
naftiko: '0.5'
info:
label: Confluence R&D Knowledge Base
description: Creates and manages R&D knowledge articles in Confluence for Mars food science, pet nutrition, and manufacturing process documentation.
tags:
- research-development
- confluence
- knowledge-management
capability:
exposes:
- type: mcp
namespace: rd-knowledge
port: 8080
tools:
- name: create-rd-article
description: Create an R&D knowledge article in Confluence.
inputParameters:
- name: title
in: body
type: string
description: Article title.
- name: content
in: body
type: string
description: Article content.
- name: space_key
in: body
type: string
description: Confluence space key.
call: confluence.create-page
with:
space_key: '{{space_key}}'
title: '{{title}}'
content: '{{content}}'
consumes:
- type: http
namespace: confluence
baseUri: https://mars.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_token
resources:
- name: pages
path: /content
operations:
- name: create-page
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 13
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- salesforce
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-13
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-13
with:
identifier: '{{identifier}}'
- name: create
type: call
call: salesforce.create-account
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-13
method: POST
- type: http
namespace: salesforce
baseUri: https://mars.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /accounts
operations:
- name: create-account
method: POST
Monitors Jira sprint progress for Mars product development and digital teams, tracking velocity and blockers.
naftiko: '0.5'
info:
label: Jira Product Development Sprint Tracker
description: Monitors Jira sprint progress for Mars product development and digital teams, tracking velocity and blockers.
tags:
- development
- jira
- agile
capability:
exposes:
- type: mcp
namespace: sprint-tracking
port: 8080
tools:
- name: get-sprint-status
description: Retrieve Jira sprint status and metrics.
inputParameters:
- name: board_id
in: body
type: string
description: Jira board ID.
- name: sprint_id
in: body
type: string
description: Sprint ID.
call: jira.get-sprint
with:
board_id: '{{board_id}}'
sprint_id: '{{sprint_id}}'
consumes:
- type: http
namespace: jira
baseUri: https://mars.atlassian.net/rest/agile/1.0
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
Checks the status of a procurement requisition in SAP Ariba, returning approval stage, requestor, and estimated delivery.
naftiko: '0.5'
info:
label: SAP Ariba Requisition Status
description: Checks the status of a procurement requisition in SAP Ariba, returning approval stage, requestor, and estimated delivery.
tags:
- procurement
- sap-ariba
- requisitions
capability:
exposes:
- type: mcp
namespace: ariba-procurement
port: 8080
tools:
- name: get-requisition-status
description: Look up a SAP Ariba requisition by ID.
inputParameters:
- name: requisition_id
in: body
type: string
description: The Ariba requisition ID.
call: ariba.get-requisition
with:
req_id: '{{requisition_id}}'
consumes:
- type: http
namespace: ariba
baseUri: https://openapi.ariba.com/api/procurement/v1
authentication:
type: bearer
token: $secrets.ariba_token
resources:
- name: requisitions
path: /requisitions/{{req_id}}
inputParameters:
- name: req_id
in: path
operations:
- name: get-requisition
method: GET
Runs Alteryx analytics workflows for Mars supply chain optimization, analyzing sourcing patterns and logistics costs.
naftiko: '0.5'
info:
label: Alteryx Supply Chain Analytics Pipeline
description: Runs Alteryx analytics workflows for Mars supply chain optimization, analyzing sourcing patterns and logistics costs.
tags:
- supply-chain
- alteryx
- analytics
capability:
exposes:
- type: mcp
namespace: supply-analytics
port: 8080
tools:
- name: run-analytics-workflow
description: Execute an Alteryx analytics workflow for supply chain analysis.
inputParameters:
- name: workflow_name
in: body
type: string
description: Alteryx workflow name.
- name: parameters
in: body
type: string
description: Workflow parameters.
call: alteryx.run-workflow
with:
workflow: '{{workflow_name}}'
params: '{{parameters}}'
consumes:
- type: http
namespace: alteryx
baseUri: https://mars-alteryx.com/api/v3
authentication:
type: bearer
token: $secrets.alteryx_token
resources:
- name: workflows
path: /workflows/{{workflow}}/run
inputParameters:
- name: workflow
in: path
operations:
- name: run-workflow
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 12
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- datadog
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-12
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-12
with:
identifier: '{{identifier}}'
- name: push
type: call
call: datadog.submit-metrics
with:
metric_name: food-manufacturing.workflow_12
data: '{{process.metrics}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-12
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: bearer
token: $secrets.datadog_token
resources:
- name: metrics
path: /metrics
operations:
- name: submit-metrics
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 16
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- confluence
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-16
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-16
with:
identifier: '{{identifier}}'
- name: publish
type: call
call: confluence.create-page
with:
space: FOOD-M
title: Report 16
content: '{{process.report}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-16
method: POST
- type: http
namespace: confluence
baseUri: https://mars.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 17
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- powerbi
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-17
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-17
with:
identifier: '{{identifier}}'
- name: refresh
type: call
call: powerbi.refresh-dataset
with:
dataset_id: workflow_17
data: '{{process.metrics}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-17
method: POST
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /datasets
operations:
- name: refresh-dataset
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 15
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- slack
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-15
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-15
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: slack.post-message
with:
channel: '#food-manufacturing'
text: 'Completed workflow 15: {{process.summary}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-15
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /messages
operations:
- name: post-message
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 29
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- powerbi
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-29
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-29
with:
identifier: '{{identifier}}'
- name: refresh
type: call
call: powerbi.refresh-dataset
with:
dataset_id: workflow_29
data: '{{process.metrics}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-29
method: POST
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /datasets
operations:
- name: refresh-dataset
method: POST
Looks up a production order in SAP S/4HANA by order number, returning status, material, quantity, planned start/end dates, and batch information.
naftiko: '0.5'
info:
label: SAP S/4HANA Production Order Status
description: Looks up a production order in SAP S/4HANA by order number, returning status, material, quantity, planned start/end dates, and batch information.
tags:
- manufacturing
- erp
- sap-s4hana
- production
capability:
exposes:
- type: mcp
namespace: production-orders
port: 8080
tools:
- name: get-production-order
description: Look up a SAP S/4HANA production order by order number.
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: material
type: string
mapping: $.d.Material
- name: quantity
type: string
mapping: $.d.TotalQuantity
consumes:
- type: http
namespace: sap
baseUri: https://mars-s4.sap.com/sap/opu/odata/sap/PP_PROD_ORDER_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
Synchronizes distributor orders from BigCommerce to SAP Sales and Distribution, ensuring inventory allocation and delivery scheduling.
naftiko: '0.5'
info:
label: Retail Distributor Order Sync
description: Synchronizes distributor orders from BigCommerce to SAP Sales and Distribution, ensuring inventory allocation and delivery scheduling.
tags:
- retail
- bigcommerce
- sap
- order-management
capability:
exposes:
- type: mcp
namespace: order-sync
port: 8080
tools:
- name: sync-distributor-orders
description: Pull BigCommerce orders and create SAP sales orders for fulfillment.
inputParameters:
- name: date_from
in: body
type: string
description: Start date for order retrieval.
- name: date_to
in: body
type: string
description: End date for order retrieval.
steps:
- name: get-orders
type: call
call: bigcommerce.get-orders
with:
min_date: '{{date_from}}'
max_date: '{{date_to}}'
- name: create-sap-orders
type: call
call: sap.create-sales-orders
with:
orders: '{{get-orders.orders}}'
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/{{store_hash}}/v2
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: orders
path: /orders
operations:
- name: get-orders
method: GET
- type: http
namespace: sap
baseUri: https://mars-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-orders
method: POST
Publishes Mars employer brand content to LinkedIn, highlighting culture, innovation, and career opportunities.
naftiko: '0.5'
info:
label: LinkedIn Employer Brand Publisher
description: Publishes Mars employer brand content to LinkedIn, highlighting culture, innovation, and career opportunities.
tags:
- employer-branding
- linkedin
- recruiting
capability:
exposes:
- type: mcp
namespace: employer-brand
port: 8080
tools:
- name: publish-employer-content
description: Publish employer brand content to the Mars LinkedIn page.
inputParameters:
- name: content_text
in: body
type: string
description: Post content text.
- name: image_url
in: body
type: string
description: Image URL for the post.
call: linkedin.create-post
with:
text: '{{content_text}}'
image_url: '{{image_url}}'
consumes:
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: posts
path: /ugcPosts
operations:
- name: create-post
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 28
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- confluence
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-28
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-28
with:
identifier: '{{identifier}}'
- name: publish
type: call
call: confluence.create-page
with:
space: FOOD-M
title: Report 28
content: '{{process.report}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-28
method: POST
- type: http
namespace: confluence
baseUri: https://mars.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 14
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- servicenow
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-14
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-14
with:
identifier: '{{identifier}}'
- name: create
type: call
call: servicenow.create-incident
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-14
method: POST
- type: http
namespace: servicenow
baseUri: https://mars.service-now.com/api/now/v1
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
Retrieves operational data for Mars food-manufacturing workflows.
naftiko: '0.5'
info:
label: Mars Data Lookup 5
description: Retrieves operational data for Mars food-manufacturing workflows.
tags:
- food-manufacturing
- operations
capability:
exposes:
- type: mcp
namespace: mars-data
port: 8080
tools:
- name: get-data-5
description: Retrieves operational data for Mars food-manufacturing workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mars-data.get-data-5
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mars-data
baseUri: https://api.mars.com/data/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: data-5
path: /data-5/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-5
method: GET
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 4
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- confluence
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-4
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-4
with:
identifier: '{{identifier}}'
- name: publish
type: call
call: confluence.create-page
with:
space: FOOD-M
title: Report 4
content: '{{process.report}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-4
method: POST
- type: http
namespace: confluence
baseUri: https://mars.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 5
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- powerbi
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-5
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-5
with:
identifier: '{{identifier}}'
- name: refresh
type: call
call: powerbi.refresh-dataset
with:
dataset_id: workflow_5
data: '{{process.metrics}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-5
method: POST
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /datasets
operations:
- name: refresh-dataset
method: POST
Creates ServiceNow incidents for IT issues at Mars manufacturing plants, offices, and R&D facilities.
naftiko: '0.5'
info:
label: ServiceNow IT Incident Creator
description: Creates ServiceNow incidents for IT issues at Mars manufacturing plants, offices, and R&D facilities.
tags:
- it-support
- servicenow
- incident-management
capability:
exposes:
- type: mcp
namespace: it-incidents
port: 8080
tools:
- name: create-incident
description: Create a new ServiceNow incident for IT support.
inputParameters:
- name: short_description
in: body
type: string
description: Brief summary of the incident.
- name: category
in: body
type: string
description: Incident category.
- name: location
in: body
type: string
description: Facility or office location.
call: servicenow.create-incident
with:
short_description: '{{short_description}}'
category: '{{category}}'
location: '{{location}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://mars.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 operational data for Mars food-manufacturing workflows.
naftiko: '0.5'
info:
label: Mars Data Lookup 4
description: Retrieves operational data for Mars food-manufacturing workflows.
tags:
- food-manufacturing
- operations
capability:
exposes:
- type: mcp
namespace: mars-data
port: 8080
tools:
- name: get-data-4
description: Retrieves operational data for Mars food-manufacturing workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mars-data.get-data-4
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mars-data
baseUri: https://api.mars.com/data/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: data-4
path: /data-4/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-4
method: GET
Pulls historical sales data from SAP BW, runs demand forecasting in Azure Databricks, and publishes results to a Tableau dashboard for supply planning.
naftiko: '0.5'
info:
label: Supply Chain Demand Forecast Pipeline
description: Pulls historical sales data from SAP BW, runs demand forecasting in Azure Databricks, and publishes results to a Tableau dashboard for supply planning.
tags:
- supply-chain
- forecasting
- sap-bw
- azure-databricks
- tableau
capability:
exposes:
- type: mcp
namespace: demand-forecast
port: 8080
tools:
- name: run-demand-forecast
description: Execute a demand forecast pipeline from SAP BW to Databricks to Tableau.
inputParameters:
- name: product_category
in: body
type: string
description: Product category (confectionery, petcare, food).
- name: forecast_horizon
in: body
type: string
description: Forecast horizon (e.g., 12-weeks, 6-months).
steps:
- name: get-sales-data
type: call
call: sap-bw.get-sales-history
with:
category: '{{product_category}}'
- name: run-forecast
type: call
call: databricks.run-job
with:
job_name: demand_forecast
parameters: category={{product_category}}&horizon={{forecast_horizon}}
- name: publish-results
type: call
call: tableau.publish-datasource
with:
project_id: supply_planning
datasource_name: DemandForecast_{{product_category}}
data: '{{run-forecast.output}}'
consumes:
- type: http
namespace: sap-bw
baseUri: https://mars-bw.sap.com/sap/opu/odata/sap
authentication:
type: basic
username: $secrets.sap_bw_user
password: $secrets.sap_bw_password
resources:
- name: sales-history
path: /SALES_HISTORY_SRV/SalesData
inputParameters:
- name: category
in: query
operations:
- name: get-sales-history
method: GET
- type: http
namespace: databricks
baseUri: https://adb-mars.azuredatabricks.net/api/2.1
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: jobs
path: /jobs/run-now
operations:
- name: run-job
method: POST
- type: http
namespace: tableau
baseUri: https://mars-tableau.online.tableau.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: datasources
path: /sites/{{site_id}}/datasources
operations:
- name: publish-datasource
method: POST
Sends targeted consumer newsletters via MailChimp for Mars brands, pulling audience segments from Salesforce.
naftiko: '0.5'
info:
label: MailChimp Consumer Newsletter
description: Sends targeted consumer newsletters via MailChimp for Mars brands, pulling audience segments from Salesforce.
tags:
- marketing
- mailchimp
- salesforce
- newsletters
capability:
exposes:
- type: mcp
namespace: consumer-newsletters
port: 8080
tools:
- name: send-newsletter
description: Send a MailChimp newsletter to a Salesforce consumer segment.
inputParameters:
- name: segment_name
in: body
type: string
description: Salesforce consumer segment.
- name: brand
in: body
type: string
description: Mars brand name.
- name: subject_line
in: body
type: string
description: Email subject line.
steps:
- name: get-segment
type: call
call: salesforce.get-segment
with:
segment: '{{segment_name}}'
- name: send-campaign
type: call
call: mailchimp.send-campaign
with:
campaign_name: '{{brand}}_newsletter'
subject: '{{subject_line}}'
recipients: '{{get-segment.emails}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://mars.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: contacts
path: /sobjects/Contact
operations:
- name: get-segment
method: GET
- type: http
namespace: mailchimp
baseUri: https://us1.api.mailchimp.com/3.0
authentication:
type: basic
username: anystring
password: $secrets.mailchimp_api_key
resources:
- name: campaigns
path: /campaigns
operations:
- name: send-campaign
method: POST
Retrieves operational data for Mars food-manufacturing workflows.
naftiko: '0.5'
info:
label: Mars Data Lookup 6
description: Retrieves operational data for Mars food-manufacturing workflows.
tags:
- food-manufacturing
- operations
capability:
exposes:
- type: mcp
namespace: mars-data
port: 8080
tools:
- name: get-data-6
description: Retrieves operational data for Mars food-manufacturing workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mars-data.get-data-6
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mars-data
baseUri: https://api.mars.com/data/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: data-6
path: /data-6/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-6
method: GET
Triggers a Tableau dashboard refresh for supply chain analytics covering inventory levels, production throughput, and logistics KPIs.
naftiko: '0.5'
info:
label: Tableau Supply Chain Dashboard Refresh
description: Triggers a Tableau dashboard refresh for supply chain analytics covering inventory levels, production throughput, and logistics KPIs.
tags:
- supply-chain
- tableau
- reporting
capability:
exposes:
- type: mcp
namespace: supply-chain-bi
port: 8080
tools:
- name: refresh-dashboard
description: Trigger a Tableau dataset refresh for supply chain analytics.
inputParameters:
- name: dataset_id
in: body
type: string
description: Tableau dataset ID.
call: tableau.refresh-datasource
with:
dataset_id: '{{dataset_id}}'
consumes:
- type: http
namespace: tableau
baseUri: https://mars-tableau.online.tableau.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: datasources
path: /sites/{{site_id}}/datasources/{{dataset_id}}/refresh
inputParameters:
- name: dataset_id
in: path
operations:
- name: refresh-datasource
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 7
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- teams
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-7
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-7
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: teams.send-message
with:
channel_id: food-manufacturing
message: 'Workflow 7 complete: {{process.summary}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-7
method: POST
- type: http
namespace: teams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.teams_token
resources:
- name: messages
path: /messages
operations:
- name: send-message
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 6
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- jira
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-6
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-6
with:
identifier: '{{identifier}}'
- name: create-ticket
type: call
call: jira.create-issue
with:
project: FOOD
summary: Task from workflow 6
description: '{{process.details}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-6
method: POST
- type: http
namespace: jira
baseUri: https://mars.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issues
operations:
- name: create-issue
method: POST
Retrieves operational data for Mars food-manufacturing workflows.
naftiko: '0.5'
info:
label: Mars Data Lookup 7
description: Retrieves operational data for Mars food-manufacturing workflows.
tags:
- food-manufacturing
- operations
capability:
exposes:
- type: mcp
namespace: mars-data
port: 8080
tools:
- name: get-data-7
description: Retrieves operational data for Mars food-manufacturing workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mars-data.get-data-7
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mars-data
baseUri: https://api.mars.com/data/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: data-7
path: /data-7/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-7
method: GET
Reconciles warehouse inventory between SAP and physical counts, generating variance reports in SharePoint for logistics teams.
naftiko: '0.5'
info:
label: Warehouse Inventory Reconciliation
description: Reconciles warehouse inventory between SAP and physical counts, generating variance reports in SharePoint for logistics teams.
tags:
- warehouse
- inventory
- sap
- sharepoint
capability:
exposes:
- type: mcp
namespace: inventory-recon
port: 8080
tools:
- name: reconcile-inventory
description: Compare SAP inventory records with physical counts and generate variance report.
inputParameters:
- name: warehouse_id
in: body
type: string
description: SAP warehouse/storage location ID.
- name: count_date
in: body
type: string
description: Physical count date.
steps:
- name: get-sap-inventory
type: call
call: sap.get-inventory
with:
warehouse: '{{warehouse_id}}'
- name: store-variance-report
type: call
call: sharepoint.upload-file
with:
site_id: warehouse_ops
folder_path: InventoryRecon/{{warehouse_id}}/{{count_date}}
content: 'SAP inventory for {{warehouse_id}} as of {{count_date}}. Total SKUs: {{get-sap-inventory.sku_count}}.'
consumes:
- type: http
namespace: sap
baseUri: https://mars-s4.sap.com/sap/opu/odata/sap/MM_INVENTORY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: inventory
path: /A_MaterialStock
inputParameters:
- name: warehouse
in: query
operations:
- name: get-inventory
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:/{{folder_path}}
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: upload-file
method: PUT
Retrieves commodity prices from Reuters for key Mars ingredients including cocoa, sugar, and palm oil for procurement cost management.
naftiko: '0.5'
info:
label: Reuters Commodity Price Tracker
description: Retrieves commodity prices from Reuters for key Mars ingredients including cocoa, sugar, and palm oil for procurement cost management.
tags:
- procurement
- commodities
- reuters
- cost-management
capability:
exposes:
- type: mcp
namespace: commodity-prices
port: 8080
tools:
- name: get-commodity-price
description: Retrieve current commodity prices from Reuters.
inputParameters:
- name: commodity
in: body
type: string
description: Commodity name (cocoa, sugar, palm-oil, wheat, rice).
call: reuters.get-price
with:
commodity: '{{commodity}}'
consumes:
- type: http
namespace: reuters
baseUri: https://api.refinitiv.com/data/v1
authentication:
type: bearer
token: $secrets.reuters_token
resources:
- name: pricing
path: /pricing/snapshots/{{commodity}}
inputParameters:
- name: commodity
in: path
operations:
- name: get-price
method: GET
Manages Mars brand marketing campaign tasks in Asana, tracking creative development, media buys, and launch milestones.
naftiko: '0.5'
info:
label: Asana Brand Campaign Manager
description: Manages Mars brand marketing campaign tasks in Asana, tracking creative development, media buys, and launch milestones.
tags:
- marketing
- asana
- project-management
capability:
exposes:
- type: mcp
namespace: campaign-tasks
port: 8080
tools:
- name: create-campaign-task
description: Create a marketing campaign task in Asana.
inputParameters:
- name: project_id
in: body
type: string
description: Asana project ID.
- name: task_name
in: body
type: string
description: Task name.
- name: due_date
in: body
type: string
description: Due date.
call: asana.create-task
with:
project_id: '{{project_id}}'
name: '{{task_name}}'
due_on: '{{due_date}}'
consumes:
- type: http
namespace: asana
baseUri: https://app.asana.com/api/1.0
authentication:
type: bearer
token: $secrets.asana_token
resources:
- name: tasks
path: /tasks
operations:
- name: create-task
method: POST
Retrieves operational data for Mars food-manufacturing workflows.
naftiko: '0.5'
info:
label: Mars Data Lookup 3
description: Retrieves operational data for Mars food-manufacturing workflows.
tags:
- food-manufacturing
- operations
capability:
exposes:
- type: mcp
namespace: mars-data
port: 8080
tools:
- name: get-data-3
description: Retrieves operational data for Mars food-manufacturing workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mars-data.get-data-3
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mars-data
baseUri: https://api.mars.com/data/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: data-3
path: /data-3/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-3
method: GET
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 2
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- servicenow
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-2
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-2
with:
identifier: '{{identifier}}'
- name: create
type: call
call: servicenow.create-incident
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-2
method: POST
- type: http
namespace: servicenow
baseUri: https://mars.service-now.com/api/now/v1
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 3
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- slack
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-3
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-3
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: slack.post-message
with:
channel: '#food-manufacturing'
text: 'Completed workflow 3: {{process.summary}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-3
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /messages
operations:
- name: post-message
method: POST
Retrieves operational data for Mars food-manufacturing workflows.
naftiko: '0.5'
info:
label: Mars Data Lookup 2
description: Retrieves operational data for Mars food-manufacturing workflows.
tags:
- food-manufacturing
- operations
capability:
exposes:
- type: mcp
namespace: mars-data
port: 8080
tools:
- name: get-data-2
description: Retrieves operational data for Mars food-manufacturing workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mars-data.get-data-2
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mars-data
baseUri: https://api.mars.com/data/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: data-2
path: /data-2/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-2
method: GET
Calculates sales tax for Mars product orders using Avalara, ensuring tax compliance across jurisdictions.
naftiko: '0.5'
info:
label: Avalara Tax Compliance Calculator
description: Calculates sales tax for Mars product orders using Avalara, ensuring tax compliance across jurisdictions.
tags:
- tax
- avalara
- compliance
capability:
exposes:
- type: mcp
namespace: tax-compliance
port: 8080
tools:
- name: calculate-tax
description: Calculate sales tax for an order using Avalara.
inputParameters:
- name: order_amount
in: body
type: number
description: Order total amount.
- name: ship_to_state
in: body
type: string
description: Shipping destination state/province.
- name: product_tax_code
in: body
type: string
description: Product tax code.
call: avalara.calculate-tax
with:
amount: '{{order_amount}}'
destination: '{{ship_to_state}}'
tax_code: '{{product_tax_code}}'
consumes:
- type: http
namespace: avalara
baseUri: https://rest.avatax.com/api/v2
authentication:
type: basic
username: $secrets.avalara_account_id
password: $secrets.avalara_license_key
resources:
- name: transactions
path: /transactions/create
operations:
- name: calculate-tax
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
naftiko: '0.5'
info:
label: Mars Workflow 1
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
tags:
- food-manufacturing
- operations
- salesforce
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: mars-workflow-1
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Mars.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mars-ops.run-workflow-1
with:
identifier: '{{identifier}}'
- name: create
type: call
call: salesforce.create-account
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: mars-ops
baseUri: https://api.mars.com/operations/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-1
method: POST
- type: http
namespace: salesforce
baseUri: https://mars.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /accounts
operations:
- name: create-account
method: POST
Retrieves operational data for Mars food-manufacturing workflows.
naftiko: '0.5'
info:
label: Mars Data Lookup 1
description: Retrieves operational data for Mars food-manufacturing workflows.
tags:
- food-manufacturing
- operations
capability:
exposes:
- type: mcp
namespace: mars-data
port: 8080
tools:
- name: get-data-1
description: Retrieves operational data for Mars food-manufacturing workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mars-data.get-data-1
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mars-data
baseUri: https://api.mars.com/data/v1
authentication:
type: bearer
token: $secrets.mars_api_token
resources:
- name: data-1
path: /data-1/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-1
method: GET
Monitors Mattel e-commerce platform health via Dynatrace, tracking response times, error rates, and cart conversion metrics.
naftiko: '0.5'
info:
label: Dynatrace E-Commerce Platform Monitor
description: Monitors Mattel e-commerce platform health via Dynatrace, tracking response times, error rates, and cart conversion metrics.
tags:
- monitoring
- dynatrace
- e-commerce
capability:
exposes:
- type: mcp
namespace: ecommerce-monitoring
port: 8080
tools:
- name: check-ecommerce-health
description: Check Dynatrace health metrics for the Mattel e-commerce platform.
inputParameters:
- name: application_id
in: body
type: string
description: Dynatrace application entity ID.
call: dynatrace.get-metrics
with:
entity_id: '{{application_id}}'
consumes:
- type: http
namespace: dynatrace
baseUri: https://mattel.live.dynatrace.com/api/v2
authentication:
type: bearer
token: $secrets.dynatrace_token
resources:
- name: metrics
path: /metrics/query
inputParameters:
- name: entity_id
in: query
operations:
- name: get-metrics
method: GET
Uses Google Maps API to calculate shipping distances and transit times from Mattel distribution centers to retail partner locations.
naftiko: '0.5'
info:
label: Google Maps Distribution Center Locator
description: Uses Google Maps API to calculate shipping distances and transit times from Mattel distribution centers to retail partner locations.
tags:
- logistics
- google-maps
- distribution
capability:
exposes:
- type: mcp
namespace: distribution-routing
port: 8080
tools:
- name: calculate-shipping-distance
description: Calculate distance and transit time from a distribution center to a retailer.
inputParameters:
- name: dc_address
in: body
type: string
description: Distribution center address.
- name: retailer_address
in: body
type: string
description: Retailer location address.
call: google-maps.get-distance
with:
origin: '{{dc_address}}'
destination: '{{retailer_address}}'
consumes:
- type: http
namespace: google-maps
baseUri: https://maps.googleapis.com/maps/api
authentication:
type: apiKey
key: $secrets.google_maps_key
resources:
- name: distance
path: /distancematrix/json
inputParameters:
- name: origin
in: query
- name: destination
in: query
operations:
- name: get-distance
method: GET
Pulls content performance metrics from Adobe Analytics for Mattel brand websites, identifying top products and conversion paths.
naftiko: '0.5'
info:
label: Adobe Analytics Brand Website Performance
description: Pulls content performance metrics from Adobe Analytics for Mattel brand websites, identifying top products and conversion paths.
tags:
- analytics
- adobe-analytics
- e-commerce
capability:
exposes:
- type: mcp
namespace: brand-analytics
port: 8080
tools:
- name: get-brand-performance
description: Retrieve brand website performance from Adobe Analytics.
inputParameters:
- name: report_suite_id
in: body
type: string
description: Adobe Analytics report suite ID.
- name: date_range
in: body
type: string
description: Date range.
call: adobe-analytics.get-report
with:
rsid: '{{report_suite_id}}'
date_range: '{{date_range}}'
consumes:
- type: http
namespace: adobe-analytics
baseUri: https://analytics.adobe.io/api
authentication:
type: bearer
token: $secrets.adobe_analytics_token
resources:
- name: reports
path: /{{company_id}}/reports
operations:
- name: get-report
method: POST
Posts daily retail sales summaries to Slack channels, aggregating sell-through data by brand and top retailers.
naftiko: '0.5'
info:
label: Slack Daily Retail Sales Alert
description: Posts daily retail sales summaries to Slack channels, aggregating sell-through data by brand and top retailers.
tags:
- retail
- slack
- daily-reporting
- sales
capability:
exposes:
- type: mcp
namespace: daily-sales
port: 8080
tools:
- name: post-daily-sales
description: Post daily retail sales summary to Slack.
inputParameters:
- name: date
in: body
type: string
description: Reporting date in YYYY-MM-DD format.
steps:
- name: get-sales-data
type: call
call: salesforce.get-daily-sales
with:
date: '{{date}}'
- name: post-summary
type: call
call: slack.post-message
with:
channel: retail-sales-daily
text: 'Daily Sales ({{date}}): Total revenue: {{get-sales-data.total_revenue}}. Top brand: {{get-sales-data.top_brand}}. Top retailer: {{get-sales-data.top_retailer}}. Units: {{get-sales-data.total_units}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://mattel.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: sales
path: /sobjects/Daily_Sales__c
operations:
- name: get-daily-sales
method: GET
- 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
Pulls toy market share and competitive data from Circana, storing insights in SharePoint for brand management analysis.
naftiko: '0.5'
info:
label: Circana Market Share Intelligence
description: Pulls toy market share and competitive data from Circana, storing insights in SharePoint for brand management analysis.
tags:
- market-intelligence
- circana
- sharepoint
- competitive-analysis
capability:
exposes:
- type: mcp
namespace: market-intel
port: 8080
tools:
- name: get-market-share
description: Fetch toy market share data from Circana and store in SharePoint.
inputParameters:
- name: brand
in: body
type: string
description: Mattel brand name.
- name: category
in: body
type: string
description: Toy category (dolls, vehicles, games, preschool).
- name: region
in: body
type: string
description: Geographic region.
steps:
- name: get-data
type: call
call: circana.get-market-share
with:
brand: '{{brand}}'
category: '{{category}}'
region: '{{region}}'
- name: store-report
type: call
call: sharepoint.upload-file
with:
site_id: market_intelligence
folder_path: MarketShare/{{brand}}/{{region}}
content: '{{get-data.report}}'
consumes:
- type: http
namespace: circana
baseUri: https://api.circana.com/v1
authentication:
type: bearer
token: $secrets.circana_token
resources:
- name: market-share
path: /market-share
inputParameters:
- name: brand
in: query
- name: category
in: query
- name: region
in: query
operations:
- name: get-market-share
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:/{{folder_path}}
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: upload-file
method: PUT
Checks F5 Networks load balancer health for Mattel e-commerce and web application pools.
naftiko: '0.5'
info:
label: F5 Load Balancer Health Check
description: Checks F5 Networks load balancer health for Mattel e-commerce and web application pools.
tags:
- infrastructure
- f5-networks
- load-balancing
capability:
exposes:
- type: mcp
namespace: lb-health
port: 8080
tools:
- name: check-pool-health
description: Check F5 load balancer pool health.
inputParameters:
- name: pool_name
in: body
type: string
description: F5 pool name.
call: f5.get-pool-status
with:
pool: '{{pool_name}}'
consumes:
- type: http
namespace: f5
baseUri: https://mattel-f5.com/mgmt/tm
authentication:
type: basic
username: $secrets.f5_user
password: $secrets.f5_password
resources:
- name: pools
path: /ltm/pool/{{pool}}/members
inputParameters:
- name: pool
in: path
operations:
- name: get-pool-status
method: GET
Retrieves operational data for Mattel toys workflows.
naftiko: '0.5'
info:
label: Mattel Data Lookup 10
description: Retrieves operational data for Mattel toys workflows.
tags:
- toys
- operations
capability:
exposes:
- type: mcp
namespace: mattel-data
port: 8080
tools:
- name: get-data-10
description: Retrieves operational data for Mattel toys workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mattel-data.get-data-10
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mattel-data
baseUri: https://api.mattel.com/data/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: data-10
path: /data-10/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-10
method: GET
Monitors SolarWinds network health at Mattel manufacturing plants, distribution centers, and corporate offices.
naftiko: '0.5'
info:
label: SolarWinds Network Health Monitor
description: Monitors SolarWinds network health at Mattel manufacturing plants, distribution centers, and corporate offices.
tags:
- network
- solarwinds
- infrastructure
capability:
exposes:
- type: mcp
namespace: network-health
port: 8080
tools:
- name: get-network-status
description: Check SolarWinds network health at a Mattel location.
inputParameters:
- name: location
in: body
type: string
description: Facility or office location.
call: solarwinds.get-nodes
with:
location: '{{location}}'
consumes:
- type: http
namespace: solarwinds
baseUri: https://mattel-solarwinds.com/SolarWinds/InformationService/v3/Json
authentication:
type: basic
username: $secrets.solarwinds_user
password: $secrets.solarwinds_password
resources:
- name: nodes
path: /Query
operations:
- name: get-nodes
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 3
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- slack
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-3
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-3
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: slack.post-message
with:
channel: '#toys'
text: 'Completed workflow 3: {{process.summary}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-3
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /messages
operations:
- name: post-message
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 16
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- confluence
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-16
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-16
with:
identifier: '{{identifier}}'
- name: publish
type: call
call: confluence.create-page
with:
space: TOYS
title: Report 16
content: '{{process.report}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-16
method: POST
- type: http
namespace: confluence
baseUri: https://mattel.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 17
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- powerbi
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-17
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-17
with:
identifier: '{{identifier}}'
- name: refresh
type: call
call: powerbi.refresh-dataset
with:
dataset_id: workflow_17
data: '{{process.metrics}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-17
method: POST
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /datasets
operations:
- name: refresh-dataset
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 2
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- servicenow
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-2
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-2
with:
identifier: '{{identifier}}'
- name: create
type: call
call: servicenow.create-incident
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-2
method: POST
- type: http
namespace: servicenow
baseUri: https://mattel.service-now.com/api/now/v1
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
Synchronizes e-commerce orders from BigCommerce to SAP for fulfillment, ensuring inventory allocation and shipping scheduling.
naftiko: '0.5'
info:
label: E-Commerce Order Fulfillment Sync
description: Synchronizes e-commerce orders from BigCommerce to SAP for fulfillment, ensuring inventory allocation and shipping scheduling.
tags:
- e-commerce
- bigcommerce
- sap
- order-fulfillment
capability:
exposes:
- type: mcp
namespace: ecommerce-sync
port: 8080
tools:
- name: sync-ecommerce-orders
description: Pull BigCommerce orders and create SAP sales orders for fulfillment.
inputParameters:
- name: date_from
in: body
type: string
description: Start date for order retrieval.
- name: date_to
in: body
type: string
description: End date for order retrieval.
steps:
- name: get-orders
type: call
call: bigcommerce.get-orders
with:
min_date: '{{date_from}}'
max_date: '{{date_to}}'
- name: create-sap-orders
type: call
call: sap.create-sales-orders
with:
orders: '{{get-orders.orders}}'
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/{{store_hash}}/v2
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: orders
path: /orders
operations:
- name: get-orders
method: GET
- type: http
namespace: sap
baseUri: https://mattel-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-orders
method: POST
Manages a toy product recall by updating SAP inventory status, creating a ServiceNow crisis case, notifying retailers via Salesforce, and alerting the crisis team via Microsoft Teams.
naftiko: '0.5'
info:
label: Product Safety Recall Manager
description: Manages a toy product recall by updating SAP inventory status, creating a ServiceNow crisis case, notifying retailers via Salesforce, and alerting the crisis team via Microsoft Teams.
tags:
- product-safety
- recall
- sap
- servicenow
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: product-recall
port: 8080
tools:
- name: initiate-recall
description: Initiate a product recall across all systems and notify stakeholders.
inputParameters:
- name: product_id
in: body
type: string
description: SAP material/product ID.
- name: product_name
in: body
type: string
description: Product name.
- name: reason
in: body
type: string
description: Recall reason.
- name: batch_numbers
in: body
type: string
description: Comma-separated batch numbers affected.
steps:
- name: block-inventory
type: call
call: sap.block-material
with:
material_id: '{{product_id}}'
batches: '{{batch_numbers}}'
status: blocked
- name: create-case
type: call
call: servicenow.create-incident
with:
short_description: 'Product recall: {{product_name}}'
category: recall
priority: '1'
description: 'Product: {{product_name}} ({{product_id}}). Batches: {{batch_numbers}}. Reason: {{reason}}.'
- name: notify-retailers
type: call
call: salesforce.create-mass-notification
with:
subject: 'Recall: {{product_name}}'
message: 'Please remove {{product_name}} (batches: {{batch_numbers}}) from shelves. Reason: {{reason}}.'
- name: alert-crisis-team
type: call
call: msteams.send-message
with:
channel_id: crisis-management
text: 'RECALL INITIATED: {{product_name}} ({{product_id}}). Batches: {{batch_numbers}}. Reason: {{reason}}. ServiceNow: {{create-case.number}}.'
consumes:
- type: http
namespace: sap
baseUri: https://mattel-s4.sap.com/sap/opu/odata/sap/MM_MATERIAL_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: materials
path: /A_Material
operations:
- name: block-material
method: PATCH
- type: http
namespace: servicenow
baseUri: https://mattel.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: salesforce
baseUri: https://mattel.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: notifications
path: /sobjects/Mass_Notification__c
operations:
- name: create-mass-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/{{channel_id}}/channels/General/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves operational data for Mattel toys workflows.
naftiko: '0.5'
info:
label: Mattel Data Lookup 11
description: Retrieves operational data for Mattel toys workflows.
tags:
- toys
- operations
capability:
exposes:
- type: mcp
namespace: mattel-data
port: 8080
tools:
- name: get-data-11
description: Retrieves operational data for Mattel toys workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mattel-data.get-data-11
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mattel-data
baseUri: https://api.mattel.com/data/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: data-11
path: /data-11/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-11
method: GET
Manages toy safety compliance documents by storing test reports in SharePoint, logging certifications in ServiceNow, and archiving to Box.
naftiko: '0.5'
info:
label: Toy Safety Compliance Document Manager
description: Manages toy safety compliance documents by storing test reports in SharePoint, logging certifications in ServiceNow, and archiving to Box.
tags:
- compliance
- toy-safety
- sharepoint
- servicenow
- box
capability:
exposes:
- type: mcp
namespace: safety-compliance
port: 8080
tools:
- name: file-safety-report
description: File a toy safety test report across SharePoint, ServiceNow, and Box.
inputParameters:
- name: product_name
in: body
type: string
description: Product name.
- name: test_standard
in: body
type: string
description: Safety standard (ASTM-F963, EN-71, CPSIA).
- name: test_result
in: body
type: string
description: Test result (pass, fail, conditional).
- name: report_content
in: body
type: string
description: Test report content summary.
steps:
- name: store-report
type: call
call: sharepoint.upload-file
with:
site_id: product_safety
folder_path: TestReports/{{product_name}}/{{test_standard}}
content: '{{report_content}}'
- name: log-certification
type: call
call: servicenow.create-incident
with:
short_description: 'Safety cert: {{product_name}} - {{test_standard}}'
category: product_safety
description: 'Standard: {{test_standard}}. Result: {{test_result}}. Report: {{store-report.url}}.'
- name: archive-to-box
type: call
call: box.upload-file
with:
folder_id: safety_archive
file_name: '{{product_name}}_{{test_standard}}_report'
metadata: standard:{{test_standard}},result:{{test_result}},retention:10years
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}}
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: upload-file
method: PUT
- type: http
namespace: servicenow
baseUri: https://mattel.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: box
baseUri: https://upload.box.com/api/2.0
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: files
path: /files/content
operations:
- name: upload-file
method: POST
Pulls website traffic metrics from Google Analytics for Mattel brand websites including Barbie, Hot Wheels, and Fisher-Price.
naftiko: '0.5'
info:
label: Google Analytics Brand Website Tracker
description: Pulls website traffic metrics from Google Analytics for Mattel brand websites including Barbie, Hot Wheels, and Fisher-Price.
tags:
- marketing
- google-analytics
- web-analytics
capability:
exposes:
- type: mcp
namespace: web-analytics
port: 8080
tools:
- name: get-brand-traffic
description: Retrieve web traffic from Google Analytics for a Mattel brand website.
inputParameters:
- 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: ga.get-report
with:
start_date: '{{start_date}}'
end_date: '{{end_date}}'
consumes:
- type: http
namespace: ga
baseUri: https://analyticsdata.googleapis.com/v1beta
authentication:
type: bearer
token: $secrets.google_analytics_token
resources:
- name: reports
path: /properties/{{property_id}}:runReport
operations:
- name: get-report
method: POST
Retrieves operational data for Mattel toys workflows.
naftiko: '0.5'
info:
label: Mattel Data Lookup 13
description: Retrieves operational data for Mattel toys workflows.
tags:
- toys
- operations
capability:
exposes:
- type: mcp
namespace: mattel-data
port: 8080
tools:
- name: get-data-13
description: Retrieves operational data for Mattel toys workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mattel-data.get-data-13
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mattel-data
baseUri: https://api.mattel.com/data/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: data-13
path: /data-13/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-13
method: GET
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 15
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- slack
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-15
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-15
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: slack.post-message
with:
channel: '#toys'
text: 'Completed workflow 15: {{process.summary}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-15
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /messages
operations:
- name: post-message
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 29
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- powerbi
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-29
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-29
with:
identifier: '{{identifier}}'
- name: refresh
type: call
call: powerbi.refresh-dataset
with:
dataset_id: workflow_29
data: '{{process.metrics}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-29
method: POST
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /datasets
operations:
- name: refresh-dataset
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 28
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- confluence
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-28
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-28
with:
identifier: '{{identifier}}'
- name: publish
type: call
call: confluence.create-page
with:
space: TOYS
title: Report 28
content: '{{process.report}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-28
method: POST
- type: http
namespace: confluence
baseUri: https://mattel.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 14
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- servicenow
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-14
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-14
with:
identifier: '{{identifier}}'
- name: create
type: call
call: servicenow.create-incident
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-14
method: POST
- type: http
namespace: servicenow
baseUri: https://mattel.service-now.com/api/now/v1
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 1
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- salesforce
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-1
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-1
with:
identifier: '{{identifier}}'
- name: create
type: call
call: salesforce.create-account
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-1
method: POST
- type: http
namespace: salesforce
baseUri: https://mattel.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /accounts
operations:
- name: create-account
method: POST
Retrieves operational data for Mattel toys workflows.
naftiko: '0.5'
info:
label: Mattel Data Lookup 12
description: Retrieves operational data for Mattel toys workflows.
tags:
- toys
- operations
capability:
exposes:
- type: mcp
namespace: mattel-data
port: 8080
tools:
- name: get-data-12
description: Retrieves operational data for Mattel toys workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mattel-data.get-data-12
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mattel-data
baseUri: https://api.mattel.com/data/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: data-12
path: /data-12/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-12
method: GET
Retrieves operational data for Mattel toys workflows.
naftiko: '0.5'
info:
label: Mattel Data Lookup 9
description: Retrieves operational data for Mattel toys workflows.
tags:
- toys
- operations
capability:
exposes:
- type: mcp
namespace: mattel-data
port: 8080
tools:
- name: get-data-9
description: Retrieves operational data for Mattel toys workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mattel-data.get-data-9
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mattel-data
baseUri: https://api.mattel.com/data/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: data-9
path: /data-9/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-9
method: GET
Manages virtual toy fair events and retailer presentations via Zoom, creating meetings and sending invitations through Microsoft Outlook.
naftiko: '0.5'
info:
label: Zoom Toy Fair Virtual Event Manager
description: Manages virtual toy fair events and retailer presentations via Zoom, creating meetings and sending invitations through Microsoft Outlook.
tags:
- events
- zoom
- microsoft-outlook
- retail
capability:
exposes:
- type: mcp
namespace: virtual-events
port: 8080
tools:
- name: create-toy-fair-event
description: Create a Zoom meeting for a virtual toy fair event and send invitations.
inputParameters:
- name: event_name
in: body
type: string
description: Event name.
- name: date_time
in: body
type: string
description: Event date/time in ISO 8601 format.
- name: duration_minutes
in: body
type: integer
description: Event duration in minutes.
- name: invitee_emails
in: body
type: string
description: Comma-separated invitee emails.
steps:
- name: create-meeting
type: call
call: zoom.create-meeting
with:
topic: '{{event_name}}'
start_time: '{{date_time}}'
duration: '{{duration_minutes}}'
- name: send-invitations
type: call
call: outlook.send-email
with:
to: '{{invitee_emails}}'
subject: 'Invitation: {{event_name}}'
body: 'You are invited to {{event_name}} on {{date_time}}. Join via Zoom: {{create-meeting.join_url}}.'
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
- type: http
namespace: outlook
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: send-mail
path: /me/sendMail
operations:
- name: send-email
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 5
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- powerbi
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-5
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-5
with:
identifier: '{{identifier}}'
- name: refresh
type: call
call: powerbi.refresh-dataset
with:
dataset_id: workflow_5
data: '{{process.metrics}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-5
method: POST
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /datasets
operations:
- name: refresh-dataset
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 10
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- sharepoint
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-10
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-10
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: sharepoint.upload-document
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-10
method: POST
- type: http
namespace: sharepoint
baseUri: https://mattel.sharepoint.com/_api/v2.0
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: documents
path: /documents
operations:
- name: upload-document
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 11
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- hubspot
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-11
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-11
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: hubspot.send-email
with:
to: '{{process.email}}'
subject: Workflow 11 Complete
body: '{{process.summary}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-11
method: POST
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com/crm/v3
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: contacts
path: /contacts
operations:
- name: send-email
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 4
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- confluence
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-4
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-4
with:
identifier: '{{identifier}}'
- name: publish
type: call
call: confluence.create-page
with:
space: TOYS
title: Report 4
content: '{{process.report}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-4
method: POST
- type: http
namespace: confluence
baseUri: https://mattel.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Retrieves operational data for Mattel toys workflows.
naftiko: '0.5'
info:
label: Mattel Data Lookup 8
description: Retrieves operational data for Mattel toys workflows.
tags:
- toys
- operations
capability:
exposes:
- type: mcp
namespace: mattel-data
port: 8080
tools:
- name: get-data-8
description: Retrieves operational data for Mattel toys workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mattel-data.get-data-8
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mattel-data
baseUri: https://api.mattel.com/data/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: data-8
path: /data-8/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-8
method: GET
Retrieves operational data for Mattel toys workflows.
naftiko: '0.5'
info:
label: Mattel Data Lookup 15
description: Retrieves operational data for Mattel toys workflows.
tags:
- toys
- operations
capability:
exposes:
- type: mcp
namespace: mattel-data
port: 8080
tools:
- name: get-data-15
description: Retrieves operational data for Mattel toys workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mattel-data.get-data-15
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mattel-data
baseUri: https://api.mattel.com/data/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: data-15
path: /data-15/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-15
method: GET
Manages intellectual property licensing deals in Salesforce, tracking deal stages, royalty terms, and partner activations with Microsoft Teams notifications.
naftiko: '0.5'
info:
label: Licensing Deal Tracker
description: Manages intellectual property licensing deals in Salesforce, tracking deal stages, royalty terms, and partner activations with Microsoft Teams notifications.
tags:
- licensing
- intellectual-property
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: licensing-deals
port: 8080
tools:
- name: update-licensing-deal
description: Update a licensing deal stage in Salesforce and notify the IP team.
inputParameters:
- name: deal_id
in: body
type: string
description: Salesforce opportunity ID for the licensing deal.
- name: new_stage
in: body
type: string
description: New deal stage.
- name: royalty_rate
in: body
type: string
description: Agreed royalty rate percentage.
- name: notes
in: body
type: string
description: Deal notes.
steps:
- name: update-deal
type: call
call: salesforce.update-opportunity
with:
opportunity_id: '{{deal_id}}'
stage: '{{new_stage}}'
description: 'Royalty: {{royalty_rate}}%. {{notes}}'
- name: notify-ip-team
type: call
call: msteams.send-message
with:
channel_id: ip-licensing
text: 'Licensing deal {{deal_id}} moved to {{new_stage}}. Royalty rate: {{royalty_rate}}%. Notes: {{notes}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://mattel.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: update-opportunity
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/{{channel_id}}/channels/General/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors Mattel e-commerce application performance via New Relic, tracking response times, throughput, and error rates.
naftiko: '0.5'
info:
label: New Relic E-Commerce Performance Monitor
description: Monitors Mattel e-commerce application performance via New Relic, tracking response times, throughput, and error rates.
tags:
- monitoring
- new-relic
- e-commerce
capability:
exposes:
- type: mcp
namespace: ecommerce-apm
port: 8080
tools:
- name: get-ecommerce-health
description: Retrieve New Relic APM metrics for the e-commerce platform.
inputParameters:
- name: app_name
in: body
type: string
description: New Relic application name.
call: newrelic.get-app-metrics
with:
app_name: '{{app_name}}'
consumes:
- type: http
namespace: newrelic
baseUri: https://api.newrelic.com/v2
authentication:
type: apiKey
key: $secrets.newrelic_api_key
resources:
- name: applications
path: /applications.json
inputParameters:
- name: app_name
in: query
operations:
- name: get-app-metrics
method: GET
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 6
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- jira
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-6
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-6
with:
identifier: '{{identifier}}'
- name: create-ticket
type: call
call: jira.create-issue
with:
project: TOYS
summary: Task from workflow 6
description: '{{process.details}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-6
method: POST
- type: http
namespace: jira
baseUri: https://mattel.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issues
operations:
- name: create-issue
method: POST
Sends brand newsletters via MailChimp to consumer segments from Salesforce for Mattel product updates and promotions.
naftiko: '0.5'
info:
label: MailChimp Brand Newsletter Manager
description: Sends brand newsletters via MailChimp to consumer segments from Salesforce for Mattel product updates and promotions.
tags:
- marketing
- mailchimp
- salesforce
- newsletters
capability:
exposes:
- type: mcp
namespace: brand-newsletters
port: 8080
tools:
- name: send-brand-newsletter
description: Send a brand newsletter using Salesforce segments and MailChimp.
inputParameters:
- name: brand
in: body
type: string
description: Mattel brand.
- name: segment_name
in: body
type: string
description: Salesforce consumer segment.
- name: subject_line
in: body
type: string
description: Email subject line.
steps:
- name: get-segment
type: call
call: salesforce.get-segment
with:
segment: '{{segment_name}}'
- name: send-campaign
type: call
call: mailchimp.send-campaign
with:
campaign_name: '{{brand}}_newsletter'
subject: '{{subject_line}}'
recipients: '{{get-segment.emails}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://mattel.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: contacts
path: /sobjects/Contact
operations:
- name: get-segment
method: GET
- type: http
namespace: mailchimp
baseUri: https://us1.api.mailchimp.com/3.0
authentication:
type: basic
username: anystring
password: $secrets.mailchimp_api_key
resources:
- name: campaigns
path: /campaigns
operations:
- name: send-campaign
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 13
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- salesforce
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-13
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-13
with:
identifier: '{{identifier}}'
- name: create
type: call
call: salesforce.create-account
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-13
method: POST
- type: http
namespace: salesforce
baseUri: https://mattel.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /accounts
operations:
- name: create-account
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 12
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- datadog
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-12
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-12
with:
identifier: '{{identifier}}'
- name: push
type: call
call: datadog.submit-metrics
with:
metric_name: toys.workflow_12
data: '{{process.metrics}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-12
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: bearer
token: $secrets.datadog_token
resources:
- name: metrics
path: /metrics
operations:
- name: submit-metrics
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 7
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- teams
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-7
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-7
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: teams.send-message
with:
channel_id: toys
message: 'Workflow 7 complete: {{process.summary}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-7
method: POST
- type: http
namespace: teams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.teams_token
resources:
- name: messages
path: /messages
operations:
- name: send-message
method: POST
Creates and manages product development tasks in Microsoft Planner for toy design, prototyping, and production milestones.
naftiko: '0.5'
info:
label: Microsoft Planner Product Development Tracker
description: Creates and manages product development tasks in Microsoft Planner for toy design, prototyping, and production milestones.
tags:
- product-development
- microsoft-planner
- task-management
capability:
exposes:
- type: mcp
namespace: product-dev-tasks
port: 8080
tools:
- name: create-development-task
description: Create a product development task in Microsoft Planner.
inputParameters:
- name: task_title
in: body
type: string
description: Task title.
- name: plan_id
in: body
type: string
description: Planner plan ID.
- name: due_date
in: body
type: string
description: Due date.
- name: brand
in: body
type: string
description: Mattel brand.
call: planner.create-task
with:
plan_id: '{{plan_id}}'
title: '[{{brand}}] {{task_title}}'
due_date: '{{due_date}}'
consumes:
- type: http
namespace: planner
baseUri: https://graph.microsoft.com/v1.0/planner
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: tasks
path: /tasks
operations:
- name: create-task
method: POST
Monitors Mattel application performance via Datadog, tracking API latency, error rates, and resource utilization.
naftiko: '0.5'
info:
label: Datadog Application Performance Monitor
description: Monitors Mattel application performance via Datadog, tracking API latency, error rates, and resource utilization.
tags:
- monitoring
- datadog
- application-performance
capability:
exposes:
- type: mcp
namespace: app-monitoring
port: 8080
tools:
- name: get-app-metrics
description: Retrieve application metrics from Datadog.
inputParameters:
- name: service_name
in: body
type: string
description: Service name to monitor.
- name: timeframe
in: body
type: string
description: Time range.
call: datadog.get-metrics
with:
service: '{{service_name}}'
from: '{{timeframe}}'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apiKey
key: $secrets.datadog_api_key
resources:
- name: metrics
path: /query
operations:
- name: get-metrics
method: GET
Retrieves a SAP sales order by order number for Mattel retail fulfillment, returning customer, products, quantities, and delivery status.
naftiko: '0.5'
info:
label: SAP Sales Order Lookup
description: Retrieves a SAP sales order by order number for Mattel retail fulfillment, returning customer, products, quantities, and delivery status.
tags:
- retail
- erp
- sap
- order-management
capability:
exposes:
- type: mcp
namespace: sales-orders
port: 8080
tools:
- name: get-sales-order
description: Look up a SAP sales order by order number.
inputParameters:
- name: order_number
in: body
type: string
description: The SAP sales order number.
call: sap.get-sales-order
with:
order_number: '{{order_number}}'
consumes:
- type: http
namespace: sap
baseUri: https://mattel-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('{{order_number}}')
inputParameters:
- name: order_number
in: path
operations:
- name: get-sales-order
method: GET
Runs demand forecasting for Mattel products using Azure Databricks, pulling sales history from SAP BW and publishing to Tableau.
naftiko: '0.5'
info:
label: Inventory Demand Forecast Pipeline
description: Runs demand forecasting for Mattel products using Azure Databricks, pulling sales history from SAP BW and publishing to Tableau.
tags:
- supply-chain
- forecasting
- azure-databricks
- sap-bw
- tableau
capability:
exposes:
- type: mcp
namespace: demand-forecast
port: 8080
tools:
- name: run-demand-forecast
description: Execute a demand forecast for a product category.
inputParameters:
- name: brand
in: body
type: string
description: Mattel brand.
- name: category
in: body
type: string
description: Product category.
- name: horizon
in: body
type: string
description: Forecast horizon (e.g., 12-weeks).
steps:
- name: get-history
type: call
call: sap-bw.get-sales-history
with:
brand: '{{brand}}'
category: '{{category}}'
- name: run-model
type: call
call: databricks.run-job
with:
job_name: demand_forecast
parameters: brand={{brand}}&category={{category}}&horizon={{horizon}}
- name: publish-results
type: call
call: tableau.publish-datasource
with:
project_id: demand_planning
datasource_name: Forecast_{{brand}}_{{category}}
data: '{{run-model.output}}'
consumes:
- type: http
namespace: sap-bw
baseUri: https://mattel-bw.sap.com/sap/opu/odata/sap
authentication:
type: basic
username: $secrets.sap_bw_user
password: $secrets.sap_bw_password
resources:
- name: sales-history
path: /SALES_HISTORY_SRV/SalesData
operations:
- name: get-sales-history
method: GET
- type: http
namespace: databricks
baseUri: https://adb-mattel.azuredatabricks.net/api/2.1
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: jobs
path: /jobs/run-now
operations:
- name: run-job
method: POST
- type: http
namespace: tableau
baseUri: https://mattel-tableau.online.tableau.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: datasources
path: /sites/{{site_id}}/datasources
operations:
- name: publish-datasource
method: POST
Retrieves operational data for Mattel toys workflows.
naftiko: '0.5'
info:
label: Mattel Data Lookup 14
description: Retrieves operational data for Mattel toys workflows.
tags:
- toys
- operations
capability:
exposes:
- type: mcp
namespace: mattel-data
port: 8080
tools:
- name: get-data-14
description: Retrieves operational data for Mattel toys workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mattel-data.get-data-14
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mattel-data
baseUri: https://api.mattel.com/data/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: data-14
path: /data-14/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-14
method: GET
Monitors Cloudflare CDN performance for Mattel e-commerce and brand websites, checking cache hit ratios and page load metrics.
naftiko: '0.5'
info:
label: Cloudflare E-Commerce CDN Monitor
description: Monitors Cloudflare CDN performance for Mattel e-commerce and brand websites, checking cache hit ratios and page load metrics.
tags:
- infrastructure
- cloudflare
- e-commerce
- cdn
capability:
exposes:
- type: mcp
namespace: cdn-monitor
port: 8080
tools:
- name: get-cdn-performance
description: Retrieve CDN performance metrics from Cloudflare.
inputParameters:
- name: zone_id
in: body
type: string
description: Cloudflare zone ID.
call: cloudflare.get-analytics
with:
zone_id: '{{zone_id}}'
consumes:
- type: http
namespace: cloudflare
baseUri: https://api.cloudflare.com/client/v4
authentication:
type: bearer
token: $secrets.cloudflare_token
resources:
- name: analytics
path: /zones/{{zone_id}}/analytics/dashboard
inputParameters:
- name: zone_id
in: path
operations:
- name: get-analytics
method: GET
Retrieves operational data for Mattel toys workflows.
naftiko: '0.5'
info:
label: Mattel Data Lookup 6
description: Retrieves operational data for Mattel toys workflows.
tags:
- toys
- operations
capability:
exposes:
- type: mcp
namespace: mattel-data
port: 8080
tools:
- name: get-data-6
description: Retrieves operational data for Mattel toys workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mattel-data.get-data-6
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mattel-data
baseUri: https://api.mattel.com/data/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: data-6
path: /data-6/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-6
method: GET
Manages Mattel brand marketing campaign tasks in Asana, tracking creative development, retail activations, and media placements.
naftiko: '0.5'
info:
label: Asana Brand Marketing Tracker
description: Manages Mattel brand marketing campaign tasks in Asana, tracking creative development, retail activations, and media placements.
tags:
- marketing
- asana
- project-management
capability:
exposes:
- type: mcp
namespace: marketing-tasks
port: 8080
tools:
- name: create-marketing-task
description: Create a marketing task in Asana.
inputParameters:
- name: project_id
in: body
type: string
description: Asana project ID.
- name: task_name
in: body
type: string
description: Task name.
- name: due_date
in: body
type: string
description: Due date.
call: asana.create-task
with:
project_id: '{{project_id}}'
name: '{{task_name}}'
due_on: '{{due_date}}'
consumes:
- type: http
namespace: asana
baseUri: https://app.asana.com/api/1.0
authentication:
type: bearer
token: $secrets.asana_token
resources:
- name: tasks
path: /tasks
operations:
- name: create-task
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 23
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- hubspot
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-23
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-23
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: hubspot.send-email
with:
to: '{{process.email}}'
subject: Workflow 23 Complete
body: '{{process.summary}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-23
method: POST
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com/crm/v3
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: contacts
path: /contacts
operations:
- name: send-email
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 22
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- sharepoint
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-22
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-22
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: sharepoint.upload-document
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-22
method: POST
- type: http
namespace: sharepoint
baseUri: https://mattel.sharepoint.com/_api/v2.0
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: documents
path: /documents
operations:
- name: upload-document
method: POST
Generates Microsoft Excel financial reports for Mattel brand performance, pulling data from SAP and distributing via Microsoft Outlook.
naftiko: '0.5'
info:
label: Microsoft Excel Financial Report Builder
description: Generates Microsoft Excel financial reports for Mattel brand performance, pulling data from SAP and distributing via Microsoft Outlook.
tags:
- finance
- microsoft-excel
- sap
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: financial-reports
port: 8080
tools:
- name: generate-financial-report
description: Generate a brand financial report and email to stakeholders.
inputParameters:
- name: brand
in: body
type: string
description: Mattel brand.
- name: period
in: body
type: string
description: Reporting period.
- name: recipient_email
in: body
type: string
description: Recipient email.
steps:
- name: get-data
type: call
call: sap.get-financial-data
with:
brand: '{{brand}}'
period: '{{period}}'
- name: send-report
type: call
call: outlook.send-email
with:
to: '{{recipient_email}}'
subject: 'Financial Report: {{brand}} - {{period}}'
body: '{{brand}} financial summary for {{period}}. Revenue: {{get-data.revenue}}. Gross margin: {{get-data.margin}}%. Units sold: {{get-data.units}}.'
consumes:
- type: http
namespace: sap
baseUri: https://mattel-s4.sap.com/sap/opu/odata/sap/FIN_REPORTING_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: financial
path: /BrandPerformance
inputParameters:
- name: brand
in: query
- name: period
in: query
operations:
- name: get-financial-data
method: GET
- type: http
namespace: outlook
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: send-mail
path: /me/sendMail
operations:
- name: send-email
method: POST
Retrieves operational data for Mattel toys workflows.
naftiko: '0.5'
info:
label: Mattel Data Lookup 7
description: Retrieves operational data for Mattel toys workflows.
tags:
- toys
- operations
capability:
exposes:
- type: mcp
namespace: mattel-data
port: 8080
tools:
- name: get-data-7
description: Retrieves operational data for Mattel toys workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mattel-data.get-data-7
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mattel-data
baseUri: https://api.mattel.com/data/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: data-7
path: /data-7/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-7
method: GET
Retrieves approved brand design assets from Canva for Mattel marketing teams to use in campaigns and retail materials.
naftiko: '0.5'
info:
label: Canva Brand Design Asset Manager
description: Retrieves approved brand design assets from Canva for Mattel marketing teams to use in campaigns and retail materials.
tags:
- brand-management
- canva
- design
capability:
exposes:
- type: mcp
namespace: brand-assets
port: 8080
tools:
- name: get-design-asset
description: Retrieve an approved design asset from Canva.
inputParameters:
- name: design_id
in: body
type: string
description: Canva design ID.
call: canva.get-design
with:
design_id: '{{design_id}}'
consumes:
- type: http
namespace: canva
baseUri: https://api.canva.com/rest/v1
authentication:
type: bearer
token: $secrets.canva_token
resources:
- name: designs
path: /designs/{{design_id}}
inputParameters:
- name: design_id
in: path
operations:
- name: get-design
method: GET
Retrieves operational data for Mattel toys workflows.
naftiko: '0.5'
info:
label: Mattel Data Lookup 5
description: Retrieves operational data for Mattel toys workflows.
tags:
- toys
- operations
capability:
exposes:
- type: mcp
namespace: mattel-data
port: 8080
tools:
- name: get-data-5
description: Retrieves operational data for Mattel toys workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mattel-data.get-data-5
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mattel-data
baseUri: https://api.mattel.com/data/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: data-5
path: /data-5/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-5
method: GET
Retrieves Google Tag Manager configurations for Mattel brand e-commerce sites to validate analytics and marketing tag implementations.
naftiko: '0.5'
info:
label: Google Tag Manager Tracking Validator
description: Retrieves Google Tag Manager configurations for Mattel brand e-commerce sites to validate analytics and marketing tag implementations.
tags:
- marketing
- google-tag-manager
- analytics
capability:
exposes:
- type: mcp
namespace: gtm-validation
port: 8080
tools:
- name: validate-tags
description: Retrieve GTM container tags for validation.
inputParameters:
- name: container_id
in: body
type: string
description: GTM container ID.
call: gtm.get-tags
with:
container_id: '{{container_id}}'
consumes:
- type: http
namespace: gtm
baseUri: https://www.googleapis.com/tagmanager/v2
authentication:
type: bearer
token: $secrets.google_gtm_token
resources:
- name: tags
path: /accounts/{{account_id}}/containers/{{container_id}}/workspaces/default/tags
inputParameters:
- name: container_id
in: path
operations:
- name: get-tags
method: GET
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 9
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- box
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-9
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-9
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: box.upload-file
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-9
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
operations:
- name: upload-file
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 34
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- sharepoint
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-34
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-34
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: sharepoint.upload-document
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-34
method: POST
- type: http
namespace: sharepoint
baseUri: https://mattel.sharepoint.com/_api/v2.0
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: documents
path: /documents
operations:
- name: upload-document
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 20
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- tableau
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-20
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-20
with:
identifier: '{{identifier}}'
- name: refresh
type: call
call: tableau.publish-datasource
with:
dataset_id: workflow_20
data: '{{process.metrics}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-20
method: POST
- type: http
namespace: tableau
baseUri: https://mattel-tableau.online.tableau.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: datasources
path: /datasources
operations:
- name: publish-datasource
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 21
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- box
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-21
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-21
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: box.upload-file
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-21
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
operations:
- name: upload-file
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 35
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- hubspot
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-35
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-35
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: hubspot.send-email
with:
to: '{{process.email}}'
subject: Workflow 35 Complete
body: '{{process.summary}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-35
method: POST
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com/crm/v3
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: contacts
path: /contacts
operations:
- name: send-email
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 8
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- tableau
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-8
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-8
with:
identifier: '{{identifier}}'
- name: refresh
type: call
call: tableau.publish-datasource
with:
dataset_id: workflow_8
data: '{{process.metrics}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-8
method: POST
- type: http
namespace: tableau
baseUri: https://mattel-tableau.online.tableau.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: datasources
path: /datasources
operations:
- name: publish-datasource
method: POST
Manages 3D design asset versioning in Perforce for Mattel toy designers, tracking iterations and approvals.
naftiko: '0.5'
info:
label: Perforce Design Asset Version Control
description: Manages 3D design asset versioning in Perforce for Mattel toy designers, tracking iterations and approvals.
tags:
- product-design
- perforce
- version-control
- 3d-design
capability:
exposes:
- type: mcp
namespace: design-versioning
port: 8080
tools:
- name: get-asset-history
description: Retrieve version history for a design asset in Perforce.
inputParameters:
- name: depot_path
in: body
type: string
description: Perforce depot path of the design asset.
call: perforce.get-filelog
with:
path: '{{depot_path}}'
consumes:
- type: http
namespace: perforce
baseUri: https://mattel-perforce.com/api/v1
authentication:
type: bearer
token: $secrets.perforce_token
resources:
- name: files
path: /files/{{path}}/history
inputParameters:
- name: path
in: path
operations:
- name: get-filelog
method: GET
Retrieves operational data for Mattel toys workflows.
naftiko: '0.5'
info:
label: Mattel Data Lookup 4
description: Retrieves operational data for Mattel toys workflows.
tags:
- toys
- operations
capability:
exposes:
- type: mcp
namespace: mattel-data
port: 8080
tools:
- name: get-data-4
description: Retrieves operational data for Mattel toys workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mattel-data.get-data-4
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mattel-data
baseUri: https://api.mattel.com/data/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: data-4
path: /data-4/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-4
method: GET
Tracks vendor quality audits by creating ServiceNow audit records, uploading inspection reports to SharePoint, and notifying procurement via Slack.
naftiko: '0.5'
info:
label: Vendor Quality Audit Pipeline
description: Tracks vendor quality audits by creating ServiceNow audit records, uploading inspection reports to SharePoint, and notifying procurement via Slack.
tags:
- manufacturing
- vendor-management
- servicenow
- sharepoint
- slack
capability:
exposes:
- type: mcp
namespace: vendor-audits
port: 8080
tools:
- name: log-vendor-audit
description: Log a vendor quality audit across ServiceNow, SharePoint, and Slack.
inputParameters:
- name: vendor_name
in: body
type: string
description: Vendor name.
- name: audit_type
in: body
type: string
description: Audit type (safety, quality, environmental, social-compliance).
- name: score
in: body
type: string
description: Audit score.
- name: findings
in: body
type: string
description: Audit findings summary.
steps:
- name: create-record
type: call
call: servicenow.create-incident
with:
short_description: 'Vendor audit: {{vendor_name}} - {{audit_type}}'
category: vendor_audit
description: 'Score: {{score}}. Findings: {{findings}}.'
- name: store-report
type: call
call: sharepoint.upload-file
with:
site_id: vendor_management
folder_path: Audits/{{vendor_name}}/{{audit_type}}
content: 'Vendor: {{vendor_name}}. Type: {{audit_type}}. Score: {{score}}. Findings: {{findings}}.'
- name: notify-procurement
type: call
call: slack.post-message
with:
channel: vendor-audits
text: 'Vendor audit completed: {{vendor_name}} ({{audit_type}}). Score: {{score}}. ServiceNow: {{create-record.number}}.'
consumes:
- type: http
namespace: servicenow
baseUri: https://mattel.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: upload-file
method: PUT
- 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
Creates and manages product knowledge articles in Confluence for Mattel retail partners, documenting product features, assembly instructions, and FAQs.
naftiko: '0.5'
info:
label: Confluence Product Knowledge Base
description: Creates and manages product knowledge articles in Confluence for Mattel retail partners, documenting product features, assembly instructions, and FAQs.
tags:
- knowledge-management
- confluence
- retail-enablement
capability:
exposes:
- type: mcp
namespace: product-knowledge
port: 8080
tools:
- name: create-product-article
description: Create a product knowledge article in Confluence.
inputParameters:
- name: product_name
in: body
type: string
description: Product name.
- name: brand
in: body
type: string
description: Mattel brand.
- name: content
in: body
type: string
description: Article content.
call: confluence.create-page
with:
space_key: PRODUCTS
title: '{{brand}} - {{product_name}}'
content: '{{content}}'
consumes:
- type: http
namespace: confluence
baseUri: https://mattel.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_token
resources:
- name: pages
path: /content
operations:
- name: create-page
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 19
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- teams
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-19
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-19
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: teams.send-message
with:
channel_id: toys
message: 'Workflow 19 complete: {{process.summary}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-19
method: POST
- type: http
namespace: teams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.teams_token
resources:
- name: messages
path: /messages
operations:
- name: send-message
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 31
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- teams
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-31
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-31
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: teams.send-message
with:
channel_id: toys
message: 'Workflow 31 complete: {{process.summary}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-31
method: POST
- type: http
namespace: teams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.teams_token
resources:
- name: messages
path: /messages
operations:
- name: send-message
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 25
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- salesforce
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-25
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-25
with:
identifier: '{{identifier}}'
- name: create
type: call
call: salesforce.create-account
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-25
method: POST
- type: http
namespace: salesforce
baseUri: https://mattel.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /accounts
operations:
- name: create-account
method: POST
Manages product design reviews by uploading 3D models and concepts to SharePoint, creating Jira review tickets, and notifying the design team via Slack.
naftiko: '0.5'
info:
label: Product Design Review Pipeline
description: Manages product design reviews by uploading 3D models and concepts to SharePoint, creating Jira review tickets, and notifying the design team via Slack.
tags:
- product-design
- design-review
- sharepoint
- jira
- slack
capability:
exposes:
- type: mcp
namespace: design-review
port: 8080
tools:
- name: submit-design-review
description: Submit a toy design for team review across SharePoint, Jira, and Slack.
inputParameters:
- name: product_name
in: body
type: string
description: Product name.
- name: brand
in: body
type: string
description: Mattel brand.
- name: designer_name
in: body
type: string
description: Designer name.
- name: design_description
in: body
type: string
description: Design description and key features.
steps:
- name: upload-design
type: call
call: sharepoint.upload-file
with:
site_id: product_design
folder_path: Designs/{{brand}}/{{product_name}}
content: '{{design_description}}'
- name: create-review-ticket
type: call
call: jira.create-issue
with:
project: DESIGN
summary: 'Design review: {{product_name}} ({{brand}})'
description: 'Designer: {{designer_name}}. {{design_description}}. Files: {{upload-design.url}}'
issue_type: Task
- name: notify-team
type: call
call: slack.post-message
with:
channel: design-reviews-{{brand}}
text: 'New design review: {{product_name}} by {{designer_name}}. Jira: {{create-review-ticket.key}}. Files: {{upload-design.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:/{{folder_path}}
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: upload-file
method: PUT
- type: http
namespace: jira
baseUri: https://mattel.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: 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
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 24
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- datadog
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-24
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-24
with:
identifier: '{{identifier}}'
- name: push
type: call
call: datadog.submit-metrics
with:
metric_name: toys.workflow_24
data: '{{process.metrics}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-24
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: bearer
token: $secrets.datadog_token
resources:
- name: metrics
path: /metrics
operations:
- name: submit-metrics
method: POST
Retrieves a SAP Concur expense report for Mattel associates by report ID, returning line items, approvals, and reimbursement status.
naftiko: '0.5'
info:
label: SAP Concur Expense Report Lookup
description: Retrieves a SAP Concur expense report for Mattel associates by report ID, returning line items, approvals, and reimbursement status.
tags:
- travel
- expenses
- sap-concur
capability:
exposes:
- type: mcp
namespace: expense-reports
port: 8080
tools:
- name: get-expense-report
description: Retrieve a Concur expense report by ID.
inputParameters:
- name: report_id
in: body
type: string
description: Concur expense report ID.
call: concur.get-report
with:
report_id: '{{report_id}}'
consumes:
- type: http
namespace: concur
baseUri: https://us.api.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-report
method: GET
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 30
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- jira
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-30
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-30
with:
identifier: '{{identifier}}'
- name: create-ticket
type: call
call: jira.create-issue
with:
project: TOYS
summary: Task from workflow 30
description: '{{process.details}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-30
method: POST
- type: http
namespace: jira
baseUri: https://mattel.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issues
operations:
- name: create-issue
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 18
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- jira
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-18
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-18
with:
identifier: '{{identifier}}'
- name: create-ticket
type: call
call: jira.create-issue
with:
project: TOYS
summary: Task from workflow 18
description: '{{process.details}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-18
method: POST
- type: http
namespace: jira
baseUri: https://mattel.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issues
operations:
- name: create-issue
method: POST
Retrieves operational data for Mattel toys workflows.
naftiko: '0.5'
info:
label: Mattel Data Lookup 1
description: Retrieves operational data for Mattel toys workflows.
tags:
- toys
- operations
capability:
exposes:
- type: mcp
namespace: mattel-data
port: 8080
tools:
- name: get-data-1
description: Retrieves operational data for Mattel toys workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mattel-data.get-data-1
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mattel-data
baseUri: https://api.mattel.com/data/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: data-1
path: /data-1/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-1
method: GET
Monitors Azure DevOps build pipelines for Mattel digital platforms and e-commerce applications.
naftiko: '0.5'
info:
label: Azure DevOps CI Pipeline Monitor
description: Monitors Azure DevOps build pipelines for Mattel digital platforms and e-commerce applications.
tags:
- devops
- azure-devops
- ci-cd
capability:
exposes:
- type: mcp
namespace: devops-builds
port: 8080
tools:
- name: get-build-status
description: Check latest build status for an Azure DevOps pipeline.
inputParameters:
- name: project_name
in: body
type: string
description: Azure DevOps project name.
- name: pipeline_id
in: body
type: string
description: Pipeline definition ID.
call: azuredevops.get-latest-build
with:
project: '{{project_name}}'
definition_id: '{{pipeline_id}}'
consumes:
- type: http
namespace: azuredevops
baseUri: https://dev.azure.com/mattel
authentication:
type: basic
username: ''
password: $secrets.azuredevops_pat
resources:
- name: builds
path: /{{project}}/_apis/build/builds?definitions={{definition_id}}&$top=1&api-version=7.0
inputParameters:
- name: project
in: path
- name: definition_id
in: query
operations:
- name: get-latest-build
method: GET
Retrieves operational data for Mattel toys workflows.
naftiko: '0.5'
info:
label: Mattel Data Lookup 3
description: Retrieves operational data for Mattel toys workflows.
tags:
- toys
- operations
capability:
exposes:
- type: mcp
namespace: mattel-data
port: 8080
tools:
- name: get-data-3
description: Retrieves operational data for Mattel toys workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mattel-data.get-data-3
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mattel-data
baseUri: https://api.mattel.com/data/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: data-3
path: /data-3/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-3
method: GET
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 26
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- servicenow
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-26
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-26
with:
identifier: '{{identifier}}'
- name: create
type: call
call: servicenow.create-incident
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-26
method: POST
- type: http
namespace: servicenow
baseUri: https://mattel.service-now.com/api/now/v1
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 32
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- tableau
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-32
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-32
with:
identifier: '{{identifier}}'
- name: refresh
type: call
call: tableau.publish-datasource
with:
dataset_id: workflow_32
data: '{{process.metrics}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-32
method: POST
- type: http
namespace: tableau
baseUri: https://mattel-tableau.online.tableau.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: datasources
path: /datasources
operations:
- name: publish-datasource
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 33
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- box
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-33
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-33
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: box.upload-file
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-33
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
operations:
- name: upload-file
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 27
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- slack
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-27
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-27
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: slack.post-message
with:
channel: '#toys'
text: 'Completed workflow 27: {{process.summary}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-27
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /messages
operations:
- name: post-message
method: POST
Monitors GitHub Actions CI workflows for Mattel digital repositories, alerting developers via Slack on build failures.
naftiko: '0.5'
info:
label: GitHub Actions CI Pipeline Monitor
description: Monitors GitHub Actions CI workflows for Mattel digital repositories, alerting developers via Slack on build failures.
tags:
- devops
- github-actions
- slack
- ci-cd
capability:
exposes:
- type: mcp
namespace: ci-monitor
port: 8080
tools:
- name: monitor-ci
description: Check GitHub Actions workflow status and alert on failures.
inputParameters:
- name: repo_name
in: body
type: string
description: GitHub repository (org/repo).
- name: workflow_name
in: body
type: string
description: Workflow file name.
steps:
- name: get-runs
type: call
call: github.get-workflow-runs
with:
repo: '{{repo_name}}'
workflow: '{{workflow_name}}'
- name: notify-failure
type: call
call: slack.post-message
with:
channel: ci-alerts
text: CI {{get-runs.latest_run.conclusion}} for {{repo_name}}/{{workflow_name}}.
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/workflows/{{workflow}}/runs
inputParameters:
- name: repo
in: path
- name: workflow
in: path
operations:
- name: get-workflow-runs
method: GET
- 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 consumer marketing campaigns in HubSpot for Mattel brands, tracking engagement and conversion metrics.
naftiko: '0.5'
info:
label: HubSpot Consumer Marketing Campaign
description: Manages consumer marketing campaigns in HubSpot for Mattel brands, tracking engagement and conversion metrics.
tags:
- marketing
- hubspot
- campaigns
capability:
exposes:
- type: mcp
namespace: marketing-campaigns
port: 8080
tools:
- name: get-campaign-metrics
description: Retrieve HubSpot campaign performance metrics.
inputParameters:
- name: campaign_id
in: body
type: string
description: HubSpot campaign ID.
call: hubspot.get-campaign
with:
campaign_id: '{{campaign_id}}'
consumes:
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: campaigns
path: /marketing/v3/campaigns/{{campaign_id}}
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-campaign
method: GET
Retrieves operational data for Mattel toys workflows.
naftiko: '0.5'
info:
label: Mattel Data Lookup 2
description: Retrieves operational data for Mattel toys workflows.
tags:
- toys
- operations
capability:
exposes:
- type: mcp
namespace: mattel-data
port: 8080
tools:
- name: get-data-2
description: Retrieves operational data for Mattel toys workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mattel-data.get-data-2
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mattel-data
baseUri: https://api.mattel.com/data/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: data-2
path: /data-2/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-2
method: GET
Tracks Mattel gaming integrations on Microsoft Xbox platform, monitoring engagement metrics for Hot Wheels and other brand game tie-ins.
naftiko: '0.5'
info:
label: Xbox Gaming Integration Tracker
description: Tracks Mattel gaming integrations on Microsoft Xbox platform, monitoring engagement metrics for Hot Wheels and other brand game tie-ins.
tags:
- gaming
- microsoft-xbox
- brand-partnerships
capability:
exposes:
- type: mcp
namespace: gaming-integrations
port: 8080
tools:
- name: get-xbox-metrics
description: Retrieve Xbox gaming engagement metrics for a Mattel brand game integration.
inputParameters:
- name: game_title
in: body
type: string
description: Game title.
- name: integration_id
in: body
type: string
description: Integration identifier.
call: xbox.get-engagement
with:
title: '{{game_title}}'
integration: '{{integration_id}}'
consumes:
- type: http
namespace: xbox
baseUri: https://xapi.xboxlive.com/v1
authentication:
type: bearer
token: $secrets.xbox_token
resources:
- name: engagement
path: /titles/{{title}}/analytics
inputParameters:
- name: title
in: path
operations:
- name: get-engagement
method: GET
Runs Informatica data quality jobs on Mattel product master data to ensure consistency across global retail and e-commerce channels.
naftiko: '0.5'
info:
label: Informatica Product Master Data Pipeline
description: Runs Informatica data quality jobs on Mattel product master data to ensure consistency across global retail and e-commerce channels.
tags:
- data-quality
- informatica
- master-data
capability:
exposes:
- type: mcp
namespace: data-quality
port: 8080
tools:
- name: run-mdm-pipeline
description: Execute Informatica master data management pipeline.
inputParameters:
- name: job_name
in: body
type: string
description: Informatica job name.
- name: data_domain
in: body
type: string
description: Data domain (product, vendor, customer).
call: informatica.run-job
with:
job_name: '{{job_name}}'
domain: '{{data_domain}}'
consumes:
- type: http
namespace: informatica
baseUri: https://mattel-iics.informatica.com/saas/api/v2
authentication:
type: bearer
token: $secrets.informatica_token
resources:
- name: jobs
path: /job
operations:
- name: run-job
method: POST
Uploads Mattel brand video content to YouTube channels for Barbie, Hot Wheels, and other brands with metadata and scheduling.
naftiko: '0.5'
info:
label: YouTube Brand Content Uploader
description: Uploads Mattel brand video content to YouTube channels for Barbie, Hot Wheels, and other brands with metadata and scheduling.
tags:
- marketing
- youtube
- video
- brand-content
capability:
exposes:
- type: mcp
namespace: youtube-content
port: 8080
tools:
- name: upload-brand-video
description: Upload a video to a Mattel brand YouTube channel.
inputParameters:
- name: video_url
in: body
type: string
description: URL of the video file.
- name: title
in: body
type: string
description: Video title.
- name: description
in: body
type: string
description: Video description.
- name: brand
in: body
type: string
description: Mattel brand name.
call: youtube.upload-video
with:
video_url: '{{video_url}}'
title: '{{title}}'
description: '{{description}}'
channel: '{{brand}}'
consumes:
- type: http
namespace: youtube
baseUri: https://www.googleapis.com/upload/youtube/v3
authentication:
type: bearer
token: $secrets.youtube_token
resources:
- name: videos
path: /videos?part=snippet,status
operations:
- name: upload-video
method: POST
Triggers Microsoft Power Automate flows for automated order routing based on retailer priority, product availability, and warehouse proximity.
naftiko: '0.5'
info:
label: Microsoft Power Automate Order Routing
description: Triggers Microsoft Power Automate flows for automated order routing based on retailer priority, product availability, and warehouse proximity.
tags:
- automation
- microsoft-power-automate
- order-management
capability:
exposes:
- type: mcp
namespace: order-routing
port: 8080
tools:
- name: trigger-order-routing
description: Trigger a Power Automate flow for order routing.
inputParameters:
- name: order_id
in: body
type: string
description: Order ID.
- name: retailer_id
in: body
type: string
description: Retailer identifier.
call: powerautomate.trigger-flow
with:
order_id: '{{order_id}}'
retailer: '{{retailer_id}}'
consumes:
- type: http
namespace: powerautomate
baseUri: https://prod-123.westus.logic.azure.com/workflows
authentication:
type: apiKey
key: $secrets.power_automate_key
resources:
- name: flows
path: /order-routing/triggers/manual/paths/invoke
operations:
- name: trigger-flow
method: POST
Coordinates a new toy product launch by creating Salesforce opportunities for retail partners, uploading product assets to SharePoint, publishing social media teasers, and notifying the brand team via Slack.
naftiko: '0.5'
info:
label: New Toy Launch Orchestrator
description: Coordinates a new toy product launch by creating Salesforce opportunities for retail partners, uploading product assets to SharePoint, publishing social media teasers, and notifying the brand team via Slack.
tags:
- product-launch
- marketing
- salesforce
- sharepoint
- slack
- social-media
capability:
exposes:
- type: mcp
namespace: toy-launch
port: 8080
tools:
- name: launch-toy-product
description: Orchestrate a new toy product launch across CRM, content, and notification channels.
inputParameters:
- name: product_name
in: body
type: string
description: Name of the new toy product.
- name: brand
in: body
type: string
description: Mattel brand (Barbie, Hot Wheels, Fisher-Price, American Girl, UNO).
- name: launch_date
in: body
type: string
description: Launch date in YYYY-MM-DD format.
- name: target_age_group
in: body
type: string
description: Target age group.
steps:
- name: create-opportunity
type: call
call: salesforce.create-opportunity
with:
name: 'Launch: {{product_name}} ({{brand}})'
stage: Launch Preparation
close_date: '{{launch_date}}'
- name: create-asset-folder
type: call
call: sharepoint.create-folder
with:
site_id: product_assets
folder_path: Launches/{{brand}}/{{product_name}}
- name: notify-brand-team
type: call
call: slack.post-message
with:
channel: brand-{{brand}}-launches
text: 'New product launch: {{product_name}} ({{brand}}). Target age: {{target_age_group}}. Launch date: {{launch_date}}. SFDC: {{create-opportunity.id}}. Assets: {{create-asset-folder.url}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://mattel.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /sobjects/Opportunity
operations:
- name: create-opportunity
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: 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
Posts open Mattel positions to LinkedIn from Workday requisitions for creative, engineering, and manufacturing roles.
naftiko: '0.5'
info:
label: Workday Recruiting Pipeline
description: Posts open Mattel positions to LinkedIn from Workday requisitions for creative, engineering, and manufacturing roles.
tags:
- recruiting
- workday
- linkedin
capability:
exposes:
- type: mcp
namespace: recruiting
port: 8080
tools:
- name: publish-job
description: Pull a Workday requisition and publish to LinkedIn.
inputParameters:
- name: requisition_id
in: body
type: string
description: Workday job requisition ID.
steps:
- name: get-req
type: call
call: workday.get-requisition
with:
req_id: '{{requisition_id}}'
- name: post-job
type: call
call: linkedin.create-job-post
with:
title: '{{get-req.title}}'
description: '{{get-req.description}}'
location: '{{get-req.location}}'
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: requisitions
path: /recruiting/requisitions/{{req_id}}
inputParameters:
- name: req_id
in: path
operations:
- name: get-requisition
method: GET
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: job-posts
path: /jobPosts
operations:
- name: create-job-post
method: POST
Retrieves campaign performance metrics from Google Analytics including sessions, conversion rate, and revenue for a specified date range and campaign.
naftiko: '0.5'
info:
label: Google Analytics Campaign Performance
description: Retrieves campaign performance metrics from Google Analytics including sessions, conversion rate, and revenue for a specified date range and campaign.
tags:
- marketing
- google-analytics
- digital
capability:
exposes:
- type: mcp
namespace: marketing-analytics
port: 8080
tools:
- name: get-campaign-performance
description: Query Google Analytics for campaign performance metrics by campaign name and date range.
inputParameters:
- name: campaign_name
in: body
type: string
description: The marketing campaign name.
- 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: ga.get-report
with:
campaign_name: '{{campaign_name}}'
start_date: '{{start_date}}'
end_date: '{{end_date}}'
consumes:
- type: http
namespace: ga
baseUri: https://analyticsdata.googleapis.com/v1beta
authentication:
type: bearer
token: $secrets.google_analytics_token
resources:
- name: reports
path: /properties/{{property_id}}:runReport
operations:
- name: get-report
method: POST
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 14
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- servicenow
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-14
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-14
with:
identifier: '{{identifier}}'
- name: create
type: call
call: servicenow.create-incident
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-14
method: POST
- type: http
namespace: servicenow
baseUri: https://mondelez.service-now.com/api/now/v1
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 28
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- confluence
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-28
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-28
with:
identifier: '{{identifier}}'
- name: publish
type: call
call: confluence.create-page
with:
space: SNACKS
title: Report 28
content: '{{process.report}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-28
method: POST
- type: http
namespace: confluence
baseUri: https://mondelez.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Handles production quality incidents by pulling batch details from SAP, creating a quality case in ServiceNow, uploading test results to SharePoint, and alerting the quality team via Microsoft Teams.
naftiko: '0.5'
info:
label: Production Quality Incident Pipeline
description: Handles production quality incidents by pulling batch details from SAP, creating a quality case in ServiceNow, uploading test results to SharePoint, and alerting the quality team via Microsoft Teams.
tags:
- manufacturing
- quality
- sap
- servicenow
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: quality-incidents
port: 8080
tools:
- name: report-quality-incident
description: Given a production batch and defect type, pull batch data, create quality case, and alert team.
inputParameters:
- name: batch_number
in: body
type: string
description: The SAP production batch number.
- name: defect_type
in: body
type: string
description: Type of quality defect.
- name: plant
in: body
type: string
description: The manufacturing plant code.
steps:
- name: get-batch-details
type: call
call: sap.get-batch
with:
batch_number: '{{batch_number}}'
plant: '{{plant}}'
- name: create-quality-case
type: call
call: servicenow.create-incident
with:
short_description: 'Quality incident: {{defect_type}} - Batch {{batch_number}}'
category: quality
description: 'Batch {{batch_number}} at plant {{plant}}. Product: {{get-batch-details.MaterialDescription}}. Defect: {{defect_type}}.'
- name: upload-results
type: call
call: sharepoint.create-folder
with:
site_id: quality_site
folder_path: Incidents/{{batch_number}}_{{defect_type}}
- name: alert-quality-team
type: call
call: msteams.post-message
with:
team_id: quality-team
channel_id: incidents
message: 'QUALITY ALERT: {{defect_type}} in batch {{batch_number}} at plant {{plant}}. Product: {{get-batch-details.MaterialDescription}}. Case: {{create-quality-case.number}}.'
consumes:
- type: http
namespace: sap
baseUri: https://mondelez-s4.sap.com/sap/opu/odata/sap/MM_BATCH_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: batches
path: /A_Batch(Batch='{{batch_number}}',Plant='{{plant}}')
inputParameters:
- name: batch_number
in: path
- name: plant
in: path
operations:
- name: get-batch
method: GET
- type: http
namespace: servicenow
baseUri: https://mondelez.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: folders
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: 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
Checks the status of a SAP Concur expense report by report ID, returning approval state, total amount, and submission date.
naftiko: '0.5'
info:
label: SAP Concur Expense Report Status
description: Checks the status of a SAP Concur expense report by report ID, returning approval state, total amount, and submission date.
tags:
- finance
- sap-concur
- expense
capability:
exposes:
- type: mcp
namespace: expense-mgmt
port: 8080
tools:
- name: get-expense-report
description: Look up a SAP Concur expense report by report ID.
inputParameters:
- name: report_id
in: body
type: string
description: The Concur expense report ID.
call: concur.get-report
with:
report_id: '{{report_id}}'
consumes:
- type: http
namespace: concur
baseUri: https://us.api.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-report
method: GET
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 29
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- powerbi
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-29
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-29
with:
identifier: '{{identifier}}'
- name: refresh
type: call
call: powerbi.refresh-dataset
with:
dataset_id: workflow_29
data: '{{process.metrics}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-29
method: POST
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /datasets
operations:
- name: refresh-dataset
method: POST
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 15
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- slack
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-15
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-15
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: slack.post-message
with:
channel: '#snacks'
text: 'Completed workflow 15: {{process.summary}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-15
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /messages
operations:
- name: post-message
method: POST
Queries Snowflake for planogram compliance scores by retailer and category, returning compliance percentage, out-of-stock rate, and facing count accuracy.
naftiko: '0.5'
info:
label: Retailer Planogram Compliance Check
description: Queries Snowflake for planogram compliance scores by retailer and category, returning compliance percentage, out-of-stock rate, and facing count accuracy.
tags:
- retail
- planogram
- snowflake
capability:
exposes:
- type: mcp
namespace: planogram-compliance
port: 8080
tools:
- name: check-planogram-compliance
description: Query planogram compliance data by retailer and product category.
inputParameters:
- name: retailer_id
in: body
type: string
description: The retailer account ID.
- name: category
in: body
type: string
description: Product category (e.g., biscuits, chocolate, gum).
call: snowflake.execute-query
with:
retailer_id: '{{retailer_id}}'
category: '{{category}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://mondelez.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 17
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- powerbi
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-17
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-17
with:
identifier: '{{identifier}}'
- name: refresh
type: call
call: powerbi.refresh-dataset
with:
dataset_id: workflow_17
data: '{{process.metrics}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-17
method: POST
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /datasets
operations:
- name: refresh-dataset
method: POST
Plans retail promotions by creating a promotion record in Salesforce, generating a SAP pricing condition, uploading promotional materials to SharePoint, and notifying the sales team via Microsoft Teams.
naftiko: '0.5'
info:
label: Retail Promotion Planning Workflow
description: Plans retail promotions by creating a promotion record in Salesforce, generating a SAP pricing condition, uploading promotional materials to SharePoint, and notifying the sales team via Microsoft Teams.
tags:
- sales
- promotions
- salesforce
- sap
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: promotion-planning
port: 8080
tools:
- name: plan-retail-promotion
description: Given promotion details, create records across Salesforce, SAP, and SharePoint, then notify sales.
inputParameters:
- name: promotion_name
in: body
type: string
description: Name of the promotion.
- name: retailer_account_id
in: body
type: string
description: The Salesforce retailer account ID.
- name: discount_percentage
in: body
type: string
description: Discount percentage.
- name: start_date
in: body
type: string
description: Promotion start date.
- name: end_date
in: body
type: string
description: Promotion end date.
steps:
- name: create-promotion
type: call
call: salesforce.create-promotion
with:
name: '{{promotion_name}}'
account_id: '{{retailer_account_id}}'
discount: '{{discount_percentage}}'
start_date: '{{start_date}}'
end_date: '{{end_date}}'
- name: create-pricing-condition
type: call
call: sap.create-pricing
with:
promotion_id: '{{create-promotion.id}}'
discount: '{{discount_percentage}}'
start_date: '{{start_date}}'
end_date: '{{end_date}}'
- name: upload-materials
type: call
call: sharepoint.create-folder
with:
site_id: sales_site
folder_path: Promotions/{{promotion_name}}
- name: notify-sales
type: call
call: msteams.post-message
with:
team_id: sales-team
channel_id: promotions
message: 'Promotion ''{{promotion_name}}'' created. {{discount_percentage}}% off from {{start_date}} to {{end_date}}. Salesforce: {{create-promotion.id}}. Materials: {{upload-materials.webUrl}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://mondelez.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: promotions
path: /sobjects/Promotion__c
operations:
- name: create-promotion
method: POST
- type: http
namespace: sap
baseUri: https://mondelez-s4.sap.com/sap/opu/odata/sap/SD_PRICING_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: pricing-conditions
path: /A_PricingCondition
operations:
- name: create-pricing
method: POST
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: folders
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: 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
Retrieves campaign performance metrics from Google Analytics for a specified brand and date range, returning impressions, clicks, conversion rate, and cost per acquisition.
naftiko: '0.5'
info:
label: Google Analytics Brand Campaign Performance
description: Retrieves campaign performance metrics from Google Analytics for a specified brand and date range, returning impressions, clicks, conversion rate, and cost per acquisition.
tags:
- marketing
- google-analytics
- brand
capability:
exposes:
- type: mcp
namespace: brand-analytics
port: 8080
tools:
- name: get-campaign-performance
description: Query Google Analytics for brand campaign metrics by brand name and date range.
inputParameters:
- name: brand
in: body
type: string
description: The brand name (e.g., Oreo, Cadbury, Toblerone).
- 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: google-analytics.run-report
with:
brand: '{{brand}}'
start_date: '{{start_date}}'
end_date: '{{end_date}}'
consumes:
- type: http
namespace: google-analytics
baseUri: https://analyticsdata.googleapis.com/v1beta
authentication:
type: bearer
token: $secrets.ga_token
resources:
- name: reports
path: /properties/{{property_id}}:runReport
operations:
- name: run-report
method: POST
Generates vendor scorecards by pulling delivery performance from SAP, quality metrics from ServiceNow, and cost data from Snowflake, then uploading the scorecard to SharePoint and notifying procurement.
naftiko: '0.5'
info:
label: Vendor Scorecard Generator
description: Generates vendor scorecards by pulling delivery performance from SAP, quality metrics from ServiceNow, and cost data from Snowflake, then uploading the scorecard to SharePoint and notifying procurement.
tags:
- procurement
- vendor-management
- sap
- servicenow
- snowflake
- sharepoint
capability:
exposes:
- type: mcp
namespace: vendor-scorecards
port: 8080
tools:
- name: generate-vendor-scorecard
description: Given a vendor ID and period, compile delivery, quality, and cost metrics into a scorecard.
inputParameters:
- name: vendor_id
in: body
type: string
description: The SAP vendor ID.
- name: period
in: body
type: string
description: The evaluation period (e.g., Q1-2026).
steps:
- name: get-delivery-metrics
type: call
call: sap.get-vendor-deliveries
with:
vendor_id: '{{vendor_id}}'
period: '{{period}}'
- name: get-quality-metrics
type: call
call: servicenow.query-vendor-incidents
with:
vendor_id: '{{vendor_id}}'
- name: get-cost-metrics
type: call
call: snowflake.execute-query
with:
vendor_id: '{{vendor_id}}'
period: '{{period}}'
- name: upload-scorecard
type: call
call: sharepoint.create-folder
with:
site_id: procurement_site
folder_path: Scorecards/{{vendor_id}}/{{period}}
consumes:
- type: http
namespace: sap
baseUri: https://mondelez-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: vendor-deliveries
path: /A_PurchaseOrder?$filter=Supplier eq '{{vendor_id}}'
inputParameters:
- name: vendor_id
in: query
operations:
- name: get-vendor-deliveries
method: GET
- type: http
namespace: servicenow
baseUri: https://mondelez.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: vendor-incidents
path: /table/incident?sysparm_query=vendor={{vendor_id}}
inputParameters:
- name: vendor_id
in: query
operations:
- name: query-vendor-incidents
method: GET
- type: http
namespace: snowflake
baseUri: https://mondelez.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: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: folders
path: /{{site_id}}/drive/root:/{{folder_path}}
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: create-folder
method: POST
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 16
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- confluence
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-16
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-16
with:
identifier: '{{identifier}}'
- name: publish
type: call
call: confluence.create-page
with:
space: SNACKS
title: Report 16
content: '{{process.report}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-16
method: POST
- type: http
namespace: confluence
baseUri: https://mondelez.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Retrieves demand forecast data from SAP APO for a material and planning horizon, returning forecast quantities by period for supply planning.
naftiko: '0.5'
info:
label: SAP Demand Forecast Retrieval
description: Retrieves demand forecast data from SAP APO for a material and planning horizon, returning forecast quantities by period for supply planning.
tags:
- supply-chain
- demand-planning
- sap
capability:
exposes:
- type: mcp
namespace: demand-forecast
port: 8080
tools:
- name: get-demand-forecast
description: Look up demand forecast for a material over a planning horizon. Returns forecast quantities by period.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number.
- name: planning_horizon_weeks
in: body
type: string
description: Number of weeks in the planning horizon.
call: sap.get-forecast
with:
material_number: '{{material_number}}'
planning_horizon_weeks: '{{planning_horizon_weeks}}'
outputParameters:
- name: forecast_periods
type: string
mapping: $.d.results
- name: total_forecast_qty
type: string
mapping: $.d.TotalForecastQuantity
consumes:
- type: http
namespace: sap
baseUri: https://mondelez-s4.sap.com/sap/opu/odata/sap/APO_FORECAST_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: forecasts
path: /A_DemandForecast(Material='{{material_number}}',Horizon='{{planning_horizon_weeks}}')
inputParameters:
- name: material_number
in: path
- name: planning_horizon_weeks
in: path
operations:
- name: get-forecast
method: GET
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 12
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- datadog
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-12
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-12
with:
identifier: '{{identifier}}'
- name: push
type: call
call: datadog.submit-metrics
with:
metric_name: snacks.workflow_12
data: '{{process.metrics}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-12
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: bearer
token: $secrets.datadog_token
resources:
- name: metrics
path: /metrics
operations:
- name: submit-metrics
method: POST
Compiles brand performance data by pulling sales metrics from Snowflake, market share data from Salesforce, campaign ROI from Google Analytics, and distributing the review package via SharePoint and Microsoft Teams.
naftiko: '0.5'
info:
label: Brand Performance Review Pipeline
description: Compiles brand performance data by pulling sales metrics from Snowflake, market share data from Salesforce, campaign ROI from Google Analytics, and distributing the review package via SharePoint and Microsoft Teams.
tags:
- marketing
- brand-performance
- snowflake
- salesforce
- google-analytics
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: brand-performance
port: 8080
tools:
- name: generate-brand-review
description: Given a brand and period, compile a comprehensive brand performance review.
inputParameters:
- name: brand
in: body
type: string
description: The brand name.
- name: period
in: body
type: string
description: The review period.
steps:
- name: get-sales-metrics
type: call
call: snowflake.execute-query
with:
brand: '{{brand}}'
period: '{{period}}'
- name: get-market-share
type: call
call: salesforce.get-market-data
with:
brand: '{{brand}}'
period: '{{period}}'
- name: get-campaign-roi
type: call
call: ga.get-report
with:
campaign_name: '{{brand}}'
period: '{{period}}'
- name: upload-review
type: call
call: sharepoint.create-folder
with:
site_id: brand_site
folder_path: Reviews/{{brand}}/{{period}}
- name: notify-brand-team
type: call
call: msteams.post-message
with:
team_id: brand-{{brand}}-team
channel_id: performance
message: 'Brand performance review for {{brand}} ({{period}}) ready. Sales data: {{get-sales-metrics.rowCount}} records. Review: {{upload-review.webUrl}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://mondelez.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://mondelez.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: market-data
path: /query/?q=SELECT+Market_Share__c,Growth_Rate__c+FROM+Market_Data__c+WHERE+Brand__c='{{brand}}'+AND+Period__c='{{period}}'
inputParameters:
- name: brand
in: query
- name: period
in: query
operations:
- name: get-market-data
method: GET
- type: http
namespace: ga
baseUri: https://analyticsdata.googleapis.com/v1beta
authentication:
type: bearer
token: $secrets.google_analytics_token
resources:
- name: reports
path: /properties/{{property_id}}:runReport
operations:
- name: get-report
method: POST
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: folders
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: 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
Processes a travel expense approval by retrieving the Concur report, validating against Snowflake budget data, creating a Jira approval task, and notifying the finance team via Microsoft Teams.
naftiko: '0.5'
info:
label: Concur Travel Expense Approval Workflow
description: Processes a travel expense approval by retrieving the Concur report, validating against Snowflake budget data, creating a Jira approval task, and notifying the finance team via Microsoft Teams.
tags:
- finance
- travel
- concur
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: travel-expense-approval
port: 8080
tools:
- name: process-travel-expense
description: Given a Concur report ID and cost center, validate budget and route for approval.
inputParameters:
- name: report_id
in: body
type: string
description: The Concur expense report ID.
- name: cost_center
in: body
type: string
description: The cost center code.
steps:
- name: get-expense-report
type: call
call: concur.get-report
with:
report_id: '{{report_id}}'
- name: check-budget
type: call
call: snowflake.execute-query
with:
cost_center: '{{cost_center}}'
amount: '{{get-expense-report.Total}}'
- name: create-approval-task
type: call
call: jira.create-issue
with:
project: FIN
summary: 'Expense Approval: {{report_id}} - ${{get-expense-report.Total}}'
description: 'Concur report {{report_id}} for cost center {{cost_center}}. Total: ${{get-expense-report.Total}}. Budget remaining: ${{check-budget.remaining}}.'
issuetype: Task
- name: notify-finance
type: call
call: msteams.post-message
with:
team_id: finance-team
channel_id: expense-approvals
message: 'Expense report {{report_id}} pending approval. Amount: ${{get-expense-report.Total}}. Cost center: {{cost_center}}. Jira: {{create-approval-task.key}}.'
consumes:
- type: http
namespace: concur
baseUri: https://us.api.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-report
method: GET
- type: http
namespace: snowflake
baseUri: https://mondelez.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: jira
baseUri: https://mondelez.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
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
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 13
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- salesforce
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-13
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-13
with:
identifier: '{{identifier}}'
- name: create
type: call
call: salesforce.create-account
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-13
method: POST
- type: http
namespace: salesforce
baseUri: https://mondelez.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /accounts
operations:
- name: create-account
method: POST
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 11
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- hubspot
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-11
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-11
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: hubspot.send-email
with:
to: '{{process.email}}'
subject: Workflow 11 Complete
body: '{{process.summary}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-11
method: POST
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com/crm/v3
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: contacts
path: /contacts
operations:
- name: send-email
method: POST
Retrieves operational data for Mondelez snacks workflows.
naftiko: '0.5'
info:
label: Mondelez Data Lookup 9
description: Retrieves operational data for Mondelez snacks workflows.
tags:
- snacks
- operations
capability:
exposes:
- type: mcp
namespace: mondelez-data
port: 8080
tools:
- name: get-data-9
description: Retrieves operational data for Mondelez snacks workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mondelez-data.get-data-9
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mondelez-data
baseUri: https://api.mondelez.com/data/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: data-9
path: /data-9/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-9
method: GET
Queries Snowflake for Overall Equipment Effectiveness metrics for a manufacturing line and shift, returning availability, performance rate, quality rate, and calculated OEE percentage.
naftiko: '0.5'
info:
label: Manufacturing Line OEE Query
description: Queries Snowflake for Overall Equipment Effectiveness metrics for a manufacturing line and shift, returning availability, performance rate, quality rate, and calculated OEE percentage.
tags:
- manufacturing
- oee
- snowflake
capability:
exposes:
- type: mcp
namespace: manufacturing-oee
port: 8080
tools:
- name: get-line-oee
description: Query OEE metrics for a manufacturing line and shift from Snowflake.
inputParameters:
- name: line_id
in: body
type: string
description: The manufacturing line identifier.
- name: shift_date
in: body
type: string
description: The shift date in YYYY-MM-DD format.
- name: shift_number
in: body
type: string
description: The shift number (1, 2, or 3).
call: snowflake.execute-query
with:
line_id: '{{line_id}}'
shift_date: '{{shift_date}}'
shift_number: '{{shift_number}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://mondelez.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
Retrieves operational data for Mondelez snacks workflows.
naftiko: '0.5'
info:
label: Mondelez Data Lookup 8
description: Retrieves operational data for Mondelez snacks workflows.
tags:
- snacks
- operations
capability:
exposes:
- type: mcp
namespace: mondelez-data
port: 8080
tools:
- name: get-data-8
description: Retrieves operational data for Mondelez snacks workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mondelez-data.get-data-8
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mondelez-data
baseUri: https://api.mondelez.com/data/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: data-8
path: /data-8/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-8
method: GET
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 10
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- sharepoint
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-10
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-10
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: sharepoint.upload-document
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-10
method: POST
- type: http
namespace: sharepoint
baseUri: https://mondelez.sharepoint.com/_api/v2.0
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: documents
path: /documents
operations:
- name: upload-document
method: POST
Retrieves operational data for Mondelez snacks workflows.
naftiko: '0.5'
info:
label: Mondelez Data Lookup 11
description: Retrieves operational data for Mondelez snacks workflows.
tags:
- snacks
- operations
capability:
exposes:
- type: mcp
namespace: mondelez-data
port: 8080
tools:
- name: get-data-11
description: Retrieves operational data for Mondelez snacks workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mondelez-data.get-data-11
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mondelez-data
baseUri: https://api.mondelez.com/data/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: data-11
path: /data-11/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-11
method: GET
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 9
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- box
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-9
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-9
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: box.upload-file
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-9
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
operations:
- name: upload-file
method: POST
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 8
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- tableau
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-8
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-8
with:
identifier: '{{identifier}}'
- name: refresh
type: call
call: tableau.publish-datasource
with:
dataset_id: workflow_8
data: '{{process.metrics}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-8
method: POST
- type: http
namespace: tableau
baseUri: https://mondelez-tableau.online.tableau.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: datasources
path: /datasources
operations:
- name: publish-datasource
method: POST
Manages product recalls by identifying affected batches in SAP, pulling distribution data from Snowflake, creating a recall case in ServiceNow, notifying retailers via Salesforce, and alerting leadership via Microsoft Teams.
naftiko: '0.5'
info:
label: Recall Management Pipeline
description: Manages product recalls by identifying affected batches in SAP, pulling distribution data from Snowflake, creating a recall case in ServiceNow, notifying retailers via Salesforce, and alerting leadership via Microsoft Teams.
tags:
- food-safety
- recall
- sap
- snowflake
- servicenow
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: recall-management
port: 8080
tools:
- name: initiate-recall
description: Given a material and batch range, initiate a product recall across all systems.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number.
- name: batch_range_start
in: body
type: string
description: Start of affected batch range.
- name: batch_range_end
in: body
type: string
description: End of affected batch range.
- name: recall_reason
in: body
type: string
description: Reason for the recall.
steps:
- name: identify-batches
type: call
call: sap.query-batches
with:
material: '{{material_number}}'
batch_start: '{{batch_range_start}}'
batch_end: '{{batch_range_end}}'
- name: get-distribution
type: call
call: snowflake.execute-query
with:
material: '{{material_number}}'
batch_start: '{{batch_range_start}}'
batch_end: '{{batch_range_end}}'
- name: create-recall-case
type: call
call: servicenow.create-incident
with:
short_description: 'RECALL: {{material_number}} batches {{batch_range_start}}-{{batch_range_end}}'
category: product_recall
priority: '1'
description: '{{recall_reason}}. Affected batches: {{identify-batches.count}}. Distribution points: {{get-distribution.rowCount}}.'
- name: notify-retailers
type: call
call: salesforce.create-recall-notification
with:
material: '{{material_number}}'
recall_reason: '{{recall_reason}}'
case_number: '{{create-recall-case.number}}'
- name: alert-leadership
type: call
call: msteams.post-message
with:
team_id: executive-team
channel_id: urgent
message: 'PRODUCT RECALL: {{material_number}} (batches {{batch_range_start}}-{{batch_range_end}}). Reason: {{recall_reason}}. {{identify-batches.count}} batches, {{get-distribution.rowCount}} distribution points. Case: {{create-recall-case.number}}.'
consumes:
- type: http
namespace: sap
baseUri: https://mondelez-s4.sap.com/sap/opu/odata/sap/MM_BATCH_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: batches
path: /A_Batch?$filter=Material eq '{{material}}' and Batch ge '{{batch_start}}' and Batch le '{{batch_end}}'
inputParameters:
- name: material
in: query
- name: batch_start
in: query
- name: batch_end
in: query
operations:
- name: query-batches
method: GET
- type: http
namespace: snowflake
baseUri: https://mondelez.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
baseUri: https://mondelez.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: salesforce
baseUri: https://mondelez.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: recall-notifications
path: /sobjects/Recall_Notification__c
operations:
- name: create-recall-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-message
method: POST
Tracks distribution order fulfillment by querying SAP for delivery status, pulling customer data from Salesforce, and sending delivery updates to the distribution team via Microsoft Teams.
naftiko: '0.5'
info:
label: Distribution Order Fulfillment Tracker
description: Tracks distribution order fulfillment by querying SAP for delivery status, pulling customer data from Salesforce, and sending delivery updates to the distribution team via Microsoft Teams.
tags:
- distribution
- fulfillment
- sap
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: distribution-tracking
port: 8080
tools:
- name: track-distribution-order
description: Given a sales order number, pull delivery status from SAP, get customer details from Salesforce, and report status.
inputParameters:
- name: sales_order
in: body
type: string
description: The SAP sales order number.
steps:
- name: get-delivery-status
type: call
call: sap.get-delivery
with:
sales_order: '{{sales_order}}'
- name: get-customer
type: call
call: salesforce.get-account
with:
account_id: '{{get-delivery-status.SoldToParty}}'
- name: notify-distribution
type: call
call: msteams.post-message
with:
team_id: distribution-team
channel_id: fulfillment
message: 'Order {{sales_order}} for {{get-customer.Name}}: Status {{get-delivery-status.DeliveryStatus}}. Shipped: {{get-delivery-status.ShipDate}}. Tracking: {{get-delivery-status.TrackingNumber}}.'
consumes:
- type: http
namespace: sap
baseUri: https://mondelez-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_OutbDeliveryHeader?$filter=SalesOrder eq '{{sales_order}}'
inputParameters:
- name: sales_order
in: query
operations:
- name: get-delivery
method: GET
- type: http
namespace: salesforce
baseUri: https://mondelez.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: 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-message
method: POST
Retrieves operational data for Mondelez snacks workflows.
naftiko: '0.5'
info:
label: Mondelez Data Lookup 10
description: Retrieves operational data for Mondelez snacks workflows.
tags:
- snacks
- operations
capability:
exposes:
- type: mcp
namespace: mondelez-data
port: 8080
tools:
- name: get-data-10
description: Retrieves operational data for Mondelez snacks workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mondelez-data.get-data-10
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mondelez-data
baseUri: https://api.mondelez.com/data/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: data-10
path: /data-10/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-10
method: GET
Retrieves operational data for Mondelez snacks workflows.
naftiko: '0.5'
info:
label: Mondelez Data Lookup 12
description: Retrieves operational data for Mondelez snacks workflows.
tags:
- snacks
- operations
capability:
exposes:
- type: mcp
namespace: mondelez-data
port: 8080
tools:
- name: get-data-12
description: Retrieves operational data for Mondelez snacks workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mondelez-data.get-data-12
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mondelez-data
baseUri: https://api.mondelez.com/data/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: data-12
path: /data-12/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-12
method: GET
Retrieves the latest build pipeline run status from Azure DevOps for a specified project and pipeline, returning build number, status, result, and duration.
naftiko: '0.5'
info:
label: Azure DevOps Build Pipeline Status
description: Retrieves the latest build pipeline run status from Azure DevOps for a specified project and pipeline, returning build number, status, result, and duration.
tags:
- devops
- azure-devops
- ci-cd
capability:
exposes:
- type: mcp
namespace: build-pipelines
port: 8080
tools:
- name: get-pipeline-status
description: Look up the latest Azure DevOps pipeline run for a project. Returns build number, status, result, and duration.
inputParameters:
- name: project
in: body
type: string
description: The Azure DevOps project name.
- name: pipeline_id
in: body
type: string
description: The pipeline definition ID.
call: azuredevops.get-pipeline-run
with:
project: '{{project}}'
pipeline_id: '{{pipeline_id}}'
consumes:
- type: http
namespace: azuredevops
baseUri: https://dev.azure.com/mondelez
authentication:
type: basic
username: ''
password: $secrets.azuredevops_pat
resources:
- name: pipeline-runs
path: /{{project}}/_apis/pipelines/{{pipeline_id}}/runs?$top=1&api-version=7.0
inputParameters:
- name: project
in: path
- name: pipeline_id
in: path
operations:
- name: get-pipeline-run
method: GET
Coordinates a new product launch by creating a SAP material master record, setting up a Salesforce campaign, creating a Jira epic for marketing tasks, uploading brand assets to SharePoint, and notifying cross-functional teams via Microsoft Teams.
naftiko: '0.5'
info:
label: New Product Launch Coordination
description: Coordinates a new product launch by creating a SAP material master record, setting up a Salesforce campaign, creating a Jira epic for marketing tasks, uploading brand assets to SharePoint, and notifying cross-functional teams via Microsoft Teams.
tags:
- product-launch
- sap
- salesforce
- jira
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: product-launch
port: 8080
tools:
- name: coordinate-product-launch
description: Given new product details, create records in SAP, Salesforce, Jira, and SharePoint, then notify teams.
inputParameters:
- name: product_name
in: body
type: string
description: The new product name.
- name: brand
in: body
type: string
description: The brand (e.g., Oreo, Cadbury).
- name: category
in: body
type: string
description: Product category (e.g., biscuits, chocolate, gum).
- name: launch_date
in: body
type: string
description: Target launch date in YYYY-MM-DD format.
steps:
- name: create-material-master
type: call
call: sap.create-material
with:
product_name: '{{product_name}}'
brand: '{{brand}}'
category: '{{category}}'
- name: create-launch-campaign
type: call
call: salesforce.create-campaign
with:
name: 'Launch: {{product_name}}'
brand: '{{brand}}'
start_date: '{{launch_date}}'
- name: create-marketing-epic
type: call
call: jira.create-issue
with:
project: MKT
summary: 'Product Launch: {{product_name}} ({{brand}})'
description: 'Marketing tasks for {{product_name}} launch on {{launch_date}}. SAP material: {{create-material-master.MaterialNumber}}. Campaign: {{create-launch-campaign.id}}.'
issuetype: Epic
- name: create-asset-folder
type: call
call: sharepoint.create-folder
with:
site_id: brand-assets
folder_path: Launches/{{brand}}/{{product_name}}
- name: notify-teams
type: call
call: msteams.post-message
with:
team_id: product-team
channel_id: launches
message: 'New product launch: {{product_name}} ({{brand}}, {{category}}) targeting {{launch_date}}. SAP: {{create-material-master.MaterialNumber}}. Campaign: {{create-launch-campaign.id}}. Jira: {{create-marketing-epic.key}}. Assets: {{create-asset-folder.webUrl}}.'
consumes:
- type: http
namespace: sap
baseUri: https://mondelez-s4.sap.com/sap/opu/odata/sap/MM_MATERIAL_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: materials
path: /A_Material
operations:
- name: create-material
method: POST
- type: http
namespace: salesforce
baseUri: https://mondelez.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: campaigns
path: /sobjects/Campaign
operations:
- name: create-campaign
method: POST
- type: http
namespace: jira
baseUri: https://mondelez.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: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: folders
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: 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
Retrieves trade spend data from Salesforce for a retailer account and fiscal quarter, returning total spend, accruals, and remaining budget for trade promotion management.
naftiko: '0.5'
info:
label: Salesforce Trade Spend Lookup
description: Retrieves trade spend data from Salesforce for a retailer account and fiscal quarter, returning total spend, accruals, and remaining budget for trade promotion management.
tags:
- trade-spend
- salesforce
- finance
capability:
exposes:
- type: mcp
namespace: trade-spend
port: 8080
tools:
- name: get-trade-spend
description: Look up trade spend by retailer and fiscal quarter. Returns total spend, accruals, and remaining budget.
inputParameters:
- name: retailer_account_id
in: body
type: string
description: The Salesforce retailer account ID.
- name: fiscal_quarter
in: body
type: string
description: The fiscal quarter (e.g., Q1-2026, Q2-2026).
call: salesforce.query-trade-spend
with:
retailer_account_id: '{{retailer_account_id}}'
fiscal_quarter: '{{fiscal_quarter}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://mondelez.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: trade-spend
path: /query/?q=SELECT+Total_Spend__c,Accruals__c,Remaining_Budget__c+FROM+Trade_Spend__c+WHERE+Account__c='{{retailer_account_id}}'+AND+Fiscal_Quarter__c='{{fiscal_quarter}}'
inputParameters:
- name: retailer_account_id
in: query
- name: fiscal_quarter
in: query
operations:
- name: query-trade-spend
method: GET
Retrieves operational data for Mondelez snacks workflows.
naftiko: '0.5'
info:
label: Mondelez Data Lookup 13
description: Retrieves operational data for Mondelez snacks workflows.
tags:
- snacks
- operations
capability:
exposes:
- type: mcp
namespace: mondelez-data
port: 8080
tools:
- name: get-data-13
description: Retrieves operational data for Mondelez snacks workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mondelez-data.get-data-13
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mondelez-data
baseUri: https://api.mondelez.com/data/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: data-13
path: /data-13/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-13
method: GET
Creates an IT change request in ServiceNow, links documentation from Confluence, creates a Jira task for implementation, and notifies the change advisory board via Microsoft Teams.
naftiko: '0.5'
info:
label: IT Change Request Pipeline
description: Creates an IT change request in ServiceNow, links documentation from Confluence, creates a Jira task for implementation, and notifies the change advisory board via Microsoft Teams.
tags:
- it-service
- change-management
- servicenow
- confluence
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: change-management
port: 8080
tools:
- name: submit-change-request
description: Given change details, create a ServiceNow change, link docs, and notify the CAB.
inputParameters:
- name: change_summary
in: body
type: string
description: Summary of the change.
- name: change_type
in: body
type: string
description: Type of change.
- name: doc_page_id
in: body
type: string
description: Confluence page ID with implementation details.
steps:
- name: create-change
type: call
call: servicenow.create-change
with:
short_description: '{{change_summary}}'
type: '{{change_type}}'
- name: get-doc
type: call
call: confluence.get-page
with:
page_id: '{{doc_page_id}}'
- name: create-task
type: call
call: jira.create-issue
with:
project_key: ITOPS
summary: 'Implement: {{change_summary}}'
description: 'Change: {{create-change.number}}. Docs: {{get-doc._links.webui}}.'
issue_type: Task
- name: notify-cab
type: call
call: msteams.post-message
with:
team_id: it-operations-team
channel_id: change-advisory
message: 'Change request {{create-change.number}}: {{change_summary}}. Type: {{change_type}}. Jira: {{create-task.key}}.'
consumes:
- type: http
namespace: servicenow
baseUri: https://mondelez.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: changes
path: /table/change_request
operations:
- name: create-change
method: POST
- type: http
namespace: confluence
baseUri: https://mondelez.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_api_token
resources:
- name: pages
path: /content/{{page_id}}
inputParameters:
- name: page_id
in: path
operations:
- name: get-page
method: GET
- type: http
namespace: jira
baseUri: https://mondelez.atlassian.net/rest/api/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-message
method: POST
Traces ingredient sourcing by querying SAP for batch genealogy, pulling supplier certifications from SharePoint, and generating a traceability report in Snowflake for food safety compliance.
naftiko: '0.5'
info:
label: Ingredient Traceability Pipeline
description: Traces ingredient sourcing by querying SAP for batch genealogy, pulling supplier certifications from SharePoint, and generating a traceability report in Snowflake for food safety compliance.
tags:
- supply-chain
- traceability
- food-safety
- sap
- sharepoint
- snowflake
capability:
exposes:
- type: mcp
namespace: ingredient-traceability
port: 8080
tools:
- name: trace-ingredient
description: Given a finished goods batch and ingredient, trace the supply chain from source to product.
inputParameters:
- name: finished_batch
in: body
type: string
description: The finished goods batch number.
- name: ingredient_material
in: body
type: string
description: The ingredient material number.
steps:
- name: get-batch-genealogy
type: call
call: sap.get-batch-genealogy
with:
batch: '{{finished_batch}}'
material: '{{ingredient_material}}'
- name: get-supplier-certs
type: call
call: sharepoint.get-file
with:
site_id: supplier_compliance_site
file_path: Certifications/{{get-batch-genealogy.SupplierID}}
- name: generate-trace-report
type: call
call: snowflake.execute-query
with:
finished_batch: '{{finished_batch}}'
ingredient_material: '{{ingredient_material}}'
consumes:
- type: http
namespace: sap
baseUri: https://mondelez-s4.sap.com/sap/opu/odata/sap/MM_BATCH_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: batch-genealogy
path: /A_BatchGenealogy(Batch='{{batch}}',Material='{{material}}')
inputParameters:
- name: batch
in: path
- name: material
in: path
operations:
- name: get-batch-genealogy
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:/{{file_path}}
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: get-file
method: GET
- type: http
namespace: snowflake
baseUri: https://mondelez.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
Retrieves operational data for Mondelez snacks workflows.
naftiko: '0.5'
info:
label: Mondelez Data Lookup 14
description: Retrieves operational data for Mondelez snacks workflows.
tags:
- snacks
- operations
capability:
exposes:
- type: mcp
namespace: mondelez-data
port: 8080
tools:
- name: get-data-14
description: Retrieves operational data for Mondelez snacks workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mondelez-data.get-data-14
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mondelez-data
baseUri: https://api.mondelez.com/data/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: data-14
path: /data-14/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-14
method: GET
Retrieves operational data for Mondelez snacks workflows.
naftiko: '0.5'
info:
label: Mondelez Data Lookup 15
description: Retrieves operational data for Mondelez snacks workflows.
tags:
- snacks
- operations
capability:
exposes:
- type: mcp
namespace: mondelez-data
port: 8080
tools:
- name: get-data-15
description: Retrieves operational data for Mondelez snacks workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mondelez-data.get-data-15
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mondelez-data
baseUri: https://api.mondelez.com/data/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: data-15
path: /data-15/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-15
method: GET
Responds to supply chain disruptions by querying SAP for affected purchase orders, creating a ServiceNow incident, notifying the logistics team via Microsoft Teams, and updating the disruption tracker in Salesforce.
naftiko: '0.5'
info:
label: Supply Chain Disruption Response
description: Responds to supply chain disruptions by querying SAP for affected purchase orders, creating a ServiceNow incident, notifying the logistics team via Microsoft Teams, and updating the disruption tracker in Salesforce.
tags:
- supply-chain
- disruption
- sap
- servicenow
- microsoft-teams
- salesforce
capability:
exposes:
- type: mcp
namespace: supply-chain-disruption
port: 8080
tools:
- name: respond-to-disruption
description: Given a supplier ID and disruption type, identify affected POs, create incident, notify logistics, and update tracker.
inputParameters:
- name: supplier_id
in: body
type: string
description: The SAP supplier ID.
- name: disruption_type
in: body
type: string
description: Type of disruption (e.g., delay, shortage, quality_issue).
- name: affected_plant
in: body
type: string
description: The affected manufacturing plant code.
steps:
- name: get-affected-pos
type: call
call: sap.query-open-pos
with:
supplier_id: '{{supplier_id}}'
plant: '{{affected_plant}}'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Supply chain disruption: {{disruption_type}} - Supplier {{supplier_id}}'
category: supply_chain
description: 'Disruption type: {{disruption_type}}. Supplier: {{supplier_id}}. Plant: {{affected_plant}}. Affected POs: {{get-affected-pos.count}}.'
- name: notify-logistics
type: call
call: msteams.post-message
with:
team_id: supply-chain-team
channel_id: disruptions
message: 'ALERT: {{disruption_type}} from supplier {{supplier_id}} affecting plant {{affected_plant}}. {{get-affected-pos.count}} POs impacted. Incident: {{create-incident.number}}.'
- name: update-tracker
type: call
call: salesforce.create-disruption
with:
supplier_id: '{{supplier_id}}'
disruption_type: '{{disruption_type}}'
incident_number: '{{create-incident.number}}'
consumes:
- type: http
namespace: sap
baseUri: https://mondelez-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?$filter=Supplier eq '{{supplier_id}}' and Plant eq '{{plant}}' and Status eq 'Open'
inputParameters:
- name: supplier_id
in: query
- name: plant
in: query
operations:
- name: query-open-pos
method: GET
- type: http
namespace: servicenow
baseUri: https://mondelez.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/{{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: salesforce
baseUri: https://mondelez.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: disruptions
path: /sobjects/Supply_Chain_Disruption__c
operations:
- name: create-disruption
method: POST
Plans warehouse capacity by querying current stock levels from SAP, forecasting inbound shipments from Snowflake, and alerting the logistics team via Microsoft Teams when capacity thresholds are at risk.
naftiko: '0.5'
info:
label: Warehouse Capacity Planning
description: Plans warehouse capacity by querying current stock levels from SAP, forecasting inbound shipments from Snowflake, and alerting the logistics team via Microsoft Teams when capacity thresholds are at risk.
tags:
- supply-chain
- warehouse
- sap
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: warehouse-planning
port: 8080
tools:
- name: assess-warehouse-capacity
description: Given a warehouse code, assess current capacity and forecast inbound volumes.
inputParameters:
- name: warehouse_code
in: body
type: string
description: The SAP warehouse/storage location code.
- name: forecast_days
in: body
type: string
description: Number of days to forecast.
steps:
- name: get-current-stock
type: call
call: sap.get-warehouse-stock
with:
warehouse: '{{warehouse_code}}'
- name: forecast-inbound
type: call
call: snowflake.execute-query
with:
warehouse: '{{warehouse_code}}'
days: '{{forecast_days}}'
- name: alert-logistics
type: call
call: msteams.post-message
with:
team_id: logistics-team
channel_id: capacity
message: 'Warehouse {{warehouse_code}} capacity: Current stock {{get-current-stock.TotalQuantity}} units. {{forecast_days}}-day inbound forecast: {{forecast-inbound.projected_inbound}} units.'
consumes:
- type: http
namespace: sap
baseUri: https://mondelez-s4.sap.com/sap/opu/odata/sap/MM_WAREHOUSE_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: warehouse-stock
path: /A_WarehouseStock?$filter=StorageLocation eq '{{warehouse}}'
inputParameters:
- name: warehouse
in: query
operations:
- name: get-warehouse-stock
method: GET
- type: http
namespace: snowflake
baseUri: https://mondelez.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
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
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 1
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- salesforce
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-1
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-1
with:
identifier: '{{identifier}}'
- name: create
type: call
call: salesforce.create-account
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-1
method: POST
- type: http
namespace: salesforce
baseUri: https://mondelez.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /accounts
operations:
- name: create-account
method: POST
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 3
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- slack
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-3
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-3
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: slack.post-message
with:
channel: '#snacks'
text: 'Completed workflow 3: {{process.summary}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-3
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /messages
operations:
- name: post-message
method: POST
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 2
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- servicenow
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-2
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-2
with:
identifier: '{{identifier}}'
- name: create
type: call
call: servicenow.create-incident
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-2
method: POST
- type: http
namespace: servicenow
baseUri: https://mondelez.service-now.com/api/now/v1
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
Routes SAP Concur expense reports for approval by pulling report details, resolving the manager in Workday, creating an approval task in ServiceNow, and notifying via Microsoft Teams.
naftiko: '0.5'
info:
label: Expense Report Approval Workflow
description: Routes SAP Concur expense reports for approval by pulling report details, resolving the manager in Workday, creating an approval task in ServiceNow, and notifying via Microsoft Teams.
tags:
- finance
- expense
- sap-concur
- workday
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: expense-approval
port: 8080
tools:
- name: route-expense-approval
description: Given an expense report ID and employee ID, route the report for manager approval.
inputParameters:
- name: report_id
in: body
type: string
description: The Concur expense report ID.
- name: employee_id
in: body
type: string
description: The Workday employee ID of the submitter.
steps:
- name: get-report
type: call
call: concur.get-report
with:
report_id: '{{report_id}}'
- name: get-manager
type: call
call: workday.get-worker
with:
worker_id: '{{employee_id}}'
- name: create-approval-task
type: call
call: servicenow.create-incident
with:
short_description: 'Expense approval: {{report_id}} - {{get-report.Total}}'
category: expense_approval
assigned_to: '{{get-manager.manager_id}}'
description: Expense report {{report_id}} from {{get-manager.full_name}} for {{get-report.Total}} {{get-report.CurrencyCode}}.
- name: notify-manager
type: call
call: msteams.post-message
with:
team_id: finance-team
channel_id: expense-approvals
message: 'Expense report {{report_id}} ({{get-report.Total}} {{get-report.CurrencyCode}}) from {{get-manager.full_name}} pending your approval. Case: {{create-approval-task.number}}.'
consumes:
- type: http
namespace: concur
baseUri: https://us.api.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-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://mondelez.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/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 6
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- jira
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-6
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-6
with:
identifier: '{{identifier}}'
- name: create-ticket
type: call
call: jira.create-issue
with:
project: SNAC
summary: Task from workflow 6
description: '{{process.details}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-6
method: POST
- type: http
namespace: jira
baseUri: https://mondelez.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issues
operations:
- name: create-issue
method: POST
Queries Snowflake for products approaching shelf life expiry within a specified number of days, returning material number, batch, expiry date, and warehouse location.
naftiko: '0.5'
info:
label: Snowflake Shelf Life Expiry Report
description: Queries Snowflake for products approaching shelf life expiry within a specified number of days, returning material number, batch, expiry date, and warehouse location.
tags:
- quality
- shelf-life
- snowflake
capability:
exposes:
- type: mcp
namespace: shelf-life-monitoring
port: 8080
tools:
- name: query-expiring-products
description: Query Snowflake for products expiring within a given number of days at a specific warehouse.
inputParameters:
- name: days_until_expiry
in: body
type: string
description: Number of days until expiry threshold.
- name: warehouse_code
in: body
type: string
description: The warehouse location code.
call: snowflake.execute-query
with:
days_until_expiry: '{{days_until_expiry}}'
warehouse_code: '{{warehouse_code}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://mondelez.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-query
method: POST
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 7
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- teams
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-7
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-7
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: teams.send-message
with:
channel_id: snacks
message: 'Workflow 7 complete: {{process.summary}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-7
method: POST
- type: http
namespace: teams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.teams_token
resources:
- name: messages
path: /messages
operations:
- name: send-message
method: POST
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 5
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- powerbi
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-5
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-5
with:
identifier: '{{identifier}}'
- name: refresh
type: call
call: powerbi.refresh-dataset
with:
dataset_id: workflow_5
data: '{{process.metrics}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-5
method: POST
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /datasets
operations:
- name: refresh-dataset
method: POST
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 4
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- confluence
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-4
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-4
with:
identifier: '{{identifier}}'
- name: publish
type: call
call: confluence.create-page
with:
space: SNACKS
title: Report 4
content: '{{process.report}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-4
method: POST
- type: http
namespace: confluence
baseUri: https://mondelez.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Retrieves metadata for a Tableau workbook including owner, last refresh time, and data source connections.
naftiko: '0.5'
info:
label: Tableau Workbook Metadata
description: Retrieves metadata for a Tableau workbook including owner, last refresh time, and data source connections.
tags:
- analytics
- tableau
capability:
exposes:
- type: mcp
namespace: bi-metadata
port: 8080
tools:
- name: get-workbook-metadata
description: Retrieve Tableau workbook metadata by workbook ID.
inputParameters:
- name: workbook_id
in: body
type: string
description: The Tableau workbook ID.
call: tableau.get-workbook
with:
workbook_id: '{{workbook_id}}'
consumes:
- type: http
namespace: tableau
baseUri: https://mondelez.online.tableau.com/api/3.21
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: workbooks
path: /sites/{{site_id}}/workbooks/{{workbook_id}}
inputParameters:
- name: workbook_id
in: path
operations:
- name: get-workbook
method: GET
Launches a digital marketing campaign by creating a Salesforce campaign, configuring Google Analytics tracking, uploading creative assets to SharePoint, and notifying the brand team via Microsoft Teams.
naftiko: '0.5'
info:
label: Marketing Campaign Launch Pipeline
description: Launches a digital marketing campaign by creating a Salesforce campaign, configuring Google Analytics tracking, uploading creative assets to SharePoint, and notifying the brand team via Microsoft Teams.
tags:
- marketing
- campaign
- salesforce
- google-analytics
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: campaign-launch
port: 8080
tools:
- name: launch-marketing-campaign
description: Given campaign details, create Salesforce campaign, set up analytics, upload assets, and notify brand team.
inputParameters:
- name: campaign_name
in: body
type: string
description: The campaign name.
- name: brand
in: body
type: string
description: The brand name.
- name: start_date
in: body
type: string
description: Campaign start date.
- name: budget
in: body
type: string
description: Campaign budget in USD.
steps:
- name: create-campaign
type: call
call: salesforce.create-campaign
with:
name: '{{campaign_name}}'
brand: '{{brand}}'
start_date: '{{start_date}}'
budget: '{{budget}}'
- name: setup-tracking
type: call
call: ga.create-audience
with:
campaign_name: '{{campaign_name}}'
- name: upload-assets
type: call
call: sharepoint.create-folder
with:
site_id: marketing_site
folder_path: Campaigns/{{brand}}/{{campaign_name}}
- name: notify-brand-team
type: call
call: msteams.post-message
with:
team_id: brand-{{brand}}-team
channel_id: campaigns
message: 'Campaign ''{{campaign_name}}'' launched for {{brand}}. Budget: ${{budget}}. Salesforce: {{create-campaign.id}}. Assets: {{upload-assets.webUrl}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://mondelez.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: campaigns
path: /sobjects/Campaign
operations:
- name: create-campaign
method: POST
- type: http
namespace: ga
baseUri: https://analyticsadmin.googleapis.com/v1beta
authentication:
type: bearer
token: $secrets.google_analytics_token
resources:
- name: audiences
path: /properties/{{property_id}}/audiences
operations:
- name: create-audience
method: POST
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: folders
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: 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
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 35
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- hubspot
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-35
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-35
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: hubspot.send-email
with:
to: '{{process.email}}'
subject: Workflow 35 Complete
body: '{{process.summary}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-35
method: POST
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com/crm/v3
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: contacts
path: /contacts
operations:
- name: send-email
method: POST
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 21
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- box
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-21
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-21
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: box.upload-file
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-21
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
operations:
- name: upload-file
method: POST
Schedules a food safety audit by creating an audit record in Salesforce, a Jira task for the quality team, uploading the audit checklist to SharePoint, and notifying the plant quality manager via Microsoft Teams.
naftiko: '0.5'
info:
label: Food Safety Audit Scheduling
description: Schedules a food safety audit by creating an audit record in Salesforce, a Jira task for the quality team, uploading the audit checklist to SharePoint, and notifying the plant quality manager via Microsoft Teams.
tags:
- quality
- food-safety
- salesforce
- jira
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: food-safety-audit
port: 8080
tools:
- name: schedule-food-safety-audit
description: Given plant and audit details, create records in Salesforce, Jira, and SharePoint, then notify the quality manager.
inputParameters:
- name: plant_code
in: body
type: string
description: The SAP plant code.
- name: audit_type
in: body
type: string
description: Audit type (e.g., FSSC 22000, BRC, internal).
- name: audit_date
in: body
type: string
description: Scheduled audit date in YYYY-MM-DD format.
steps:
- name: create-audit-record
type: call
call: salesforce.create-audit
with:
plant_code: '{{plant_code}}'
audit_type: '{{audit_type}}'
audit_date: '{{audit_date}}'
- name: create-audit-task
type: call
call: jira.create-issue
with:
project: QA
summary: 'Food Safety Audit: {{audit_type}} at {{plant_code}} on {{audit_date}}'
description: 'Prepare for {{audit_type}} audit at plant {{plant_code}} on {{audit_date}}. Salesforce record: {{create-audit-record.id}}.'
issuetype: Task
- name: upload-checklist
type: call
call: sharepoint.create-folder
with:
site_id: quality-site
folder_path: Audits/{{plant_code}}/{{audit_type}}-{{audit_date}}
- name: notify-quality-manager
type: call
call: msteams.post-message
with:
team_id: quality-team
channel_id: audits
message: 'Food safety audit scheduled: {{audit_type}} at plant {{plant_code}} on {{audit_date}}. Salesforce: {{create-audit-record.id}}. Jira: {{create-audit-task.key}}. Docs: {{upload-checklist.webUrl}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://mondelez.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: audits
path: /sobjects/Food_Safety_Audit__c
operations:
- name: create-audit
method: POST
- type: http
namespace: jira
baseUri: https://mondelez.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: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: folders
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: 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
Retrieves the current sprint summary for an R&D project from Jira, returning sprint name, total story points, completed points, and remaining items for product development tracking.
naftiko: '0.5'
info:
label: Jira R&D Sprint Summary
description: Retrieves the current sprint summary for an R&D project from Jira, returning sprint name, total story points, completed points, and remaining items for product development tracking.
tags:
- r-and-d
- jira
- product-development
capability:
exposes:
- type: mcp
namespace: rd-sprints
port: 8080
tools:
- name: get-sprint-summary
description: Look up the active sprint for a Jira R&D board. Returns sprint name, total points, completed points, and remaining.
inputParameters:
- name: board_id
in: body
type: string
description: The Jira board ID for the R&D project.
call: jira.get-active-sprint
with:
board_id: '{{board_id}}'
consumes:
- type: http
namespace: jira
baseUri: https://mondelez.atlassian.net/rest/agile/1.0
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_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 operational data for Mondelez snacks workflows.
naftiko: '0.5'
info:
label: Mondelez Data Lookup 5
description: Retrieves operational data for Mondelez snacks workflows.
tags:
- snacks
- operations
capability:
exposes:
- type: mcp
namespace: mondelez-data
port: 8080
tools:
- name: get-data-5
description: Retrieves operational data for Mondelez snacks workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mondelez-data.get-data-5
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mondelez-data
baseUri: https://api.mondelez.com/data/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: data-5
path: /data-5/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-5
method: GET
Fetches an employee's profile from Workday by worker ID, including department, title, manager, and location for HR operations.
naftiko: '0.5'
info:
label: Workday Employee Profile
description: Fetches an employee's profile from Workday by worker ID, including department, title, manager, and location for HR operations.
tags:
- hr
- workday
capability:
exposes:
- type: mcp
namespace: hr-employee
port: 8080
tools:
- name: get-employee-profile
description: Retrieve a Workday employee profile 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}}'
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
Queries SAP Plant Maintenance for equipment status by functional location, returning equipment ID, description, condition, and last maintenance date.
naftiko: '0.5'
info:
label: SAP Plant Equipment Status
description: Queries SAP Plant Maintenance for equipment status by functional location, returning equipment ID, description, condition, and last maintenance date.
tags:
- manufacturing
- maintenance
- sap
capability:
exposes:
- type: mcp
namespace: equipment-status
port: 8080
tools:
- name: get-equipment-status
description: Look up equipment at a SAP functional location. Returns equipment ID, description, condition, and last maintenance date.
inputParameters:
- name: functional_location
in: body
type: string
description: The SAP functional location ID.
call: sap.get-equipment
with:
functional_location: '{{functional_location}}'
outputParameters:
- name: equipment_id
type: string
mapping: $.d.Equipment
- name: description
type: string
mapping: $.d.EquipmentDescription
- name: condition
type: string
mapping: $.d.ConditionRating
- name: last_maintenance
type: string
mapping: $.d.LastMaintenanceDate
consumes:
- type: http
namespace: sap
baseUri: https://mondelez-s4.sap.com/sap/opu/odata/sap/PM_EQUIPMENT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: equipment
path: /A_Equipment?$filter=FunctionalLocation eq '{{functional_location}}'
inputParameters:
- name: functional_location
in: query
operations:
- name: get-equipment
method: GET
Queries SAP S/4HANA for the procurement status of a raw material purchase order, returning vendor, delivery date, quantity, and goods receipt status.
naftiko: '0.5'
info:
label: SAP Raw Material Procurement Status
description: Queries SAP S/4HANA for the procurement status of a raw material purchase order, returning vendor, delivery date, quantity, and goods receipt status.
tags:
- procurement
- supply-chain
- sap
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: get-procurement-status
description: Look up a SAP purchase order for raw materials. Returns vendor, delivery date, ordered quantity, and goods receipt status.
inputParameters:
- name: purchase_order
in: body
type: string
description: The SAP purchase order number.
call: sap.get-purchase-order
with:
purchase_order: '{{purchase_order}}'
outputParameters:
- name: vendor
type: string
mapping: $.d.Vendor
- name: delivery_date
type: string
mapping: $.d.DeliveryDate
- name: ordered_qty
type: string
mapping: $.d.OrderedQuantity
- name: gr_status
type: string
mapping: $.d.GoodsReceiptStatus
consumes:
- type: http
namespace: sap
baseUri: https://mondelez-s4.sap.com/sap/opu/odata/sap/MM_PO_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: purchase-orders
path: /A_PurchaseOrder('{{purchase_order}}')
inputParameters:
- name: purchase_order
in: path
operations:
- name: get-purchase-order
method: GET
Retrieves operational data for Mondelez snacks workflows.
naftiko: '0.5'
info:
label: Mondelez Data Lookup 4
description: Retrieves operational data for Mondelez snacks workflows.
tags:
- snacks
- operations
capability:
exposes:
- type: mcp
namespace: mondelez-data
port: 8080
tools:
- name: get-data-4
description: Retrieves operational data for Mondelez snacks workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mondelez-data.get-data-4
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mondelez-data
baseUri: https://api.mondelez.com/data/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: data-4
path: /data-4/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-4
method: GET
Sends a formatted notification message to a specified Microsoft Teams channel for cross-functional communication.
naftiko: '0.5'
info:
label: Microsoft Teams Channel Notification
description: Sends a formatted notification message to a specified Microsoft Teams channel for cross-functional communication.
tags:
- communications
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: team-notifications
port: 8080
tools:
- name: send-teams-notification
description: Post a message to a Microsoft Teams channel.
inputParameters:
- name: team_id
in: body
type: string
description: The Teams team ID.
- name: channel_id
in: body
type: string
description: The Teams channel ID.
- name: message
in: body
type: string
description: The message body.
call: msteams.post-message
with:
team_id: '{{team_id}}'
channel_id: '{{channel_id}}'
message: '{{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-message
method: POST
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 20
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- tableau
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-20
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-20
with:
identifier: '{{identifier}}'
- name: refresh
type: call
call: tableau.publish-datasource
with:
dataset_id: workflow_20
data: '{{process.metrics}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-20
method: POST
- type: http
namespace: tableau
baseUri: https://mondelez-tableau.online.tableau.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: datasources
path: /datasources
operations:
- name: publish-datasource
method: POST
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 34
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- sharepoint
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-34
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-34
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: sharepoint.upload-document
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-34
method: POST
- type: http
namespace: sharepoint
baseUri: https://mondelez.sharepoint.com/_api/v2.0
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: documents
path: /documents
operations:
- name: upload-document
method: POST
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 22
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- sharepoint
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-22
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-22
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: sharepoint.upload-document
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-22
method: POST
- type: http
namespace: sharepoint
baseUri: https://mondelez.sharepoint.com/_api/v2.0
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: documents
path: /documents
operations:
- name: upload-document
method: POST
Retrieves operational data for Mondelez snacks workflows.
naftiko: '0.5'
info:
label: Mondelez Data Lookup 6
description: Retrieves operational data for Mondelez snacks workflows.
tags:
- snacks
- operations
capability:
exposes:
- type: mcp
namespace: mondelez-data
port: 8080
tools:
- name: get-data-6
description: Retrieves operational data for Mondelez snacks workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mondelez-data.get-data-6
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mondelez-data
baseUri: https://api.mondelez.com/data/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: data-6
path: /data-6/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-6
method: GET
Retrieves operational data for Mondelez snacks workflows.
naftiko: '0.5'
info:
label: Mondelez Data Lookup 7
description: Retrieves operational data for Mondelez snacks workflows.
tags:
- snacks
- operations
capability:
exposes:
- type: mcp
namespace: mondelez-data
port: 8080
tools:
- name: get-data-7
description: Retrieves operational data for Mondelez snacks workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mondelez-data.get-data-7
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mondelez-data
baseUri: https://api.mondelez.com/data/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: data-7
path: /data-7/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-7
method: GET
Triggers a dataset refresh in Power BI for the supply chain operations dashboard so logistics teams can view real-time distribution metrics.
naftiko: '0.5'
info:
label: Power BI Supply Chain Dashboard Refresh
description: Triggers a dataset refresh in Power BI for the supply chain operations dashboard so logistics teams can view real-time distribution metrics.
tags:
- analytics
- power-bi
- supply-chain
capability:
exposes:
- type: mcp
namespace: supply-chain-analytics
port: 8080
tools:
- name: refresh-supply-chain-dashboard
description: Trigger a Power BI dataset refresh for the supply chain dashboard.
inputParameters:
- name: dataset_id
in: body
type: string
description: The Power BI dataset ID to refresh.
call: powerbi.refresh-dataset
with:
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: /datasets/{{dataset_id}}/refreshes
inputParameters:
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
Analyzes trade spend by pulling promotion spend from Salesforce, comparing against SAP actuals, building analytics in Snowflake, refreshing Power BI dashboards, and notifying finance.
naftiko: '0.5'
info:
label: Trade Spend Analysis Pipeline
description: Analyzes trade spend by pulling promotion spend from Salesforce, comparing against SAP actuals, building analytics in Snowflake, refreshing Power BI dashboards, and notifying finance.
tags:
- finance
- trade-spend
- salesforce
- sap
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: trade-spend
port: 8080
tools:
- name: analyze-trade-spend
description: Given a brand and period, analyze trade spend across planned vs actual.
inputParameters:
- name: brand
in: body
type: string
description: The brand to analyze.
- name: period
in: body
type: string
description: The analysis period (e.g., Q1-2026).
steps:
- name: get-planned-spend
type: call
call: salesforce.get-trade-plans
with:
brand: '{{brand}}'
period: '{{period}}'
- name: get-actual-spend
type: call
call: sap.get-trade-actuals
with:
brand: '{{brand}}'
period: '{{period}}'
- name: run-analysis
type: call
call: snowflake.execute-query
with:
brand: '{{brand}}'
period: '{{period}}'
- name: refresh-dashboard
type: call
call: powerbi.refresh-dataset
with:
dataset_id: trade-spend-dataset
consumes:
- type: http
namespace: salesforce
baseUri: https://mondelez.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: trade-plans
path: /query/?q=SELECT+Brand__c,Planned_Spend__c+FROM+Trade_Plan__c+WHERE+Brand__c='{{brand}}'+AND+Period__c='{{period}}'
inputParameters:
- name: brand
in: query
- name: period
in: query
operations:
- name: get-trade-plans
method: GET
- type: http
namespace: sap
baseUri: https://mondelez-s4.sap.com/sap/opu/odata/sap/FI_TRADE_SPEND_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: trade-actuals
path: /A_TradeSpend?$filter=Brand eq '{{brand}}' and Period eq '{{period}}'
inputParameters:
- name: brand
in: query
- name: period
in: query
operations:
- name: get-trade-actuals
method: GET
- type: http
namespace: snowflake
baseUri: https://mondelez.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: 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
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 23
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- hubspot
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-23
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-23
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: hubspot.send-email
with:
to: '{{process.email}}'
subject: Workflow 23 Complete
body: '{{process.summary}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-23
method: POST
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com/crm/v3
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: contacts
path: /contacts
operations:
- name: send-email
method: POST
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 27
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- slack
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-27
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-27
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: slack.post-message
with:
channel: '#snacks'
text: 'Completed workflow 27: {{process.summary}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-27
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /messages
operations:
- name: post-message
method: POST
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 33
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- box
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-33
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-33
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: box.upload-file
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-33
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
operations:
- name: upload-file
method: POST
Retrieves operational data for Mondelez snacks workflows.
naftiko: '0.5'
info:
label: Mondelez Data Lookup 3
description: Retrieves operational data for Mondelez snacks workflows.
tags:
- snacks
- operations
capability:
exposes:
- type: mcp
namespace: mondelez-data
port: 8080
tools:
- name: get-data-3
description: Retrieves operational data for Mondelez snacks workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mondelez-data.get-data-3
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mondelez-data
baseUri: https://api.mondelez.com/data/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: data-3
path: /data-3/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-3
method: GET
Retrieves operational data for Mondelez snacks workflows.
naftiko: '0.5'
info:
label: Mondelez Data Lookup 2
description: Retrieves operational data for Mondelez snacks workflows.
tags:
- snacks
- operations
capability:
exposes:
- type: mcp
namespace: mondelez-data
port: 8080
tools:
- name: get-data-2
description: Retrieves operational data for Mondelez snacks workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mondelez-data.get-data-2
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mondelez-data
baseUri: https://api.mondelez.com/data/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: data-2
path: /data-2/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-2
method: GET
Retrieves a Jira issue by key for IT and manufacturing project tracking, returning summary, status, assignee, and priority.
naftiko: '0.5'
info:
label: Jira Task Lookup
description: Retrieves a Jira issue by key for IT and manufacturing project tracking, returning summary, status, assignee, and priority.
tags:
- project-management
- jira
capability:
exposes:
- type: mcp
namespace: project-tracking
port: 8080
tools:
- name: get-jira-issue
description: Look up a Jira issue by key. Returns summary, status, assignee, and priority.
inputParameters:
- name: issue_key
in: body
type: string
description: The Jira issue key.
call: jira.get-issue
with:
issue_key: '{{issue_key}}'
consumes:
- type: http
namespace: jira
baseUri: https://mondelez.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
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 32
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- tableau
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-32
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-32
with:
identifier: '{{identifier}}'
- name: refresh
type: call
call: tableau.publish-datasource
with:
dataset_id: workflow_32
data: '{{process.metrics}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-32
method: POST
- type: http
namespace: tableau
baseUri: https://mondelez-tableau.online.tableau.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: datasources
path: /datasources
operations:
- name: publish-datasource
method: POST
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 26
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- servicenow
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-26
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-26
with:
identifier: '{{identifier}}'
- name: create
type: call
call: servicenow.create-incident
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-26
method: POST
- type: http
namespace: servicenow
baseUri: https://mondelez.service-now.com/api/now/v1
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 18
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- jira
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-18
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-18
with:
identifier: '{{identifier}}'
- name: create-ticket
type: call
call: jira.create-issue
with:
project: SNAC
summary: Task from workflow 18
description: '{{process.details}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-18
method: POST
- type: http
namespace: jira
baseUri: https://mondelez.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issues
operations:
- name: create-issue
method: POST
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 30
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- jira
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-30
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-30
with:
identifier: '{{identifier}}'
- name: create-ticket
type: call
call: jira.create-issue
with:
project: SNAC
summary: Task from workflow 30
description: '{{process.details}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-30
method: POST
- type: http
namespace: jira
baseUri: https://mondelez.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issues
operations:
- name: create-issue
method: POST
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 24
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- datadog
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-24
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-24
with:
identifier: '{{identifier}}'
- name: push
type: call
call: datadog.submit-metrics
with:
metric_name: snacks.workflow_24
data: '{{process.metrics}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-24
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: bearer
token: $secrets.datadog_token
resources:
- name: metrics
path: /metrics
operations:
- name: submit-metrics
method: POST
Retrieves current cocoa commodity pricing from SAP for a specified origin and grade, returning price per metric ton, currency, and last update timestamp for procurement planning.
naftiko: '0.5'
info:
label: SAP Cocoa Price Monitoring
description: Retrieves current cocoa commodity pricing from SAP for a specified origin and grade, returning price per metric ton, currency, and last update timestamp for procurement planning.
tags:
- commodities
- cocoa
- sap
- procurement
capability:
exposes:
- type: mcp
namespace: commodity-pricing
port: 8080
tools:
- name: get-cocoa-price
description: Look up current cocoa pricing by origin and grade from SAP. Returns price per metric ton and currency.
inputParameters:
- name: origin
in: body
type: string
description: Cocoa origin country (e.g., Ghana, Ivory Coast, Ecuador).
- name: grade
in: body
type: string
description: Cocoa grade classification.
call: sap.get-commodity-price
with:
origin: '{{origin}}'
grade: '{{grade}}'
outputParameters:
- name: price_per_mt
type: string
mapping: $.d.PricePerMetricTon
- name: currency
type: string
mapping: $.d.Currency
- name: last_updated
type: string
mapping: $.d.LastUpdated
consumes:
- type: http
namespace: sap
baseUri: https://mondelez-s4.sap.com/sap/opu/odata/sap/MM_COMMODITY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: commodity-prices
path: /A_CommodityPrice(Origin='{{origin}}',Grade='{{grade}}')
inputParameters:
- name: origin
in: path
- name: grade
in: path
operations:
- name: get-commodity-price
method: GET
Aggregates consumer insights by pulling social media sentiment from HubSpot, sales data from Snowflake, and market research from Salesforce, then distributing the insights to innovation teams via SharePoint and Microsoft Teams.
naftiko: '0.5'
info:
label: Consumer Insights Aggregation Pipeline
description: Aggregates consumer insights by pulling social media sentiment from HubSpot, sales data from Snowflake, and market research from Salesforce, then distributing the insights to innovation teams via SharePoint and Microsoft Teams.
tags:
- marketing
- consumer-insights
- hubspot
- snowflake
- salesforce
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: consumer-insights
port: 8080
tools:
- name: aggregate-consumer-insights
description: Given a brand and time period, aggregate consumer insights across multiple data sources.
inputParameters:
- name: brand
in: body
type: string
description: The brand name.
- name: period
in: body
type: string
description: The analysis period.
steps:
- name: get-sentiment
type: call
call: hubspot.get-social-metrics
with:
brand: '{{brand}}'
period: '{{period}}'
- name: get-sales-data
type: call
call: snowflake.execute-query
with:
brand: '{{brand}}'
period: '{{period}}'
- name: get-research
type: call
call: salesforce.get-research
with:
brand: '{{brand}}'
period: '{{period}}'
- name: upload-insights
type: call
call: sharepoint.create-folder
with:
site_id: insights_site
folder_path: ConsumerInsights/{{brand}}/{{period}}
- name: notify-innovation
type: call
call: msteams.post-message
with:
team_id: innovation-team
channel_id: consumer-insights
message: 'Consumer insights for {{brand}} ({{period}}) ready. Sentiment: {{get-sentiment.overall_score}}. Sales trend: {{get-sales-data.trend}}. Report: {{upload-insights.webUrl}}.'
consumes:
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: social-metrics
path: /analytics/v2/reports/social
operations:
- name: get-social-metrics
method: GET
- type: http
namespace: snowflake
baseUri: https://mondelez.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://mondelez.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: research
path: /query/?q=SELECT+Research_Type__c,Key_Findings__c+FROM+Market_Research__c+WHERE+Brand__c='{{brand}}'+AND+Period__c='{{period}}'
inputParameters:
- name: brand
in: query
- name: period
in: query
operations:
- name: get-research
method: GET
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: folders
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: 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
Retrieves operational data for Mondelez snacks workflows.
naftiko: '0.5'
info:
label: Mondelez Data Lookup 1
description: Retrieves operational data for Mondelez snacks workflows.
tags:
- snacks
- operations
capability:
exposes:
- type: mcp
namespace: mondelez-data
port: 8080
tools:
- name: get-data-1
description: Retrieves operational data for Mondelez snacks workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mondelez-data.get-data-1
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mondelez-data
baseUri: https://api.mondelez.com/data/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: data-1
path: /data-1/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-1
method: GET
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 25
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- salesforce
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-25
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-25
with:
identifier: '{{identifier}}'
- name: create
type: call
call: salesforce.create-account
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-25
method: POST
- type: http
namespace: salesforce
baseUri: https://mondelez.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /accounts
operations:
- name: create-account
method: POST
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 31
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- teams
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-31
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-31
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: teams.send-message
with:
channel_id: snacks
message: 'Workflow 31 complete: {{process.summary}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-31
method: POST
- type: http
namespace: teams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.teams_token
resources:
- name: messages
path: /messages
operations:
- name: send-message
method: POST
Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
naftiko: '0.5'
info:
label: Mondelez Workflow 19
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
tags:
- snacks
- operations
- teams
capability:
exposes:
- type: mcp
namespace: snacks
port: 8080
tools:
- name: mondelez-workflow-19
description: Orchestrates snacks operations including data retrieval, processing, and automated notification for Mondelez.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mondelez-ops.run-workflow-19
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: teams.send-message
with:
channel_id: snacks
message: 'Workflow 19 complete: {{process.summary}}'
consumes:
- type: http
namespace: mondelez-ops
baseUri: https://api.mondelez.com/operations/v1
authentication:
type: bearer
token: $secrets.mondelez_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-19
method: POST
- type: http
namespace: teams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.teams_token
resources:
- name: messages
path: /messages
operations:
- name: send-message
method: POST
When a HubSpot marketing qualified lead converts, creates a Salesforce opportunity, assigns the account owner, and notifies the sales rep in Microsoft Teams.
naftiko: '0.5'
info:
label: HubSpot Lead to Salesforce Opportunity Sync
description: When a HubSpot marketing qualified lead converts, creates a Salesforce opportunity, assigns the account owner, and notifies the sales rep in Microsoft Teams.
tags:
- sales
- marketing
- hubspot
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: lead-sync
port: 8080
tools:
- name: sync-lead-to-opportunity
description: Given a HubSpot contact ID, create a Salesforce opportunity and notify the assigned sales rep.
inputParameters:
- name: hubspot_contact_id
in: body
type: string
description: The HubSpot contact ID.
- name: deal_value
in: body
type: string
description: The estimated deal value.
steps:
- name: get-contact
type: call
call: hubspot.get-contact
with:
contact_id: '{{hubspot_contact_id}}'
- name: create-opportunity
type: call
call: salesforce.create-opportunity
with:
name: '{{get-contact.company}} — {{get-contact.lead_source}}'
amount: '{{deal_value}}'
stage: Qualification
contact_email: '{{get-contact.email}}'
- name: notify-rep
type: call
call: msteams.send-message
with:
recipient_upn: '{{create-opportunity.owner_email}}'
text: 'New MQL converted to opportunity: {{get-contact.company}} ({{get-contact.firstname}} {{get-contact.lastname}}). Deal value: ${{deal_value}}. Salesforce opp: {{create-opportunity.id}}. Source: {{get-contact.lead_source}}.'
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/{{contact_id}}
inputParameters:
- name: contact_id
in: path
operations:
- name: get-contact
method: GET
- type: http
namespace: salesforce
baseUri: https://nestle.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /sobjects/Opportunity
operations:
- name: create-opportunity
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 operational data for Nestle food-manufacturing workflows.
naftiko: '0.5'
info:
label: Nestle Data Lookup 10
description: Retrieves operational data for Nestle food-manufacturing workflows.
tags:
- food-manufacturing
- operations
capability:
exposes:
- type: mcp
namespace: nestle-data
port: 8080
tools:
- name: get-data-10
description: Retrieves operational data for Nestle food-manufacturing workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: nestle-data.get-data-10
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: nestle-data
baseUri: https://api.nestle.com/data/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: data-10
path: /data-10/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-10
method: GET
When a ServiceNow change request is submitted, looks up the requestor in Workday to resolve the approval chain, posts an approval request to the CAB Microsoft Teams channel, and updates the change ticket.
naftiko: '0.5'
info:
label: IT Change Request Approval Pipeline
description: When a ServiceNow change request is submitted, looks up the requestor in Workday to resolve the approval chain, posts an approval request to the CAB Microsoft Teams channel, and updates the change ticket.
tags:
- operations
- itsm
- servicenow
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: change-management
port: 8080
tools:
- name: route-change-approval
description: Given a ServiceNow change number and requestor employee ID, resolve the approver chain and post to the CAB Teams channel.
inputParameters:
- name: change_number
in: body
type: string
description: The ServiceNow change request number.
- name: requestor_id
in: body
type: string
description: The Workday employee ID of the requestor.
steps:
- name: get-change
type: call
call: servicenow.get-change
with:
change_number: '{{change_number}}'
- name: get-requestor
type: call
call: workday.get-worker
with:
worker_id: '{{requestor_id}}'
- name: post-cab-review
type: call
call: msteams.post-channel
with:
team_id: it-change-advisory-board
channel_id: change-reviews
text: 'Change request {{change_number}} submitted by {{get-requestor.full_name}} ({{get-requestor.job_title}}). Summary: {{get-change.short_description}}. Risk: {{get-change.risk}}. Planned start: {{get-change.start_date}}. Please review and approve.'
consumes:
- type: http
namespace: servicenow
baseUri: https://nestle.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: changes
path: /table/change_request?sysparm_query=number={{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: 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
method: POST
Pulls competitive shelf-share data from Circana, compares against Salesforce account targets, and emails the field sales rep via Microsoft Outlook with a gap analysis.
naftiko: '0.5'
info:
label: Retail Shelf-Share Competitive Monitor
description: Pulls competitive shelf-share data from Circana, compares against Salesforce account targets, and emails the field sales rep via Microsoft Outlook with a gap analysis.
tags:
- sales
- market-research
- circana
- salesforce
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: shelf-share-monitor
port: 8080
tools:
- name: monitor-shelf-share
description: Given a retailer account ID and product category, pull Circana shelf-share, compare to Salesforce targets, and email the field rep.
inputParameters:
- name: account_id
in: body
type: string
description: The Salesforce account ID for the retailer.
- name: category
in: body
type: string
description: The product category.
steps:
- name: get-account
type: call
call: salesforce.get-account
with:
account_id: '{{account_id}}'
- name: get-shelf-data
type: call
call: circana.get-shelf-share
with:
retailer: '{{get-account.name}}'
category: '{{category}}'
- name: email-rep
type: call
call: outlook.send-mail
with:
to: '{{get-account.owner_email}}'
subject: 'Shelf-share alert: {{category}} at {{get-account.name}}'
body: 'Current shelf-share: {{get-shelf-data.nestle_share}}% (target: {{get-account.shelf_target}}%). Gap: {{get-shelf-data.gap_pct}}%. Top competitor: {{get-shelf-data.top_competitor}} at {{get-shelf-data.competitor_share}}%. Action may be needed for {{category}} at {{get-account.name}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://nestle.my.salesforce.com/services/data/v59.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: circana
baseUri: https://api.circana.com/v2
authentication:
type: bearer
token: $secrets.circana_token
resources:
- name: shelf-share
path: /shelf-share/retailer
operations:
- name: get-shelf-share
method: POST
- type: http
namespace: outlook
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: send-mail
path: /me/sendMail
operations:
- name: send-mail
method: POST
Retrieves operational data for Nestle food-manufacturing workflows.
naftiko: '0.5'
info:
label: Nestle Data Lookup 11
description: Retrieves operational data for Nestle food-manufacturing workflows.
tags:
- food-manufacturing
- operations
capability:
exposes:
- type: mcp
namespace: nestle-data
port: 8080
tools:
- name: get-data-11
description: Retrieves operational data for Nestle food-manufacturing workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: nestle-data.get-data-11
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: nestle-data
baseUri: https://api.nestle.com/data/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: data-11
path: /data-11/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-11
method: GET
Retrieves operational data for Nestle food-manufacturing workflows.
naftiko: '0.5'
info:
label: Nestle Data Lookup 13
description: Retrieves operational data for Nestle food-manufacturing workflows.
tags:
- food-manufacturing
- operations
capability:
exposes:
- type: mcp
namespace: nestle-data
port: 8080
tools:
- name: get-data-13
description: Retrieves operational data for Nestle food-manufacturing workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: nestle-data.get-data-13
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: nestle-data
baseUri: https://api.nestle.com/data/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: data-13
path: /data-13/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-13
method: GET
Monitors commodity price changes via SAP, compares against procurement contract thresholds in Oracle Cloud, and alerts the sourcing team in Microsoft Teams when thresholds are breached.
naftiko: '0.5'
info:
label: Raw Material Price Alert Workflow
description: Monitors commodity price changes via SAP, compares against procurement contract thresholds in Oracle Cloud, and alerts the sourcing team in Microsoft Teams when thresholds are breached.
tags:
- procurement
- supply-chain
- sap
- oracle-cloud
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: commodity-alerts
port: 8080
tools:
- name: check-commodity-price
description: Given a commodity code and contract ID, fetch current market price from SAP, compare to Oracle contract terms, and alert sourcing if threshold exceeded.
inputParameters:
- name: commodity_code
in: body
type: string
description: The SAP commodity code (e.g. cocoa, milk powder, palm oil).
- name: contract_id
in: body
type: string
description: The Oracle Cloud procurement contract ID.
steps:
- name: get-market-price
type: call
call: sap.get-commodity-price
with:
commodity_code: '{{commodity_code}}'
- name: get-contract
type: call
call: oracle.get-contract
with:
contract_id: '{{contract_id}}'
- name: alert-sourcing
type: call
call: msteams.post-channel
with:
team_id: global-sourcing
channel_id: commodity-alerts
text: 'Commodity price alert: {{commodity_code}} current market price {{get-market-price.current_price}} {{get-market-price.currency}}/MT. Contract ceiling: {{get-contract.price_ceiling}} {{get-contract.currency}}/MT. Variance: {{get-market-price.variance_pct}}%. Contract: {{contract_id}} with {{get-contract.supplier_name}}.'
consumes:
- type: http
namespace: sap
baseUri: https://nestle-s4.sap.com/sap/opu/odata/sap/API_COMMODITY_PRICING
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
inputParameters:
- name: Accept
in: header
value: application/json
resources:
- name: commodity-prices
path: /CommodityPrices('{{commodity_code}}')
inputParameters:
- name: commodity_code
in: path
operations:
- name: get-commodity-price
method: GET
- type: http
namespace: oracle
baseUri: https://nestle-cloud.oraclecloud.com/fscmRestApi/resources/v1
authentication:
type: basic
username: $secrets.oracle_user
password: $secrets.oracle_password
resources:
- name: contracts
path: /purchaseAgreements/{{contract_id}}
inputParameters:
- name: contract_id
in: path
operations:
- name: get-contract
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
method: POST
Retrieves operational data for Nestle food-manufacturing workflows.
naftiko: '0.5'
info:
label: Nestle Data Lookup 12
description: Retrieves operational data for Nestle food-manufacturing workflows.
tags:
- food-manufacturing
- operations
capability:
exposes:
- type: mcp
namespace: nestle-data
port: 8080
tools:
- name: get-data-12
description: Retrieves operational data for Nestle food-manufacturing workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: nestle-data.get-data-12
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: nestle-data
baseUri: https://api.nestle.com/data/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: data-12
path: /data-12/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-12
method: GET
Collects recent brand mentions from Instagram and Facebook via Meta APIs, runs sentiment scoring via Azure Machine Learning, and posts a daily digest to the brand team's Microsoft Teams channel.
naftiko: '0.5'
info:
label: Social Media Brand Sentiment Aggregator
description: Collects recent brand mentions from Instagram and Facebook via Meta APIs, runs sentiment scoring via Azure Machine Learning, and posts a daily digest to the brand team's Microsoft Teams channel.
tags:
- marketing
- social-media
- instagram
- facebook
- azure-machine-learning
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: brand-sentiment
port: 8080
tools:
- name: aggregate-brand-sentiment
description: Given a brand name and date, collect social mentions, score sentiment, and post a digest to Microsoft Teams.
inputParameters:
- name: brand_name
in: body
type: string
description: The Nestlé brand name (e.g. Nescafé, KitKat).
- name: report_date
in: body
type: string
description: The date to aggregate in YYYY-MM-DD format.
steps:
- name: get-instagram-mentions
type: call
call: meta.get-ig-mentions
with:
hashtag: '{{brand_name}}'
since: '{{report_date}}'
- name: get-facebook-mentions
type: call
call: meta.get-fb-mentions
with:
page_name: '{{brand_name}}'
since: '{{report_date}}'
- name: score-sentiment
type: call
call: azureml.score-sentiment
with:
texts: '{{get-instagram-mentions.captions}},{{get-facebook-mentions.comments}}'
- name: post-digest
type: call
call: msteams.post-channel
with:
team_id: brand-marketing-{{brand_name}}
channel_id: social-insights
text: 'Daily sentiment digest for {{brand_name}} ({{report_date}}): IG mentions: {{get-instagram-mentions.count}}, FB mentions: {{get-facebook-mentions.count}}. Avg sentiment: {{score-sentiment.average_score}}. Top positive: {{score-sentiment.top_positive}}. Top concern: {{score-sentiment.top_negative}}.'
consumes:
- type: http
namespace: meta
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.meta_access_token
resources:
- name: ig-hashtag
path: /ig_hashtag_search?q={{hashtag}}&since={{since}}
inputParameters:
- name: hashtag
in: query
- name: since
in: query
operations:
- name: get-ig-mentions
method: GET
- name: fb-page-feed
path: /{{page_name}}/feed?since={{since}}
inputParameters:
- name: page_name
in: path
- name: since
in: query
operations:
- name: get-fb-mentions
method: GET
- type: http
namespace: azureml
baseUri: https://nestle-ml.westeurope.inference.ml.azure.com
authentication:
type: bearer
token: $secrets.azureml_token
resources:
- name: sentiment
path: /score
operations:
- name: score-sentiment
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
method: POST
Initiates a HACCP food safety audit by retrieving the plant's critical control point data from SAP, pulling the latest SOP from Confluence, and creating a ServiceNow audit task with checklist links.
naftiko: '0.5'
info:
label: HACCP Audit Workflow
description: Initiates a HACCP food safety audit by retrieving the plant's critical control point data from SAP, pulling the latest SOP from Confluence, and creating a ServiceNow audit task with checklist links.
tags:
- quality
- food-safety
- sap
- confluence
- servicenow
capability:
exposes:
- type: mcp
namespace: food-safety-audit
port: 8080
tools:
- name: initiate-haccp-audit
description: Given a plant code and production line, retrieve CCP data from SAP, find the relevant SOP in Confluence, and create an audit task in ServiceNow.
inputParameters:
- name: plant_code
in: body
type: string
description: The Nestlé plant code.
- name: production_line
in: body
type: string
description: The production line identifier.
steps:
- name: get-ccps
type: call
call: sap.get-ccp-data
with:
plant: '{{plant_code}}'
line: '{{production_line}}'
- name: find-sop
type: call
call: confluence.search
with:
cql: space=HACCP AND type=page AND text~"{{plant_code}} {{production_line}} CCP"
- name: create-audit
type: call
call: servicenow.create-task
with:
short_description: 'HACCP audit: {{plant_code}} line {{production_line}}'
description: 'HACCP audit for plant {{plant_code}}, line {{production_line}}. CCPs: {{get-ccps.ccp_count}}. Critical limits: {{get-ccps.critical_limits_summary}}. SOP reference: {{find-sop.results[0].title}} ({{find-sop.results[0]._links.webui}}).'
assigned_group: Quality_Food_Safety
category: haccp_audit
consumes:
- type: http
namespace: sap
baseUri: https://nestle-s4.sap.com/sap/opu/odata/sap/API_QUALITY_MANAGEMENT
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
inputParameters:
- name: Accept
in: header
value: application/json
resources:
- name: ccps
path: /CriticalControlPoints?$filter=Plant eq '{{plant}}' and ProductionLine eq '{{line}}'
inputParameters:
- name: plant
in: query
- name: line
in: query
operations:
- name: get-ccp-data
method: GET
- type: http
namespace: confluence
baseUri: https://nestle.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_api_token
resources:
- name: search
path: /search?cql={{cql}}
inputParameters:
- name: cql
in: query
operations:
- name: search
method: GET
- type: http
namespace: servicenow
baseUri: https://nestle.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 packaging spec changes, updates the material BOM in SAP, uploads the new artwork brief to Box, and notifies the packaging design team in Microsoft Teams.
naftiko: '0.5'
info:
label: Packaging Specification Change Pipeline
description: When a packaging spec changes, updates the material BOM in SAP, uploads the new artwork brief to Box, and notifies the packaging design team in Microsoft Teams.
tags:
- supply-chain
- packaging
- sap
- box
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: packaging-change
port: 8080
tools:
- name: process-packaging-change
description: Given a material number and updated spec details, update SAP BOM, upload artwork brief to Box, and notify the packaging team.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number for the product.
- name: change_description
in: body
type: string
description: Description of the packaging specification change.
- name: artwork_file_id
in: body
type: string
description: The Box file ID for the new artwork brief.
steps:
- name: get-bom
type: call
call: sap.get-bom
with:
material: '{{material_number}}'
- name: upload-brief
type: call
call: box.copy-file
with:
file_id: '{{artwork_file_id}}'
parent_folder_id: packaging_active_specs
- name: notify-team
type: call
call: msteams.post-channel
with:
team_id: packaging-design
channel_id: spec-changes
text: 'Packaging spec change for material {{material_number}}: {{change_description}}. Current BOM version: {{get-bom.bom_version}}. New artwork brief: {{upload-brief.shared_link}}. Please review and confirm.'
consumes:
- type: http
namespace: sap
baseUri: https://nestle-s4.sap.com/sap/opu/odata/sap/API_BILL_OF_MATERIAL_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
inputParameters:
- name: Accept
in: header
value: application/json
resources:
- name: boms
path: /A_BillOfMaterial?$filter=Material eq '{{material}}'
inputParameters:
- name: material
in: query
operations:
- name: get-bom
method: GET
- 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}}/copy
inputParameters:
- name: file_id
in: path
operations:
- name: copy-file
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
method: POST
Retrieves a product listing from Nestlé's BigCommerce e-commerce store by product ID, returning name, SKU, price, and inventory level.
naftiko: '0.5'
info:
label: BigCommerce Product Catalog Lookup
description: Retrieves a product listing from Nestlé's BigCommerce e-commerce store by product ID, returning name, SKU, price, and inventory level.
tags:
- e-commerce
- catalog
- bigcommerce
capability:
exposes:
- type: mcp
namespace: ecommerce-catalog
port: 8080
tools:
- name: get-product
description: Fetch a BigCommerce product by ID. Returns name, SKU, price, and inventory.
inputParameters:
- name: product_id
in: body
type: string
description: The BigCommerce product ID.
call: bigcommerce.get-product
with:
product_id: '{{product_id}}'
outputParameters:
- name: name
type: string
mapping: $.data.name
- name: sku
type: string
mapping: $.data.sku
- name: price
type: string
mapping: $.data.price
- name: inventory_level
type: string
mapping: $.data.inventory_level
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/nestle-store/v3
authentication:
type: bearer
token: $secrets.bigcommerce_token
inputParameters:
- name: X-Auth-Token
in: header
value: $secrets.bigcommerce_access_token
resources:
- name: products
path: /catalog/products/{{product_id}}
inputParameters:
- name: product_id
in: path
operations:
- name: get-product
method: GET
Fetches a quality management document from SharePoint by site and file path. Used by Nestlé quality assurance teams to retrieve SOPs, HACCP plans, and audit checklists.
naftiko: '0.5'
info:
label: SharePoint Quality Document Retrieval
description: Fetches a quality management document from SharePoint by site and file path. Used by Nestlé quality assurance teams to retrieve SOPs, HACCP plans, and audit checklists.
tags:
- quality
- documents
- sharepoint
capability:
exposes:
- type: mcp
namespace: quality-docs
port: 8080
tools:
- name: get-quality-document
description: Retrieve a quality document from SharePoint by site ID and file path.
inputParameters:
- name: site_id
in: body
type: string
description: The SharePoint site ID for the quality document library.
- name: file_path
in: body
type: string
description: The relative file path within the document library.
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: drive-items
path: /{{site_id}}/drive/root:/{{file_path}}
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: get-file
method: GET
Traces a finished goods batch through the supply chain by querying SAP for batch genealogy, pulling warehouse movement data from Oracle Cloud, and logging the traceability report to SharePoint.
naftiko: '0.5'
info:
label: Production Batch Traceability
description: Traces a finished goods batch through the supply chain by querying SAP for batch genealogy, pulling warehouse movement data from Oracle Cloud, and logging the traceability report to SharePoint.
tags:
- quality
- supply-chain
- sap
- oracle-cloud
- sharepoint
capability:
exposes:
- type: mcp
namespace: batch-traceability
port: 8080
tools:
- name: trace-batch
description: Given a batch number and material, retrieve SAP batch genealogy, Oracle warehouse movements, and upload a traceability report to SharePoint.
inputParameters:
- name: batch_number
in: body
type: string
description: The SAP batch number.
- name: material_number
in: body
type: string
description: The SAP material number.
steps:
- name: get-genealogy
type: call
call: sap.get-batch-genealogy
with:
batch: '{{batch_number}}'
material: '{{material_number}}'
- name: get-movements
type: call
call: oracle.get-inventory-transactions
with:
item_number: '{{material_number}}'
lot_number: '{{batch_number}}'
- name: upload-report
type: call
call: sharepoint.upload-file
with:
site_id: quality-traceability
file_path: TraceReports/{{material_number}}_{{batch_number}}_trace.json
content: 'Batch: {{batch_number}}, Material: {{material_number}}, Input batches: {{get-genealogy.input_batches}}, Production date: {{get-genealogy.production_date}}, Plant: {{get-genealogy.plant}}, Warehouse movements: {{get-movements.transaction_count}}, Last location: {{get-movements.current_warehouse}}.'
consumes:
- type: http
namespace: sap
baseUri: https://nestle-s4.sap.com/sap/opu/odata/sap/API_BATCH_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
inputParameters:
- name: Accept
in: header
value: application/json
resources:
- name: batch-genealogy
path: /A_Batch(Material='{{material}}',Batch='{{batch}}')/to_BatchGenealogy
inputParameters:
- name: material
in: path
- name: batch
in: path
operations:
- name: get-batch-genealogy
method: GET
- type: http
namespace: oracle
baseUri: https://nestle-cloud.oraclecloud.com/fscmRestApi/resources/v1
authentication:
type: basic
username: $secrets.oracle_user
password: $secrets.oracle_password
resources:
- name: transactions
path: /inventoryTransactions?q=ItemNumber={{item_number}};LotNumber={{lot_number}}
inputParameters:
- name: item_number
in: query
- name: lot_number
in: query
operations:
- name: get-inventory-transactions
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
Retrieves operational data for Nestle food-manufacturing workflows.
naftiko: '0.5'
info:
label: Nestle Data Lookup 15
description: Retrieves operational data for Nestle food-manufacturing workflows.
tags:
- food-manufacturing
- operations
capability:
exposes:
- type: mcp
namespace: nestle-data
port: 8080
tools:
- name: get-data-15
description: Retrieves operational data for Nestle food-manufacturing workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: nestle-data.get-data-15
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: nestle-data
baseUri: https://api.nestle.com/data/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: data-15
path: /data-15/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-15
method: GET
Retrieves operational data for Nestle food-manufacturing workflows.
naftiko: '0.5'
info:
label: Nestle Data Lookup 9
description: Retrieves operational data for Nestle food-manufacturing workflows.
tags:
- food-manufacturing
- operations
capability:
exposes:
- type: mcp
namespace: nestle-data
port: 8080
tools:
- name: get-data-9
description: Retrieves operational data for Nestle food-manufacturing workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: nestle-data.get-data-9
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: nestle-data
baseUri: https://api.nestle.com/data/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: data-9
path: /data-9/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-9
method: GET
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 8
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- tableau
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-8
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-8
with:
identifier: '{{identifier}}'
- name: refresh
type: call
call: tableau.publish-datasource
with:
dataset_id: workflow_8
data: '{{process.metrics}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-8
method: POST
- type: http
namespace: tableau
baseUri: https://nestle-tableau.online.tableau.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: datasources
path: /datasources
operations:
- name: publish-datasource
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 9
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- box
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-9
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-9
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: box.upload-file
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-9
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
operations:
- name: upload-file
method: POST
Retrieves operational data for Nestle food-manufacturing workflows.
naftiko: '0.5'
info:
label: Nestle Data Lookup 8
description: Retrieves operational data for Nestle food-manufacturing workflows.
tags:
- food-manufacturing
- operations
capability:
exposes:
- type: mcp
namespace: nestle-data
port: 8080
tools:
- name: get-data-8
description: Retrieves operational data for Nestle food-manufacturing workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: nestle-data.get-data-8
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: nestle-data
baseUri: https://api.nestle.com/data/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: data-8
path: /data-8/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-8
method: GET
Retrieves operational data for Nestle food-manufacturing workflows.
naftiko: '0.5'
info:
label: Nestle Data Lookup 14
description: Retrieves operational data for Nestle food-manufacturing workflows.
tags:
- food-manufacturing
- operations
capability:
exposes:
- type: mcp
namespace: nestle-data
port: 8080
tools:
- name: get-data-14
description: Retrieves operational data for Nestle food-manufacturing workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: nestle-data.get-data-14
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: nestle-data
baseUri: https://api.nestle.com/data/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: data-14
path: /data-14/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-14
method: GET
When a new ingredient supplier is proposed, retrieves the vendor record from SAP, checks compliance documents in SharePoint, and opens a ServiceNow qualification task for the quality team.
naftiko: '0.5'
info:
label: Ingredient Supplier Qualification Pipeline
description: When a new ingredient supplier is proposed, retrieves the vendor record from SAP, checks compliance documents in SharePoint, and opens a ServiceNow qualification task for the quality team.
tags:
- quality
- procurement
- sap
- sharepoint
- servicenow
capability:
exposes:
- type: mcp
namespace: supplier-qualification
port: 8080
tools:
- name: qualify-supplier
description: Given a SAP vendor number, check for compliance documentation in SharePoint and open a ServiceNow qualification task.
inputParameters:
- name: vendor_number
in: body
type: string
description: The SAP vendor number for the ingredient supplier.
- name: ingredient_name
in: body
type: string
description: The ingredient being sourced.
steps:
- name: get-vendor
type: call
call: sap.get-vendor
with:
vendor_number: '{{vendor_number}}'
- name: check-docs
type: call
call: sharepoint.search-files
with:
site_id: supplier_qualification_site
search_term: '{{get-vendor.vendor_name}} certificate'
- name: open-qualification
type: call
call: servicenow.create-task
with:
short_description: 'Supplier qualification: {{get-vendor.vendor_name}} for {{ingredient_name}}'
description: 'Vendor: {{get-vendor.vendor_name}} ({{vendor_number}}). Ingredient: {{ingredient_name}}. Compliance docs found: {{check-docs.total_count}}. Country: {{get-vendor.country}}.'
assigned_group: Quality_Supplier_Mgmt
category: supplier_qualification
consumes:
- type: http
namespace: sap
baseUri: https://nestle-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
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: vendors
path: /A_Supplier('{{vendor_number}}')
inputParameters:
- name: vendor_number
in: path
operations:
- name: get-vendor
method: GET
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: search
path: /{{site_id}}/drive/root/search(q='{{search_term}}')
inputParameters:
- name: site_id
in: path
- name: search_term
in: path
operations:
- name: search-files
method: GET
- type: http
namespace: servicenow
baseUri: https://nestle.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
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 19
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- teams
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-19
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-19
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: teams.send-message
with:
channel_id: food-manufacturing
message: 'Workflow 19 complete: {{process.summary}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-19
method: POST
- type: http
namespace: teams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.teams_token
resources:
- name: messages
path: /messages
operations:
- name: send-message
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 25
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- salesforce
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-25
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-25
with:
identifier: '{{identifier}}'
- name: create
type: call
call: salesforce.create-account
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-25
method: POST
- type: http
namespace: salesforce
baseUri: https://nestle.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /accounts
operations:
- name: create-account
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 31
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- teams
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-31
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-31
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: teams.send-message
with:
channel_id: food-manufacturing
message: 'Workflow 31 complete: {{process.summary}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-31
method: POST
- type: http
namespace: teams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.teams_token
resources:
- name: messages
path: /messages
operations:
- name: send-message
method: POST
Checks Oracle Cloud inventory levels against reorder points, creates a SAP purchase requisition for low-stock materials, and notifies the supply planner in Microsoft Teams.
naftiko: '0.5'
info:
label: Warehouse Replenishment Alert
description: Checks Oracle Cloud inventory levels against reorder points, creates a SAP purchase requisition for low-stock materials, and notifies the supply planner in Microsoft Teams.
tags:
- supply-chain
- inventory
- oracle-cloud
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: replenishment
port: 8080
tools:
- name: trigger-replenishment
description: Given an item number and warehouse, check inventory level, create a purchase requisition if below reorder point, and notify the planner.
inputParameters:
- name: item_number
in: body
type: string
description: The Oracle/SAP item number.
- name: warehouse_code
in: body
type: string
description: The warehouse or distribution center code.
- name: planner_email
in: body
type: string
description: The supply planner's email address.
steps:
- name: check-inventory
type: call
call: oracle.get-onhand
with:
item_number: '{{item_number}}'
warehouse_code: '{{warehouse_code}}'
- name: create-pr
type: call
call: sap.create-purchase-requisition
with:
material: '{{item_number}}'
plant: '{{warehouse_code}}'
quantity: '{{check-inventory.reorder_quantity}}'
- name: notify-planner
type: call
call: msteams.send-message
with:
recipient_upn: '{{planner_email}}'
text: 'Replenishment triggered for {{item_number}} at {{warehouse_code}}. Current on-hand: {{check-inventory.on_hand_quantity}} {{check-inventory.uom}}. PR created: {{create-pr.requisition_number}} for qty {{check-inventory.reorder_quantity}}.'
consumes:
- type: http
namespace: oracle
baseUri: https://nestle-cloud.oraclecloud.com/fscmRestApi/resources/v1
authentication:
type: basic
username: $secrets.oracle_user
password: $secrets.oracle_password
resources:
- name: inventory
path: /inventoryOnhandBalances?q=ItemNumber={{item_number}};SubinventoryCode={{warehouse_code}}
inputParameters:
- name: item_number
in: query
- name: warehouse_code
in: query
operations:
- name: get-onhand
method: GET
- type: http
namespace: sap
baseUri: https://nestle-s4.sap.com/sap/opu/odata/sap/API_PURCHASEREQ_PROCESS_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
inputParameters:
- name: Accept
in: header
value: application/json
resources:
- name: purchase-requisitions
path: /A_PurchaseRequisition
operations:
- name: create-purchase-requisition
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 upcoming promotions from SAP Trade Promotion Management, syncs events to the sales team's Google Sheets calendar, and sends a Microsoft Outlook reminder to the field sales team.
naftiko: '0.5'
info:
label: Retail Promotion Calendar Sync
description: Retrieves upcoming promotions from SAP Trade Promotion Management, syncs events to the sales team's Google Sheets calendar, and sends a Microsoft Outlook reminder to the field sales team.
tags:
- sales
- trade-promotion
- sap
- google-sheets
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: promo-calendar
port: 8080
tools:
- name: sync-promo-calendar
description: Given a customer group and date range, pull promotions from SAP, update Google Sheets calendar, and email the field team.
inputParameters:
- name: customer_group
in: body
type: string
description: The SAP customer group code.
- 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.
- name: spreadsheet_id
in: body
type: string
description: The Google Sheets calendar spreadsheet ID.
steps:
- name: get-promotions
type: call
call: sap.get-trade-promotions
with:
customer_group: '{{customer_group}}'
start_date: '{{start_date}}'
end_date: '{{end_date}}'
- name: update-calendar
type: call
call: gsheets.append-row
with:
spreadsheet_id: '{{spreadsheet_id}}'
range: PromoCalendar!A:F
values: '{{get-promotions.summary}}'
- name: email-field-team
type: call
call: outlook.send-mail
with:
to: field-sales-{{customer_group}}@nestle.com
subject: 'Updated promotion calendar: {{customer_group}} ({{start_date}} to {{end_date}})'
body: 'The promotion calendar has been updated with {{get-promotions.count}} promotions for customer group {{customer_group}}. Review the tracker: {{update-calendar.spreadsheet_url}}.'
consumes:
- type: http
namespace: sap
baseUri: https://nestle-s4.sap.com/sap/opu/odata/sap/API_TRADE_PROMOTION
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
inputParameters:
- name: Accept
in: header
value: application/json
resources:
- name: promotions
path: /A_TradePromotion?$filter=CustomerGroup eq '{{customer_group}}' and StartDate ge datetime'{{start_date}}' and EndDate le datetime'{{end_date}}'
inputParameters:
- name: customer_group
in: query
- name: start_date
in: query
- name: end_date
in: query
operations:
- name: get-trade-promotions
method: GET
- type: http
namespace: gsheets
baseUri: https://sheets.googleapis.com/v4
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: values
path: /spreadsheets/{{spreadsheet_id}}/values/{{range}}:append
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: append-row
method: POST
- type: http
namespace: outlook
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: send-mail
path: /me/sendMail
operations:
- name: send-mail
method: POST
Collects water consumption data from SAP environmental modules, compares against reduction targets stored in Google Sheets, and posts a sustainability status update to the ESG team's Microsoft Teams channel.
naftiko: '0.5'
info:
label: Water Usage Sustainability Tracker
description: Collects water consumption data from SAP environmental modules, compares against reduction targets stored in Google Sheets, and posts a sustainability status update to the ESG team's Microsoft Teams channel.
tags:
- sustainability
- manufacturing
- sap
- google-sheets
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: water-sustainability
port: 8080
tools:
- name: track-water-usage
description: Given a plant code and reporting month, fetch water consumption from SAP, compare to targets in Google Sheets, and post status to Teams.
inputParameters:
- name: plant_code
in: body
type: string
description: The Nestlé plant code.
- name: year_month
in: body
type: string
description: The reporting month in YYYY-MM format.
- name: targets_spreadsheet_id
in: body
type: string
description: The Google Sheets ID containing water reduction targets.
steps:
- name: get-water-data
type: call
call: sap.get-water-consumption
with:
plant: '{{plant_code}}'
period: '{{year_month}}'
- name: get-targets
type: call
call: gsheets.get-values
with:
spreadsheet_id: '{{targets_spreadsheet_id}}'
range: WaterTargets!A:D
- name: post-status
type: call
call: msteams.post-channel
with:
team_id: esg-sustainability
channel_id: water-stewardship
text: 'Water usage report for plant {{plant_code}} ({{year_month}}): Consumption: {{get-water-data.total_cubic_meters}} m3. Per-tonne: {{get-water-data.per_tonne}} m3/t. Recycled: {{get-water-data.recycled_pct}}%. Target compliance requires review against {{targets_spreadsheet_id}}.'
consumes:
- type: http
namespace: sap
baseUri: https://nestle-s4.sap.com/sap/opu/odata/sap/API_ENVIRONMENT_HEALTH_SAFETY
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
inputParameters:
- name: Accept
in: header
value: application/json
resources:
- name: water
path: /WaterConsumption?$filter=Plant eq '{{plant}}' and Period eq '{{period}}'
inputParameters:
- name: plant
in: query
- name: period
in: query
operations:
- name: get-water-consumption
method: GET
- type: http
namespace: gsheets
baseUri: https://sheets.googleapis.com/v4
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: values
path: /spreadsheets/{{spreadsheet_id}}/values/{{range}}
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: get-values
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
method: POST
Pulls page-level engagement metrics from Adobe Analytics for a Nestlé brand property, including page views, unique visitors, and average time on page.
naftiko: '0.5'
info:
label: Adobe Analytics Brand Page Metrics
description: Pulls page-level engagement metrics from Adobe Analytics for a Nestlé brand property, including page views, unique visitors, and average time on page.
tags:
- marketing
- analytics
- adobe-analytics
capability:
exposes:
- type: mcp
namespace: brand-analytics
port: 8080
tools:
- name: get-page-metrics
description: Retrieve page-level engagement metrics from Adobe Analytics for a specified report suite and date range.
inputParameters:
- name: report_suite_id
in: body
type: string
description: The Adobe Analytics report suite ID for the brand property.
- name: date_range
in: body
type: string
description: Date range in YYYY-MM-DD/YYYY-MM-DD format.
call: adobe.get-report
with:
rsid: '{{report_suite_id}}'
date_range: '{{date_range}}'
outputParameters:
- name: page_views
type: string
mapping: $.rows[0].value
- name: unique_visitors
type: string
mapping: $.rows[1].value
- name: avg_time_on_page
type: string
mapping: $.rows[2].value
consumes:
- type: http
namespace: adobe
baseUri: https://analytics.adobe.io/api/nestle
authentication:
type: bearer
token: $secrets.adobe_analytics_token
inputParameters:
- name: x-api-key
in: header
value: $secrets.adobe_api_key
resources:
- name: reports
path: /reports
operations:
- name: get-report
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 30
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- jira
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-30
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-30
with:
identifier: '{{identifier}}'
- name: create-ticket
type: call
call: jira.create-issue
with:
project: FOOD
summary: Task from workflow 30
description: '{{process.details}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-30
method: POST
- type: http
namespace: jira
baseUri: https://nestle.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issues
operations:
- name: create-issue
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 24
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- datadog
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-24
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-24
with:
identifier: '{{identifier}}'
- name: push
type: call
call: datadog.submit-metrics
with:
metric_name: food-manufacturing.workflow_24
data: '{{process.metrics}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-24
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: bearer
token: $secrets.datadog_token
resources:
- name: metrics
path: /metrics
operations:
- name: submit-metrics
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 18
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- jira
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-18
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-18
with:
identifier: '{{identifier}}'
- name: create-ticket
type: call
call: jira.create-issue
with:
project: FOOD
summary: Task from workflow 18
description: '{{process.details}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-18
method: POST
- type: http
namespace: jira
baseUri: https://nestle.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issues
operations:
- name: create-issue
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 32
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- tableau
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-32
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-32
with:
identifier: '{{identifier}}'
- name: refresh
type: call
call: tableau.publish-datasource
with:
dataset_id: workflow_32
data: '{{process.metrics}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-32
method: POST
- type: http
namespace: tableau
baseUri: https://nestle-tableau.online.tableau.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: datasources
path: /datasources
operations:
- name: publish-datasource
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 26
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- servicenow
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-26
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-26
with:
identifier: '{{identifier}}'
- name: create
type: call
call: servicenow.create-incident
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-26
method: POST
- type: http
namespace: servicenow
baseUri: https://nestle.service-now.com/api/now/v1
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 27
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- slack
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-27
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-27
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: slack.post-message
with:
channel: '#food-manufacturing'
text: 'Completed workflow 27: {{process.summary}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-27
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /messages
operations:
- name: post-message
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 33
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- box
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-33
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-33
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: box.upload-file
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-33
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
operations:
- name: upload-file
method: POST
Retrieves updated product catalog data from SAP, pushes it to an Elasticsearch index for the e-commerce search engine, and logs the refresh status to a Google Sheets audit trail.
naftiko: '0.5'
info:
label: Elasticsearch Product Search Index Refresh
description: Retrieves updated product catalog data from SAP, pushes it to an Elasticsearch index for the e-commerce search engine, and logs the refresh status to a Google Sheets audit trail.
tags:
- e-commerce
- search
- sap
- elasticsearch
- google-sheets
capability:
exposes:
- type: mcp
namespace: search-index
port: 8080
tools:
- name: refresh-product-index
description: Given a material group, pull updated products from SAP, index in Elasticsearch, and log to audit sheet.
inputParameters:
- name: material_group
in: body
type: string
description: The SAP material group to refresh.
- name: audit_spreadsheet_id
in: body
type: string
description: The Google Sheets ID for index refresh audit.
steps:
- name: get-products
type: call
call: sap.get-products-by-group
with:
material_group: '{{material_group}}'
- name: bulk-index
type: call
call: elasticsearch.bulk-index
with:
index: nestle-product-catalog
documents: '{{get-products.results}}'
- name: log-refresh
type: call
call: gsheets.append-row
with:
spreadsheet_id: '{{audit_spreadsheet_id}}'
range: IndexRefresh!A:E
values: '{{material_group}},{{get-products.count}},{{bulk-index.indexed_count}},{{bulk-index.error_count}},{{bulk-index.timestamp}}'
consumes:
- type: http
namespace: sap
baseUri: https://nestle-s4.sap.com/sap/opu/odata/sap/API_PRODUCT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
inputParameters:
- name: Accept
in: header
value: application/json
resources:
- name: products
path: /A_Product?$filter=MaterialGroup eq '{{material_group}}'
inputParameters:
- name: material_group
in: query
operations:
- name: get-products-by-group
method: GET
- type: http
namespace: elasticsearch
baseUri: https://nestle-es.westeurope.azure.elastic-cloud.com
authentication:
type: basic
username: $secrets.elasticsearch_user
password: $secrets.elasticsearch_password
resources:
- name: bulk
path: /{{index}}/_bulk
inputParameters:
- name: index
in: path
operations:
- name: bulk-index
method: POST
- type: http
namespace: gsheets
baseUri: https://sheets.googleapis.com/v4
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: values
path: /spreadsheets/{{spreadsheet_id}}/values/{{range}}:append
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: append-row
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 23
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- hubspot
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-23
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-23
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: hubspot.send-email
with:
to: '{{process.email}}'
subject: Workflow 23 Complete
body: '{{process.summary}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-23
method: POST
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com/crm/v3
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: contacts
path: /contacts
operations:
- name: send-email
method: POST
When Datadog detects a factory line monitor breach, retrieves host details, creates a ServiceNow incident, and notifies the plant operations team in Microsoft Teams.
naftiko: '0.5'
info:
label: Manufacturing Line Downtime Alerter
description: When Datadog detects a factory line monitor breach, retrieves host details, creates a ServiceNow incident, and notifies the plant operations team in Microsoft Teams.
tags:
- manufacturing
- monitoring
- datadog
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: factory-alerts
port: 8080
tools:
- name: escalate-line-downtime
description: Given a Datadog monitor ID and plant code, retrieve alert details, create a ServiceNow incident, and notify the plant ops team.
inputParameters:
- name: monitor_id
in: body
type: string
description: The Datadog monitor ID that triggered.
- name: plant_code
in: body
type: string
description: The Nestlé plant code.
steps:
- name: get-monitor
type: call
call: datadog.get-monitor
with:
monitor_id: '{{monitor_id}}'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Line downtime alert: {{get-monitor.name}} at plant {{plant_code}}'
description: 'Monitor: {{get-monitor.name}}. Status: {{get-monitor.overall_state}}. Message: {{get-monitor.message}}. Plant: {{plant_code}}.'
priority: '2'
category: manufacturing_downtime
assigned_group: Plant_Operations_{{plant_code}}
- name: notify-ops
type: call
call: msteams.post-channel
with:
team_id: plant-ops-{{plant_code}}
channel_id: line-alerts
text: 'LINE DOWNTIME: {{get-monitor.name}} is {{get-monitor.overall_state}}. Incident {{create-incident.number}} created. Please investigate immediately.'
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: monitors
path: /monitor/{{monitor_id}}
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
- type: http
namespace: servicenow
baseUri: https://nestle.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/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel
method: POST
Syncs incoming distributor orders from Oracle E-Business Suite into SAP as sales orders, and updates the Salesforce opportunity stage with order confirmation details.
naftiko: '0.5'
info:
label: Distributor Order Sync Pipeline
description: Syncs incoming distributor orders from Oracle E-Business Suite into SAP as sales orders, and updates the Salesforce opportunity stage with order confirmation details.
tags:
- supply-chain
- sales
- oracle-e-business-suite
- sap
- salesforce
capability:
exposes:
- type: mcp
namespace: distributor-orders
port: 8080
tools:
- name: sync-distributor-order
description: Given an Oracle EBS order number and Salesforce opportunity ID, retrieve order details, create a SAP sales order, and update Salesforce.
inputParameters:
- name: ebs_order_number
in: body
type: string
description: The Oracle EBS order number.
- name: opportunity_id
in: body
type: string
description: The Salesforce opportunity ID.
steps:
- name: get-ebs-order
type: call
call: oracle-ebs.get-order
with:
order_number: '{{ebs_order_number}}'
- name: create-sales-order
type: call
call: sap.create-sales-order
with:
sold_to: '{{get-ebs-order.customer_number}}'
material: '{{get-ebs-order.item_number}}'
quantity: '{{get-ebs-order.ordered_quantity}}'
requested_date: '{{get-ebs-order.request_date}}'
- name: update-opportunity
type: call
call: salesforce.update-opportunity
with:
opportunity_id: '{{opportunity_id}}'
stage: Closed Won
sap_order: '{{create-sales-order.sales_order_number}}'
consumes:
- type: http
namespace: oracle-ebs
baseUri: https://nestle-ebs.oraclecloud.com/webservices/rest/order
authentication:
type: basic
username: $secrets.oracle_ebs_user
password: $secrets.oracle_ebs_password
resources:
- name: orders
path: /{{order_number}}
inputParameters:
- name: order_number
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: sap
baseUri: https://nestle-s4.sap.com/sap/opu/odata/sap/API_SALES_ORDER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
inputParameters:
- name: Accept
in: header
value: application/json
resources:
- name: sales-orders
path: /A_SalesOrder
operations:
- name: create-sales-order
method: POST
- type: http
namespace: salesforce
baseUri: https://nestle.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /sobjects/Opportunity/{{opportunity_id}}
inputParameters:
- name: opportunity_id
in: path
operations:
- name: update-opportunity
method: PATCH
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 22
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- sharepoint
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-22
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-22
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: sharepoint.upload-document
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-22
method: POST
- type: http
namespace: sharepoint
baseUri: https://nestle.sharepoint.com/_api/v2.0
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: documents
path: /documents
operations:
- name: upload-document
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 20
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- tableau
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-20
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-20
with:
identifier: '{{identifier}}'
- name: refresh
type: call
call: tableau.publish-datasource
with:
dataset_id: workflow_20
data: '{{process.metrics}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-20
method: POST
- type: http
namespace: tableau
baseUri: https://nestle-tableau.online.tableau.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: datasources
path: /datasources
operations:
- name: publish-datasource
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 34
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- sharepoint
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-34
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-34
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: sharepoint.upload-document
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-34
method: POST
- type: http
namespace: sharepoint
baseUri: https://nestle.sharepoint.com/_api/v2.0
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: documents
path: /documents
operations:
- name: upload-document
method: POST
Queries MuleSoft Anypoint Platform for API health metrics, correlates with Dynatrace application performance data, and posts a consolidated integration health summary to Microsoft Teams.
naftiko: '0.5'
info:
label: MuleSoft Integration Health Dashboard
description: Queries MuleSoft Anypoint Platform for API health metrics, correlates with Dynatrace application performance data, and posts a consolidated integration health summary to Microsoft Teams.
tags:
- integration
- monitoring
- mulesoft
- dynatrace
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: integration-health
port: 8080
tools:
- name: report-integration-health
description: Given a MuleSoft environment and Dynatrace entity ID, collect API and APM metrics and post a health summary.
inputParameters:
- name: environment_id
in: body
type: string
description: The MuleSoft Anypoint environment ID.
- name: dynatrace_entity_id
in: body
type: string
description: The Dynatrace monitored entity ID.
steps:
- name: get-api-stats
type: call
call: mulesoft.get-api-metrics
with:
environment_id: '{{environment_id}}'
- name: get-apm-data
type: call
call: dynatrace.get-entity
with:
entity_id: '{{dynatrace_entity_id}}'
- name: post-summary
type: call
call: msteams.post-channel
with:
team_id: integration-platform
channel_id: health-dashboard
text: 'Integration Health: MuleSoft env {{environment_id}} — Total requests: {{get-api-stats.total_requests}}, Error rate: {{get-api-stats.error_rate}}%, Avg latency: {{get-api-stats.avg_latency}}ms. Dynatrace: Health {{get-apm-data.health_state}}, Response time: {{get-apm-data.response_time}}ms, Failure rate: {{get-apm-data.failure_rate}}%.'
consumes:
- type: http
namespace: mulesoft
baseUri: https://anypoint.mulesoft.com/analytics/1.0/nestle
authentication:
type: bearer
token: $secrets.mulesoft_token
resources:
- name: api-metrics
path: /{{environment_id}}/dashboardSummary
inputParameters:
- name: environment_id
in: path
operations:
- name: get-api-metrics
method: GET
- type: http
namespace: dynatrace
baseUri: https://nestle.live.dynatrace.com/api/v2
authentication:
type: bearer
token: $secrets.dynatrace_token
resources:
- name: entities
path: /entities/{{entity_id}}
inputParameters:
- name: entity_id
in: path
operations:
- name: get-entity
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
method: POST
Retrieves on-hand inventory balance from Oracle Cloud for a specified item and warehouse. Used by Nestlé supply planners to verify raw material and finished goods stock levels.
naftiko: '0.5'
info:
label: Oracle Cloud Inventory Balance
description: Retrieves on-hand inventory balance from Oracle Cloud for a specified item and warehouse. Used by Nestlé supply planners to verify raw material and finished goods stock levels.
tags:
- supply-chain
- inventory
- oracle-cloud
capability:
exposes:
- type: mcp
namespace: inventory-management
port: 8080
tools:
- name: get-inventory-balance
description: Fetch on-hand inventory for an item at a specific warehouse from Oracle Cloud.
inputParameters:
- name: item_number
in: body
type: string
description: The Oracle item number.
- name: warehouse_code
in: body
type: string
description: The warehouse or subinventory code.
call: oracle.get-onhand
with:
item_number: '{{item_number}}'
warehouse_code: '{{warehouse_code}}'
outputParameters:
- name: on_hand_quantity
type: string
mapping: $.items[0].OnhandQuantity
- name: uom
type: string
mapping: $.items[0].UOMCode
- name: lot_number
type: string
mapping: $.items[0].LotNumber
consumes:
- type: http
namespace: oracle
baseUri: https://nestle-cloud.oraclecloud.com/fscmRestApi/resources/v1
authentication:
type: basic
username: $secrets.oracle_user
password: $secrets.oracle_password
resources:
- name: inventory
path: /inventoryOnhandBalances?q=ItemNumber={{item_number}};SubinventoryCode={{warehouse_code}}
inputParameters:
- name: item_number
in: query
- name: warehouse_code
in: query
operations:
- name: get-onhand
method: GET
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 35
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- hubspot
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-35
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-35
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: hubspot.send-email
with:
to: '{{process.email}}'
subject: Workflow 35 Complete
body: '{{process.summary}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-35
method: POST
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com/crm/v3
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: contacts
path: /contacts
operations:
- name: send-email
method: POST
When a marketing designer submits a Canva design for review, uploads the exported asset to Box, creates a ServiceNow approval task, and notifies the brand manager in Microsoft Teams.
naftiko: '0.5'
info:
label: Canva Brand Asset Approval Workflow
description: When a marketing designer submits a Canva design for review, uploads the exported asset to Box, creates a ServiceNow approval task, and notifies the brand manager in Microsoft Teams.
tags:
- marketing
- design
- canva
- box
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: brand-asset-approval
port: 8080
tools:
- name: submit-asset-for-approval
description: Given a Canva design ID and brand, export the asset, upload to Box, create an approval task, and notify the brand manager.
inputParameters:
- name: design_id
in: body
type: string
description: The Canva design ID.
- name: brand
in: body
type: string
description: The Nestlé brand name.
- name: designer_name
in: body
type: string
description: The name of the submitting designer.
steps:
- name: export-design
type: call
call: canva.export-design
with:
design_id: '{{design_id}}'
format: pdf
- name: upload-to-box
type: call
call: box.upload-file
with:
parent_folder_id: brand_assets_{{brand}}
file_name: '{{design_id}}_review.pdf'
file_url: '{{export-design.download_url}}'
- name: create-approval
type: call
call: servicenow.create-task
with:
short_description: 'Brand asset approval: {{brand}} design {{design_id}}'
description: 'Designer: {{designer_name}}. Brand: {{brand}}. Design ID: {{design_id}}. Box link: {{upload-to-box.shared_link}}. Please review for brand guidelines compliance.'
assigned_group: Brand_Management_{{brand}}
category: brand_asset_approval
- name: notify-manager
type: call
call: msteams.post-channel
with:
team_id: brand-marketing-{{brand}}
channel_id: asset-approvals
text: 'New asset for review from {{designer_name}}: {{brand}} design {{design_id}}. Preview: {{upload-to-box.shared_link}}. Approval task: {{create-approval.number}}.'
consumes:
- type: http
namespace: canva
baseUri: https://api.canva.com/rest/v1
authentication:
type: bearer
token: $secrets.canva_token
resources:
- name: exports
path: /designs/{{design_id}}/export
inputParameters:
- name: design_id
in: path
operations:
- name: export-design
method: POST
- type: http
namespace: box
baseUri: https://upload.box.com/api/2.0
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: uploads
path: /files/content
operations:
- name: upload-file
method: POST
- type: http
namespace: servicenow
baseUri: https://nestle.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/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 21
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- box
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-21
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-21
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: box.upload-file
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-21
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
operations:
- name: upload-file
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 10
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- sharepoint
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-10
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-10
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: sharepoint.upload-document
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-10
method: POST
- type: http
namespace: sharepoint
baseUri: https://nestle.sharepoint.com/_api/v2.0
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: documents
path: /documents
operations:
- name: upload-document
method: POST
Receives a consumer complaint from Salesforce Service Cloud, enriches with product batch data from SAP, classifies severity via Azure Machine Learning, and routes a ServiceNow case to the appropriate quality team.
naftiko: '0.5'
info:
label: Consumer Complaint Triage
description: Receives a consumer complaint from Salesforce Service Cloud, enriches with product batch data from SAP, classifies severity via Azure Machine Learning, and routes a ServiceNow case to the appropriate quality team.
tags:
- quality
- customer-service
- salesforce
- sap
- azure-machine-learning
- servicenow
capability:
exposes:
- type: mcp
namespace: complaint-triage
port: 8080
tools:
- name: triage-complaint
description: Given a Salesforce case ID, enrich with SAP batch data, classify severity, and route to ServiceNow.
inputParameters:
- name: case_id
in: body
type: string
description: The Salesforce case ID.
steps:
- name: get-case
type: call
call: salesforce.get-case
with:
case_id: '{{case_id}}'
- name: get-batch
type: call
call: sap.get-batch
with:
batch_number: '{{get-case.batch_number}}'
material_number: '{{get-case.product_code}}'
- name: classify-severity
type: call
call: azureml.classify-complaint
with:
complaint_text: '{{get-case.description}}'
product_category: '{{get-batch.material_group}}'
- name: create-quality-case
type: call
call: servicenow.create-task
with:
short_description: 'Consumer complaint: {{get-case.subject}} — Severity {{classify-severity.severity_level}}'
description: 'Salesforce case: {{case_id}}. Consumer: {{get-case.contact_name}}. Product: {{get-batch.material_description}} (batch {{get-case.batch_number}}). Plant: {{get-batch.plant}}. Severity: {{classify-severity.severity_level}}. Classification: {{classify-severity.category}}.'
assigned_group: Quality_Consumer_Affairs
priority: '{{classify-severity.priority}}'
category: consumer_complaint
consumes:
- type: http
namespace: salesforce
baseUri: https://nestle.my.salesforce.com/services/data/v59.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: sap
baseUri: https://nestle-s4.sap.com/sap/opu/odata/sap/API_BATCH_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
inputParameters:
- name: Accept
in: header
value: application/json
resources:
- name: batches
path: /A_Batch(Material='{{material_number}}',Batch='{{batch_number}}')
inputParameters:
- name: material_number
in: path
- name: batch_number
in: path
operations:
- name: get-batch
method: GET
- type: http
namespace: azureml
baseUri: https://nestle-ml.westeurope.inference.ml.azure.com
authentication:
type: bearer
token: $secrets.azureml_token
resources:
- name: complaint-classifier
path: /score
operations:
- name: classify-complaint
method: POST
- type: http
namespace: servicenow
baseUri: https://nestle.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 vendor invoice data from SAP, cross-references with the purchase order and goods receipt, and opens a ServiceNow task for accounts payable when discrepancies are found.
naftiko: '0.5'
info:
label: Vendor Invoice Reconciliation
description: Retrieves vendor invoice data from SAP, cross-references with the purchase order and goods receipt, and opens a ServiceNow task for accounts payable when discrepancies are found.
tags:
- finance
- procurement
- sap
- servicenow
capability:
exposes:
- type: mcp
namespace: invoice-reconciliation
port: 8080
tools:
- name: reconcile-invoice
description: Given an SAP invoice document number, compare against PO and goods receipt, and flag discrepancies to ServiceNow.
inputParameters:
- name: invoice_number
in: body
type: string
description: The SAP invoice document number.
- name: po_number
in: body
type: string
description: The related 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: flag-discrepancy
type: call
call: servicenow.create-task
with:
short_description: 'Invoice discrepancy: {{invoice_number}} vs PO {{po_number}}'
description: 'Invoice amount: {{get-invoice.total_amount}} {{get-invoice.currency}}. PO amount: {{get-po.total_value}} {{get-po.currency}}. Vendor: {{get-invoice.vendor_name}}. Invoice date: {{get-invoice.document_date}}. Variance requires AP review.'
assigned_group: Accounts_Payable
category: invoice_reconciliation
consumes:
- type: http
namespace: sap
baseUri: https://nestle-s4.sap.com/sap/opu/odata/sap/API_SUPPLIERINVOICE_PROCESS_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
- type: http
namespace: servicenow
baseUri: https://nestle.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
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 11
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- hubspot
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-11
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-11
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: hubspot.send-email
with:
to: '{{process.email}}'
subject: Workflow 11 Complete
body: '{{process.summary}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-11
method: POST
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com/crm/v3
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: contacts
path: /contacts
operations:
- name: send-email
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 13
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- salesforce
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-13
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-13
with:
identifier: '{{identifier}}'
- name: create
type: call
call: salesforce.create-account
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-13
method: POST
- type: http
namespace: salesforce
baseUri: https://nestle.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /accounts
operations:
- name: create-account
method: POST
Retrieves campaign metrics from MailChimp for a Nestlé consumer newsletter, enriches with Google Analytics landing page data, and posts a performance summary to the brand team's Microsoft Teams channel.
naftiko: '0.5'
info:
label: MailChimp Consumer Newsletter Performance
description: Retrieves campaign metrics from MailChimp for a Nestlé consumer newsletter, enriches with Google Analytics landing page data, and posts a performance summary to the brand team's Microsoft Teams channel.
tags:
- marketing
- email-marketing
- mailchimp
- google-analytics
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: email-performance
port: 8080
tools:
- name: review-newsletter-performance
description: Given a MailChimp campaign ID and GA property, pull email metrics, landing page conversion data, and post a summary to Teams.
inputParameters:
- name: campaign_id
in: body
type: string
description: The MailChimp campaign ID.
- name: ga_property_id
in: body
type: string
description: The Google Analytics 4 property ID.
- name: brand
in: body
type: string
description: The Nestlé brand name.
steps:
- name: get-campaign-stats
type: call
call: mailchimp.get-campaign-report
with:
campaign_id: '{{campaign_id}}'
- name: get-landing-metrics
type: call
call: ga.run-report
with:
property_id: '{{ga_property_id}}'
start_date: '{{get-campaign-stats.send_time}}'
end_date: '{{get-campaign-stats.send_time}}'
- name: post-summary
type: call
call: msteams.post-channel
with:
team_id: brand-marketing-{{brand}}
channel_id: email-metrics
text: 'Newsletter performance for {{brand}}: Open rate: {{get-campaign-stats.open_rate}}%, Click rate: {{get-campaign-stats.click_rate}}%, Unsubscribes: {{get-campaign-stats.unsubscribes}}. Landing page sessions: {{get-landing-metrics.sessions}}, Conversions: {{get-landing-metrics.conversions}}.'
consumes:
- type: http
namespace: mailchimp
baseUri: https://us1.api.mailchimp.com/3.0
authentication:
type: basic
username: anystring
password: $secrets.mailchimp_api_key
resources:
- name: reports
path: /reports/{{campaign_id}}
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-campaign-report
method: GET
- type: http
namespace: ga
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: 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
method: POST
Checks the status of an Azure Data Factory pipeline run, and if failed, creates a ServiceNow incident and alerts the data engineering team in Microsoft Teams.
naftiko: '0.5'
info:
label: Azure Data Factory Pipeline Monitor
description: Checks the status of an Azure Data Factory pipeline run, and if failed, creates a ServiceNow incident and alerts the data engineering team in Microsoft Teams.
tags:
- data
- monitoring
- azure-data-factory
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: data-pipeline-monitor
port: 8080
tools:
- name: check-pipeline-status
description: Given an ADF pipeline run ID, check status and escalate failures to ServiceNow and Microsoft Teams.
inputParameters:
- name: run_id
in: body
type: string
description: The Azure Data Factory pipeline run ID.
- name: pipeline_name
in: body
type: string
description: The pipeline name for context.
steps:
- name: get-run
type: call
call: adf.get-pipeline-run
with:
run_id: '{{run_id}}'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'ADF pipeline failure: {{pipeline_name}}'
description: 'Pipeline: {{pipeline_name}}. Run ID: {{run_id}}. Status: {{get-run.status}}. Error: {{get-run.message}}. Duration: {{get-run.durationInMs}}ms.'
priority: '2'
category: data_pipeline
assigned_group: Data_Engineering
- name: alert-team
type: call
call: msteams.post-channel
with:
team_id: data-engineering
channel_id: pipeline-alerts
text: 'ADF Pipeline Failed: {{pipeline_name}} (run {{run_id}}). Status: {{get-run.status}}. Error: {{get-run.message}}. Incident: {{create-incident.number}}.'
consumes:
- type: http
namespace: adf
baseUri: https://management.azure.com/subscriptions/$secrets.azure_subscription_id/resourceGroups/nestle-data-rg/providers/Microsoft.DataFactory/factories/nestle-adf
authentication:
type: bearer
token: $secrets.azure_mgmt_token
resources:
- name: pipeline-runs
path: /pipelineruns/{{run_id}}?api-version=2018-06-01
inputParameters:
- name: run_id
in: path
operations:
- name: get-pipeline-run
method: GET
- type: http
namespace: servicenow
baseUri: https://nestle.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/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 12
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- datadog
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-12
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-12
with:
identifier: '{{identifier}}'
- name: push
type: call
call: datadog.submit-metrics
with:
metric_name: food-manufacturing.workflow_12
data: '{{process.metrics}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-12
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: bearer
token: $secrets.datadog_token
resources:
- name: metrics
path: /metrics
operations:
- name: submit-metrics
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 16
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- confluence
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-16
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-16
with:
identifier: '{{identifier}}'
- name: publish
type: call
call: confluence.create-page
with:
space: FOOD-M
title: Report 16
content: '{{process.report}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-16
method: POST
- type: http
namespace: confluence
baseUri: https://nestle.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Monitors Apache NiFi process group status, and when a failure is detected, creates a ServiceNow incident and alerts the data operations team in Microsoft Teams with pipeline diagnostics.
naftiko: '0.5'
info:
label: NiFi Data Pipeline Failure Escalation
description: Monitors Apache NiFi process group status, and when a failure is detected, creates a ServiceNow incident and alerts the data operations team in Microsoft Teams with pipeline diagnostics.
tags:
- data
- monitoring
- apache-nifi
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: nifi-monitoring
port: 8080
tools:
- name: escalate-nifi-failure
description: Given a NiFi process group ID, check status and escalate failures to ServiceNow and Microsoft Teams.
inputParameters:
- name: process_group_id
in: body
type: string
description: The Apache NiFi process group ID.
- name: pipeline_name
in: body
type: string
description: The human-readable pipeline name.
steps:
- name: get-status
type: call
call: nifi.get-process-group
with:
process_group_id: '{{process_group_id}}'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'NiFi pipeline failure: {{pipeline_name}}'
description: 'Pipeline: {{pipeline_name}}. Process group: {{process_group_id}}. Active threads: {{get-status.activeThreadCount}}. Queued: {{get-status.queued}}. Invalid: {{get-status.invalidCount}}. Stopped: {{get-status.stoppedCount}}.'
priority: '2'
category: data_pipeline
assigned_group: Data_Operations
- name: alert-team
type: call
call: msteams.post-channel
with:
team_id: data-operations
channel_id: pipeline-alerts
text: 'NiFi Pipeline Alert: {{pipeline_name}} has failures. Queued: {{get-status.queued}}, Invalid: {{get-status.invalidCount}}. Incident: {{create-incident.number}}. Investigate immediately.'
consumes:
- type: http
namespace: nifi
baseUri: https://nestle-nifi.internal.nestle.com/nifi-api
authentication:
type: bearer
token: $secrets.nifi_token
resources:
- name: process-groups
path: /process-groups/{{process_group_id}}/status
inputParameters:
- name: process_group_id
in: path
operations:
- name: get-process-group
method: GET
- type: http
namespace: servicenow
baseUri: https://nestle.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/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel
method: POST
Executes a predefined sales volume query against Nestlé's Teradata data warehouse, returning total units sold, net revenue, and trade spend for a product category and time period.
naftiko: '0.5'
info:
label: Teradata Sales Data Query
description: Executes a predefined sales volume query against Nestlé's Teradata data warehouse, returning total units sold, net revenue, and trade spend for a product category and time period.
tags:
- analytics
- data-warehouse
- teradata
capability:
exposes:
- type: mcp
namespace: sales-analytics
port: 8080
tools:
- name: query-sales-volume
description: Query Teradata for product category sales metrics for a given month.
inputParameters:
- name: category_code
in: body
type: string
description: The product category code.
- name: year_month
in: body
type: string
description: The year-month in YYYY-MM format.
call: teradata.run-query
with:
category_code: '{{category_code}}'
year_month: '{{year_month}}'
outputParameters:
- name: units_sold
type: string
mapping: $.results[0].units_sold
- name: net_revenue
type: string
mapping: $.results[0].net_revenue
- name: trade_spend
type: string
mapping: $.results[0].trade_spend
consumes:
- type: http
namespace: teradata
baseUri: https://nestle-tdrest.teradata.com/api/query/v1
authentication:
type: basic
username: $secrets.teradata_user
password: $secrets.teradata_password
resources:
- name: queries
path: /systems/nestle_edw/queries
operations:
- name: run-query
method: POST
Creates a LinkedIn sponsored job posting for a Nestlé role, syncs the requisition to Workday, and notifies the hiring manager in Microsoft Teams.
naftiko: '0.5'
info:
label: LinkedIn Brand Recruitment Campaign
description: Creates a LinkedIn sponsored job posting for a Nestlé role, syncs the requisition to Workday, and notifies the hiring manager in Microsoft Teams.
tags:
- hr
- recruitment
- linkedin
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: talent-acquisition
port: 8080
tools:
- name: launch-recruitment-post
description: Given a Workday requisition ID and hiring manager ID, create a LinkedIn job posting and notify the hiring manager.
inputParameters:
- name: requisition_id
in: body
type: string
description: The Workday job requisition ID.
- name: hiring_manager_id
in: body
type: string
description: The Workday worker ID of the hiring manager.
steps:
- name: get-requisition
type: call
call: workday.get-requisition
with:
requisition_id: '{{requisition_id}}'
- name: get-manager
type: call
call: workday.get-worker
with:
worker_id: '{{hiring_manager_id}}'
- name: create-job-post
type: call
call: linkedin.create-job-posting
with:
title: '{{get-requisition.job_title}}'
description: '{{get-requisition.job_description}}'
location: '{{get-requisition.location}}'
company_id: nestle
- name: notify-manager
type: call
call: msteams.send-message
with:
recipient_upn: '{{get-manager.work_email}}'
text: 'Your requisition ''{{get-requisition.job_title}}'' is now live on LinkedIn. Job post ID: {{create-job-post.post_id}}. Link: {{create-job-post.apply_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: requisitions
path: /jobRequisitions/{{requisition_id}}
inputParameters:
- name: requisition_id
in: path
operations:
- name: get-requisition
method: GET
- name: workers
path: /workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
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
- 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
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 17
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- powerbi
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-17
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-17
with:
identifier: '{{identifier}}'
- name: refresh
type: call
call: powerbi.refresh-dataset
with:
dataset_id: workflow_17
data: '{{process.metrics}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-17
method: POST
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /datasets
operations:
- name: refresh-dataset
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 15
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- slack
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-15
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-15
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: slack.post-message
with:
channel: '#food-manufacturing'
text: 'Completed workflow 15: {{process.summary}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-15
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /messages
operations:
- name: post-message
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 29
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- powerbi
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-29
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-29
with:
identifier: '{{identifier}}'
- name: refresh
type: call
call: powerbi.refresh-dataset
with:
dataset_id: workflow_29
data: '{{process.metrics}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-29
method: POST
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /datasets
operations:
- name: refresh-dataset
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 28
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- confluence
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-28
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-28
with:
identifier: '{{identifier}}'
- name: publish
type: call
call: confluence.create-page
with:
space: FOOD-M
title: Report 28
content: '{{process.report}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-28
method: POST
- type: http
namespace: confluence
baseUri: https://nestle.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 14
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- servicenow
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-14
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-14
with:
identifier: '{{identifier}}'
- name: create
type: call
call: servicenow.create-incident
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-14
method: POST
- type: http
namespace: servicenow
baseUri: https://nestle.service-now.com/api/now/v1
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
Retrieves warehouse locations from Oracle Cloud, calculates optimal delivery routes using Google Maps Distance Matrix, and updates the SAP transportation plan with route assignments and ETAs.
naftiko: '0.5'
info:
label: Google Maps Distribution Network Optimizer
description: Retrieves warehouse locations from Oracle Cloud, calculates optimal delivery routes using Google Maps Distance Matrix, and updates the SAP transportation plan with route assignments and ETAs.
tags:
- supply-chain
- logistics
- oracle-cloud
- google-maps
- sap
capability:
exposes:
- type: mcp
namespace: distribution-routing
port: 8080
tools:
- name: optimize-delivery-routes
description: Given a distribution center code and delivery date, retrieve pending deliveries from Oracle, calculate optimal routes via Google Maps, and update SAP transportation.
inputParameters:
- name: dc_code
in: body
type: string
description: The distribution center code.
- name: delivery_date
in: body
type: string
description: The delivery date in YYYY-MM-DD format.
steps:
- name: get-pending-deliveries
type: call
call: oracle.get-pending-shipments
with:
warehouse_code: '{{dc_code}}'
ship_date: '{{delivery_date}}'
- name: calculate-routes
type: call
call: gmaps.distance-matrix
with:
origins: '{{get-pending-deliveries.origin_address}}'
destinations: '{{get-pending-deliveries.destination_addresses}}'
departure_time: '{{delivery_date}}T06:00:00Z'
- name: update-transport-plan
type: call
call: sap.update-shipment-routes
with:
dc_code: '{{dc_code}}'
delivery_date: '{{delivery_date}}'
route_assignments: '{{calculate-routes.optimal_sequence}}'
total_distance_km: '{{calculate-routes.total_distance}}'
estimated_duration: '{{calculate-routes.total_duration}}'
consumes:
- type: http
namespace: oracle
baseUri: https://nestle-cloud.oraclecloud.com/fscmRestApi/resources/v1
authentication:
type: basic
username: $secrets.oracle_user
password: $secrets.oracle_password
resources:
- name: shipments
path: /shipments?q=WarehouseCode={{warehouse_code}};ShipDate={{ship_date}};Status=PENDING
inputParameters:
- name: warehouse_code
in: query
- name: ship_date
in: query
operations:
- name: get-pending-shipments
method: GET
- type: http
namespace: gmaps
baseUri: https://maps.googleapis.com/maps/api
authentication:
type: bearer
token: $secrets.google_maps_api_key
resources:
- name: distance-matrix
path: /distancematrix/json?origins={{origins}}&destinations={{destinations}}&departure_time={{departure_time}}
inputParameters:
- name: origins
in: query
- name: destinations
in: query
- name: departure_time
in: query
operations:
- name: distance-matrix
method: GET
- type: http
namespace: sap
baseUri: https://nestle-s4.sap.com/sap/opu/odata/sap/API_SHIPMENT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
inputParameters:
- name: Accept
in: header
value: application/json
resources:
- name: shipments
path: /A_ShipmentRoute
operations:
- name: update-shipment-routes
method: POST
Retrieves operational data for Nestle food-manufacturing workflows.
naftiko: '0.5'
info:
label: Nestle Data Lookup 5
description: Retrieves operational data for Nestle food-manufacturing workflows.
tags:
- food-manufacturing
- operations
capability:
exposes:
- type: mcp
namespace: nestle-data
port: 8080
tools:
- name: get-data-5
description: Retrieves operational data for Nestle food-manufacturing workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: nestle-data.get-data-5
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: nestle-data
baseUri: https://api.nestle.com/data/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: data-5
path: /data-5/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-5
method: GET
Retrieves product recipe data from SAP, cross-references allergen declarations with the regulatory database in Informatica, and creates a ServiceNow compliance task if discrepancies are detected.
naftiko: '0.5'
info:
label: Allergen Label Compliance Checker
description: Retrieves product recipe data from SAP, cross-references allergen declarations with the regulatory database in Informatica, and creates a ServiceNow compliance task if discrepancies are detected.
tags:
- quality
- food-safety
- sap
- informatica
- servicenow
capability:
exposes:
- type: mcp
namespace: allergen-compliance
port: 8080
tools:
- name: check-allergen-compliance
description: Given a material number, retrieve recipe allergens from SAP, validate against Informatica regulatory data, and flag issues in ServiceNow.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number for the finished product.
- name: target_market
in: body
type: string
description: The target market country code (ISO 3166).
steps:
- name: get-recipe
type: call
call: sap.get-recipe-allergens
with:
material: '{{material_number}}'
- name: get-regulations
type: call
call: informatica.get-allergen-reqs
with:
country: '{{target_market}}'
allergens: '{{get-recipe.allergen_list}}'
- name: create-compliance-task
type: call
call: servicenow.create-task
with:
short_description: 'Allergen compliance review: {{material_number}} for {{target_market}}'
description: 'Material: {{material_number}}. Allergens declared: {{get-recipe.allergen_list}}. Target market: {{target_market}}. Regulatory requirements: {{get-regulations.required_declarations}}. Gaps: {{get-regulations.gaps}}.'
assigned_group: Regulatory_Affairs
category: allergen_compliance
consumes:
- type: http
namespace: sap
baseUri: https://nestle-s4.sap.com/sap/opu/odata/sap/API_RECIPE_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
inputParameters:
- name: Accept
in: header
value: application/json
resources:
- name: recipes
path: /A_RecipeAllergen?$filter=Material eq '{{material}}'
inputParameters:
- name: material
in: query
operations:
- name: get-recipe-allergens
method: GET
- type: http
namespace: informatica
baseUri: https://nestle.informaticacloud.com/active-bpel/rt/v1
authentication:
type: bearer
token: $secrets.informatica_token
resources:
- name: allergen-regulations
path: /regulatory/allergens
operations:
- name: get-allergen-reqs
method: POST
- type: http
namespace: servicenow
baseUri: https://nestle.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
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 4
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- confluence
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-4
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-4
with:
identifier: '{{identifier}}'
- name: publish
type: call
call: confluence.create-page
with:
space: FOOD-M
title: Report 4
content: '{{process.report}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-4
method: POST
- type: http
namespace: confluence
baseUri: https://nestle.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 5
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- powerbi
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-5
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-5
with:
identifier: '{{identifier}}'
- name: refresh
type: call
call: powerbi.refresh-dataset
with:
dataset_id: workflow_5
data: '{{process.metrics}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-5
method: POST
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /datasets
operations:
- name: refresh-dataset
method: POST
Retrieves quality inspection results from SAP QM, logs findings to a Google Sheets tracker, and creates a ServiceNow follow-up task if any results are out of specification.
naftiko: '0.5'
info:
label: Factory Quality Inspection Results Sync
description: Retrieves quality inspection results from SAP QM, logs findings to a Google Sheets tracker, and creates a ServiceNow follow-up task if any results are out of specification.
tags:
- quality
- manufacturing
- sap
- google-sheets
- servicenow
capability:
exposes:
- type: mcp
namespace: quality-inspection
port: 8080
tools:
- name: sync-inspection-results
description: Given an SAP inspection lot number, retrieve results, log to Google Sheets, and create a ServiceNow task if out-of-spec.
inputParameters:
- name: inspection_lot
in: body
type: string
description: The SAP inspection lot number.
- name: spreadsheet_id
in: body
type: string
description: The Google Sheets ID for the quality tracker.
steps:
- name: get-results
type: call
call: sap.get-inspection-results
with:
inspection_lot: '{{inspection_lot}}'
- name: log-results
type: call
call: gsheets.append-row
with:
spreadsheet_id: '{{spreadsheet_id}}'
range: InspectionLog!A:G
values: '{{inspection_lot}},{{get-results.material}},{{get-results.plant}},{{get-results.inspection_date}},{{get-results.overall_result}},{{get-results.defect_count}},{{get-results.inspector}}'
- name: create-followup
type: call
call: servicenow.create-task
with:
short_description: 'QC follow-up: Inspection lot {{inspection_lot}} — {{get-results.overall_result}}'
description: 'Material: {{get-results.material}}. Plant: {{get-results.plant}}. Result: {{get-results.overall_result}}. Defects: {{get-results.defect_count}}. Inspector: {{get-results.inspector}}.'
assigned_group: Quality_Operations
category: quality_inspection
consumes:
- type: http
namespace: sap
baseUri: https://nestle-s4.sap.com/sap/opu/odata/sap/API_INSPECTIONLOT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
inputParameters:
- name: Accept
in: header
value: application/json
resources:
- name: inspection-lots
path: /A_InspectionLot('{{inspection_lot}}')/to_InspectionResult
inputParameters:
- name: inspection_lot
in: path
operations:
- name: get-inspection-results
method: GET
- type: http
namespace: gsheets
baseUri: https://sheets.googleapis.com/v4
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: values
path: /spreadsheets/{{spreadsheet_id}}/values/{{range}}:append
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: append-row
method: POST
- type: http
namespace: servicenow
baseUri: https://nestle.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 operational data for Nestle food-manufacturing workflows.
naftiko: '0.5'
info:
label: Nestle Data Lookup 4
description: Retrieves operational data for Nestle food-manufacturing workflows.
tags:
- food-manufacturing
- operations
capability:
exposes:
- type: mcp
namespace: nestle-data
port: 8080
tools:
- name: get-data-4
description: Retrieves operational data for Nestle food-manufacturing workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: nestle-data.get-data-4
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: nestle-data
baseUri: https://api.nestle.com/data/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: data-4
path: /data-4/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-4
method: GET
Retrieves operational data for Nestle food-manufacturing workflows.
naftiko: '0.5'
info:
label: Nestle Data Lookup 6
description: Retrieves operational data for Nestle food-manufacturing workflows.
tags:
- food-manufacturing
- operations
capability:
exposes:
- type: mcp
namespace: nestle-data
port: 8080
tools:
- name: get-data-6
description: Retrieves operational data for Nestle food-manufacturing workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: nestle-data.get-data-6
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: nestle-data
baseUri: https://api.nestle.com/data/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: data-6
path: /data-6/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-6
method: GET
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 7
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- teams
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-7
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-7
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: teams.send-message
with:
channel_id: food-manufacturing
message: 'Workflow 7 complete: {{process.summary}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-7
method: POST
- type: http
namespace: teams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.teams_token
resources:
- name: messages
path: /messages
operations:
- name: send-message
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 6
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- jira
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-6
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-6
with:
identifier: '{{identifier}}'
- name: create-ticket
type: call
call: jira.create-issue
with:
project: FOOD
summary: Task from workflow 6
description: '{{process.details}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-6
method: POST
- type: http
namespace: jira
baseUri: https://nestle.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issues
operations:
- name: create-issue
method: POST
Exports a Qlik Sense dashboard visualization as a PDF for a specified app and sheet. Used by Nestlé business intelligence teams to distribute manufacturing KPI reports.
naftiko: '0.5'
info:
label: Qlik Sense Dashboard Export
description: Exports a Qlik Sense dashboard visualization as a PDF for a specified app and sheet. Used by Nestlé business intelligence teams to distribute manufacturing KPI reports.
tags:
- analytics
- reporting
- qlik-sense
capability:
exposes:
- type: mcp
namespace: bi-reporting
port: 8080
tools:
- name: export-dashboard
description: Export a Qlik Sense sheet as PDF given an app ID and sheet ID.
inputParameters:
- name: app_id
in: body
type: string
description: The Qlik Sense app GUID.
- name: sheet_id
in: body
type: string
description: The sheet ID within the app.
call: qlik.export-sheet
with:
app_id: '{{app_id}}'
sheet_id: '{{sheet_id}}'
outputParameters:
- name: download_url
type: string
mapping: $.downloadUrl
- name: file_size
type: string
mapping: $.fileSize
consumes:
- type: http
namespace: qlik
baseUri: https://nestle.us.qlikcloud.com/api/v1
authentication:
type: bearer
token: $secrets.qlik_api_key
resources:
- name: exports
path: /apps/{{app_id}}/sheets/{{sheet_id}}/export/pdf
inputParameters:
- name: app_id
in: path
- name: sheet_id
in: path
operations:
- name: export-sheet
method: POST
Retrieves operational data for Nestle food-manufacturing workflows.
naftiko: '0.5'
info:
label: Nestle Data Lookup 7
description: Retrieves operational data for Nestle food-manufacturing workflows.
tags:
- food-manufacturing
- operations
capability:
exposes:
- type: mcp
namespace: nestle-data
port: 8080
tools:
- name: get-data-7
description: Retrieves operational data for Nestle food-manufacturing workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: nestle-data.get-data-7
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: nestle-data
baseUri: https://api.nestle.com/data/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: data-7
path: /data-7/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-7
method: GET
When a product quality issue triggers a recall, retrieves the affected batch from SAP, creates a critical ServiceNow incident, and broadcasts an alert to the crisis management Microsoft Teams channel.
naftiko: '0.5'
info:
label: Product Recall Notification Orchestrator
description: When a product quality issue triggers a recall, retrieves the affected batch from SAP, creates a critical ServiceNow incident, and broadcasts an alert to the crisis management Microsoft Teams channel.
tags:
- quality
- manufacturing
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: recall-management
port: 8080
tools:
- name: initiate-recall-notification
description: Given a batch number and material, retrieve batch details from SAP, create a critical incident in ServiceNow, and alert the crisis team in Microsoft Teams.
inputParameters:
- name: batch_number
in: body
type: string
description: The SAP batch number of the affected product.
- name: material_number
in: body
type: string
description: The SAP material number.
- name: issue_description
in: body
type: string
description: Description of the quality issue.
steps:
- name: get-batch
type: call
call: sap.get-batch
with:
batch_number: '{{batch_number}}'
material_number: '{{material_number}}'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'RECALL: {{get-batch.material_description}} batch {{batch_number}}'
description: 'Quality issue: {{issue_description}}. Material: {{material_number}}. Batch: {{batch_number}}. Production date: {{get-batch.production_date}}. Quantity: {{get-batch.batch_quantity}} {{get-batch.unit}}. Plant: {{get-batch.plant}}.'
priority: '1'
category: product_recall
assigned_group: Quality_Crisis
- name: alert-crisis-team
type: call
call: msteams.post-channel
with:
team_id: crisis-management-team
channel_id: product-recalls
text: 'PRODUCT RECALL INITIATED: {{get-batch.material_description}} (batch {{batch_number}}). Issue: {{issue_description}}. Incident: {{create-incident.number}}. Immediate action required.'
consumes:
- type: http
namespace: sap
baseUri: https://nestle-s4.sap.com/sap/opu/odata/sap/API_BATCH_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: batches
path: /A_Batch(Material='{{material_number}}',Batch='{{batch_number}}')
inputParameters:
- name: material_number
in: path
- name: batch_number
in: path
operations:
- name: get-batch
method: GET
- type: http
namespace: servicenow
baseUri: https://nestle.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/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel
method: POST
Queries Datadog for infrastructure host health metrics at a Nestlé manufacturing facility, returning CPU, memory, and alert counts for the last hour.
naftiko: '0.5'
info:
label: Datadog Factory System Health
description: Queries Datadog for infrastructure host health metrics at a Nestlé manufacturing facility, returning CPU, memory, and alert counts for the last hour.
tags:
- manufacturing
- monitoring
- datadog
capability:
exposes:
- type: mcp
namespace: factory-monitoring
port: 8080
tools:
- name: get-host-metrics
description: Retrieve CPU, memory, and active alert counts for a Datadog-monitored factory host.
inputParameters:
- name: host_name
in: body
type: string
description: The Datadog hostname for the factory system.
call: datadog.get-host-totals
with:
filter: '{{host_name}}'
outputParameters:
- name: cpu_usage
type: string
mapping: $.host_list[0].metrics.cpu
- name: memory_usage
type: string
mapping: $.host_list[0].metrics.memory
- name: active_alerts
type: string
mapping: $.host_list[0].alerts_count
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: hosts
path: /hosts?filter={{filter}}
inputParameters:
- name: filter
in: query
operations:
- name: get-host-totals
method: GET
Retrieves operational data for Nestle food-manufacturing workflows.
naftiko: '0.5'
info:
label: Nestle Data Lookup 3
description: Retrieves operational data for Nestle food-manufacturing workflows.
tags:
- food-manufacturing
- operations
capability:
exposes:
- type: mcp
namespace: nestle-data
port: 8080
tools:
- name: get-data-3
description: Retrieves operational data for Nestle food-manufacturing workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: nestle-data.get-data-3
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: nestle-data
baseUri: https://api.nestle.com/data/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: data-3
path: /data-3/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-3
method: GET
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 2
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- servicenow
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-2
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-2
with:
identifier: '{{identifier}}'
- name: create
type: call
call: servicenow.create-incident
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-2
method: POST
- type: http
namespace: servicenow
baseUri: https://nestle.service-now.com/api/now/v1
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 3
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- slack
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-3
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-3
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: slack.post-message
with:
channel: '#food-manufacturing'
text: 'Completed workflow 3: {{process.summary}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-3
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /messages
operations:
- name: post-message
method: POST
Pulls market share data from Circana (formerly IRI) for a specified Nestlé product category, geography, and time period. Used by brand strategy teams to benchmark competitive positioning.
naftiko: '0.5'
info:
label: Circana Market Share Report
description: Pulls market share data from Circana (formerly IRI) for a specified Nestlé product category, geography, and time period. Used by brand strategy teams to benchmark competitive positioning.
tags:
- analytics
- market-research
- circana
capability:
exposes:
- type: mcp
namespace: market-intelligence
port: 8080
tools:
- name: get-market-share
description: Query Circana for market share data by category, geography, and time period.
inputParameters:
- name: category
in: body
type: string
description: The product category identifier.
- name: geography
in: body
type: string
description: The geographic market code.
- name: period
in: body
type: string
description: The time period (e.g. 4W, 12W, 52W).
call: circana.get-share-data
with:
category: '{{category}}'
geography: '{{geography}}'
period: '{{period}}'
outputParameters:
- name: dollar_share
type: string
mapping: $.data.dollar_share
- name: unit_share
type: string
mapping: $.data.unit_share
- name: share_change
type: string
mapping: $.data.share_change_vs_ya
consumes:
- type: http
namespace: circana
baseUri: https://api.circana.com/v2
authentication:
type: bearer
token: $secrets.circana_token
resources:
- name: market-share
path: /market-measurement/share
operations:
- name: get-share-data
method: POST
Pulls demand forecast data from Azure Databricks, converts to a planned order in SAP, and notifies the production planning team in Microsoft Teams with the scheduling details.
naftiko: '0.5'
info:
label: Demand Forecast to Production Planning
description: Pulls demand forecast data from Azure Databricks, converts to a planned order in SAP, and notifies the production planning team in Microsoft Teams with the scheduling details.
tags:
- supply-chain
- forecasting
- azure-databricks
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: demand-planning
port: 8080
tools:
- name: convert-forecast-to-plan
description: Given a forecast run ID and material number, retrieve the forecast from Databricks, create a planned order in SAP, and notify the planning team.
inputParameters:
- name: forecast_run_id
in: body
type: string
description: The Databricks forecast run identifier.
- name: material_number
in: body
type: string
description: The SAP material number.
- name: plant_code
in: body
type: string
description: The SAP plant code.
steps:
- name: get-forecast
type: call
call: databricks.get-forecast
with:
run_id: '{{forecast_run_id}}'
material: '{{material_number}}'
- name: create-planned-order
type: call
call: sap.create-planned-order
with:
material: '{{material_number}}'
plant: '{{plant_code}}'
quantity: '{{get-forecast.recommended_quantity}}'
start_date: '{{get-forecast.production_start}}'
end_date: '{{get-forecast.production_end}}'
- name: notify-planners
type: call
call: msteams.post-channel
with:
team_id: supply-planning
channel_id: production-orders
text: 'Planned order created from forecast: Material {{material_number}} at plant {{plant_code}}. Qty: {{get-forecast.recommended_quantity}}. Production window: {{get-forecast.production_start}} to {{get-forecast.production_end}}. SAP order: {{create-planned-order.order_number}}.'
consumes:
- type: http
namespace: databricks
baseUri: https://nestle-adb.azuredatabricks.net/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: jobs
path: /jobs/runs/get-output?run_id={{run_id}}
inputParameters:
- name: run_id
in: query
operations:
- name: get-forecast
method: GET
- type: http
namespace: sap
baseUri: https://nestle-s4.sap.com/sap/opu/odata/sap/API_PLANNED_ORDERS
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
inputParameters:
- name: Accept
in: header
value: application/json
resources:
- name: planned-orders
path: /A_PlannedOrder
operations:
- name: create-planned-order
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
method: POST
Retrieves operational data for Nestle food-manufacturing workflows.
naftiko: '0.5'
info:
label: Nestle Data Lookup 2
description: Retrieves operational data for Nestle food-manufacturing workflows.
tags:
- food-manufacturing
- operations
capability:
exposes:
- type: mcp
namespace: nestle-data
port: 8080
tools:
- name: get-data-2
description: Retrieves operational data for Nestle food-manufacturing workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: nestle-data.get-data-2
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: nestle-data
baseUri: https://api.nestle.com/data/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: data-2
path: /data-2/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-2
method: GET
Searches Nestlé's Confluence knowledge base for standard operating procedures relevant to a manufacturing query. Returns matching page titles, excerpts, and links.
naftiko: '0.5'
info:
label: Confluence Factory SOP Search
description: Searches Nestlé's Confluence knowledge base for standard operating procedures relevant to a manufacturing query. Returns matching page titles, excerpts, and links.
tags:
- manufacturing
- knowledge-management
- confluence
capability:
exposes:
- type: mcp
namespace: factory-knowledge
port: 8080
tools:
- name: search-sops
description: Search Confluence for factory standard operating procedures by keyword.
inputParameters:
- name: query
in: body
type: string
description: The search keyword or phrase.
- name: space_key
in: body
type: string
description: The Confluence space key for the factory SOP library.
call: confluence.search
with:
cql: space={{space_key}} AND type=page AND text~"{{query}}"
outputParameters:
- name: results
type: string
mapping: $.results
consumes:
- type: http
namespace: confluence
baseUri: https://nestle.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_api_token
resources:
- name: search
path: /search?cql={{cql}}
inputParameters:
- name: cql
in: query
operations:
- name: search
method: GET
Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
naftiko: '0.5'
info:
label: Nestle Workflow 1
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
tags:
- food-manufacturing
- operations
- salesforce
capability:
exposes:
- type: mcp
namespace: food-manufacturing
port: 8080
tools:
- name: nestle-workflow-1
description: Orchestrates food-manufacturing operations including data retrieval, processing, and automated notification for Nestle.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: nestle-ops.run-workflow-1
with:
identifier: '{{identifier}}'
- name: create
type: call
call: salesforce.create-account
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: nestle-ops
baseUri: https://api.nestle.com/operations/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-1
method: POST
- type: http
namespace: salesforce
baseUri: https://nestle.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /accounts
operations:
- name: create-account
method: POST
Retrieves operational data for Nestle food-manufacturing workflows.
naftiko: '0.5'
info:
label: Nestle Data Lookup 1
description: Retrieves operational data for Nestle food-manufacturing workflows.
tags:
- food-manufacturing
- operations
capability:
exposes:
- type: mcp
namespace: nestle-data
port: 8080
tools:
- name: get-data-1
description: Retrieves operational data for Nestle food-manufacturing workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: nestle-data.get-data-1
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: nestle-data
baseUri: https://api.nestle.com/data/v1
authentication:
type: bearer
token: $secrets.nestle_api_token
resources:
- name: data-1
path: /data-1/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-1
method: GET
Collects carbon emissions data from SAP environmental compliance, enriches with Teradata energy consumption trends, and publishes a summary report to a SharePoint sustainability library.
naftiko: '0.5'
info:
label: Sustainability Metrics Reporting Pipeline
description: Collects carbon emissions data from SAP environmental compliance, enriches with Teradata energy consumption trends, and publishes a summary report to a SharePoint sustainability library.
tags:
- sustainability
- reporting
- sap
- teradata
- sharepoint
capability:
exposes:
- type: mcp
namespace: sustainability-reporting
port: 8080
tools:
- name: generate-sustainability-report
description: Given a plant code and reporting period, collect emissions data from SAP, energy trends from Teradata, and upload the summary to SharePoint.
inputParameters:
- name: plant_code
in: body
type: string
description: The Nestlé plant code.
- name: reporting_period
in: body
type: string
description: The reporting period in YYYY-QN format (e.g. 2026-Q1).
steps:
- name: get-emissions
type: call
call: sap.get-emissions
with:
plant: '{{plant_code}}'
period: '{{reporting_period}}'
- name: get-energy-trends
type: call
call: teradata.query-energy
with:
plant_code: '{{plant_code}}'
period: '{{reporting_period}}'
- name: upload-report
type: call
call: sharepoint.upload-file
with:
site_id: sustainability-reports
file_path: '{{plant_code}}/{{reporting_period}}_sustainability_summary.json'
content: 'Plant: {{plant_code}}, Period: {{reporting_period}}, CO2e: {{get-emissions.total_co2e}} tonnes, Scope1: {{get-emissions.scope1}}, Scope2: {{get-emissions.scope2}}, Energy: {{get-energy-trends.total_kwh}} kWh, Renewable%: {{get-energy-trends.renewable_pct}}'
consumes:
- type: http
namespace: sap
baseUri: https://nestle-s4.sap.com/sap/opu/odata/sap/API_ENVIRONMENT_HEALTH_SAFETY
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
inputParameters:
- name: Accept
in: header
value: application/json
resources:
- name: emissions
path: /EmissionsData?$filter=Plant eq '{{plant}}' and Period eq '{{period}}'
inputParameters:
- name: plant
in: query
- name: period
in: query
operations:
- name: get-emissions
method: GET
- type: http
namespace: teradata
baseUri: https://nestle-tdrest.teradata.com/api/query/v1
authentication:
type: basic
username: $secrets.teradata_user
password: $secrets.teradata_password
resources:
- name: queries
path: /systems/nestle_edw/queries
operations:
- name: query-energy
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
Launches a new Marketo email campaign for a product line, updates the associated Salesforce campaign record with launch details, and posts confirmation to the marketing Teams channel.
naftiko: '0.5'
info:
label: Marketo Campaign Launch Orchestrator
description: Launches a new Marketo email campaign for a product line, updates the associated Salesforce campaign record with launch details, and posts confirmation to the marketing Teams channel.
tags:
- marketing
- marketo
- salesforce
- campaign-management
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: campaign-ops
port: 8080
tools:
- name: launch-marketo-campaign
description: Given a Marketo program ID, Salesforce campaign ID, and launch datetime, activate the Marketo program, update the Salesforce campaign to Active, and notify the marketing team in Teams. Use for product launch and promotional email campaigns.
inputParameters:
- name: marketo_program_id
in: body
type: string
description: The Marketo program ID to activate.
- name: salesforce_campaign_id
in: body
type: string
description: The Salesforce campaign ID to sync launch status.
- name: launch_datetime
in: body
type: string
description: The scheduled launch datetime in ISO 8601 format.
steps:
- name: activate-program
type: call
call: marketo.activate-program
with:
program_id: '{{marketo_program_id}}'
- name: update-sf-campaign
type: call
call: salesforce-camp.update-campaign
with:
campaign_id: '{{salesforce_campaign_id}}'
status: Active
start_date: '{{launch_datetime}}'
- name: notify-marketing
type: call
call: msteams-camp.post-message
with:
channel_id: $secrets.marketing_channel_id
text: 'Campaign launched: Marketo program {{marketo_program_id}} activated for {{launch_datetime}}. Salesforce campaign {{salesforce_campaign_id}} updated.'
consumes:
- type: http
namespace: marketo
baseUri: https://nike.mktorest.com/rest/v1
authentication:
type: bearer
token: $secrets.marketo_token
resources:
- name: programs
path: /programs/{{program_id}}/approve.json
inputParameters:
- name: program_id
in: path
operations:
- name: activate-program
method: POST
- type: http
namespace: salesforce-camp
baseUri: https://nike.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: campaigns
path: /sobjects/Campaign/{{campaign_id}}
inputParameters:
- name: campaign_id
in: path
operations:
- name: update-campaign
method: PATCH
- type: http
namespace: msteams-camp
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: channel_id
in: path
operations:
- name: post-message
method: POST
Monitors Axway API gateway traffic patterns in Snowflake, flags anomalies, creates ServiceNow incidents, and alerts the API platform team via Microsoft Teams.
naftiko: '0.5'
info:
label: Axway API Gateway Traffic Monitor
description: Monitors Axway API gateway traffic patterns in Snowflake, flags anomalies, creates ServiceNow incidents, and alerts the API platform team via Microsoft Teams.
tags:
- api-management
- axway
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: axway_api_gateway_tr
port: 8080
tools:
- name: axway-api
description: Given an execution date, run the axway api gateway traffic monitor process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.AXWAY_API_GATEWAY_TRAFFIC_MONITOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.AXWAY_API_GATEWAY_TRAFFIC_MONI_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: api-management
short_description: Axway API Gateway Traffic Monitor processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_axway_api_gateway_tr_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://nike.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors Ollama-powered internal AI assistant usage and performance in Snowflake, tracks adoption trends, and distributes reports to IT leadership via Microsoft Teams.
naftiko: '0.5'
info:
label: Ollama Internal AI Assistant Monitor
description: Monitors Ollama-powered internal AI assistant usage and performance in Snowflake, tracks adoption trends, and distributes reports to IT leadership via Microsoft Teams.
tags:
- ai
- ollama
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ollama_internal_ai_a
port: 8080
tools:
- name: ollama-internal
description: Given an execution date, run the ollama internal ai assistant monitor process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.OLLAMA_INTERNAL_AI_ASSISTANT_MONITOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.OLLAMA_INTERNAL_AI_ASSISTANT_M_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_ollama_internal_ai_a_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors Nike Direct inventory levels in Snowflake, triggers replenishment orders in SAP when below thresholds, and notifies the planning team via Microsoft Teams.
naftiko: '0.5'
info:
label: Nike Direct Inventory Replenishment Trigger
description: Monitors Nike Direct inventory levels in Snowflake, triggers replenishment orders in SAP when below thresholds, and notifies the planning team via Microsoft Teams.
tags:
- supply-chain
- sap
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: nike_direct_inventor
port: 8080
tools:
- name: nike-direct
description: Given an execution date, run the nike direct inventory replenishment trigger process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.NIKE_DIRECT_INVENTORY_REPLENISHMENT_TRIG LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.NIKE_DIRECT_INVENTORY_REPLENIS_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_nike_direct_inventor_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves a user session from DynamoDB for the Nike digital platform.
naftiko: '0.5'
info:
label: DynamoDB Session Lookup
description: Retrieves a user session from DynamoDB for the Nike digital platform.
tags:
- data
- dynamodb
- e-commerce
capability:
exposes:
- type: mcp
namespace: session-mgmt
port: 8080
tools:
- name: get-session
description: Given a session ID, retrieve session data from DynamoDB. Use for customer experience investigations.
inputParameters:
- name: session_id
in: body
type: string
description: The session ID.
call: dynamodb.get-item
with:
session_id: '{{session_id}}'
outputParameters:
- name: user_id
type: string
mapping: $.Item.user_id.S
- name: platform
type: string
mapping: $.Item.platform.S
consumes:
- type: http
namespace: dynamodb
baseUri: https://dynamodb.us-east-1.amazonaws.com
authentication:
type: apikey
key: X-Amz-Security-Token
value: $secrets.aws_session_token
placement: header
resources:
- name: items
path: /
operations:
- name: get-item
method: POST
Validates Figma design files against Nike brand guidelines in Snowflake, flags non-compliant assets, creates Jira remediation tasks, and notifies the brand team via Microsoft Teams.
naftiko: '0.5'
info:
label: Figma Brand Asset Compliance Checker
description: Validates Figma design files against Nike brand guidelines in Snowflake, flags non-compliant assets, creates Jira remediation tasks, and notifies the brand team via Microsoft Teams.
tags:
- design
- figma
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: figma_brand_asset_co
port: 8080
tools:
- name: figma-brand
description: Given an execution date, run the figma brand asset compliance checker process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.FIGMA_BRAND_ASSET_COMPLIANCE_CHECKER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.FIGMA_BRAND_ASSET_COMPLIANCE_C_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: Figma Brand Asset Compliance Checker - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_figma_brand_asset_co_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Initiates SailPoint access review campaigns, logs certification status in Snowflake, creates ServiceNow follow-up tasks, and notifies the IAM team via Microsoft Teams.
naftiko: '0.5'
info:
label: SailPoint Access Review Campaign
description: Initiates SailPoint access review campaigns, logs certification status in Snowflake, creates ServiceNow follow-up tasks, and notifies the IAM team via Microsoft Teams.
tags:
- security
- sailpoint
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sailpoint_access_rev
port: 8080
tools:
- name: sailpoint-access
description: Given an execution date, run the sailpoint access review campaign process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAILPOINT_ACCESS_REVIEW_CAMPAIGN LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAILPOINT_ACCESS_REVIEW_CAMPAI_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: security
short_description: SailPoint Access Review Campaign processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sailpoint_access_rev_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://nike.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Reviews SAP Concur travel expenses for athlete-related travel compliance, logs in Snowflake, creates ServiceNow exceptions, and notifies the finance team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Concur Athlete Travel Compliance
description: Reviews SAP Concur travel expenses for athlete-related travel compliance, logs in Snowflake, creates ServiceNow exceptions, and notifies the finance team via Microsoft Teams.
tags:
- finance
- sap
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_concur_athlete_t
port: 8080
tools:
- name: sap-concur
description: Given an execution date, run the sap concur athlete travel compliance process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_CONCUR_ATHLETE_TRAVEL_COMPLIANCE LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_CONCUR_ATHLETE_TRAVEL_COMP_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: finance
short_description: SAP Concur Athlete Travel Compliance processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_concur_athlete_t_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://nike.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a new hire is created in Workday, opens a ServiceNow onboarding ticket, provisions a Microsoft 365 account, assigns Okta application groups, and sends a Teams welcome message.
naftiko: '0.5'
info:
label: Workday New Hire Onboarding Orchestrator
description: When a new hire is created in Workday, opens a ServiceNow onboarding ticket, provisions a Microsoft 365 account, assigns Okta application groups, and sends a Teams welcome message.
tags:
- hr
- onboarding
- workday
- servicenow
- microsoft-365
- okta
- 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: open a ServiceNow ticket, provision Microsoft 365, assign Okta groups, and send a Teams welcome. Invoke when a new hire is created in Workday.'
inputParameters:
- name: 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's first day in YYYY-MM-DD format.
- name: job_family
in: body
type: string
description: The job family or function (e.g., Engineering, Retail, Marketing) to determine Okta group assignment.
steps:
- name: get-employee
type: call
call: workday.get-worker
with:
worker_id: '{{employee_id}}'
- name: open-snow-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'New hire onboarding: {{get-employee.full_name}}'
category: hr_onboarding
assigned_to: IT_Onboarding
- name: provision-m365
type: call
call: msgraph.create-user
with:
display_name: '{{get-employee.full_name}}'
mail_nickname: '{{get-employee.user_principal_name}}'
department: '{{get-employee.department}}'
- name: assign-okta-groups
type: call
call: okta.assign-user-to-group
with:
login: '{{get-employee.work_email}}'
job_family: '{{job_family}}'
- name: send-welcome
type: call
call: msteams.send-message
with:
recipient_upn: '{{get-employee.work_email}}'
text: 'Welcome to Nike, {{get-employee.first_name}}! Your onboarding ticket: {{open-snow-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: /nike/workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: servicenow
baseUri: https://nike.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: 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: okta
baseUri: https://nike.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: user-groups
path: /users
operations:
- name: assign-user-to-group
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: chats
path: /chats
operations:
- name: send-message
method: POST
Lists all active Okta users assigned to a specified application group and cross-references with Workday to identify stale or orphaned accounts for quarterly access reviews.
naftiko: '0.5'
info:
label: Okta Access Review and Compliance Audit
description: Lists all active Okta users assigned to a specified application group and cross-references with Workday to identify stale or orphaned accounts for quarterly access reviews.
tags:
- identity
- security
- okta
- workday
- access-review
- compliance
capability:
exposes:
- type: mcp
namespace: identity-review
port: 8080
tools:
- name: run-access-review
description: Given an Okta group ID and app name, list all group members and compare against active Workday workers to identify orphaned accounts. Generates a compliance report for quarterly reviews.
inputParameters:
- name: group_id
in: body
type: string
description: The Okta group ID to audit.
- name: app_name
in: body
type: string
description: Application name for audit context.
steps:
- name: get-group-members
type: call
call: okta-audit.get-group-members
with:
group_id: '{{group_id}}'
- name: get-active-workers
type: call
call: workday-audit.list-workers
consumes:
- type: http
namespace: okta-audit
baseUri: https://nike.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: group-members
path: /groups/{{group_id}}/users
inputParameters:
- name: group_id
in: path
operations:
- name: get-group-members
method: GET
- type: http
namespace: workday-audit
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: active-workers
path: /nike/workers
operations:
- name: list-workers
method: GET
Monitors AWS Lambda function errors in Snowflake, creates ServiceNow incidents for recurring failures, and alerts the cloud engineering team via Microsoft Teams.
naftiko: '0.5'
info:
label: AWS Lambda Function Error Handler
description: Monitors AWS Lambda function errors in Snowflake, creates ServiceNow incidents for recurring failures, and alerts the cloud engineering team via Microsoft Teams.
tags:
- cloud
- amazon-web-services
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: aws_lambda_function_
port: 8080
tools:
- name: aws-lambda
description: Given an execution date, run the aws lambda function error handler process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.AWS_LAMBDA_FUNCTION_ERROR_HANDLER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.AWS_LAMBDA_FUNCTION_ERROR_HAND_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: cloud
short_description: AWS Lambda Function Error Handler processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_aws_lambda_function__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://nike.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Processes Microsoft Sentinel security alerts, logs in Snowflake, creates ServiceNow incidents, and alerts the SOC team via Microsoft Teams.
naftiko: '0.5'
info:
label: Microsoft Sentinel Security Alert Handler
description: Processes Microsoft Sentinel security alerts, logs in Snowflake, creates ServiceNow incidents, and alerts the SOC team via Microsoft Teams.
tags:
- security
- microsoft-sentinel
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: microsoft_sentinel_s
port: 8080
tools:
- name: microsoft-sentinel
description: Given an execution date, run the microsoft sentinel security alert handler process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.MICROSOFT_SENTINEL_SECURITY_ALERT_HANDLE LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.MICROSOFT_SENTINEL_SECURITY_AL_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: security
short_description: Microsoft Sentinel Security Alert Handler processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_microsoft_sentinel_s_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://nike.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Fetches the active sprint from Jira for a given project, summarizes open, in-progress, and done issues, and posts the report to the engineering team's Microsoft Teams channel.
naftiko: '0.5'
info:
label: Jira Sprint Status Report
description: Fetches the active sprint from Jira for a given project, summarizes open, in-progress, and done issues, and posts the report to the engineering team's Microsoft Teams channel.
tags:
- devops
- agile
- jira
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sprint-reporting
port: 8080
tools:
- name: get-sprint-status
description: Given a Jira project key, fetch the active sprint and summarize issues by status, then post to the engineering Teams channel. Use for daily standups or weekly sprint reviews.
inputParameters:
- name: project_key
in: body
type: string
description: The Jira project key (e.g., TECH, PLATFORM).
steps:
- name: get-active-sprint
type: call
call: jira-sprint.get-active-sprint
with:
project_key: '{{project_key}}'
- name: search-sprint-issues
type: call
call: jira-sprint.search-issues
with:
sprint_id: '{{get-active-sprint.sprint_id}}'
- name: post-report
type: call
call: msteams-sprint.post-message
with:
channel_id: $secrets.engineering_channel_id
text: 'Sprint {{get-active-sprint.sprint_name}}: {{search-sprint-issues.todo_count}} To Do, {{search-sprint-issues.inprogress_count}} In Progress, {{search-sprint-issues.done_count}} Done.'
consumes:
- type: http
namespace: jira-sprint
baseUri: https://nike.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: sprints
path: /project/{{project_key}}/sprints
inputParameters:
- name: project_key
in: path
operations:
- name: get-active-sprint
method: GET
- name: issues
path: /search
operations:
- name: search-issues
method: POST
- type: http
namespace: msteams-sprint
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: channel_id
in: path
operations:
- name: post-message
method: POST
When a change request is submitted in ServiceNow, notifies approvers in Microsoft Teams and awaits a response before proceeding with the deployment window.
naftiko: '0.5'
info:
label: ServiceNow Change Request Workflow
description: When a change request is submitted in ServiceNow, notifies approvers in Microsoft Teams and awaits a response before proceeding with the deployment window.
tags:
- itsm
- change-management
- servicenow
- microsoft-teams
- approval
capability:
exposes:
- type: mcp
namespace: itsm-change
port: 8080
tools:
- name: submit-change-request
description: Given a change description, risk level, and planned start datetime, create a ServiceNow change request and notify the CAB approvers in Teams. Use before any production deployment or infrastructure change.
inputParameters:
- name: change_description
in: body
type: string
description: Human-readable description of the proposed change.
- name: risk
in: body
type: string
description: 'Risk level: low, medium, or high.'
- name: planned_start
in: body
type: string
description: Planned start datetime in ISO 8601 format.
steps:
- name: create-change
type: call
call: servicenow-chg.create-change
with:
short_description: '{{change_description}}'
risk: '{{risk}}'
start_date: '{{planned_start}}'
- name: notify-cab
type: call
call: msteams-chg.post-message
with:
channel_id: $secrets.cab_channel_id
text: 'Change Request {{create-change.number}} submitted. Risk: {{risk}}. Planned: {{planned_start}}. Description: {{change_description}}'
consumes:
- type: http
namespace: servicenow-chg
baseUri: https://nike.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-chg
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: channel_id
in: path
operations:
- name: post-message
method: POST
Returns active Nike headcount grouped by cost center and department from Workday for workforce planning and finance allocation reviews.
naftiko: '0.5'
info:
label: Workday Headcount by Cost Center
description: Returns active Nike headcount grouped by cost center and department from Workday for workforce planning and finance allocation reviews.
tags:
- hr
- workforce-planning
- reporting
- workday
capability:
exposes:
- type: mcp
namespace: hr-reporting
port: 8080
tools:
- name: get-headcount-snapshot
description: Returns all active Nike employees grouped by cost center and department from Workday. Use for headcount planning, budget allocation, and executive workforce reviews.
call: workday-hc.list-workers
outputParameters:
- name: workers
type: array
mapping: $.data[*]
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: /nike/workers
operations:
- name: list-workers
method: GET
Compares Workday headcount against plan in Snowflake, flags variances, refreshes Power BI dashboards, and notifies HR leadership via Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Headcount vs Plan Tracker
description: Compares Workday headcount against plan in Snowflake, flags variances, refreshes Power BI dashboards, and notifies HR leadership via Microsoft Teams.
tags:
- hr
- workforce-planning
- workday
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_headcount_vs
port: 8080
tools:
- name: workday-headcount
description: Given an execution date, run the workday headcount vs plan tracker process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.WORKDAY_HEADCOUNT_VS_PLAN_TRACKER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.WORKDAY_HEADCOUNT_VS_PLAN_TRAC_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_workday_headcount_vs_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When an Apache Airflow DAG fails, logs error details in Snowflake, creates a ServiceNow incident, and alerts the data engineering team via Microsoft Teams.
naftiko: '0.5'
info:
label: Apache Airflow DAG Failure Handler
description: When an Apache Airflow DAG fails, logs error details in Snowflake, creates a ServiceNow incident, and alerts the data engineering team via Microsoft Teams.
tags:
- data-engineering
- apache-airflow
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: apache_airflow_dag_f
port: 8080
tools:
- name: apache-airflow
description: Given an execution date, run the apache airflow dag failure handler process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.APACHE_AIRFLOW_DAG_FAILURE_HANDLER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.APACHE_AIRFLOW_DAG_FAILURE_HAN_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: data-engineering
short_description: Apache Airflow DAG Failure Handler processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_apache_airflow_dag_f_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://nike.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When an employee changes roles or departments in Workday, updates their Okta group memberships for the new access profile and creates a ServiceNow change record.
naftiko: '0.5'
info:
label: Workday Role Change Access Sync
description: When an employee changes roles or departments in Workday, updates their Okta group memberships for the new access profile and creates a ServiceNow change record.
tags:
- hr
- identity
- role-change
- workday
- okta
- servicenow
capability:
exposes:
- type: mcp
namespace: hr-identity
port: 8080
tools:
- name: sync-role-change-access
description: Given a Workday employee ID and new role details, update Okta group memberships to align with the new access profile and log a ServiceNow change record. Invoke when an employee changes position or department in Workday.
inputParameters:
- name: employee_id
in: body
type: string
description: The Workday worker ID of the employee whose role changed.
- name: new_role
in: body
type: string
description: The new job title.
- name: new_department
in: body
type: string
description: The new department.
steps:
- name: get-employee
type: call
call: workday-role.get-worker
with:
worker_id: '{{employee_id}}'
- name: update-okta-groups
type: call
call: okta-role.update-user-groups
with:
login: '{{get-employee.work_email}}'
department: '{{new_department}}'
- name: log-change
type: call
call: servicenow-role.create-change
with:
short_description: 'Role change: {{get-employee.full_name}} → {{new_role}} in {{new_department}}'
category: hr_role_change
consumes:
- type: http
namespace: workday-role
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers
path: /nike/workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: okta-role
baseUri: https://nike.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: user-groups
path: /users/{{login}}/groups
inputParameters:
- name: login
in: path
operations:
- name: update-user-groups
method: PUT
- type: http
namespace: servicenow-role
baseUri: https://nike.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
Audits Google Tag Manager tags on Nike.com for compliance, logs in Snowflake, and notifies the web analytics team via Microsoft Teams.
naftiko: '0.5'
info:
label: Google Tag Manager Nike.com Audit
description: Audits Google Tag Manager tags on Nike.com for compliance, logs in Snowflake, and notifies the web analytics team via Microsoft Teams.
tags:
- analytics
- google-tag-manager
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: google_tag_manager_n
port: 8080
tools:
- name: google-tag
description: Given an execution date, run the google tag manager nike.com audit process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.GOOGLE_TAG_MANAGER_NIKE_COM_AUDIT LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.GOOGLE_TAG_MANAGER_NIKE_COM_AU_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_google_tag_manager_n_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Analyzes Zendesk ticket sentiment in Snowflake, escalates high-negativity patterns, creates ServiceNow cases, and alerts the customer experience team via Microsoft Teams.
naftiko: '0.5'
info:
label: Zendesk Customer Sentiment Escalation
description: Analyzes Zendesk ticket sentiment in Snowflake, escalates high-negativity patterns, creates ServiceNow cases, and alerts the customer experience team via Microsoft Teams.
tags:
- support
- zendesk
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: zendesk_customer_sen
port: 8080
tools:
- name: zendesk-customer
description: Given an execution date, run the zendesk customer sentiment escalation process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.ZENDESK_CUSTOMER_SENTIMENT_ESCALATION LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.ZENDESK_CUSTOMER_SENTIMENT_ESC_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: support
short_description: Zendesk Customer Sentiment Escalation processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_zendesk_customer_sen_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://nike.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
At the start of a performance review cycle, fetches eligible employees from Workday and creates individual performance review tasks in ServiceNow for each manager.
naftiko: '0.5'
info:
label: Workday Performance Review Campaign Launch
description: At the start of a performance review cycle, fetches eligible employees from Workday and creates individual performance review tasks in ServiceNow for each manager.
tags:
- hr
- performance-management
- workday
- servicenow
capability:
exposes:
- type: mcp
namespace: hr-performance
port: 8080
tools:
- name: launch-performance-reviews
description: Given a review cycle name and department, fetch eligible employees from Workday and create review tasks in ServiceNow for each manager. Use to kick off annual or mid-year performance cycles.
inputParameters:
- name: review_cycle
in: body
type: string
description: Performance review cycle name (e.g., 2026-Annual).
- name: department
in: body
type: string
description: Department to scope the review launch.
steps:
- name: get-eligible-employees
type: call
call: workday-perf.get-workers-by-department
with:
department: '{{department}}'
- name: create-review-tasks
type: call
call: servicenow-perf.create-task
with:
short_description: 'Performance reviews {{review_cycle}}: {{department}}'
category: hr_performance_review
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-by-department
path: /nike/workers
inputParameters:
- name: department
in: query
operations:
- name: get-workers-by-department
method: GET
- type: http
namespace: servicenow-perf
baseUri: https://nike.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
Analyzes Paradox recruiting chatbot engagement metrics in Snowflake, identifies conversion bottlenecks, and notifies the talent acquisition team via Microsoft Teams.
naftiko: '0.5'
info:
label: Paradox Recruiting Chatbot Analytics
description: Analyzes Paradox recruiting chatbot engagement metrics in Snowflake, identifies conversion bottlenecks, and notifies the talent acquisition team via Microsoft Teams.
tags:
- hr
- recruiting
- paradox
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: paradox_recruiting_c
port: 8080
tools:
- name: paradox-recruiting
description: Given an execution date, run the paradox recruiting chatbot analytics process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.PARADOX_RECRUITING_CHATBOT_ANALYTICS LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.PARADOX_RECRUITING_CHATBOT_ANA_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_paradox_recruiting_c_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors athlete endorsement contract milestones in Snowflake, flags upcoming renewals, creates Jira tasks, and notifies the sports marketing team via Microsoft Teams.
naftiko: '0.5'
info:
label: Athlete Endorsement Contract Tracker
description: Monitors athlete endorsement contract milestones in Snowflake, flags upcoming renewals, creates Jira tasks, and notifies the sports marketing team via Microsoft Teams.
tags:
- marketing
- contracts
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: athlete_endorsement_
port: 8080
tools:
- name: athlete-endorsement
description: Given an execution date, run the athlete endorsement contract tracker process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.ATHLETE_ENDORSEMENT_CONTRACT_TRACKER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.ATHLETE_ENDORSEMENT_CONTRACT_T_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: Athlete Endorsement Contract Tracker - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_athlete_endorsement__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a high-value expense report is submitted in SAP Concur, validates the claim against SAP cost center budgets and routes to the finance manager via Teams for approval.
naftiko: '0.5'
info:
label: SAP Concur Expense Approval Escalation
description: When a high-value expense report is submitted in SAP Concur, validates the claim against SAP cost center budgets and routes to the finance manager via Teams for approval.
tags:
- finance
- expense-management
- sap-concur
- sap
- microsoft-teams
- approval
capability:
exposes:
- type: mcp
namespace: finance-expenses
port: 8080
tools:
- name: escalate-expense-report
description: Given a Concur expense report ID and total, validate remaining budget in SAP and notify the finance manager in Teams with the report details and approval link. Use when expense reports exceed policy thresholds.
inputParameters:
- name: report_id
in: body
type: string
description: The SAP Concur expense report ID.
- name: total_amount
in: body
type: number
description: The total expense amount in USD.
- name: cost_center
in: body
type: string
description: The SAP cost center to validate budget against.
steps:
- name: get-report
type: call
call: concur.get-expense-report
with:
report_id: '{{report_id}}'
- name: check-budget
type: call
call: sap-exp.get-cost-center-balance
with:
cost_center: '{{cost_center}}'
- name: notify-manager
type: call
call: msteams-exp.send-message
with:
recipient_upn: '{{get-report.manager_email}}'
text: 'Expense report {{report_id}} for ${{total_amount}} requires approval. Budget remaining: {{check-budget.available}}.'
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: sap-exp
baseUri: https://nike-s4.sap.com/sap/opu/odata/sap/API_COSTCENTER_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-balance
method: GET
- type: http
namespace: msteams-exp
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: chats
path: /chats
operations:
- name: send-message
method: POST
Routes Coupa procurement requests based on category rules in Snowflake, creates Jira approval tasks, and notifies the procurement team via Microsoft Teams.
naftiko: '0.5'
info:
label: Coupa Procurement Request Router
description: Routes Coupa procurement requests based on category rules in Snowflake, creates Jira approval tasks, and notifies the procurement team via Microsoft Teams.
tags:
- procurement
- coupa
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: coupa_procurement_re
port: 8080
tools:
- name: coupa-procurement
description: Given an execution date, run the coupa procurement request router process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.COUPA_PROCUREMENT_REQUEST_ROUTER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.COUPA_PROCUREMENT_REQUEST_ROUT_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: Coupa Procurement Request Router - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_coupa_procurement_re_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Pulls weekly product campaign performance metrics from Adobe Analytics and posts a digest to the digital marketing team's Microsoft Teams channel.
naftiko: '0.5'
info:
label: Adobe Analytics Product Campaign Digest
description: Pulls weekly product campaign performance metrics from Adobe Analytics and posts a digest to the digital marketing team's Microsoft Teams channel.
tags:
- marketing
- analytics
- adobe-analytics
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: marketing-analytics
port: 8080
tools:
- name: digest-campaign-analytics
description: Given an Adobe Analytics report suite ID and date range, fetch product campaign performance metrics and post a summary to the digital marketing Teams channel. Use for weekly campaign reviews.
inputParameters:
- name: report_suite_id
in: body
type: string
description: The Adobe Analytics report suite ID.
- name: date_from
in: body
type: string
description: Report start date in YYYY-MM-DD format.
- name: date_to
in: body
type: string
description: Report end date in YYYY-MM-DD format.
steps:
- name: get-metrics
type: call
call: adobe-analytics.get-report
with:
report_suite_id: '{{report_suite_id}}'
date_from: '{{date_from}}'
date_to: '{{date_to}}'
- name: post-digest
type: call
call: msteams-mkt.post-message
with:
channel_id: $secrets.digital_mkt_channel_id
text: 'Campaign Analytics ({{date_from}}–{{date_to}}): Visits={{get-metrics.visits}}, Conversions={{get-metrics.conversions}}, Revenue={{get-metrics.revenue}}'
consumes:
- type: http
namespace: adobe-analytics
baseUri: https://analytics.adobe.io/api/{{report_suite_id}}
authentication:
type: bearer
token: $secrets.adobe_analytics_token
resources:
- name: reports
path: /reports
inputParameters:
- name: report_suite_id
in: path
- name: date_from
in: query
- name: date_to
in: query
operations:
- name: get-report
method: POST
- type: http
namespace: msteams-mkt
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: channel_id
in: path
operations:
- name: post-message
method: POST
Syncs product roadmap items from Notion to Jira epics, logs in Snowflake, and notifies the product management team via Microsoft Teams.
naftiko: '0.5'
info:
label: Notion Product Roadmap Sync
description: Syncs product roadmap items from Notion to Jira epics, logs in Snowflake, and notifies the product management team via Microsoft Teams.
tags:
- product-management
- notion
- jira
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: notion_product_roadm
port: 8080
tools:
- name: notion-product
description: Given an execution date, run the notion product roadmap sync process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.NOTION_PRODUCT_ROADMAP_SYNC LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.NOTION_PRODUCT_ROADMAP_SYNC_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: Notion Product Roadmap Sync - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_notion_product_roadm_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a P1 incident is created in ServiceNow, triggers PagerDuty on-call escalation, creates a Datadog event, and posts a war-room notification to the IT ops Teams channel.
naftiko: '0.5'
info:
label: ServiceNow IT Incident P1 Escalation
description: When a P1 incident is created in ServiceNow, triggers PagerDuty on-call escalation, creates a Datadog event, and posts a war-room notification to the IT ops Teams channel.
tags:
- itsm
- incident-response
- servicenow
- pagerduty
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: itsm-ops
port: 8080
tools:
- name: escalate-p1-incident
description: Given a ServiceNow incident number and description, trigger PagerDuty, create a Datadog event marker, and notify the IT ops Teams channel. Invoke immediately on P1 incident creation.
inputParameters:
- name: incident_number
in: body
type: string
description: The ServiceNow incident number (e.g., INC0012345).
- name: short_description
in: body
type: string
description: Brief description of the incident.
steps:
- name: page-oncall
type: call
call: pagerduty.trigger-incident
with:
title: 'P1: {{short_description}}'
severity: critical
incident_key: '{{incident_number}}'
- name: create-dd-event
type: call
call: datadog.create-event
with:
title: 'P1 Incident: {{incident_number}}'
alert_type: error
text: '{{short_description}}'
- name: notify-ops
type: call
call: msteams-ops.post-message
with:
channel_id: $secrets.it_ops_channel_id
text: 'P1 Incident {{incident_number}}: {{short_description}} | PagerDuty: {{page-oncall.incident_url}}'
consumes:
- 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: trigger-incident
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-ops
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: channel_id
in: path
operations:
- name: post-message
method: POST
Enriches Salesforce leads with ZoomInfo data, stores enriched profiles in Snowflake, and notifies the sales team via Microsoft Teams.
naftiko: '0.5'
info:
label: Salesforce ZoomInfo Lead Enrichment
description: Enriches Salesforce leads with ZoomInfo data, stores enriched profiles in Snowflake, and notifies the sales team via Microsoft Teams.
tags:
- sales
- salesforce
- zoominfo
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: salesforce_zoominfo_
port: 8080
tools:
- name: salesforce-zoominfo
description: Given an execution date, run the salesforce zoominfo lead enrichment process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SALESFORCE_ZOOMINFO_LEAD_ENRICHMENT LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SALESFORCE_ZOOMINFO_LEAD_ENRIC_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_salesforce_zoominfo__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Validates SAP period-close readiness in Snowflake, flags open items, creates ServiceNow tasks, and notifies the accounting team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Period Close Checklist Automation
description: Validates SAP period-close readiness in Snowflake, flags open items, creates ServiceNow tasks, and notifies the accounting team via Microsoft Teams.
tags:
- finance
- sap
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_period_close_che
port: 8080
tools:
- name: sap-period
description: Given an execution date, run the sap period close checklist automation process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_PERIOD_CLOSE_CHECKLIST_AUTOMATION LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_PERIOD_CLOSE_CHECKLIST_AUT_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: finance
short_description: SAP Period Close Checklist Automation processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_period_close_che_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://nike.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Tracks DocuSign contract execution status, logs in Snowflake, creates Jira follow-up tasks for unsigned contracts, and notifies the legal team via Microsoft Teams.
naftiko: '0.5'
info:
label: DocuSign Contract Execution Tracker
description: Tracks DocuSign contract execution status, logs in Snowflake, creates Jira follow-up tasks for unsigned contracts, and notifies the legal team via Microsoft Teams.
tags:
- legal
- docusign
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: docusign_contract_ex
port: 8080
tools:
- name: docusign-contract
description: Given an execution date, run the docusign contract execution tracker process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.DOCUSIGN_CONTRACT_EXECUTION_TRACKER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.DOCUSIGN_CONTRACT_EXECUTION_TR_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: DocuSign Contract Execution Tracker - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_docusign_contract_ex_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Analyzes Nike app user engagement metrics in Snowflake, identifies churn risks, and distributes insights to the digital team via Microsoft Teams.
naftiko: '0.5'
info:
label: Nike App User Engagement Analyzer
description: Analyzes Nike app user engagement metrics in Snowflake, identifies churn risks, and distributes insights to the digital team via Microsoft Teams.
tags:
- analytics
- mobile
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: nike_app_user_engage
port: 8080
tools:
- name: nike-app
description: Given an execution date, run the nike app user engagement analyzer process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.NIKE_APP_USER_ENGAGEMENT_ANALYZER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.NIKE_APP_USER_ENGAGEMENT_ANALY_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_nike_app_user_engage_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Fetches SLO compliance metrics from Datadog and posts a weekly service health report to the technology leadership Microsoft Teams channel.
naftiko: '0.5'
info:
label: Datadog SLO Compliance Weekly Report
description: Fetches SLO compliance metrics from Datadog and posts a weekly service health report to the technology leadership Microsoft Teams channel.
tags:
- observability
- slo
- datadog
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: slo-reporting
port: 8080
tools:
- name: publish-slo-report
description: Query Datadog for all SLO statuses and post a weekly compliance report to the technology leadership Teams channel. Use for weekly engineering reviews and executive technology briefings.
steps:
- name: get-slos
type: call
call: datadog-slo.list-slos
- name: post-report
type: call
call: msteams-slo.post-message
with:
channel_id: $secrets.tech_leadership_channel_id
text: 'Weekly SLO Report: {{get-slos.count}} SLOs monitored. See Datadog for full compliance details.'
consumes:
- type: http
namespace: datadog-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
operations:
- name: list-slos
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/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Processes GitHub Dependabot alerts, logs in Snowflake, creates Jira remediation tickets, and notifies the security engineering team via Microsoft Teams.
naftiko: '0.5'
info:
label: GitHub Dependabot Alert Triage
description: Processes GitHub Dependabot alerts, logs in Snowflake, creates Jira remediation tickets, and notifies the security engineering team via Microsoft Teams.
tags:
- security
- github
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: github_dependabot_al
port: 8080
tools:
- name: github-dependabot
description: Given an execution date, run the github dependabot alert triage process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.GITHUB_DEPENDABOT_ALERT_TRIAGE LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.GITHUB_DEPENDABOT_ALERT_TRIAGE_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: GitHub Dependabot Alert Triage - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_github_dependabot_al_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a new procurement request is submitted in SAP Ariba, validates the budget in SAP S/4HANA, routes to the appropriate approver, and notifies them via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Ariba Procurement Request Routing
description: When a new procurement request is submitted in SAP Ariba, validates the budget in SAP S/4HANA, routes to the appropriate approver, and notifies them via Microsoft Teams.
tags:
- procurement
- finance
- sap-ariba
- sap
- approval
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: procurement-ops
port: 8080
tools:
- name: route-procurement-request
description: Given an Ariba requisition ID and cost center, validate available budget in SAP S/4HANA and route the request to the cost center manager for approval via Teams. Use for automated procurement approval routing.
inputParameters:
- name: requisition_id
in: body
type: string
description: The SAP Ariba purchase requisition ID.
- name: cost_center
in: body
type: string
description: The SAP cost center code for budget validation.
- name: amount
in: body
type: number
description: The requisition total amount in USD.
steps:
- name: get-requisition
type: call
call: ariba.get-requisition
with:
req_id: '{{requisition_id}}'
- name: check-budget
type: call
call: sap-budget.get-cost-center-budget
with:
cost_center: '{{cost_center}}'
- name: notify-approver
type: call
call: msteams-proc.send-message
with:
recipient_upn: '{{get-requisition.requester_email}}'
text: 'Procurement request {{requisition_id}} for ${{amount}} submitted. Budget available: {{check-budget.available}}. Pending approval.'
consumes:
- type: http
namespace: ariba
baseUri: https://openapi.ariba.com/api/purchase-requisitions/v1
authentication:
type: bearer
token: $secrets.ariba_token
resources:
- name: requisitions
path: /requisitions/{{req_id}}
inputParameters:
- name: req_id
in: path
operations:
- name: get-requisition
method: GET
- type: http
namespace: sap-budget
baseUri: https://nike-s4.sap.com/sap/opu/odata/sap/API_COSTCENTER_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-budget
method: GET
- type: http
namespace: msteams-proc
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: chats
path: /chats
operations:
- name: send-message
method: POST
Retrieves cost center details from SAP.
naftiko: '0.5'
info:
label: SAP Cost Center Lookup
description: Retrieves cost center details from SAP.
tags:
- finance
- sap
- cost-management
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: get-cost-center
description: Given a SAP cost center ID, retrieve details. Use for financial reporting.
inputParameters:
- name: cost_center
in: body
type: string
description: The SAP cost center ID.
call: sap.get-cost-center
with:
cost_center: '{{cost_center}}'
outputParameters:
- name: description
type: string
mapping: $.d.CostCenterDescription
consumes:
- type: http
namespace: sap
baseUri: https://nike-s4.sap.com/sap/opu/odata/sap/API_COSTCENTER_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
Checks the health status of a specified Azure resource.
naftiko: '0.5'
info:
label: Azure Resource Health Check
description: Checks the health status of a specified Azure resource.
tags:
- cloud
- microsoft-azure
- infrastructure
capability:
exposes:
- type: mcp
namespace: cloud
port: 8080
tools:
- name: get-resource-health
description: Given an Azure resource ID, check availability. Use for infrastructure monitoring.
inputParameters:
- name: resource_id
in: body
type: string
description: The Azure resource ID.
call: azure.get-resource-health
with:
resource_id: '{{resource_id}}'
outputParameters:
- name: availability_state
type: string
mapping: $.properties.availabilityState
consumes:
- type: http
namespace: azure
baseUri: https://management.azure.com
authentication:
type: bearer
token: $secrets.azure_mgmt_token
resources:
- name: resource-health
path: /{{resource_id}}/providers/Microsoft.ResourceHealth/availabilityStatuses/current
inputParameters:
- name: resource_id
in: path
operations:
- name: get-resource-health
method: GET
Collects product feedback from Slack channels, creates Jira feature requests, logs in Snowflake, and notifies the product management team via Microsoft Teams.
naftiko: '0.5'
info:
label: Slack to Jira Product Feedback Pipeline
description: Collects product feedback from Slack channels, creates Jira feature requests, logs in Snowflake, and notifies the product management team via Microsoft Teams.
tags:
- product-management
- slack
- jira
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: slack_to_jira_produc
port: 8080
tools:
- name: slack-to
description: Given an execution date, run the slack to jira product feedback pipeline process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SLACK_TO_JIRA_PRODUCT_FEEDBACK_PIPELINE LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SLACK_TO_JIRA_PRODUCT_FEEDBACK_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: Slack to Jira Product Feedback Pipeline - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_slack_to_jira_produc_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Sends a message to a specified Microsoft Teams channel.
naftiko: '0.5'
info:
label: Microsoft Teams Channel Message Sender
description: Sends a message to a specified Microsoft Teams channel.
tags:
- collaboration
- microsoft-teams
- messaging
capability:
exposes:
- type: mcp
namespace: collaboration
port: 8080
tools:
- name: send-channel-message
description: Given team ID, channel ID, and message, post to the channel. Use for notifications.
inputParameters:
- name: team_id
in: body
type: string
description: The Teams team ID.
- name: channel_id
in: body
type: string
description: The channel ID.
- name: message_text
in: body
type: string
description: The message body.
call: msteams.send-channel-message
with:
team_id: '{{team_id}}'
channel_id: '{{channel_id}}'
text: '{{message_text}}'
outputParameters:
- name: message_id
type: string
mapping: $.id
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: send-channel-message
method: POST
Scans Docker container images for vulnerabilities via Snowflake data, creates Jira remediation tickets, and alerts the security team via Microsoft Teams.
naftiko: '0.5'
info:
label: Docker Container Vulnerability Scanner
description: Scans Docker container images for vulnerabilities via Snowflake data, creates Jira remediation tickets, and alerts the security team via Microsoft Teams.
tags:
- security
- docker
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: docker_container_vul
port: 8080
tools:
- name: docker-container
description: Given an execution date, run the docker container vulnerability scanner process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.DOCKER_CONTAINER_VULNERABILITY_SCANNER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.DOCKER_CONTAINER_VULNERABILITY_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: Docker Container Vulnerability Scanner - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_docker_container_vul_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Tracks product sample status from Airtable, logs updates in Snowflake, creates Jira tasks for overdue samples, and notifies the product development team via Microsoft Teams.
naftiko: '0.5'
info:
label: Airtable Sample Tracking Workflow
description: Tracks product sample status from Airtable, logs updates in Snowflake, creates Jira tasks for overdue samples, and notifies the product development team via Microsoft Teams.
tags:
- product-development
- airtable
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: airtable_sample_trac
port: 8080
tools:
- name: airtable-sample
description: Given an execution date, run the airtable sample tracking workflow process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.AIRTABLE_SAMPLE_TRACKING_WORKFLOW LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.AIRTABLE_SAMPLE_TRACKING_WORKF_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: Airtable Sample Tracking Workflow - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_airtable_sample_trac_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Calculates import duty estimates from SAP trade data in Snowflake, flags discrepancies, creates ServiceNow cases, and alerts the trade compliance team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Customs Import Duty Calculator
description: Calculates import duty estimates from SAP trade data in Snowflake, flags discrepancies, creates ServiceNow cases, and alerts the trade compliance team via Microsoft Teams.
tags:
- compliance
- sap
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_customs_import_d
port: 8080
tools:
- name: sap-customs
description: Given an execution date, run the sap customs import duty calculator process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_CUSTOMS_IMPORT_DUTY_CALCULATOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_CUSTOMS_IMPORT_DUTY_CALCUL_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: compliance
short_description: SAP Customs Import Duty Calculator processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_customs_import_d_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://nike.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Tracks GitHub Copilot usage and adoption metrics in Snowflake, computes productivity gains, and distributes reports to engineering leadership via Microsoft Teams.
naftiko: '0.5'
info:
label: GitHub Copilot Adoption Tracker
description: Tracks GitHub Copilot usage and adoption metrics in Snowflake, computes productivity gains, and distributes reports to engineering leadership via Microsoft Teams.
tags:
- devops
- github-copilot
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: github_copilot_adopt
port: 8080
tools:
- name: github-copilot
description: Given an execution date, run the github copilot adoption tracker process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.GITHUB_COPILOT_ADOPTION_TRACKER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.GITHUB_COPILOT_ADOPTION_TRACKE_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_github_copilot_adopt_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a Workday integration fails, logs the error in Snowflake, creates a ServiceNow incident, and alerts the HRIS team via Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Integration Failure Handler
description: When a Workday integration fails, logs the error in Snowflake, creates a ServiceNow incident, and alerts the HRIS team via Microsoft Teams.
tags:
- hr
- workday
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_integration_
port: 8080
tools:
- name: workday-integration
description: Given an execution date, run the workday integration failure handler process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.WORKDAY_INTEGRATION_FAILURE_HANDLER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.WORKDAY_INTEGRATION_FAILURE_HA_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: hr
short_description: Workday Integration Failure Handler processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_workday_integration__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://nike.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a Salesforce opportunity is marked Closed-Won, creates a SAP sales order, provisions a customer account in ServiceNow, and sends a welcome email from Salesforce Marketing Cloud.
naftiko: '0.5'
info:
label: Salesforce Customer Onboarding Orchestrator
description: When a Salesforce opportunity is marked Closed-Won, creates a SAP sales order, provisions a customer account in ServiceNow, and sends a welcome email from Salesforce Marketing Cloud.
tags:
- sales
- crm
- customer-onboarding
- salesforce
- sap
- servicenow
capability:
exposes:
- type: mcp
namespace: customer-onboarding
port: 8080
tools:
- name: onboard-new-customer
description: Given a Salesforce opportunity ID, create a SAP sales order, open a ServiceNow customer account record, and trigger a welcome email via Salesforce Marketing Cloud. Invoke when a B2B opportunity moves to Closed-Won.
inputParameters:
- name: opportunity_id
in: body
type: string
description: The Salesforce opportunity ID (18-character).
steps:
- name: get-opportunity
type: call
call: salesforce.get-opportunity
with:
opportunity_id: '{{opportunity_id}}'
- name: create-sap-order
type: call
call: sap-sales.create-sales-order
with:
customer_id: '{{get-opportunity.account_sap_id}}'
amount: '{{get-opportunity.amount}}'
- name: create-snow-account
type: call
call: servicenow-acct.create-record
with:
account_name: '{{get-opportunity.account_name}}'
sap_order_id: '{{create-sap-order.order_id}}'
- name: send-welcome-email
type: call
call: sfmc.trigger-email
with:
email: '{{get-opportunity.contact_email}}'
template_id: welcome_customer
account_name: '{{get-opportunity.account_name}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://nike.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://nike-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: servicenow-acct
baseUri: https://nike.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: accounts
path: /table/customer_account
operations:
- name: create-record
method: POST
- type: http
namespace: sfmc
baseUri: https://api.salesforce.com/marketing/v1
authentication:
type: bearer
token: $secrets.sfmc_token
resources:
- name: email-triggers
path: /messaging/v1/email/messages
operations:
- name: trigger-email
method: POST
Retrieves a Jira issue by key.
naftiko: '0.5'
info:
label: Jira Issue Lookup
description: Retrieves a Jira issue by key.
tags:
- project-management
- jira
- issue-tracking
capability:
exposes:
- type: mcp
namespace: project-management
port: 8080
tools:
- name: get-issue
description: Given a Jira issue key, retrieve details. Use for status updates.
inputParameters:
- name: issue_key
in: body
type: string
description: The Jira issue key.
call: jira.get-issue
with:
issue_key: '{{issue_key}}'
outputParameters:
- name: summary
type: string
mapping: $.fields.summary
- name: status
type: string
mapping: $.fields.status.name
consumes:
- type: http
namespace: jira
baseUri: https://nike.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
When AWS Cost Explorer detects a spending anomaly, creates a Jira FinOps review ticket and posts an alert to the cloud cost Microsoft Teams channel.
naftiko: '0.5'
info:
label: AWS Cloud Cost Anomaly Alert
description: When AWS Cost Explorer detects a spending anomaly, creates a Jira FinOps review ticket and posts an alert to the cloud cost Microsoft Teams channel.
tags:
- cloud
- finops
- aws
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: cloud-finops
port: 8080
tools:
- name: handle-cost-anomaly
description: Given an AWS service name, anomaly ID, and estimated excess cost, create a Jira cost-review task and notify the FinOps Teams channel. Invoke when AWS Cost Anomaly Detection fires.
inputParameters:
- name: anomaly_id
in: body
type: string
description: The AWS Cost Explorer anomaly detection ID.
- name: service_name
in: body
type: string
description: The AWS service name experiencing the anomaly.
- name: excess_cost_usd
in: body
type: number
description: The estimated excess spend in USD.
steps:
- name: create-review-ticket
type: call
call: jira-finops.create-issue
with:
project_key: FINOPS
issuetype: Task
summary: 'AWS cost anomaly: {{service_name}} — ${{excess_cost_usd}}'
description: 'Anomaly ID: {{anomaly_id}}
Estimated excess: ${{excess_cost_usd}}'
- name: alert-finops
type: call
call: msteams-finops.post-message
with:
channel_id: $secrets.finops_channel_id
text: 'Cost Anomaly: {{service_name}} | ${{excess_cost_usd}} excess | Jira: {{create-review-ticket.key}}'
consumes:
- type: http
namespace: jira-finops
baseUri: https://nike.atlassian.net/rest/api/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-finops
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: channel_id
in: path
operations:
- name: post-message
method: POST
Identifies employees who haven't completed benefits enrollment, logs in Snowflake, and sends reminders via Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Benefits Open Enrollment Reminder
description: Identifies employees who haven't completed benefits enrollment, logs in Snowflake, and sends reminders via Microsoft Teams.
tags:
- hr
- benefits
- workday
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_benefits_ope
port: 8080
tools:
- name: workday-benefits
description: Given an execution date, run the workday benefits open enrollment reminder process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.WORKDAY_BENEFITS_OPEN_ENROLLMENT_REMINDE LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.WORKDAY_BENEFITS_OPEN_ENROLLME_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_workday_benefits_ope_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Reconciles Workday payroll data against financial records in Snowflake, flags discrepancies, creates ServiceNow cases, and notifies the payroll team via Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Payroll Reconciliation Workflow
description: Reconciles Workday payroll data against financial records in Snowflake, flags discrepancies, creates ServiceNow cases, and notifies the payroll team via Microsoft Teams.
tags:
- hr
- payroll
- workday
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_payroll_reco
port: 8080
tools:
- name: workday-payroll
description: Given an execution date, run the workday payroll reconciliation workflow process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.WORKDAY_PAYROLL_RECONCILIATION_WORKFLOW LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.WORKDAY_PAYROLL_RECONCILIATION_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: hr
short_description: Workday Payroll Reconciliation Workflow processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_workday_payroll_reco_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://nike.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Looks up an Okta user by login email.
naftiko: '0.5'
info:
label: Okta User Lookup
description: Looks up an Okta user by login email.
tags:
- identity
- okta
- access-management
capability:
exposes:
- type: mcp
namespace: identity
port: 8080
tools:
- name: get-user
description: Given an Okta user login, retrieve profile details. Use for identity verification.
inputParameters:
- name: user_login
in: body
type: string
description: The Okta user login email.
call: okta.get-user
with:
user_login: '{{user_login}}'
outputParameters:
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: okta
baseUri: https://nike.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: users
path: /users/{{user_login}}
inputParameters:
- name: user_login
in: path
operations:
- name: get-user
method: GET
Generates seasonal product allocation plans from SAP data in Snowflake, creates Jira distribution tasks, and notifies the merchandising team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Seasonal Allocation Planner
description: Generates seasonal product allocation plans from SAP data in Snowflake, creates Jira distribution tasks, and notifies the merchandising team via Microsoft Teams.
tags:
- supply-chain
- sap
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_seasonal_allocat
port: 8080
tools:
- name: sap-seasonal
description: Given an execution date, run the sap seasonal allocation planner process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_SEASONAL_ALLOCATION_PLANNER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_SEASONAL_ALLOCATION_PLANNE_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: SAP Seasonal Allocation Planner - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_seasonal_allocat_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a new lead is created in Salesforce, enriches it with company firmographics from ZoomInfo and updates the lead record with employee count, revenue, and industry data.
naftiko: '0.5'
info:
label: Salesforce Lead Enrichment via ZoomInfo
description: When a new lead is created in Salesforce, enriches it with company firmographics from ZoomInfo and updates the lead record with employee count, revenue, and industry data.
tags:
- sales
- crm
- lead-management
- salesforce
- zoominfo
capability:
exposes:
- type: mcp
namespace: crm-enrichment
port: 8080
tools:
- name: enrich-salesforce-lead
description: Given a Salesforce lead ID, fetch firmographic data from ZoomInfo and update the lead with company size, industry, and revenue. Use when a new lead is created or when lead data is incomplete.
inputParameters:
- name: lead_id
in: body
type: string
description: The Salesforce lead ID to enrich.
steps:
- name: get-lead
type: call
call: salesforce-lead.get-lead
with:
lead_id: '{{lead_id}}'
- name: enrich-data
type: call
call: zoominfo.search-company
with:
company_name: '{{get-lead.company}}'
email: '{{get-lead.email}}'
- name: update-lead
type: call
call: salesforce-lead-update.update-lead
with:
lead_id: '{{lead_id}}'
employees: '{{enrich-data.employee_count}}'
annual_revenue: '{{enrich-data.revenue}}'
industry: '{{enrich-data.industry}}'
consumes:
- type: http
namespace: salesforce-lead
baseUri: https://nike.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
- type: http
namespace: zoominfo
baseUri: https://api.zoominfo.com/search
authentication:
type: bearer
token: $secrets.zoominfo_token
resources:
- name: company-search
path: /company
operations:
- name: search-company
method: POST
- type: http
namespace: salesforce-lead-update
baseUri: https://nike.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: update-lead
method: PATCH
Computes Kubernetes cluster cost allocation from Snowflake metrics, generates chargeback reports, creates Jira budget tasks, and notifies the platform team via Microsoft Teams.
naftiko: '0.5'
info:
label: Kubernetes Cluster Cost Allocation Reporter
description: Computes Kubernetes cluster cost allocation from Snowflake metrics, generates chargeback reports, creates Jira budget tasks, and notifies the platform team via Microsoft Teams.
tags:
- infrastructure
- kubernetes
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: kubernetes_cluster_c
port: 8080
tools:
- name: kubernetes-cluster
description: Given an execution date, run the kubernetes cluster cost allocation reporter process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.KUBERNETES_CLUSTER_COST_ALLOCATION_REPOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.KUBERNETES_CLUSTER_COST_ALLOCA_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: Kubernetes Cluster Cost Allocation Reporter - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_kubernetes_cluster_c_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Processes RMA requests in SAP, validates return eligibility in Snowflake, creates ServiceNow cases, and notifies the returns team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Return Merchandise Authorization Processor
description: Processes RMA requests in SAP, validates return eligibility in Snowflake, creates ServiceNow cases, and notifies the returns team via Microsoft Teams.
tags:
- logistics
- sap
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_return_merchandi
port: 8080
tools:
- name: sap-return
description: Given an execution date, run the sap return merchandise authorization processor process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_RETURN_MERCHANDISE_AUTHORIZATION_PRO LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_RETURN_MERCHANDISE_AUTHORI_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: logistics
short_description: SAP Return Merchandise Authorization Processor processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_return_merchandi_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://nike.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Onboards new footwear suppliers in SAP Ariba, creates ServiceNow vendor setup requests, logs in Snowflake, and notifies the procurement team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Ariba Footwear Supplier Onboarding
description: Onboards new footwear suppliers in SAP Ariba, creates ServiceNow vendor setup requests, logs in Snowflake, and notifies the procurement team via Microsoft Teams.
tags:
- procurement
- sap
- servicenow
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_ariba_footwear_s
port: 8080
tools:
- name: sap-ariba
description: Given an execution date, run the sap ariba footwear supplier onboarding process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_ARIBA_FOOTWEAR_SUPPLIER_ONBOARDING LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_ARIBA_FOOTWEAR_SUPPLIER_ON_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: procurement
short_description: SAP Ariba Footwear Supplier Onboarding processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_ariba_footwear_s_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://nike.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Syncs Marketo campaign performance metrics to Snowflake, computes engagement scores, and distributes insights to the marketing team via Microsoft Teams.
naftiko: '0.5'
info:
label: Marketo Campaign Performance Sync
description: Syncs Marketo campaign performance metrics to Snowflake, computes engagement scores, and distributes insights to the marketing team via Microsoft Teams.
tags:
- marketing
- marketo
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: marketo_campaign_per
port: 8080
tools:
- name: marketo-campaign
description: Given an execution date, run the marketo campaign performance sync process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.MARKETO_CAMPAIGN_PERFORMANCE_SYNC LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.MARKETO_CAMPAIGN_PERFORMANCE_S_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_marketo_campaign_per_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Generates retail store staffing forecasts from Workday data in Snowflake, compares to demand projections, and notifies store operations via Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Retail Staffing Forecast
description: Generates retail store staffing forecasts from Workday data in Snowflake, compares to demand projections, and notifies store operations via Microsoft Teams.
tags:
- hr
- retail
- workday
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_retail_staff
port: 8080
tools:
- name: workday-retail
description: Given an execution date, run the workday retail staffing forecast process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.WORKDAY_RETAIL_STAFFING_FORECAST LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.WORKDAY_RETAIL_STAFFING_FORECA_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_workday_retail_staff_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors inventory aging data from SAP in Snowflake, flags slow-moving SKUs, creates Jira markdown action items, and notifies the merchandise planning team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Inventory Aging Alert
description: Monitors inventory aging data from SAP in Snowflake, flags slow-moving SKUs, creates Jira markdown action items, and notifies the merchandise planning team via Microsoft Teams.
tags:
- supply-chain
- sap
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_inventory_aging_
port: 8080
tools:
- name: sap-inventory
description: Given an execution date, run the sap inventory aging alert process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_INVENTORY_AGING_ALERT LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_INVENTORY_AGING_ALERT_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: SAP Inventory Aging Alert - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_inventory_aging__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
On a GitHub Actions workflow failure on a protected branch, opens a Jira bug, creates a Datadog deployment event, and alerts the engineering team in Microsoft Teams.
naftiko: '0.5'
info:
label: GitHub CI/CD Pipeline Failure Response
description: On a GitHub Actions workflow failure on a protected branch, opens a Jira bug, creates a Datadog deployment event, and alerts the engineering team in Microsoft Teams.
tags:
- devops
- ci-cd
- github
- jira
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: devops-ci
port: 8080
tools:
- name: handle-pipeline-failure
description: Given a GitHub Actions run ID, repository, branch, failing job, and commit SHA, open a Jira bug, create a Datadog deployment event, and alert the engineering Teams channel. Invoke on any protected-branch workflow failure.
inputParameters:
- name: 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 that failed.
- name: job_name
in: body
type: string
description: The failed job name.
- name: commit_sha
in: body
type: string
description: The commit SHA that triggered the run.
steps:
- name: create-bug
type: call
call: jira.create-issue
with:
project_key: TECH
issuetype: Bug
summary: '[CI Failure] {{repository}} / {{branch}} — {{job_name}}'
- name: create-dd-event
type: call
call: datadog-ci.create-event
with:
title: 'CI Failure: {{repository}} {{branch}}'
alert_type: error
tags: repo:{{repository}},branch:{{branch}}
- name: alert-engineering
type: call
call: msteams-ci.post-message
with:
channel_id: $secrets.engineering_channel_id
text: 'Build Failure: {{repository}} | Branch: {{branch}} | Job: {{job_name}} | Jira: {{create-bug.key}}'
consumes:
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/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-ci
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-ci
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: channel_id
in: path
operations:
- name: post-message
method: POST
Tracks sustainable material sourcing metrics in Snowflake, computes Move to Zero progress, creates Jira tasks, and notifies the sustainability team via Microsoft Teams.
naftiko: '0.5'
info:
label: Sustainable Materials Sourcing Tracker
description: Tracks sustainable material sourcing metrics in Snowflake, computes Move to Zero progress, creates Jira tasks, and notifies the sustainability team via Microsoft Teams.
tags:
- sustainability
- sourcing
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sustainable_material
port: 8080
tools:
- name: sustainable-materials
description: Given an execution date, run the sustainable materials sourcing tracker process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SUSTAINABLE_MATERIALS_SOURCING_TRACKER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SUSTAINABLE_MATERIALS_SOURCING_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: Sustainable Materials Sourcing Tracker - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sustainable_material_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Analyzes warehouse pick-pack-ship metrics in Snowflake, identifies bottlenecks, creates ServiceNow optimization requests, and notifies the logistics team via Microsoft Teams.
naftiko: '0.5'
info:
label: Warehouse Pick Pack Ship Optimizer
description: Analyzes warehouse pick-pack-ship metrics in Snowflake, identifies bottlenecks, creates ServiceNow optimization requests, and notifies the logistics team via Microsoft Teams.
tags:
- logistics
- warehouse
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: warehouse_pick_pack_
port: 8080
tools:
- name: warehouse-pick
description: Given an execution date, run the warehouse pick pack ship optimizer process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.WAREHOUSE_PICK_PACK_SHIP_OPTIMIZER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.WAREHOUSE_PICK_PACK_SHIP_OPTIM_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: logistics
short_description: Warehouse Pick Pack Ship Optimizer processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_warehouse_pick_pack__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://nike.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Polls Snowflake task history for failed or stalled e-commerce data pipeline tasks and opens a Jira incident if failures are detected, notifying the data engineering team in Teams.
naftiko: '0.5'
info:
label: Snowflake E-Commerce Data Pipeline Monitor
description: Polls Snowflake task history for failed or stalled e-commerce data pipeline tasks and opens a Jira incident if failures are detected, notifying the data engineering team in Teams.
tags:
- data
- e-commerce
- snowflake
- jira
- monitoring
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: data-pipeline-ops
port: 8080
tools:
- name: monitor-ecommerce-pipelines
description: Query Snowflake task history for e-commerce pipeline failures and open a Jira incident if failures are found. Post a health summary to the data engineering Teams channel. Use for automated e-commerce data platform monitoring.
inputParameters:
- name: lookback_hours
in: body
type: integer
description: Number of hours to look back for failed pipeline tasks.
steps:
- name: query-failures
type: call
call: snowflake.execute-statement
with:
statement: SELECT COUNT(*) as count FROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY()) WHERE state='FAILED' AND scheduled_time > DATEADD(hour, -{{lookback_hours}}, CURRENT_TIMESTAMP())
- name: create-incident
type: call
call: jira-data.create-issue
with:
project_key: DATA
issuetype: Bug
summary: E-commerce pipeline failures in last {{lookback_hours}}h
- name: notify-data-team
type: call
call: msteams-data.post-message
with:
channel_id: $secrets.data_eng_channel_id
text: 'Pipeline Monitor: {{query-failures.count}} failures in last {{lookback_hours}}h. Jira: {{create-incident.key}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira-data
baseUri: https://nike.atlassian.net/rest/api/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-data
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: channel_id
in: path
operations:
- name: post-message
method: POST
Launches Workday performance review cycles, tracks completion in Snowflake, creates Jira tasks for lagging teams, and notifies HR via Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Performance Review Cycle Launcher
description: Launches Workday performance review cycles, tracks completion in Snowflake, creates Jira tasks for lagging teams, and notifies HR via Microsoft Teams.
tags:
- hr
- performance
- workday
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_performance_
port: 8080
tools:
- name: workday-performance
description: Given an execution date, run the workday performance review cycle launcher process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.WORKDAY_PERFORMANCE_REVIEW_CYCLE_LAUNCHE LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.WORKDAY_PERFORMANCE_REVIEW_CYC_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: Workday Performance Review Cycle Launcher - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_workday_performance__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a job requisition is approved in Workday, automatically publishes the role to LinkedIn and sends a notification to the talent acquisition team in Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Job Requisition to LinkedIn Posting
description: When a job requisition is approved in Workday, automatically publishes the role to LinkedIn and sends a notification to the talent acquisition team in Microsoft Teams.
tags:
- hr
- recruiting
- workday
- linkedin
- microsoft-teams
- talent-acquisition
capability:
exposes:
- type: mcp
namespace: talent-acquisition
port: 8080
tools:
- name: publish-job-posting
description: Given a Workday requisition ID, fetch job details and publish the position to LinkedIn, then notify the TA team in Teams. Use when a new job requisition is approved in Workday.
inputParameters:
- name: requisition_id
in: body
type: string
description: The Workday job requisition ID.
steps:
- name: get-requisition
type: call
call: workday-rec.get-job-requisition
with:
req_id: '{{requisition_id}}'
- name: post-linkedin
type: call
call: linkedin.create-job-posting
with:
title: '{{get-requisition.job_title}}'
description: '{{get-requisition.description}}'
location: '{{get-requisition.location}}'
company_urn: $secrets.nike_linkedin_org_urn
- name: notify-ta
type: call
call: msteams-ta.post-message
with:
channel_id: $secrets.ta_channel_id
text: 'Job posted: {{get-requisition.job_title}} | LinkedIn: {{post-linkedin.job_url}}'
consumes:
- type: http
namespace: workday-rec
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: job-requisitions
path: /nike/jobRequisitions/{{req_id}}
inputParameters:
- name: req_id
in: path
operations:
- name: get-job-requisition
method: GET
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: job-postings
path: /jobPostings
operations:
- name: create-job-posting
method: POST
- type: http
namespace: msteams-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: channel_id
in: path
operations:
- name: post-message
method: POST
Monitors nike.com checkout conversion rates in Snowflake, flags drops below threshold, creates ServiceNow incidents, and alerts the digital commerce team via Microsoft Teams.
naftiko: '0.5'
info:
label: E-Commerce Checkout Conversion Monitor
description: Monitors nike.com checkout conversion rates in Snowflake, flags drops below threshold, creates ServiceNow incidents, and alerts the digital commerce team via Microsoft Teams.
tags:
- e-commerce
- analytics
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ecommerce_checkout_c
port: 8080
tools:
- name: ecommerce-checkout
description: Given an execution date, run the e-commerce checkout conversion monitor process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.ECOMMERCE_CHECKOUT_CONVERSION_MONITOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.ECOMMERCE_CHECKOUT_CONVERSION__RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: e-commerce
short_description: E-Commerce Checkout Conversion Monitor processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_ecommerce_checkout_c_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://nike.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors SNKRS app launch metrics in Snowflake during product drops, flags performance issues, creates ServiceNow incidents, and alerts the digital platform team via Microsoft Teams.
naftiko: '0.5'
info:
label: SNKRS App Release Monitoring Chain
description: Monitors SNKRS app launch metrics in Snowflake during product drops, flags performance issues, creates ServiceNow incidents, and alerts the digital platform team via Microsoft Teams.
tags:
- e-commerce
- mobile
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: snkrs_app_release_mo
port: 8080
tools:
- name: snkrs-app
description: Given an execution date, run the snkrs app release monitoring chain process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SNKRS_APP_RELEASE_MONITORING_CHAIN LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SNKRS_APP_RELEASE_MONITORING_C_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: e-commerce
short_description: SNKRS App Release Monitoring Chain processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_snkrs_app_release_mo_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://nike.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Generates product descriptions using the Anthropic API, stores in Snowflake, creates Jira review tasks, and notifies the content team via Microsoft Teams.
naftiko: '0.5'
info:
label: Anthropic Product Content Generator
description: Generates product descriptions using the Anthropic API, stores in Snowflake, creates Jira review tasks, and notifies the content team via Microsoft Teams.
tags:
- ai
- anthropic
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: anthropic_product_co
port: 8080
tools:
- name: anthropic-product
description: Given an execution date, run the anthropic product content generator process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.ANTHROPIC_PRODUCT_CONTENT_GENERATOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.ANTHROPIC_PRODUCT_CONTENT_GENE_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: Anthropic Product Content Generator - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_anthropic_product_co_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Pulls Nike.com traffic metrics from Adobe Analytics into Snowflake, refreshes Power BI dashboards, and distributes daily digests via Microsoft Teams.
naftiko: '0.5'
info:
label: Adobe Analytics Nike.com Traffic Digest
description: Pulls Nike.com traffic metrics from Adobe Analytics into Snowflake, refreshes Power BI dashboards, and distributes daily digests via Microsoft Teams.
tags:
- analytics
- adobe-analytics
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: adobe_analytics_nike
port: 8080
tools:
- name: adobe-analytics
description: Given an execution date, run the adobe analytics nike.com traffic digest process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.ADOBE_ANALYTICS_NIKE_COM_TRAFFIC_DIGEST LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.ADOBE_ANALYTICS_NIKE_COM_TRAFF_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_adobe_analytics_nike_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves product catalog entries from Airtable.
naftiko: '0.5'
info:
label: Airtable Product Catalog Lookup
description: Retrieves product catalog entries from Airtable.
tags:
- product-management
- airtable
- catalog
capability:
exposes:
- type: mcp
namespace: product-catalog
port: 8080
tools:
- name: get-record
description: Given an Airtable base and record ID, retrieve catalog entry. Use for product lookups.
inputParameters:
- name: base_id
in: body
type: string
description: The Airtable base ID.
- name: record_id
in: body
type: string
description: The record ID.
call: airtable.get-record
with:
base_id: '{{base_id}}'
record_id: '{{record_id}}'
outputParameters:
- name: product_name
type: string
mapping: $.fields.Name
- name: sku
type: string
mapping: $.fields.SKU
consumes:
- type: http
namespace: airtable
baseUri: https://api.airtable.com/v0
authentication:
type: bearer
token: $secrets.airtable_token
resources:
- name: records
path: /{{base_id}}/Products/{{record_id}}
inputParameters:
- name: base_id
in: path
- name: record_id
in: path
operations:
- name: get-record
method: GET
At the end of each financial period, queries SAP S/4HANA for open journal entries and unposted items, then creates a ServiceNow period-close task for the accounting team.
naftiko: '0.5'
info:
label: SAP Period-End Close Checklist
description: At the end of each financial period, queries SAP S/4HANA for open journal entries and unposted items, then creates a ServiceNow period-close task for the accounting team.
tags:
- finance
- period-close
- sap
- servicenow
capability:
exposes:
- type: mcp
namespace: finance-close
port: 8080
tools:
- name: run-period-close-checklist
description: Given a fiscal period and year, query SAP for open items and unposted journals, then create a ServiceNow checklist task. Use at month-end or quarter-end to support the accounting close process.
inputParameters:
- name: fiscal_period
in: body
type: string
description: The fiscal period number (e.g., '006' for June).
- name: fiscal_year
in: body
type: string
description: The fiscal year (e.g., '2026').
steps:
- name: get-open-items
type: call
call: sap-close.get-open-journal-entries
with:
period: '{{fiscal_period}}'
year: '{{fiscal_year}}'
- name: create-checklist
type: call
call: servicenow-close.create-task
with:
short_description: Period close checklist FY{{fiscal_year}}/P{{fiscal_period}}
description: 'Open items: {{get-open-items.count}}. Please resolve before period close.'
consumes:
- type: http
namespace: sap-close
baseUri: https://nike-s4.sap.com/sap/opu/odata/sap/API_JOURNALENTRYITEMBASIC_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: journal-entries
path: /A_JournalEntryItem
inputParameters:
- name: period
in: query
- name: year
in: query
operations:
- name: get-open-journal-entries
method: GET
- type: http
namespace: servicenow-close
baseUri: https://nike.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
Retrieves metadata for a GitHub repository.
naftiko: '0.5'
info:
label: GitHub Repository Info Lookup
description: Retrieves metadata for a GitHub repository.
tags:
- devops
- github
- source-control
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: get-repo-info
description: Given org and repo name, retrieve metadata. Use for developer onboarding.
inputParameters:
- name: org
in: body
type: string
description: The GitHub organization.
- name: repo
in: body
type: string
description: The repository name.
call: github.get-repo
with:
org: '{{org}}'
repo: '{{repo}}'
outputParameters:
- name: full_name
type: string
mapping: $.full_name
consumes:
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: repos
path: /repos/{{org}}/{{repo}}
inputParameters:
- name: org
in: path
- name: repo
in: path
operations:
- name: get-repo
method: GET
Aggregates pre-launch demand signals from Nike.com and SNKRS app in Snowflake, adjusts inventory allocation, and notifies the merchandising team via Microsoft Teams.
naftiko: '0.5'
info:
label: Sneaker Launch Demand Signal Processor
description: Aggregates pre-launch demand signals from Nike.com and SNKRS app in Snowflake, adjusts inventory allocation, and notifies the merchandising team via Microsoft Teams.
tags:
- retail
- e-commerce
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sneaker_launch_deman
port: 8080
tools:
- name: sneaker-launch
description: Given an execution date, run the sneaker launch demand signal processor process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SNEAKER_LAUNCH_DEMAND_SIGNAL_PROCESSOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SNEAKER_LAUNCH_DEMAND_SIGNAL_P_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sneaker_launch_deman_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Aggregates Salesforce wholesale pipeline data in Snowflake, refreshes Power BI dashboards, and distributes weekly digests to sales leadership via Microsoft Teams.
naftiko: '0.5'
info:
label: Salesforce Wholesale Pipeline Digest
description: Aggregates Salesforce wholesale pipeline data in Snowflake, refreshes Power BI dashboards, and distributes weekly digests to sales leadership via Microsoft Teams.
tags:
- sales
- salesforce
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: salesforce_wholesale
port: 8080
tools:
- name: salesforce-wholesale
description: Given an execution date, run the salesforce wholesale pipeline digest process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SALESFORCE_WHOLESALE_PIPELINE_DIGEST LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SALESFORCE_WHOLESALE_PIPELINE__RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_salesforce_wholesale_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Analyzes retail store traffic data in Snowflake, computes conversion rates, and distributes insights to store operations via Microsoft Teams.
naftiko: '0.5'
info:
label: Retail Store Traffic Analytics Pipeline
description: Analyzes retail store traffic data in Snowflake, computes conversion rates, and distributes insights to store operations via Microsoft Teams.
tags:
- retail
- analytics
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: retail_store_traffic
port: 8080
tools:
- name: retail-store
description: Given an execution date, run the retail store traffic analytics pipeline process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.RETAIL_STORE_TRAFFIC_ANALYTICS_PIPELINE LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.RETAIL_STORE_TRAFFIC_ANALYTICS_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_retail_store_traffic_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
During open enrollment, pulls active employees from Workday and syncs benefit elections to ADP, then confirms enrollment via a Teams notification to each employee.
naftiko: '0.5'
info:
label: Open Enrollment Benefits Sync
description: During open enrollment, pulls active employees from Workday and syncs benefit elections to ADP, then confirms enrollment via a Teams notification to each employee.
tags:
- hr
- benefits
- open-enrollment
- workday
- adp
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-benefits
port: 8080
tools:
- name: sync-benefit-elections
description: Given an employee ID and benefit plan selection, sync the election from Workday to ADP and send a Teams confirmation. Use during open enrollment or qualifying life events.
inputParameters:
- name: employee_id
in: body
type: string
description: The Workday worker ID of the enrolling employee.
- name: benefit_plan_id
in: body
type: string
description: The ADP benefit plan ID the employee selected.
steps:
- name: get-employee
type: call
call: workday-ben.get-worker
with:
worker_id: '{{employee_id}}'
- name: submit-election
type: call
call: adp.update-benefit-election
with:
associate_oid: '{{get-employee.adp_oid}}'
plan_id: '{{benefit_plan_id}}'
- name: confirm-enrollment
type: call
call: msteams-ben.send-message
with:
recipient_upn: '{{get-employee.work_email}}'
text: Your benefit election for plan {{benefit_plan_id}} has been successfully submitted.
consumes:
- type: http
namespace: workday-ben
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers
path: /nike/workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: adp
baseUri: https://api.adp.com
authentication:
type: bearer
token: $secrets.adp_token
resources:
- name: benefit-elections
path: /benefits/v2/workers/{{associate_oid}}/benefit-elections
inputParameters:
- name: associate_oid
in: path
operations:
- name: update-benefit-election
method: POST
- type: http
namespace: msteams-ben
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: chats
path: /chats
operations:
- name: send-message
method: POST
Submits product attributes to Anthropic Claude to generate SEO-optimized product descriptions, then updates the product record in Salesforce with the generated content.
naftiko: '0.5'
info:
label: Anthropic Product Description Generator
description: Submits product attributes to Anthropic Claude to generate SEO-optimized product descriptions, then updates the product record in Salesforce with the generated content.
tags:
- ai
- content
- anthropic
- salesforce
- e-commerce
capability:
exposes:
- type: mcp
namespace: ai-content
port: 8080
tools:
- name: generate-product-description
description: Given a product ID, category, and key attributes, generate an SEO-optimized product description using Anthropic Claude and update the Salesforce product record. Use for bulk product catalog updates or new product launches.
inputParameters:
- name: product_id
in: body
type: string
description: The Salesforce product ID to update.
- name: product_name
in: body
type: string
description: The product name.
- name: attributes
in: body
type: string
description: Comma-separated product attributes (e.g., color, material, technology).
- name: category
in: body
type: string
description: Product category (e.g., Running Shoes, Training Apparel).
steps:
- name: generate-description
type: call
call: anthropic.create-message
with:
model: claude-3-5-sonnet-20241022
content: 'Write a compelling 2-3 sentence SEO-optimized product description for a {{category}} named {{product_name}} with these attributes: {{attributes}}.'
- name: update-product
type: call
call: salesforce-product.update-product
with:
product_id: '{{product_id}}'
description: '{{generate-description.text}}'
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-product
baseUri: https://nike.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: products
path: /sobjects/Product2/{{product_id}}
inputParameters:
- name: product_id
in: path
operations:
- name: update-product
method: PATCH
Retrieves a Canva design by ID, returning title, status, and last edit time.
naftiko: '0.5'
info:
label: Canva Design Asset Lookup
description: Retrieves a Canva design by ID, returning title, status, and last edit time.
tags:
- design
- canva
- creative
capability:
exposes:
- type: mcp
namespace: creative
port: 8080
tools:
- name: get-design
description: Given a Canva design ID, retrieve details. Use for creative asset management.
inputParameters:
- name: design_id
in: body
type: string
description: The Canva design ID.
call: canva.get-design
with:
design_id: '{{design_id}}'
outputParameters:
- name: title
type: string
mapping: $.design.title
- name: status
type: string
mapping: $.design.status
consumes:
- type: http
namespace: canva
baseUri: https://api.canva.com/rest/v1
authentication:
type: bearer
token: $secrets.canva_token
resources:
- name: designs
path: /designs/{{design_id}}
inputParameters:
- name: design_id
in: path
operations:
- name: get-design
method: GET
When a Figma design is approved, creates Jira development stories, links design assets, and notifies the engineering team via Microsoft Teams.
naftiko: '0.5'
info:
label: Product Design to Development Handoff
description: When a Figma design is approved, creates Jira development stories, links design assets, and notifies the engineering team via Microsoft Teams.
tags:
- design
- figma
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: product_design_to_de
port: 8080
tools:
- name: product-design
description: Given an execution date, run the product design to development handoff process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.PRODUCT_DESIGN_TO_DEVELOPMENT_HANDOFF LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.PRODUCT_DESIGN_TO_DEVELOPMENT__RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: Product Design to Development Handoff - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_product_design_to_de_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Routes new Workday job requisitions through approval chains in Snowflake, creates Jira tracking tasks, and notifies approvers via Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Job Requisition Approval Chain
description: Routes new Workday job requisitions through approval chains in Snowflake, creates Jira tracking tasks, and notifies approvers via Microsoft Teams.
tags:
- hr
- recruiting
- workday
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_job_requisit
port: 8080
tools:
- name: workday-job
description: Given an execution date, run the workday job requisition approval chain process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.WORKDAY_JOB_REQUISITION_APPROVAL_CHAIN LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.WORKDAY_JOB_REQUISITION_APPROV_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: Workday Job Requisition Approval Chain - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_workday_job_requisit_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Runs product recommendation models in Databricks, stores predictions in Snowflake, and notifies the data science team via Microsoft Teams.
naftiko: '0.5'
info:
label: Databricks Product Recommendation Pipeline
description: Runs product recommendation models in Databricks, stores predictions in Snowflake, and notifies the data science team via Microsoft Teams.
tags:
- data-science
- databricks
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: databricks_product_r
port: 8080
tools:
- name: databricks-product
description: Given an execution date, run the databricks product recommendation pipeline process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.DATABRICKS_PRODUCT_RECOMMENDATION_PIPELI LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.DATABRICKS_PRODUCT_RECOMMENDAT_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_databricks_product_r_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Looks up a Workday worker profile by employee ID.
naftiko: '0.5'
info:
label: Workday Worker Profile Lookup
description: Looks up a Workday worker profile by employee ID.
tags:
- hr
- workday
- employee-data
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: get-worker-profile
description: Given a Workday employee ID, retrieve the worker profile. Use for HR inquiries.
inputParameters:
- name: worker_id
in: body
type: string
description: The Workday worker ID.
call: workday.get-worker
with:
worker_id: '{{worker_id}}'
outputParameters:
- name: full_name
type: string
mapping: $.worker.fullName
- name: job_title
type: string
mapping: $.worker.jobTitle
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: /nike/workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
Aggregates sustainability metrics from SAP in Snowflake, refreshes Power BI ESG dashboards, and distributes to the sustainability team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Sustainability Reporting Pipeline
description: Aggregates sustainability metrics from SAP in Snowflake, refreshes Power BI ESG dashboards, and distributes to the sustainability team via Microsoft Teams.
tags:
- sustainability
- sap
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_sustainability_r
port: 8080
tools:
- name: sap-sustainability
description: Given an execution date, run the sap sustainability reporting pipeline process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_SUSTAINABILITY_REPORTING_PIPELINE LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_SUSTAINABILITY_REPORTING_P_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_sustainability_r_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Optimizes Direct Store Delivery routes by analyzing Salesforce retail accounts, checking SAP regional inventory, and posting optimized routes to Microsoft Teams.
naftiko: '0.5'
info:
label: DSD Route Delivery Optimization
description: Optimizes Direct Store Delivery routes by analyzing Salesforce retail accounts, checking SAP regional inventory, and posting optimized routes to Microsoft Teams.
tags:
- distribution
- supply-chain
- salesforce
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: dsd-optimization
port: 8080
tools:
- name: optimize-dsd-routes
description: 'Optimize DSD routes: analyze Salesforce accounts, check SAP inventory, post routes.'
inputParameters:
- name: region_code
in: body
type: string
description: The distribution region code.
- name: delivery_date
in: body
type: string
description: Target delivery date.
steps:
- name: get-retail-accounts
type: call
call: salesforce.get-region-accounts
with:
region: '{{region_code}}'
- name: check-warehouse-stock
type: call
call: sap.get-regional-stock
with:
region: '{{region_code}}'
- name: post-optimized-routes
type: call
call: msteams.send-message
with:
channel_id: dsd-{{region_code}}
text: 'DSD Route Optimization for {{region_code}} on {{delivery_date}}: Accounts: {{get-retail-accounts.count}}. Stock: {{check-warehouse-stock.total_cases}} cases.'
consumes:
- type: http
namespace: salesforce
baseUri: https://pepsico.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /query?q=SELECT+Id,Name+FROM+Account+WHERE+Region__c='{{region}}'
inputParameters:
- name: region
in: query
operations:
- name: get-region-accounts
method: GET
- type: http
namespace: sap
baseUri: https://pepsico-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: regional-stock
path: /RegionalInventory('{{region}}')
inputParameters:
- name: region
in: path
operations:
- name: get-regional-stock
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Queries SAP HANA for real-time sales data by product group, returning total revenue, units sold, and top-selling SKU.
naftiko: '0.5'
info:
label: SAP HANA Real-Time Sales Query
description: Queries SAP HANA for real-time sales data by product group, returning total revenue, units sold, and top-selling SKU.
tags:
- analytics
- sap-hana
- sales
capability:
exposes:
- type: mcp
namespace: real-time-analytics
port: 8080
tools:
- name: get-real-time-sales
description: Query SAP HANA for real-time sales by product group. Returns total revenue, units sold, and top SKU.
inputParameters:
- name: product_group
in: body
type: string
description: The product group code, e.g. SNACKS, BEVERAGES.
- name: date
in: body
type: string
description: The date in YYYY-MM-DD format.
call: sap-hana.get-sales-summary
with:
product_group: '{{product_group}}'
date: '{{date}}'
outputParameters:
- name: total_revenue
type: string
mapping: $.results[0].total_revenue
- name: units_sold
type: string
mapping: $.results[0].units_sold
- name: top_sku
type: string
mapping: $.results[0].top_sku
consumes:
- type: http
namespace: sap-hana
baseUri: https://pepsico-hana.sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_hana_token
resources:
- name: sales-summary
path: /sales/summary?product_group={{product_group}}&date={{date}}
inputParameters:
- name: product_group
in: query
- name: date
in: query
operations:
- name: get-sales-summary
method: GET
Manages snack seasoning formulation changes by updating the SAP recipe master, creating a change request in ServiceNow, and notifying R&D and manufacturing via Microsoft Teams.
naftiko: '0.5'
info:
label: Snack Seasoning Formulation Change
description: Manages snack seasoning formulation changes by updating the SAP recipe master, creating a change request in ServiceNow, and notifying R&D and manufacturing via Microsoft Teams.
tags:
- manufacturing
- brand-management
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: formulation
port: 8080
tools:
- name: manage-formulation-change
description: 'Manage seasoning formulation change: update SAP recipe, create ServiceNow change request, notify teams.'
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number for the seasoning.
- name: change_description
in: body
type: string
description: Description of the formulation change.
- name: effective_date
in: body
type: string
description: Effective date in YYYY-MM-DD format.
steps:
- name: get-current-recipe
type: call
call: sap.get-recipe-master
with:
material_number: '{{material_number}}'
- name: create-change-request
type: call
call: servicenow.create-change-request
with:
short_description: 'Seasoning formulation change: {{material_number}}'
description: '{{change_description}}. Current: {{get-current-recipe.description}}. Effective: {{effective_date}}.'
category: formulation_change
assignment_group: RnD_Formulation
- name: notify-stakeholders
type: call
call: msteams.send-message
with:
channel_id: rd-formulation
text: 'Formulation Change: Material {{material_number}}. Change: {{change_description}}. Effective: {{effective_date}}. CR: {{create-change-request.number}}.'
consumes:
- type: http
namespace: sap
baseUri: https://pepsico-s4.sap.com/sap/opu/odata/sap/API_RECIPE_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: recipes
path: /RecipeMaster('{{material_number}}')
inputParameters:
- name: material_number
in: path
operations:
- name: get-recipe-master
method: GET
- type: http
namespace: servicenow
baseUri: https://pepsico.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.msgraph_token
resources:
- name: channels
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Optimizes vending machine refills by pulling telemetry data, checking regional SAP inventory, and creating route-optimized refill tasks in ServiceNow.
naftiko: '0.5'
info:
label: Pepsi Vending Machine Refill Optimization
description: Optimizes vending machine refills by pulling telemetry data, checking regional SAP inventory, and creating route-optimized refill tasks in ServiceNow.
tags:
- distribution
- supply-chain
- sap
- servicenow
capability:
exposes:
- type: mcp
namespace: vending-ops
port: 8080
tools:
- name: optimize-refill-routes
description: 'Optimize vending refills: pull telemetry, check SAP inventory, create ServiceNow tasks.'
inputParameters:
- name: region_code
in: body
type: string
description: The regional distribution code.
- name: threshold_percent
in: body
type: string
description: Stock threshold percentage.
steps:
- name: get-machine-telemetry
type: call
call: sap.get-vending-telemetry
with:
region: '{{region_code}}'
threshold: '{{threshold_percent}}'
- name: check-regional-inventory
type: call
call: sap.get-regional-stock
with:
region: '{{region_code}}'
- name: create-refill-tasks
type: call
call: servicenow.create-task
with:
short_description: 'Vending refill: Region {{region_code}}'
description: 'Low stock machines: {{get-machine-telemetry.low_stock_count}}. Regional stock: {{check-regional-inventory.available_cases}} cases.'
category: vending_refill
assignment_group: Distribution_{{region_code}}
consumes:
- type: http
namespace: sap
baseUri: https://pepsico-s4.sap.com/sap/opu/odata/sap/API_VENDING_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: telemetry
path: /VendingMachineStatus?$filter=Region eq '{{region}}'
inputParameters:
- name: region
in: query
- name: threshold
in: query
operations:
- name: get-vending-telemetry
method: GET
- name: regional-stock
path: /RegionalInventory('{{region}}')
inputParameters:
- name: region
in: path
operations:
- name: get-regional-stock
method: GET
- type: http
namespace: servicenow
baseUri: https://pepsico.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
Triggers a refresh of the executive KPI Power BI dataset and posts a confirmation to the CFO's Microsoft Teams channel when the refresh is complete.
naftiko: '0.5'
info:
label: Power BI Executive KPI Refresh
description: Triggers a refresh of the executive KPI Power BI dataset and posts a confirmation to the CFO's Microsoft Teams channel when the refresh is complete.
tags:
- data
- analytics
- power-bi
- finance
- microsoft-teams
- executive-reporting
capability:
exposes:
- type: mcp
namespace: executive-bi
port: 8080
tools:
- name: refresh-executive-kpis
description: Trigger a Power BI refresh for the executive KPI dashboard and post a refresh confirmation to the CFO's Teams channel.
inputParameters:
- name: dataset_id
in: body
type: string
description: The Power BI dataset ID for the executive KPI dashboard.
- name: notify_upn
in: body
type: string
description: The Teams UPN of the executive to notify upon refresh initiation.
steps:
- name: trigger-refresh
type: call
call: powerbi.refresh-dataset
with:
dataset_id: '{{dataset_id}}'
- name: notify-executive
type: call
call: msteams.send-message
with:
channel_id: '{{notify_upn}}'
text: 'Executive KPI dashboard refresh initiated. Dataset {{dataset_id}} is updating. Status: {{trigger-refresh.status}}.'
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
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.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors frying oil quality at Frito-Lay plants by pulling quality test results from SAP, comparing against thresholds, and alerting quality teams via Microsoft Teams.
naftiko: '0.5'
info:
label: Potato Chip Oil Quality Monitoring
description: Monitors frying oil quality at Frito-Lay plants by pulling quality test results from SAP, comparing against thresholds, and alerting quality teams via Microsoft Teams.
tags:
- manufacturing
- quality
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: oil-quality
port: 8080
tools:
- name: monitor-oil-quality
description: 'Monitor frying oil quality: pull SAP test results, compare thresholds, alert quality team.'
inputParameters:
- name: plant_code
in: body
type: string
description: The Frito-Lay plant code.
- name: production_line
in: body
type: string
description: The production line ID.
steps:
- name: get-oil-test-results
type: call
call: sap.get-quality-test
with:
plant: '{{plant_code}}'
line: '{{production_line}}'
test_type: oil_quality
- name: create-quality-record
type: call
call: servicenow.create-task
with:
short_description: 'Oil quality check: Plant {{plant_code}} Line {{production_line}}'
description: 'FFA level: {{get-oil-test-results.ffa_level}}. Color index: {{get-oil-test-results.color_index}}.'
category: quality_monitoring
assignment_group: QA_FritoLay
- name: alert-quality
type: call
call: msteams.send-message
with:
channel_id: fritolay-quality
text: 'Oil Quality: Plant {{plant_code}}, Line {{production_line}}. FFA: {{get-oil-test-results.ffa_level}}. Color: {{get-oil-test-results.color_index}}. Status: {{get-oil-test-results.pass_fail}}.'
consumes:
- type: http
namespace: sap
baseUri: https://pepsico-s4.sap.com/sap/opu/odata/sap/API_QUALITYTEST_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: quality-tests
path: /QualityTest(Plant='{{plant}}',Line='{{line}}',TestType='{{test_type}}')
inputParameters:
- name: plant
in: path
- name: line
in: path
- name: test_type
in: path
operations:
- name: get-quality-test
method: GET
- type: http
namespace: servicenow
baseUri: https://pepsico.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
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channels
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors weather impacts on Tropicana orange supply by checking SAP inventory levels, assessing supplier risk, and alerting supply chain planners via Microsoft Teams.
naftiko: '0.5'
info:
label: Tropicana Supply Chain Weather Alert
description: Monitors weather impacts on Tropicana orange supply by checking SAP inventory levels, assessing supplier risk, and alerting supply chain planners via Microsoft Teams.
tags:
- supply-chain
- manufacturing
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: weather-risk
port: 8080
tools:
- name: assess-weather-impact
description: 'Assess weather impact on Tropicana supply: check SAP inventory, assess risk, alert planners.'
inputParameters:
- name: region
in: body
type: string
description: The growing region, e.g. Florida, Brazil.
- name: severity
in: body
type: string
description: 'Weather event severity: low, medium, high.'
steps:
- name: check-citrus-inventory
type: call
call: sap.get-material-stock
with:
material_number: CITRUS-CONCENTRATE
plant: TROPICANA-MAIN
- name: create-risk-assessment
type: call
call: servicenow.create-task
with:
short_description: 'Weather risk: {{region}} - {{severity}}'
description: 'Current citrus concentrate stock: {{check-citrus-inventory.available_stock}} {{check-citrus-inventory.unit}}. Weather severity: {{severity}}.'
category: supply_chain_risk
assignment_group: Tropicana_Supply_Chain
- name: alert-planners
type: call
call: msteams.send-message
with:
channel_id: tropicana-supply
text: 'WEATHER ALERT: {{region}} ({{severity}}). Citrus stock: {{check-citrus-inventory.available_stock}} {{check-citrus-inventory.unit}}. Risk assessment: {{create-risk-assessment.number}}.'
consumes:
- type: http
namespace: sap
baseUri: https://pepsico-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(Material='{{material_number}}',Plant='{{plant}}')
inputParameters:
- name: material_number
in: path
- name: plant
in: path
operations:
- name: get-material-stock
method: GET
- type: http
namespace: servicenow
baseUri: https://pepsico.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
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channels
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Processes fountain equipment service requests by looking up the Salesforce customer, creating a ServiceNow ticket, and notifying the technician via Microsoft Teams.
naftiko: '0.5'
info:
label: Beverage Fountain Equipment Service
description: Processes fountain equipment service requests by looking up the Salesforce customer, creating a ServiceNow ticket, and notifying the technician via Microsoft Teams.
tags:
- distribution
- customer-service
- salesforce
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: field-service
port: 8080
tools:
- name: create-fountain-service
description: 'Process fountain service: look up Salesforce customer, create ServiceNow ticket, notify tech.'
inputParameters:
- name: account_id
in: body
type: string
description: The Salesforce account ID.
- name: equipment_serial
in: body
type: string
description: The fountain serial number.
- name: issue_description
in: body
type: string
description: The service issue.
steps:
- name: get-customer
type: call
call: salesforce.get-account
with:
account_id: '{{account_id}}'
- name: create-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'Fountain service: {{equipment_serial}} at {{get-customer.name}}'
description: '{{issue_description}}'
category: fountain_equipment
assignment_group: Fountain_Service
- name: notify-tech
type: call
call: msteams.send-message
with:
channel_id: fountain-service
text: 'Fountain service: {{get-customer.name}}. Equipment: {{equipment_serial}}. Issue: {{issue_description}}. Ticket: {{create-ticket.number}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://pepsico.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: servicenow
baseUri: https://pepsico.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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Verifies a goods receipt posting in SAP S/4HANA for a given purchase order and returns the material document number and posting status.
naftiko: '0.5'
info:
label: SAP S/4HANA Goods Receipt Verification
description: Verifies a goods receipt posting in SAP S/4HANA for a given purchase order and returns the material document number and posting status.
tags:
- supply-chain
- sap
- goods-receipt
- lookup
capability:
exposes:
- type: mcp
namespace: supply-chain-ops
port: 8080
tools:
- name: verify-goods-receipt
description: Given a SAP purchase order number, query the materials management module for posted goods receipts and return the material document number and posting date.
inputParameters:
- name: po_number
in: body
type: string
description: The SAP purchase order number to verify goods receipt against.
call: sap.get-goods-receipt
with:
po_number: '{{po_number}}'
outputParameters:
- name: material_document
type: string
mapping: $.d.results[0].MaterialDocument
- name: posting_date
type: string
mapping: $.d.results[0].PostingDate
- name: quantity
type: string
mapping: $.d.results[0].QuantityInPurchaseOrderUnit
consumes:
- type: http
namespace: sap
baseUri: https://pepsico-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_DOCUMENT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: material-documents
path: /A_MaterialDocumentItem
inputParameters:
- name: po_number
in: query
operations:
- name: get-goods-receipt
method: GET
Initiates a performance review cycle in Workday for a given business unit and notifies all managers via Microsoft Teams to complete their reviews.
naftiko: '0.5'
info:
label: Workday Performance Review Cycle Trigger
description: Initiates a performance review cycle in Workday for a given business unit and notifies all managers via Microsoft Teams to complete their reviews.
tags:
- hr
- performance-management
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-performance
port: 8080
tools:
- name: trigger-review-cycle
description: Given a business unit code and review period, initiate a Workday performance review cycle and send a Teams notification to all managers in the BU to begin employee reviews.
inputParameters:
- name: business_unit
in: body
type: string
description: The PepsiCo business unit code for the review cycle (e.g., 'PBNA', 'FLNA').
- name: review_period
in: body
type: string
description: The performance review period label (e.g., 'Q2-2026', 'Annual-2025').
- name: due_date
in: body
type: string
description: The review completion deadline in YYYY-MM-DD format.
- name: manager_channel_id
in: body
type: string
description: Teams channel ID for the manager notification.
steps:
- name: initiate-review
type: call
call: workday.create-review-cycle
with:
business_unit: '{{business_unit}}'
review_period: '{{review_period}}'
due_date: '{{due_date}}'
- name: notify-managers
type: call
call: msteams.send-message
with:
channel_id: '{{manager_channel_id}}'
text: 'Performance review cycle ''{{review_period}}'' has been initiated for {{business_unit}}. Please complete all reviews by {{due_date}}. Workday cycle ID: {{initiate-review.cycle_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: review-cycles
path: /pepsico/performanceReviews
operations:
- name: create-review-cycle
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Syncs email campaign results from MailChimp to Salesforce and posts a performance summary to Microsoft Teams.
naftiko: '0.5'
info:
label: MailChimp Consumer Email Campaign Sync
description: Syncs email campaign results from MailChimp to Salesforce and posts a performance summary to Microsoft Teams.
tags:
- marketing
- mailchimp
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: email-marketing
port: 8080
tools:
- name: sync-email-results
description: Sync MailChimp results to Salesforce and post summary to Teams.
inputParameters:
- name: mailchimp_campaign_id
in: body
type: string
description: The MailChimp campaign ID.
- name: sf_campaign_id
in: body
type: string
description: The Salesforce campaign ID.
steps:
- name: get-report
type: call
call: mailchimp.get-campaign-report
with:
campaign_id: '{{mailchimp_campaign_id}}'
- name: update-sf
type: call
call: salesforce.update-campaign
with:
campaign_id: '{{sf_campaign_id}}'
emails_sent: '{{get-report.emails_sent}}'
open_rate: '{{get-report.open_rate}}'
- name: post-summary
type: call
call: msteams.send-message
with:
channel_id: marketing-campaigns
text: 'Email Report: {{get-report.campaign_title}}. Sent: {{get-report.emails_sent}}. Open: {{get-report.open_rate}}%. Click: {{get-report.click_rate}}%.'
consumes:
- type: http
namespace: mailchimp
baseUri: https://us1.api.mailchimp.com/3.0
authentication:
type: basic
username: anystring
password: $secrets.mailchimp_api_key
resources:
- name: reports
path: /reports/{{campaign_id}}
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-campaign-report
method: GET
- type: http
namespace: salesforce
baseUri: https://pepsico.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: campaigns
path: /sobjects/Campaign/{{campaign_id}}
inputParameters:
- name: campaign_id
in: path
operations:
- name: update-campaign
method: PATCH
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channels
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a Frito-Lay production line goes down, retrieves equipment status from SAP, creates a ServiceNow maintenance ticket, and notifies the plant operations team via Microsoft Teams.
naftiko: '0.5'
info:
label: Frito-Lay Production Line Downtime Response
description: When a Frito-Lay production line goes down, retrieves equipment status from SAP, creates a ServiceNow maintenance ticket, and notifies the plant operations team via Microsoft Teams.
tags:
- manufacturing
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: manufacturing-ops
port: 8080
tools:
- name: handle-line-downtime
description: 'Orchestrate Frito-Lay line downtime response: check SAP equipment, create ServiceNow ticket, notify plant ops.'
inputParameters:
- name: equipment_id
in: body
type: string
description: The SAP equipment ID for the production line.
- name: plant_code
in: body
type: string
description: The Frito-Lay plant code.
steps:
- name: get-equipment-status
type: call
call: sap.get-equipment
with:
equipment_id: '{{equipment_id}}'
- name: create-maintenance-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'Production line downtime: {{equipment_id}} at plant {{plant_code}}'
category: plant_maintenance
urgency: '1'
assignment_group: FritoLay_Maintenance_{{plant_code}}
- name: notify-plant-ops
type: call
call: msteams.send-message
with:
channel_id: fritolay-plant-ops-{{plant_code}}
text: 'ALERT: Production line {{equipment_id}} down at Frito-Lay plant {{plant_code}}. Status: {{get-equipment-status.system_status}}. Ticket: {{create-maintenance-ticket.number}}'
consumes:
- type: http
namespace: sap
baseUri: https://pepsico-s4.sap.com/sap/opu/odata/sap/API_EQUIPMENT
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: equipment
path: /A_Equipment('{{equipment_id}}')
inputParameters:
- name: equipment_id
in: path
operations:
- name: get-equipment
method: GET
- type: http
namespace: servicenow
baseUri: https://pepsico.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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Queries SAP S/4HANA for materials below their reorder point and posts a restocking alert digest to the supply chain operations Microsoft Teams channel.
naftiko: '0.5'
info:
label: Supply Chain Inventory Alert
description: Queries SAP S/4HANA for materials below their reorder point and posts a restocking alert digest to the supply chain operations Microsoft Teams channel.
tags:
- supply-chain
- sap
- inventory
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: supply-chain-reporting
port: 8080
tools:
- name: alert-low-inventory
description: Query SAP for materials at or below their safety stock level within a given plant and post a restocking digest to the supply chain Teams channel.
inputParameters:
- name: plant_code
in: body
type: string
description: The SAP plant code to check inventory levels for (e.g., '1000').
- name: teams_channel_id
in: body
type: string
description: Teams channel ID for the supply chain alert.
steps:
- name: get-low-stock
type: call
call: sap.get-low-stock-materials
with:
plant: '{{plant_code}}'
- name: post-alert
type: call
call: msteams.send-message
with:
channel_id: '{{teams_channel_id}}'
text: 'Inventory Alert — Plant {{plant_code}}: {{get-low-stock.count}} materials below safety stock. Critical items: {{get-low-stock.critical_materials}}.'
consumes:
- type: http
namespace: sap
baseUri: https://pepsico-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: plant
in: query
operations:
- name: get-low-stock-materials
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Fetches PepsiCo LinkedIn company page engagement metrics (impressions, shares, reactions) and posts a weekly digest to the brand marketing Teams channel.
naftiko: '0.5'
info:
label: LinkedIn Brand Engagement Digest
description: Fetches PepsiCo LinkedIn company page engagement metrics (impressions, shares, reactions) and posts a weekly digest to the brand marketing Teams channel.
tags:
- marketing
- linkedin
- social
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: brand-reporting
port: 8080
tools:
- name: digest-linkedin-engagement
description: Retrieve LinkedIn organization page engagement statistics for the past 30 days and post a branded performance digest to the marketing Teams channel.
inputParameters:
- name: organization_id
in: body
type: string
description: The LinkedIn organization ID for PepsiCo's company page.
- name: teams_channel_id
in: body
type: string
description: Teams channel ID for the brand marketing digest.
steps:
- name: get-engagement
type: call
call: linkedin.get-share-statistics
with:
organization_id: '{{organization_id}}'
- name: post-digest
type: call
call: msteams.send-message
with:
channel_id: '{{teams_channel_id}}'
text: 'LinkedIn Brand Digest (30d): Impressions: {{get-engagement.impressions}} | Reactions: {{get-engagement.likes}} | Shares: {{get-engagement.shares}} | Comments: {{get-engagement.comments}}'
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
operations:
- name: get-share-statistics
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Exports current active headcount from Workday grouped by business unit and cost center, then posts a summary to the HR Microsoft Teams channel.
naftiko: '0.5'
info:
label: Workday Headcount Snapshot by Business Unit
description: Exports current active headcount from Workday grouped by business unit and cost center, then posts a summary to the HR Microsoft Teams channel.
tags:
- hr
- workforce-planning
- workday
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-reporting
port: 8080
tools:
- name: get-headcount-snapshot
description: Retrieve current active headcount from Workday by business unit and post a formatted summary to the HR leadership Teams channel.
inputParameters:
- name: as_of_date
in: body
type: string
description: The snapshot date in YYYY-MM-DD format.
- name: teams_channel_id
in: body
type: string
description: Teams channel ID for the HR summary.
steps:
- name: export-headcount
type: call
call: workday.list-workers
with:
status: active
as_of_date: '{{as_of_date}}'
- name: post-summary
type: call
call: msteams.send-message
with:
channel_id: '{{teams_channel_id}}'
text: 'PepsiCo Headcount as of {{as_of_date}}: {{export-headcount.total}} active employees across {{export-headcount.bu_count}} business units.'
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: /pepsico/workers
inputParameters:
- name: status
in: query
- name: as_of_date
in: query
operations:
- name: list-workers
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Fetches the current status of all monitored Datadog hosts in a given tag group and posts a health digest to the infrastructure Teams channel.
naftiko: '0.5'
info:
label: Datadog Infrastructure Health Dashboard Digest
description: Fetches the current status of all monitored Datadog hosts in a given tag group and posts a health digest to the infrastructure Teams channel.
tags:
- observability
- datadog
- reporting
- microsoft-teams
- infrastructure
capability:
exposes:
- type: mcp
namespace: infra-reporting
port: 8080
tools:
- name: digest-host-health
description: Given a Datadog host tag filter, list all matching hosts and their statuses, then post a health digest to the infrastructure Teams channel.
inputParameters:
- name: host_tag
in: body
type: string
description: The Datadog tag filter to scope the host list (e.g., 'env:production').
- name: teams_channel_id
in: body
type: string
description: Teams channel ID for the infrastructure digest.
steps:
- name: list-hosts
type: call
call: datadog.list-hosts
with:
filter: '{{host_tag}}'
- name: post-digest
type: call
call: msteams.send-message
with:
channel_id: '{{teams_channel_id}}'
text: 'Infrastructure Health ({{host_tag}}): {{list-hosts.total}} hosts | Up: {{list-hosts.up_count}} | Down: {{list-hosts.down_count}} | Muted: {{list-hosts.muted_count}}'
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: hosts
path: /hosts
inputParameters:
- name: filter
in: query
operations:
- name: list-hosts
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Given a vendor contract document, uses Anthropic Claude to extract key terms, payment conditions, and renewal clauses, then posts the summary to the legal team's Teams channel.
naftiko: '0.5'
info:
label: AI-Assisted Contract Intelligence
description: Given a vendor contract document, uses Anthropic Claude to extract key terms, payment conditions, and renewal clauses, then posts the summary to the legal team's Teams channel.
tags:
- ai
- legal
- anthropic
- microsoft-teams
- contract-management
capability:
exposes:
- type: mcp
namespace: legal-ai
port: 8080
tools:
- name: extract-contract-terms
description: Given contract text content, invoke Anthropic Claude to identify and extract payment terms, renewal clauses, liability caps, and key obligations, then post the extraction to the legal Teams channel.
inputParameters:
- name: contract_text
in: body
type: string
description: The full text content of the vendor contract to analyze.
- name: vendor_name
in: body
type: string
description: The name of the vendor associated with the contract.
- name: teams_channel_id
in: body
type: string
description: Teams channel ID for the legal team digest.
steps:
- name: extract-terms
type: call
call: anthropic.create-message
with:
model: claude-3-5-sonnet-20241022
prompt: 'Extract the following from this vendor contract for {{vendor_name}}: 1) Payment terms, 2) Contract duration and renewal clauses, 3) Liability caps, 4) Key obligations for each party. Contract text: {{contract_text}}'
- name: post-extraction
type: call
call: msteams.send-message
with:
channel_id: '{{teams_channel_id}}'
text: 'Contract Intelligence — {{vendor_name}}:
{{extract-terms.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
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Looks up a Datadog alert and, when resolved, updates the linked ServiceNow incident to resolved status and posts a closure notification in Microsoft Teams.
naftiko: '0.5'
info:
label: Datadog Alert Resolution Tracker
description: Looks up a Datadog alert and, when resolved, updates the linked ServiceNow incident to resolved status and posts a closure notification in Microsoft Teams.
tags:
- observability
- datadog
- servicenow
- incident-response
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: alert-resolution
port: 8080
tools:
- name: resolve-alert-and-incident
description: Given a Datadog alert ID and linked ServiceNow incident number, check if the alert is resolved, then update the SNOW incident to Resolved and post a closure notice in Teams.
inputParameters:
- name: datadog_alert_id
in: body
type: string
description: The Datadog monitor alert ID that has been resolved.
- name: snow_incident_number
in: body
type: string
description: The ServiceNow incident number linked to this alert.
- name: teams_channel_id
in: body
type: string
description: Teams channel ID to post the closure notification.
steps:
- name: get-alert-status
type: call
call: datadog.get-alert
with:
alert_id: '{{datadog_alert_id}}'
- name: resolve-incident
type: call
call: servicenow.resolve-incident
with:
number: '{{snow_incident_number}}'
close_code: Solved (Permanently)
close_notes: Datadog alert {{datadog_alert_id}} resolved. Auto-closed.
- name: post-closure
type: call
call: msteams.send-message
with:
channel_id: '{{teams_channel_id}}'
text: 'Incident Resolved: SNOW {{snow_incident_number}} closed. Datadog alert {{datadog_alert_id}} status: {{get-alert-status.status}}.'
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: alerts
path: /monitor/{{alert_id}}
inputParameters:
- name: alert_id
in: path
operations:
- name: get-alert
method: GET
- type: http
namespace: servicenow
baseUri: https://pepsico.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: resolve-incident
method: PATCH
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Traces Quaker Oats ingredients by pulling batch records from SAP, checking supplier certifications in ServiceNow, and posting a traceability report to Microsoft Teams.
naftiko: '0.5'
info:
label: Quaker Oats Ingredient Traceability
description: Traces Quaker Oats ingredients by pulling batch records from SAP, checking supplier certifications in ServiceNow, and posting a traceability report to Microsoft Teams.
tags:
- manufacturing
- quality
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ingredient-trace
port: 8080
tools:
- name: trace-ingredients
description: 'Trace Quaker ingredients: pull SAP batches, check certifications, post report.'
inputParameters:
- name: batch_number
in: body
type: string
description: The production batch number.
- name: material_number
in: body
type: string
description: The SAP material number.
steps:
- name: get-batch-info
type: call
call: sap.get-batch
with:
material_number: '{{material_number}}'
batch_number: '{{batch_number}}'
- name: check-supplier-certs
type: call
call: servicenow.get-supplier-certifications
with:
supplier_id: '{{get-batch-info.supplier_id}}'
- name: post-trace-report
type: call
call: msteams.send-message
with:
channel_id: quaker-quality
text: 'Ingredient Trace: Batch {{batch_number}}. Supplier: {{get-batch-info.supplier_name}}. Production: {{get-batch-info.production_date}}. Certifications: {{check-supplier-certs.cert_status}}.'
consumes:
- type: http
namespace: sap
baseUri: https://pepsico-s4.sap.com/sap/opu/odata/sap/API_BATCH_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: batches
path: /A_Batch(Material='{{material_number}}',Batch='{{batch_number}}')
inputParameters:
- name: material_number
in: path
- name: batch_number
in: path
operations:
- name: get-batch
method: GET
- type: http
namespace: servicenow
baseUri: https://pepsico.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: certifications
path: /table/supplier_certification?sysparm_query=supplier_id={{supplier_id}}
inputParameters:
- name: supplier_id
in: query
operations:
- name: get-supplier-certifications
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Looks up a SAP vendor invoice by document number and returns its posting status, payment due date, and amount for accounts payable tracking.
naftiko: '0.5'
info:
label: SAP Invoice Processing Status
description: Looks up a SAP vendor invoice by document number and returns its posting status, payment due date, and amount for accounts payable tracking.
tags:
- finance
- accounts-payable
- sap
- lookup
capability:
exposes:
- type: mcp
namespace: ap-lookup
port: 8080
tools:
- name: get-invoice-status
description: Given a SAP invoice document number and fiscal year, return the invoice posting status, payment due date, gross amount, and vendor.
inputParameters:
- name: document_number
in: body
type: string
description: The SAP accounts payable document number.
- name: fiscal_year
in: body
type: string
description: The fiscal year of the invoice document (e.g., '2025').
call: sap.get-invoice
with:
document_number: '{{document_number}}'
fiscal_year: '{{fiscal_year}}'
outputParameters:
- name: posting_status
type: string
mapping: $.d.PostingStatus
- name: payment_due_date
type: string
mapping: $.d.PaymentDueDate
- name: gross_amount
type: string
mapping: $.d.GrossAmount
- name: vendor_name
type: string
mapping: $.d.SupplierName
consumes:
- type: http
namespace: sap
baseUri: https://pepsico-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(DocumentNumber='{{document_number}}',FiscalYear='{{fiscal_year}}')
inputParameters:
- name: document_number
in: path
- name: fiscal_year
in: path
operations:
- name: get-invoice
method: GET
Submits a ServiceNow change request for a planned infrastructure or application change and notifies the change advisory board via Microsoft Teams.
naftiko: '0.5'
info:
label: ServiceNow Change Management Request
description: Submits a ServiceNow change request for a planned infrastructure or application change and notifies the change advisory board via Microsoft Teams.
tags:
- itsm
- change-management
- servicenow
- microsoft-teams
- approval
capability:
exposes:
- type: mcp
namespace: change-ops
port: 8080
tools:
- name: submit-change-request
description: Given a change description, affected system, planned start, and CAB Teams channel, create a ServiceNow change request and notify the change advisory board in Teams.
inputParameters:
- name: change_description
in: body
type: string
description: Description of the change including scope, justification, and rollback plan.
- name: affected_system
in: body
type: string
description: The PepsiCo system or service being changed.
- name: planned_start
in: body
type: string
description: Planned change start datetime in ISO 8601 format.
- name: cab_channel_id
in: body
type: string
description: Teams channel ID for the change advisory board notification.
steps:
- name: create-change
type: call
call: servicenow.create-change
with:
short_description: 'Change: {{affected_system}} — {{change_description}}'
planned_start: '{{planned_start}}'
category: application
- name: notify-cab
type: call
call: msteams.send-message
with:
channel_id: '{{cab_channel_id}}'
text: 'Change Request Submitted: {{affected_system}} | CHG: {{create-change.number}} | Planned: {{planned_start}} | Scope: {{change_description}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://pepsico.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: changes
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.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves a pending SAP Ariba purchase requisition and submits it for approval, then notifies the requester via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Ariba Purchase Requisition Approval
description: Retrieves a pending SAP Ariba purchase requisition and submits it for approval, then notifies the requester via Microsoft Teams.
tags:
- procurement
- sap-ariba
- approval
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: procurement-approval
port: 8080
tools:
- name: approve-requisition
description: Given an SAP Ariba requisition ID, fetch its details and submit the approval action, then notify the requester in Teams.
inputParameters:
- name: requisition_id
in: body
type: string
description: The SAP Ariba purchase requisition ID.
- name: approver_comment
in: body
type: string
description: Optional comment to attach to the approval action.
- name: requester_teams_upn
in: body
type: string
description: The Teams UPN of the requisition requester.
steps:
- name: get-requisition
type: call
call: ariba.get-requisition
with:
requisition_id: '{{requisition_id}}'
- name: submit-approval
type: call
call: ariba.approve-requisition
with:
requisition_id: '{{requisition_id}}'
comment: '{{approver_comment}}'
- name: notify-requester
type: call
call: msteams.send-message
with:
channel_id: '{{requester_teams_upn}}'
text: 'Your requisition {{requisition_id}} ({{get-requisition.description}}, ${{get-requisition.total}}) has been approved. Ariba status: {{submit-approval.status}}.'
consumes:
- type: http
namespace: ariba
baseUri: https://openapi.ariba.com/api/purchase-requisitions/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
- name: approve-requisition
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves the compensation band and pay grade for a given job profile from Workday for use in offer letter generation and budget planning.
naftiko: '0.5'
info:
label: Workday Compensation Band Lookup
description: Retrieves the compensation band and pay grade for a given job profile from Workday for use in offer letter generation and budget planning.
tags:
- hr
- compensation
- workday
- lookup
capability:
exposes:
- type: mcp
namespace: hr-comp
port: 8080
tools:
- name: get-compensation-band
description: Given a Workday job profile ID, return the compensation grade, pay range minimum and maximum, and currency for use in offer generation or headcount budgeting.
inputParameters:
- name: job_profile_id
in: body
type: string
description: The Workday job profile ID to retrieve compensation data for.
call: workday.get-comp-grade
with:
job_profile_id: '{{job_profile_id}}'
outputParameters:
- name: grade
type: string
mapping: $.compensationGrade.descriptor
- name: pay_min
type: string
mapping: $.compensationGradeProfile.minimumSalary
- name: pay_max
type: string
mapping: $.compensationGradeProfile.maximumSalary
- name: currency
type: string
mapping: $.compensationGradeProfile.currency
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: compensation-grades
path: /pepsico/compensationGrades/{{job_profile_id}}
inputParameters:
- name: job_profile_id
in: path
operations:
- name: get-comp-grade
method: GET
Retrieves a SAP demand forecast for a product category and uses Anthropic Claude to generate a plain-language executive summary for the supply chain leadership team.
naftiko: '0.5'
info:
label: AI-Assisted Demand Forecast Summary
description: Retrieves a SAP demand forecast for a product category and uses Anthropic Claude to generate a plain-language executive summary for the supply chain leadership team.
tags:
- ai
- supply-chain
- sap
- anthropic
- microsoft-teams
- forecasting
capability:
exposes:
- type: mcp
namespace: forecast-ai
port: 8080
tools:
- name: summarize-demand-forecast
description: Given a SAP material number and planning horizon, retrieve the demand forecast from SAP, generate a plain-language executive summary using Anthropic Claude, and post it to the supply chain Teams channel.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number to retrieve demand forecast for.
- name: plant_code
in: body
type: string
description: The SAP plant code for the forecast.
- name: teams_channel_id
in: body
type: string
description: Teams channel ID for the supply chain forecast summary.
steps:
- name: get-forecast
type: call
call: sap.get-demand-forecast
with:
material: '{{material_number}}'
plant: '{{plant_code}}'
- name: generate-summary
type: call
call: anthropic.create-message
with:
model: claude-3-5-sonnet-20241022
prompt: 'Summarize the following demand forecast data for material {{material_number}} at plant {{plant_code}} in 3 bullet points for a supply chain executive: {{get-forecast.forecast_data}}'
- name: post-summary
type: call
call: msteams.send-message
with:
channel_id: '{{teams_channel_id}}'
text: 'Demand Forecast Summary — {{material_number}} (Plant {{plant_code}}):
{{generate-summary.content}}'
consumes:
- type: http
namespace: sap
baseUri: https://pepsico-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: demand-forecasts
path: /A_MrpMaterial(Material='{{material}}',MRPArea='{{plant}}')
inputParameters:
- name: material
in: path
- name: plant
in: path
operations:
- name: get-demand-forecast
method: GET
- 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
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Checks the status of SAP financial period-end close activities and posts a completion summary to the finance leadership Microsoft Teams channel.
naftiko: '0.5'
info:
label: SAP Period-End Close Status Monitor
description: Checks the status of SAP financial period-end close activities and posts a completion summary to the finance leadership Microsoft Teams channel.
tags:
- finance
- period-close
- sap
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finance-close
port: 8080
tools:
- name: monitor-period-close
description: Given a fiscal period and company code, check the SAP period-end close task status and post a completion percentage digest to the finance Teams channel.
inputParameters:
- name: fiscal_period
in: body
type: string
description: The SAP fiscal period to monitor (e.g., '006/2026' for June 2026).
- name: company_code
in: body
type: string
description: The SAP company code (e.g., 'US01' for PepsiCo US).
- name: teams_channel_id
in: body
type: string
description: Teams channel ID for the finance close status report.
steps:
- name: get-close-status
type: call
call: sap.get-close-tasks
with:
fiscal_period: '{{fiscal_period}}'
company_code: '{{company_code}}'
- name: post-status
type: call
call: msteams.send-message
with:
channel_id: '{{teams_channel_id}}'
text: 'Period Close Status {{fiscal_period}} ({{company_code}}): {{get-close-status.completed}}/{{get-close-status.total}} tasks complete ({{get-close-status.completion_pct}}%). Open blockers: {{get-close-status.blockers}}.'
consumes:
- type: http
namespace: sap
baseUri: https://pepsico-s4.sap.com/sap/opu/odata/sap/FCO_PI_CLOSE_COCKPIT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: close-tasks
path: /ClosingTaskSet
inputParameters:
- name: fiscal_period
in: query
- name: company_code
in: query
operations:
- name: get-close-tasks
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Schedules snack production by checking raw material availability in SAP, creating production orders, and notifying the Frito-Lay plant via Microsoft Teams.
naftiko: '0.5'
info:
label: Snack Production Scheduling
description: Schedules snack production by checking raw material availability in SAP, creating production orders, and notifying the Frito-Lay plant via Microsoft Teams.
tags:
- manufacturing
- supply-chain
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: production-scheduling
port: 8080
tools:
- name: schedule-snack-production
description: 'Schedule snack production: check SAP materials, create order, notify plant.'
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number.
- name: plant_code
in: body
type: string
description: The Frito-Lay plant code.
- name: quantity
in: body
type: string
description: Quantity to produce.
- name: production_date
in: body
type: string
description: Target date.
steps:
- name: check-materials
type: call
call: sap.check-material-availability
with:
material_number: '{{material_number}}'
plant: '{{plant_code}}'
quantity: '{{quantity}}'
- name: create-order
type: call
call: sap.create-production-order
with:
material_number: '{{material_number}}'
plant: '{{plant_code}}'
quantity: '{{quantity}}'
start_date: '{{production_date}}'
- name: notify-plant
type: call
call: msteams.send-message
with:
channel_id: fritolay-plant-{{plant_code}}
text: 'Production scheduled: {{material_number}}. Qty: {{quantity}}. Date: {{production_date}}. Order: {{create-order.order_number}}. Material status: {{check-materials.availability_status}}.'
consumes:
- type: http
namespace: sap
baseUri: https://pepsico-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: availability
path: /MaterialAvailability(Material='{{material_number}}',Plant='{{plant}}')
inputParameters:
- name: material_number
in: path
- name: plant
in: path
operations:
- name: check-material-availability
method: GET
- name: production-orders
path: /A_ProductionOrder_2
operations:
- name: create-production-order
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a P1 production incident is raised, creates a ServiceNow incident, annotates Datadog, and alerts the engineering on-call team in Microsoft Teams.
naftiko: '0.5'
info:
label: P1 Incident Response Chain
description: When a P1 production incident is raised, creates a ServiceNow incident, annotates Datadog, and alerts the engineering on-call team in Microsoft Teams.
tags:
- itsm
- incident-response
- servicenow
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: itsm-ops
port: 8080
tools:
- name: handle-p1-incident
description: Given an affected service and impact summary, create a ServiceNow P1 incident, create a Datadog event annotation, and alert the engineering team in Teams.
inputParameters:
- name: affected_service
in: body
type: string
description: The name of the affected PepsiCo service or system.
- name: impact_summary
in: body
type: string
description: A brief description of the business impact.
- name: teams_channel_id
in: body
type: string
description: Teams channel ID for the on-call alert.
steps:
- name: create-snow-incident
type: call
call: servicenow.create-incident
with:
short_description: 'P1 Incident: {{affected_service}} — {{impact_summary}}'
urgency: '1'
category: application
- name: annotate-datadog
type: call
call: datadog.create-event
with:
title: 'P1 Production Incident: {{affected_service}}'
text: SNOW {{create-snow-incident.number}} — {{impact_summary}}
alert_type: error
- name: alert-oncall
type: call
call: msteams.send-message
with:
channel_id: '{{teams_channel_id}}'
text: 'P1 INCIDENT: {{affected_service}} | Impact: {{impact_summary}} | SNOW: {{create-snow-incident.number}} | Datadog: {{annotate-datadog.url}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://pepsico.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: 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: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Tracks Gatorade sports sponsorship performance by pulling social engagement from LinkedIn, campaign metrics from Salesforce, and posting a digest to Microsoft Teams.
naftiko: '0.5'
info:
label: Gatorade Sports Sponsorship Performance
description: Tracks Gatorade sports sponsorship performance by pulling social engagement from LinkedIn, campaign metrics from Salesforce, and posting a digest to Microsoft Teams.
tags:
- marketing
- brand-management
- linkedin
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sponsorship
port: 8080
tools:
- name: track-sponsorship-performance
description: 'Track Gatorade sponsorship: pull LinkedIn engagement, Salesforce metrics, post digest.'
inputParameters:
- name: campaign_id
in: body
type: string
description: The Salesforce sponsorship campaign ID.
- name: linkedin_campaign_id
in: body
type: string
description: The LinkedIn campaign ID.
steps:
- name: get-linkedin-engagement
type: call
call: linkedin.get-campaign-analytics
with:
campaign_id: '{{linkedin_campaign_id}}'
- name: get-sf-campaign
type: call
call: salesforce.get-campaign
with:
campaign_id: '{{campaign_id}}'
- name: post-digest
type: call
call: msteams.send-message
with:
channel_id: gatorade-marketing
text: 'Gatorade Sponsorship: {{get-sf-campaign.name}}. LinkedIn impressions: {{get-linkedin-engagement.impressions}}. Engagements: {{get-linkedin-engagement.engagements}}. Budget used: ${{get-sf-campaign.actual_cost}}.'
consumes:
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: analytics
path: /adAnalyticsV2?campaigns=urn:li:sponsoredCampaign:{{campaign_id}}
inputParameters:
- name: campaign_id
in: query
operations:
- name: get-campaign-analytics
method: GET
- type: http
namespace: salesforce
baseUri: https://pepsico.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: campaigns
path: /sobjects/Campaign/{{campaign_id}}
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-campaign
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Checks the status of a Snowflake data pipeline task, returning execution state, rows processed, and error messages.
naftiko: '0.5'
info:
label: Snowflake Data Pipeline Status
description: Checks the status of a Snowflake data pipeline task, returning execution state, rows processed, and error messages.
tags:
- analytics
- snowflake
- data-pipeline
capability:
exposes:
- type: mcp
namespace: data-platform
port: 8080
tools:
- name: get-pipeline-status
description: Check Snowflake data pipeline task status. Returns execution state, rows loaded, and any error messages.
inputParameters:
- name: task_name
in: body
type: string
description: The Snowflake task name.
call: snowflake.get-task-status
with:
task_name: '{{task_name}}'
outputParameters:
- name: state
type: string
mapping: $.data[0].state
- name: rows_loaded
type: string
mapping: $.data[0].rows_loaded
- name: error_message
type: string
mapping: $.data[0].error_message
consumes:
- type: http
namespace: snowflake
baseUri: https://pepsico.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: tasks
path: /statements
operations:
- name: get-task-status
method: POST
Generates Azure cloud cost optimization reports by pulling cost data, identifying anomalies in Datadog, and posting recommendations to Microsoft Teams.
naftiko: '0.5'
info:
label: Azure Cloud Cost Optimization Report
description: Generates Azure cloud cost optimization reports by pulling cost data, identifying anomalies in Datadog, and posting recommendations to Microsoft Teams.
tags:
- it-operations
- finance
- azure-devops
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: cloud-finops
port: 8080
tools:
- name: generate-cost-report
description: 'Generate Azure cost report: pull cost data, check Datadog anomalies, post recommendations.'
inputParameters:
- name: subscription_id
in: body
type: string
description: The Azure subscription ID.
- name: period
in: body
type: string
description: The billing period.
steps:
- name: get-azure-costs
type: call
call: azure.get-cost-summary
with:
subscription_id: '{{subscription_id}}'
period: '{{period}}'
- name: check-anomalies
type: call
call: datadog.get-cost-anomalies
with:
subscription: '{{subscription_id}}'
- name: post-report
type: call
call: msteams.send-message
with:
channel_id: cloud-finops
text: 'Azure Cost Report ({{period}}): Total: ${{get-azure-costs.total_cost}}. vs. Budget: ${{get-azure-costs.budget}}. Anomalies: {{check-anomalies.anomaly_count}}.'
consumes:
- type: http
namespace: azure
baseUri: https://management.azure.com
authentication:
type: bearer
token: $secrets.azure_token
resources:
- name: costs
path: /subscriptions/{{subscription_id}}/providers/Microsoft.CostManagement/query?api-version=2023-11-01
inputParameters:
- name: subscription_id
in: path
operations:
- name: get-cost-summary
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apiKey
header: DD-API-KEY
value: $secrets.datadog_api_key
resources:
- name: anomalies
path: /cost/anomalies?subscription={{subscription}}
inputParameters:
- name: subscription
in: query
operations:
- name: get-cost-anomalies
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When Azure Cost Management detects a spend anomaly, creates a ServiceNow financial incident and posts a FinOps alert to the Microsoft Teams cost management channel.
naftiko: '0.5'
info:
label: Azure Cloud Cost Anomaly Responder
description: When Azure Cost Management detects a spend anomaly, creates a ServiceNow financial incident and posts a FinOps alert to the Microsoft Teams cost management channel.
tags:
- finops
- cloud
- azure
- servicenow
- microsoft-teams
- cost-management
capability:
exposes:
- type: mcp
namespace: finops
port: 8080
tools:
- name: handle-azure-cost-anomaly
description: Given an Azure subscription ID, resource group, and estimated overage in USD, create a ServiceNow financial incident and post a FinOps alert to Teams.
inputParameters:
- name: subscription_id
in: body
type: string
description: The Azure subscription ID where the cost anomaly was detected.
- name: resource_group
in: body
type: string
description: The Azure resource group driving the anomaly.
- name: estimated_overage_usd
in: body
type: number
description: The estimated spend overage in US dollars.
steps:
- name: create-snow-incident
type: call
call: servicenow.create-incident
with:
short_description: Azure Cost Anomaly — {{resource_group}} — ${{estimated_overage_usd}} overage
category: cloud_cost
urgency: '2'
- name: post-alert
type: call
call: msteams.send-message
with:
channel_id: finops-alerts
text: 'Azure Cost Anomaly: {{resource_group}} (sub: {{subscription_id}}) | Overage: ${{estimated_overage_usd}} | SNOW: {{create-snow-incident.number}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://pepsico.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: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Creates a new Salesforce account and contact for an onboarded distributor, then opens a ServiceNow onboarding task for the commercial operations team.
naftiko: '0.5'
info:
label: Salesforce Distributor Onboarding
description: Creates a new Salesforce account and contact for an onboarded distributor, then opens a ServiceNow onboarding task for the commercial operations team.
tags:
- sales
- crm
- salesforce
- servicenow
- onboarding
- distributor
capability:
exposes:
- type: mcp
namespace: distributor-onboarding
port: 8080
tools:
- name: onboard-distributor
description: Given distributor company name, primary contact, and region, create a Salesforce account and contact, then open a ServiceNow commercial onboarding task.
inputParameters:
- name: company_name
in: body
type: string
description: The distributor's legal company name.
- name: contact_name
in: body
type: string
description: The primary contact's full name at the distributor.
- name: contact_email
in: body
type: string
description: The primary contact's email address.
- name: region
in: body
type: string
description: The sales region for the distributor (e.g., 'NA', 'LATAM', 'EMEA').
steps:
- name: create-account
type: call
call: salesforce.create-account
with:
name: '{{company_name}}'
type: Distributor
region: '{{region}}'
- name: create-contact
type: call
call: salesforce.create-contact
with:
account_id: '{{create-account.id}}'
name: '{{contact_name}}'
email: '{{contact_email}}'
- name: open-onboarding-task
type: call
call: servicenow.create-incident
with:
short_description: 'Distributor onboarding: {{company_name}} — {{region}}'
category: commercial_onboarding
description: 'Salesforce Account: {{create-account.id}}. Contact: {{contact_name}} ({{contact_email}}).'
consumes:
- type: http
namespace: salesforce
baseUri: https://pepsico.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
- name: contacts
path: /sobjects/Contact
operations:
- name: create-contact
method: POST
- type: http
namespace: servicenow
baseUri: https://pepsico.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
Syncs trade promotion opportunity data from Salesforce to the planning team's Power BI dataset for near-real-time revenue reporting.
naftiko: '0.5'
info:
label: Salesforce Trade Promotion Opportunity Sync
description: Syncs trade promotion opportunity data from Salesforce to the planning team's Power BI dataset for near-real-time revenue reporting.
tags:
- sales
- crm
- salesforce
- power-bi
- reporting
- trade-promotion
capability:
exposes:
- type: mcp
namespace: sales-reporting
port: 8080
tools:
- name: sync-trade-promotion-data
description: Query Salesforce for trade promotion opportunities updated in the past 24 hours and push the results to the Power BI dataset for revenue planning.
inputParameters:
- name: dataset_id
in: body
type: string
description: The Power BI dataset ID to push updated opportunity data into.
- name: table_name
in: body
type: string
description: The Power BI table name within the dataset (e.g., 'TradeOpportunities').
steps:
- name: query-opportunities
type: call
call: salesforce.query-records
with:
q: SELECT Id,Name,StageName,Amount,CloseDate FROM Opportunity WHERE RecordType.Name = 'Trade Promotion' AND LastModifiedDate = LAST_N_DAYS:1
- name: push-to-powerbi
type: call
call: powerbi.push-rows
with:
dataset_id: '{{dataset_id}}'
table_name: '{{table_name}}'
rows: '{{query-opportunities.records}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://pepsico.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-records
method: GET
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: rows
path: /datasets/{{dataset_id}}/tables/{{table_name}}/rows
inputParameters:
- name: dataset_id
in: path
- name: table_name
in: path
operations:
- name: push-rows
method: POST
Monitors Snowflake sales analytics pipelines, checks for failures in Datadog, and creates a ServiceNow incident if errors are detected.
naftiko: '0.5'
info:
label: Snowflake Sales Analytics Pipeline Monitor
description: Monitors Snowflake sales analytics pipelines, checks for failures in Datadog, and creates a ServiceNow incident if errors are detected.
tags:
- analytics
- snowflake
- datadog
- servicenow
capability:
exposes:
- type: mcp
namespace: data-ops
port: 8080
tools:
- name: monitor-sales-pipeline
description: 'Monitor Snowflake sales pipeline: check status, verify Datadog metrics, create ServiceNow incident on failure.'
inputParameters:
- name: task_name
in: body
type: string
description: The Snowflake task name.
steps:
- name: get-task-status
type: call
call: snowflake.get-task-status
with:
task_name: '{{task_name}}'
- name: check-datadog-metrics
type: call
call: datadog.get-pipeline-metrics
with:
pipeline_name: '{{task_name}}'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Sales pipeline alert: {{task_name}}'
description: 'State: {{get-task-status.state}}. Rows loaded: {{get-task-status.rows_loaded}}. Error: {{get-task-status.error_message}}.'
category: data_pipeline
assignment_group: Data_Engineering
consumes:
- type: http
namespace: snowflake
baseUri: https://pepsico.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: tasks
path: /statements
operations:
- name: get-task-status
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apiKey
header: DD-API-KEY
value: $secrets.datadog_api_key
resources:
- name: pipeline-metrics
path: /metrics/query?query=pipeline:{{pipeline_name}}
inputParameters:
- name: pipeline_name
in: query
operations:
- name: get-pipeline-metrics
method: GET
- type: http
namespace: servicenow
baseUri: https://pepsico.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
Orchestrates new supplier onboarding by creating a vendor in SAP Ariba, setting up a contract workspace in SharePoint, and notifying procurement via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Ariba Supplier Onboarding Orchestrator
description: Orchestrates new supplier onboarding by creating a vendor in SAP Ariba, setting up a contract workspace in SharePoint, and notifying procurement via Microsoft Teams.
tags:
- procurement
- sap-ariba
- sharepoint
- microsoft-teams
- supply-chain
capability:
exposes:
- type: mcp
namespace: procurement-onboarding
port: 8080
tools:
- name: onboard-supplier
description: 'Orchestrate supplier onboarding: create SAP Ariba vendor, set up SharePoint workspace, notify procurement.'
inputParameters:
- name: vendor_name
in: body
type: string
description: The supplier company name.
- name: vendor_country
in: body
type: string
description: The supplier country code.
- name: category
in: body
type: string
description: The procurement category.
steps:
- name: create-ariba-vendor
type: call
call: ariba.create-supplier
with:
name: '{{vendor_name}}'
country: '{{vendor_country}}'
category: '{{category}}'
- name: create-contract-workspace
type: call
call: sharepoint.create-folder
with:
site_id: procurement
folder_path: Vendors/{{vendor_name}}
- name: notify-procurement
type: call
call: msteams.send-message
with:
channel_id: procurement-ops
text: 'New supplier onboarded: {{vendor_name}} ({{vendor_country}}). Ariba ID: {{create-ariba-vendor.supplier_id}}. Category: {{category}}. SharePoint workspace created.'
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
operations:
- name: create-supplier
method: POST
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: folders
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: channels
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Orchestrates a snack brand campaign launch by creating the campaign in Salesforce, configuring Google Analytics tracking, and posting the announcement to Microsoft Teams.
naftiko: '0.5'
info:
label: Snack Brand Marketing Campaign Launch
description: Orchestrates a snack brand campaign launch by creating the campaign in Salesforce, configuring Google Analytics tracking, and posting the announcement to Microsoft Teams.
tags:
- marketing
- brand-management
- salesforce
- google-analytics
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: marketing
port: 8080
tools:
- name: launch-snack-campaign
description: Orchestrate snack brand campaign launch across Salesforce, Google Analytics, and Teams.
inputParameters:
- name: campaign_name
in: body
type: string
description: The campaign name.
- name: brand
in: body
type: string
description: The PepsiCo snack brand, e.g. Lay's, Doritos, Cheetos.
- name: start_date
in: body
type: string
description: Campaign start date in YYYY-MM-DD format.
- name: budget
in: body
type: string
description: Campaign budget in USD.
steps:
- name: create-sf-campaign
type: call
call: salesforce.create-campaign
with:
name: '{{campaign_name}}'
brand: '{{brand}}'
start_date: '{{start_date}}'
budgeted_cost: '{{budget}}'
- name: setup-ga-tracking
type: call
call: ga.create-custom-dimension
with:
campaign_id: '{{create-sf-campaign.id}}'
campaign_name: '{{campaign_name}}'
- name: announce-launch
type: call
call: msteams.send-message
with:
channel_id: snack-marketing
text: 'New campaign launched: {{campaign_name}} for {{brand}}. Salesforce ID: {{create-sf-campaign.id}}. Budget: ${{budget}}. Start: {{start_date}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://pepsico.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: campaigns
path: /sobjects/Campaign
operations:
- name: create-campaign
method: POST
- type: http
namespace: ga
baseUri: https://analyticsadmin.googleapis.com/v1beta
authentication:
type: bearer
token: $secrets.google_analytics_token
resources:
- name: custom-dimensions
path: /properties/pepsico/customDimensions
operations:
- name: create-custom-dimension
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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves key account metrics from Salesforce for a major consumer account and posts an account health digest to the key account manager's Teams channel.
naftiko: '0.5'
info:
label: Salesforce Consumer Account Health Digest
description: Retrieves key account metrics from Salesforce for a major consumer account and posts an account health digest to the key account manager's Teams channel.
tags:
- sales
- crm
- salesforce
- microsoft-teams
- key-account
- reporting
capability:
exposes:
- type: mcp
namespace: kam-ops
port: 8080
tools:
- name: digest-key-account-health
description: Given a Salesforce account ID and key account manager's Teams UPN, fetch open opportunities, last activity, and revenue metrics and post an account health digest.
inputParameters:
- name: account_id
in: body
type: string
description: The Salesforce account ID for the key consumer account.
- name: kam_teams_upn
in: body
type: string
description: The Teams UPN of the key account manager.
steps:
- name: get-account
type: call
call: salesforce.get-account
with:
account_id: '{{account_id}}'
- name: post-digest
type: call
call: msteams.send-message
with:
channel_id: '{{kam_teams_upn}}'
text: 'Key Account Health: {{get-account.Name}} | Annual Revenue: ${{get-account.AnnualRevenue}} | Open Cases: {{get-account.OpenCases}} | Last Activity: {{get-account.LastActivityDate}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://pepsico.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: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves Salesforce retail account metrics for a P&G brand and posts an account health digest to the key account manager's Microsoft Teams channel.
naftiko: '0.5'
info:
label: Salesforce Brand Account Health Digest
description: Retrieves Salesforce retail account metrics for a P&G brand and posts an account health digest to the key account manager's Microsoft Teams channel.
tags:
- sales
- crm
- salesforce
- microsoft-teams
- key-account
- reporting
capability:
exposes:
- type: mcp
namespace: kam-reporting
port: 8080
tools:
- name: digest-account-health
description: Given a Salesforce account ID and KAM Teams UPN, fetch open opportunities, recent activity date, and revenue metrics, then post an account health digest.
inputParameters:
- name: account_id
in: body
type: string
description: The Salesforce account ID for the retail partner account.
- name: kam_teams_upn
in: body
type: string
description: The Teams UPN of the key account manager to notify.
steps:
- name: get-account
type: call
call: salesforce.get-account
with:
account_id: '{{account_id}}'
- name: post-digest
type: call
call: msteams.send-message
with:
channel_id: '{{kam_teams_upn}}'
text: 'Account Health: {{get-account.Name}} | Annual Revenue: ${{get-account.AnnualRevenue}} | Open Cases: {{get-account.OpenCasesCount}} | Last Activity: {{get-account.LastActivityDate}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://pg.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: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Processes Cobalt penetration test findings, logs in Snowflake, creates Jira remediation tickets for critical issues, and alerts the security team via Microsoft Teams.
naftiko: '0.5'
info:
label: Cobalt Penetration Test Result Processor
description: Processes Cobalt penetration test findings, logs in Snowflake, creates Jira remediation tickets for critical issues, and alerts the security team via Microsoft Teams.
tags:
- security
- cobalt
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: cobalt_penetration_t
port: 8080
tools:
- name: cobalt-penetration
description: Given an execution date, run the cobalt penetration test result processor process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.COBALT_PENETRATION_TEST_RESULT_PROCESSOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.COBALT_PENETRATION_TEST_RESULT_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: PGOPS
issue_type: Task
summary: Cobalt Penetration Test Result Processor - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_cobalt_penetration_t_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://pg.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a Figma design is marked for review, creates Jira review tasks, assigns to the UX team, and notifies stakeholders via Microsoft Teams.
naftiko: '0.5'
info:
label: Figma Design Review Workflow
description: When a Figma design is marked for review, creates Jira review tasks, assigns to the UX team, and notifies stakeholders via Microsoft Teams.
tags:
- design
- figma
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: figma_design_review_
port: 8080
tools:
- name: figma-design
description: Given an execution date, run the figma design review workflow process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.FIGMA_DESIGN_REVIEW_WORKFLOW LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.FIGMA_DESIGN_REVIEW_WORKFLOW_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: PGOPS
issue_type: Task
summary: Figma Design Review Workflow - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_figma_design_review__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://pg.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Creates a new vendor profile in SAP Ariba for a qualified supplier and opens a ServiceNow vendor setup task for the procurement team.
naftiko: '0.5'
info:
label: SAP Ariba Vendor Onboarding
description: Creates a new vendor profile in SAP Ariba for a qualified supplier and opens a ServiceNow vendor setup task for the procurement team.
tags:
- procurement
- sap-ariba
- vendor-management
- servicenow
- onboarding
capability:
exposes:
- type: mcp
namespace: vendor-onboarding
port: 8080
tools:
- name: onboard-vendor
description: Given a vendor company name, contact email, and country, register the vendor in SAP Ariba and create a ServiceNow vendor setup task for procurement.
inputParameters:
- name: vendor_name
in: body
type: string
description: The legal company name of the new vendor.
- name: vendor_email
in: body
type: string
description: The primary contact email address at the vendor.
- name: country
in: body
type: string
description: The vendor's country of incorporation (ISO 2-letter code).
steps:
- name: register-vendor
type: call
call: ariba.create-supplier
with:
name: '{{vendor_name}}'
email: '{{vendor_email}}'
country: '{{country}}'
- name: create-setup-task
type: call
call: servicenow.create-incident
with:
short_description: 'Vendor Onboarding: {{vendor_name}} ({{country}})'
category: vendor_management
description: 'New vendor registered in Ariba: {{register-vendor.vendor_id}}. Contact: {{vendor_email}}.'
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
operations:
- name: create-supplier
method: POST
- type: http
namespace: servicenow
baseUri: https://pg.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
Fetches P&G LinkedIn company page engagement metrics and posts a monthly brand performance digest to the global communications Microsoft Teams channel.
naftiko: '0.5'
info:
label: LinkedIn Brand Performance Digest
description: Fetches P&G LinkedIn company page engagement metrics and posts a monthly brand performance digest to the global communications Microsoft Teams channel.
tags:
- marketing
- linkedin
- social
- reporting
- microsoft-teams
- brand
capability:
exposes:
- type: mcp
namespace: brand-social-reporting
port: 8080
tools:
- name: digest-linkedin-performance
description: Retrieve LinkedIn company page follower and engagement statistics for the past 30 days and post a brand performance digest to the global communications Teams channel.
inputParameters:
- name: organization_id
in: body
type: string
description: The LinkedIn organization ID for P&G's company page.
- name: teams_channel_id
in: body
type: string
description: Teams channel ID for the global communications team.
steps:
- name: get-follower-stats
type: call
call: linkedin.get-follower-statistics
with:
organization_id: '{{organization_id}}'
- name: post-digest
type: call
call: msteams.send-message
with:
channel_id: '{{teams_channel_id}}'
text: 'P&G LinkedIn Performance (30d): Followers: {{get-follower-stats.follower_count}} | New Followers: +{{get-follower-stats.gained_30d}} | Engagement Rate: {{get-follower-stats.engagement_rate}}%'
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
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors MRP exception messages in SAP via Snowflake, flags critical shortages, creates ServiceNow tickets, and alerts the supply planning team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Material Requirements Planning Alert
description: Monitors MRP exception messages in SAP via Snowflake, flags critical shortages, creates ServiceNow tickets, and alerts the supply planning team via Microsoft Teams.
tags:
- supply-chain
- sap
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_material_require
port: 8080
tools:
- name: sap-material
description: Given an execution date, run the sap material requirements planning alert process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_MATERIAL_REQUIREMENTS_PLANNING_ALERT LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_MATERIAL_REQUIREMENTS_PLAN_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: supply-chain
short_description: SAP Material Requirements Planning Alert processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_material_require_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://pg.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Calculates warehouse space utilization from SAP data in Snowflake, flags facilities approaching capacity, and notifies the logistics team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Warehouse Space Utilization Report
description: Calculates warehouse space utilization from SAP data in Snowflake, flags facilities approaching capacity, and notifies the logistics team via Microsoft Teams.
tags:
- logistics
- sap
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_warehouse_space_
port: 8080
tools:
- name: sap-warehouse
description: Given an execution date, run the sap warehouse space utilization report process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_WAREHOUSE_SPACE_UTILIZATION_REPORT LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_WAREHOUSE_SPACE_UTILIZATIO_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_warehouse_space__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Validates new product launch readiness across SAP material master, marketing assets, and retail distribution, then notifies the brand team via Microsoft Teams.
naftiko: '0.5'
info:
label: New Product Launch Readiness Checker
description: Validates new product launch readiness across SAP material master, marketing assets, and retail distribution, then notifies the brand team via Microsoft Teams.
tags:
- product-launch
- sap
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: new_product_launch_r
port: 8080
tools:
- name: new-product
description: Given an execution date, run the new product launch readiness checker process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.NEW_PRODUCT_LAUNCH_READINESS_CHECKER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.NEW_PRODUCT_LAUNCH_READINESS_C_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_new_product_launch_r_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When Azure costs approach budget thresholds, logs the alert in Snowflake, creates a ServiceNow request for review, and notifies the cloud governance team via Microsoft Teams.
naftiko: '0.5'
info:
label: Azure FinOps Budget Alert Handler
description: When Azure costs approach budget thresholds, logs the alert in Snowflake, creates a ServiceNow request for review, and notifies the cloud governance team via Microsoft Teams.
tags:
- cloud
- microsoft-azure
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: azure_finops_budget_
port: 8080
tools:
- name: azure-finops
description: Given an execution date, run the azure finops budget alert handler process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.AZURE_FINOPS_BUDGET_ALERT_HANDLER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.AZURE_FINOPS_BUDGET_ALERT_HAND_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: cloud
short_description: Azure FinOps Budget Alert Handler processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_azure_finops_budget__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://pg.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a P1 production incident is declared, creates a ServiceNow P1 incident, annotates Datadog, and alerts the IT engineering team in Microsoft Teams.
naftiko: '0.5'
info:
label: P1 Production Incident Response Chain
description: When a P1 production incident is declared, creates a ServiceNow P1 incident, annotates Datadog, and alerts the IT engineering team in Microsoft Teams.
tags:
- itsm
- incident-response
- servicenow
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: itsm-ops
port: 8080
tools:
- name: handle-p1-incident
description: Given an affected P&G system and impact description, create a ServiceNow P1 incident, add a Datadog event annotation, and alert the engineering team via Teams.
inputParameters:
- name: affected_system
in: body
type: string
description: The P&G system or service experiencing the incident.
- name: impact_description
in: body
type: string
description: Brief description of the business impact.
- name: teams_channel_id
in: body
type: string
description: Teams channel ID for the engineering on-call alert.
steps:
- name: create-p1-incident
type: call
call: servicenow.create-incident
with:
short_description: 'P1: {{affected_system}} — {{impact_description}}'
urgency: '1'
priority: '1'
- name: annotate-datadog
type: call
call: datadog.create-event
with:
title: 'P1 Incident: {{affected_system}}'
text: SNOW {{create-p1-incident.number}} — {{impact_description}}
alert_type: error
- name: alert-team
type: call
call: msteams.send-message
with:
channel_id: '{{teams_channel_id}}'
text: 'P1 INCIDENT: {{affected_system}} | Impact: {{impact_description}} | SNOW: {{create-p1-incident.number}} | Datadog: {{annotate-datadog.url}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://pg.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: 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: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors Informatica data quality job results in Snowflake, creates Jira tickets for failed rules, and notifies the data governance team via Microsoft Teams.
naftiko: '0.5'
info:
label: Informatica Data Quality Job Monitor
description: Monitors Informatica data quality job results in Snowflake, creates Jira tickets for failed rules, and notifies the data governance team via Microsoft Teams.
tags:
- data-quality
- informatica
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: informatica_data_qua
port: 8080
tools:
- name: informatica-data
description: Given an execution date, run the informatica data quality job monitor process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.INFORMATICA_DATA_QUALITY_JOB_MONITOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.INFORMATICA_DATA_QUALITY_JOB_M_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: PGOPS
issue_type: Task
summary: Informatica Data Quality Job Monitor - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_informatica_data_qua_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://pg.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Initiates performance calibration sessions by pulling ratings from Snowflake, creates Jira tasks for HR partners, and notifies managers via Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Performance Calibration Workflow
description: Initiates performance calibration sessions by pulling ratings from Snowflake, creates Jira tasks for HR partners, and notifies managers via Microsoft Teams.
tags:
- hr
- performance
- workday
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_performance_
port: 8080
tools:
- name: workday-performance
description: Given an execution date, run the workday performance calibration workflow process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.WORKDAY_PERFORMANCE_CALIBRATION_WORKFLOW LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.WORKDAY_PERFORMANCE_CALIBRATIO_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: PGOPS
issue_type: Task
summary: Workday Performance Calibration Workflow - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_workday_performance__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://pg.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a product recall is initiated, traces affected batches in SAP, logs the scope in Snowflake, creates a ServiceNow crisis case, and alerts the quality and legal teams via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Batch Recall Coordination Chain
description: When a product recall is initiated, traces affected batches in SAP, logs the scope in Snowflake, creates a ServiceNow crisis case, and alerts the quality and legal teams via Microsoft Teams.
tags:
- quality
- recall
- sap
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_batch_recall_coo
port: 8080
tools:
- name: sap-batch
description: Given an execution date, run the sap batch recall coordination chain process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_BATCH_RECALL_COORDINATION_CHAIN LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_BATCH_RECALL_COORDINATION__RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: quality
short_description: SAP Batch Recall Coordination Chain processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_batch_recall_coo_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://pg.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors consumer panel data refresh status in Snowflake, flags delayed feeds, creates ServiceNow incidents, and alerts the analytics team via Microsoft Teams.
naftiko: '0.5'
info:
label: Consumer Panel Data Refresh Monitor
description: Monitors consumer panel data refresh status in Snowflake, flags delayed feeds, creates ServiceNow incidents, and alerts the analytics team via Microsoft Teams.
tags:
- analytics
- consumer-insights
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: consumer_panel_data_
port: 8080
tools:
- name: consumer-panel
description: Given an execution date, run the consumer panel data refresh monitor process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.CONSUMER_PANEL_DATA_REFRESH_MONITOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.CONSUMER_PANEL_DATA_REFRESH_MO_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: analytics
short_description: Consumer Panel Data Refresh Monitor processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_consumer_panel_data__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://pg.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Analyzes plant energy consumption data in Snowflake, identifies optimization opportunities, creates Jira improvement tasks, and notifies the sustainability team via Microsoft Teams.
naftiko: '0.5'
info:
label: Plant Energy Consumption Optimizer
description: Analyzes plant energy consumption data in Snowflake, identifies optimization opportunities, creates Jira improvement tasks, and notifies the sustainability team via Microsoft Teams.
tags:
- sustainability
- manufacturing
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: plant_energy_consump
port: 8080
tools:
- name: plant-energy
description: Given an execution date, run the plant energy consumption optimizer process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.PLANT_ENERGY_CONSUMPTION_OPTIMIZER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.PLANT_ENERGY_CONSUMPTION_OPTIM_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: PGOPS
issue_type: Task
summary: Plant Energy Consumption Optimizer - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_plant_energy_consump_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://pg.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Triggers a Power BI dataset refresh for the global consumer goods revenue dashboard and notifies the commercial analytics team in Microsoft Teams.
naftiko: '0.5'
info:
label: Power BI Consumer Goods Revenue Dashboard Refresh
description: Triggers a Power BI dataset refresh for the global consumer goods revenue dashboard and notifies the commercial analytics team in Microsoft Teams.
tags:
- data
- analytics
- power-bi
- finance
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: bi-ops
port: 8080
tools:
- name: refresh-revenue-dashboard
description: Trigger a Power BI refresh for the P&G global revenue dashboard and notify the commercial analytics team in Teams.
inputParameters:
- name: dataset_id
in: body
type: string
description: The Power BI dataset ID for the global revenue dashboard.
- name: teams_channel_id
in: body
type: string
description: Teams channel ID for the analytics team notification.
steps:
- name: trigger-refresh
type: call
call: powerbi.refresh-dataset
with:
dataset_id: '{{dataset_id}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: '{{teams_channel_id}}'
text: 'Global revenue dashboard refresh initiated. Dataset: {{dataset_id}} | Status: {{trigger-refresh.status}}.'
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
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.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a Temporal workflow fails, captures error details, creates a ServiceNow incident, logs in Snowflake, and notifies the platform team via Microsoft Teams.
naftiko: '0.5'
info:
label: Temporal Workflow Failure Handler
description: When a Temporal workflow fails, captures error details, creates a ServiceNow incident, logs in Snowflake, and notifies the platform team via Microsoft Teams.
tags:
- automation
- temporal
- servicenow
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: temporal_workflow_fa
port: 8080
tools:
- name: temporal-workflow
description: Given an execution date, run the temporal workflow failure handler process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.TEMPORAL_WORKFLOW_FAILURE_HANDLER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.TEMPORAL_WORKFLOW_FAILURE_HAND_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: automation
short_description: Temporal Workflow Failure Handler processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_temporal_workflow_fa_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://pg.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Syncs trade promotion opportunities from Salesforce to Snowflake, computes pipeline forecasts, and notifies sales leadership via Microsoft Teams.
naftiko: '0.5'
info:
label: Salesforce CPG Promotion Pipeline Sync
description: Syncs trade promotion opportunities from Salesforce to Snowflake, computes pipeline forecasts, and notifies sales leadership via Microsoft Teams.
tags:
- sales
- salesforce
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: salesforce_cpg_promo
port: 8080
tools:
- name: salesforce-cpg
description: Given an execution date, run the salesforce cpg promotion pipeline sync process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SALESFORCE_CPG_PROMOTION_PIPELINE_SYNC LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SALESFORCE_CPG_PROMOTION_PIPEL_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_salesforce_cpg_promo_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Identifies employees with incomplete mandatory training in Workday, logs in Snowflake, creates ServiceNow follow-up tasks, and sends reminders via Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Learning Enrollment Reminder
description: Identifies employees with incomplete mandatory training in Workday, logs in Snowflake, creates ServiceNow follow-up tasks, and sends reminders via Microsoft Teams.
tags:
- hr
- learning
- workday
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_learning_enr
port: 8080
tools:
- name: workday-learning
description: Given an execution date, run the workday learning enrollment reminder process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.WORKDAY_LEARNING_ENROLLMENT_REMINDER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.WORKDAY_LEARNING_ENROLLMENT_RE_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: hr
short_description: Workday Learning Enrollment Reminder processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_workday_learning_enr_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://pg.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors retail shelf availability data in Snowflake, creates Jira tasks for field reps when out-of-stock thresholds are breached, and notifies the sales team via Microsoft Teams.
naftiko: '0.5'
info:
label: Retail Shelf Availability Alert
description: Monitors retail shelf availability data in Snowflake, creates Jira tasks for field reps when out-of-stock thresholds are breached, and notifies the sales team via Microsoft Teams.
tags:
- retail
- supply-chain
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: retail_shelf_availab
port: 8080
tools:
- name: retail-shelf
description: Given an execution date, run the retail shelf availability alert process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.RETAIL_SHELF_AVAILABILITY_ALERT LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.RETAIL_SHELF_AVAILABILITY_ALER_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: PGOPS
issue_type: Task
summary: Retail Shelf Availability Alert - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_retail_shelf_availab_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://pg.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Aggregates brand health metrics from Salesforce and Snowflake, refreshes Power BI dashboards, and sends weekly digests to brand leadership via Microsoft Teams.
naftiko: '0.5'
info:
label: Salesforce Brand Health Digest
description: Aggregates brand health metrics from Salesforce and Snowflake, refreshes Power BI dashboards, and sends weekly digests to brand leadership via Microsoft Teams.
tags:
- marketing
- salesforce
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: salesforce_brand_hea
port: 8080
tools:
- name: salesforce-brand
description: Given an execution date, run the salesforce brand health digest process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SALESFORCE_BRAND_HEALTH_DIGEST LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SALESFORCE_BRAND_HEALTH_DIGEST_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_salesforce_brand_hea_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Compares actual Workday headcount against plan in Snowflake, flags variances, refreshes Power BI dashboards, and notifies HR leadership via Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Headcount vs Plan Variance
description: Compares actual Workday headcount against plan in Snowflake, flags variances, refreshes Power BI dashboards, and notifies HR leadership via Microsoft Teams.
tags:
- hr
- workforce-planning
- workday
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_headcount_vs
port: 8080
tools:
- name: workday-headcount
description: Given an execution date, run the workday headcount vs plan variance process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.WORKDAY_HEADCOUNT_VS_PLAN_VARIANCE LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.WORKDAY_HEADCOUNT_VS_PLAN_VARI_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_workday_headcount_vs_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Tracks aging of open requisitions from Workday in Snowflake, creates Jira follow-up tasks for stale positions, and alerts recruiting managers via Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Open Position Aging Report
description: Tracks aging of open requisitions from Workday in Snowflake, creates Jira follow-up tasks for stale positions, and alerts recruiting managers via Microsoft Teams.
tags:
- hr
- recruiting
- workday
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_open_positio
port: 8080
tools:
- name: workday-open
description: Given an execution date, run the workday open position aging report process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.WORKDAY_OPEN_POSITION_AGING_REPORT LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.WORKDAY_OPEN_POSITION_AGING_RE_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: PGOPS
issue_type: Task
summary: Workday Open Position Aging Report - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_workday_open_positio_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://pg.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves stock overview for a material across all plants in SAP.
naftiko: '0.5'
info:
label: SAP Plant Stock Overview
description: Retrieves stock overview for a material across all plants in SAP.
tags:
- supply-chain
- sap
- inventory
capability:
exposes:
- type: mcp
namespace: inventory
port: 8080
tools:
- name: get-stock-overview
description: Given a SAP material number, retrieve stock levels across all plants. Use for inventory management.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number.
call: sap.get-stock
with:
material_number: '{{material_number}}'
outputParameters:
- name: total_stock
type: string
mapping: $.d.MatlWrhsStkQtyInMatlBaseUnit
consumes:
- type: http
namespace: sap
baseUri: https://pg-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(Material='{{material_number}}')
inputParameters:
- name: material_number
in: path
operations:
- name: get-stock
method: GET
Checks the refresh status of consumer insights Power BI datasets.
naftiko: '0.5'
info:
label: Power BI Consumer Dashboard Refresh Status
description: Checks the refresh status of consumer insights Power BI datasets.
tags:
- analytics
- power-bi
- consumer-insights
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: get-refresh-status
description: Given a Power BI dataset ID, check the last refresh status. Use for dashboard monitoring.
inputParameters:
- name: dataset_id
in: body
type: string
description: The Power BI dataset ID.
call: powerbi.get-refresh
with:
dataset_id: '{{dataset_id}}'
outputParameters:
- name: status
type: string
mapping: $.value[0].status
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: get-refresh
method: GET
Exports active headcount from Workday grouped by region and business unit, then posts a summary to the HR leadership Microsoft Teams channel.
naftiko: '0.5'
info:
label: Workday Headcount Snapshot by Region
description: Exports active headcount from Workday grouped by region and business unit, then posts a summary to the HR leadership Microsoft Teams channel.
tags:
- hr
- workforce-planning
- workday
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-reporting
port: 8080
tools:
- name: get-regional-headcount
description: Retrieve active employee headcount from Workday grouped by region and post a formatted headcount digest to the HR Teams channel.
inputParameters:
- name: as_of_date
in: body
type: string
description: The snapshot date in YYYY-MM-DD format.
- name: teams_channel_id
in: body
type: string
description: Teams channel ID for the HR leadership headcount report.
steps:
- name: export-headcount
type: call
call: workday.list-workers
with:
status: active
as_of_date: '{{as_of_date}}'
- name: post-summary
type: call
call: msteams.send-message
with:
channel_id: '{{teams_channel_id}}'
text: 'P&G Headcount Snapshot ({{as_of_date}}): {{export-headcount.total}} active employees across {{export-headcount.region_count}} regions.'
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: /pg/workers
inputParameters:
- name: status
in: query
- name: as_of_date
in: query
operations:
- name: list-workers
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Queries Salesforce for open retail opportunities by brand category and posts a pipeline digest to the commercial sales leadership Teams channel.
naftiko: '0.5'
info:
label: Salesforce Retail Opportunity Pipeline Digest
description: Queries Salesforce for open retail opportunities by brand category and posts a pipeline digest to the commercial sales leadership Teams channel.
tags:
- sales
- crm
- salesforce
- reporting
- microsoft-teams
- commercial
capability:
exposes:
- type: mcp
namespace: commercial-reporting
port: 8080
tools:
- name: digest-retail-pipeline
description: Given a Salesforce brand category and Teams channel, query open opportunities and post a retail pipeline digest with deal counts and total value.
inputParameters:
- name: brand_category
in: body
type: string
description: The P&G brand category to filter opportunities (e.g., 'Fabric Care', 'Baby Care', 'Beauty').
- name: teams_channel_id
in: body
type: string
description: Teams channel ID for the sales leadership digest.
steps:
- name: query-opportunities
type: call
call: salesforce.query-records
with:
q: SELECT Id,Name,StageName,Amount,CloseDate FROM Opportunity WHERE Brand_Category__c = '{{brand_category}}' AND IsClosed = false
- name: post-digest
type: call
call: msteams.send-message
with:
channel_id: '{{teams_channel_id}}'
text: 'Retail Pipeline — {{brand_category}}: {{query-opportunities.totalSize}} open opportunities | Pipeline value: ${{query-opportunities.total_amount}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://pg.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-records
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Validates SAP period-close readiness by checking open items in Snowflake, creates ServiceNow tasks for blockers, and notifies the accounting team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Period Close Readiness Checker
description: Validates SAP period-close readiness by checking open items in Snowflake, creates ServiceNow tasks for blockers, and notifies the accounting team via Microsoft Teams.
tags:
- finance
- sap
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_period_close_rea
port: 8080
tools:
- name: sap-period
description: Given an execution date, run the sap period close readiness checker process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_PERIOD_CLOSE_READINESS_CHECKER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_PERIOD_CLOSE_READINESS_CHE_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: finance
short_description: SAP Period Close Readiness Checker processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_period_close_rea_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://pg.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors retail POS data ingestion pipelines in Snowflake, flags missing retailer feeds, creates ServiceNow incidents, and alerts the data operations team via Microsoft Teams.
naftiko: '0.5'
info:
label: Retail POS Data Ingestion Monitor
description: Monitors retail POS data ingestion pipelines in Snowflake, flags missing retailer feeds, creates ServiceNow incidents, and alerts the data operations team via Microsoft Teams.
tags:
- data-engineering
- retail
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: retail_pos_data_inge
port: 8080
tools:
- name: retail-pos
description: Given an execution date, run the retail pos data ingestion monitor process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.RETAIL_POS_DATA_INGESTION_MONITOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.RETAIL_POS_DATA_INGESTION_MONI_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: data-engineering
short_description: Retail POS Data Ingestion Monitor processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_retail_pos_data_inge_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://pg.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Queries Datadog for the health of P&G e-commerce platform services.
naftiko: '0.5'
info:
label: Datadog E-Commerce Service Health
description: Queries Datadog for the health of P&G e-commerce platform services.
tags:
- monitoring
- datadog
- e-commerce
capability:
exposes:
- type: mcp
namespace: monitoring
port: 8080
tools:
- name: get-ecommerce-health
description: Given a Datadog service name, retrieve health status. Use for e-commerce platform monitoring.
inputParameters:
- name: service_name
in: body
type: string
description: The Datadog service name.
call: datadog.get-service-health
with:
service_name: '{{service_name}}'
outputParameters:
- name: status
type: string
mapping: $.data.attributes.status
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: services
path: /service_level_objectives?query={{service_name}}
inputParameters:
- name: service_name
in: query
operations:
- name: get-service-health
method: GET
Aggregates social media sentiment data in Snowflake, runs trend analysis, refreshes Power BI dashboards, and notifies the consumer insights team via Microsoft Teams.
naftiko: '0.5'
info:
label: Consumer Sentiment Analysis Pipeline
description: Aggregates social media sentiment data in Snowflake, runs trend analysis, refreshes Power BI dashboards, and notifies the consumer insights team via Microsoft Teams.
tags:
- analytics
- consumer-insights
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: consumer_sentiment_a
port: 8080
tools:
- name: consumer-sentiment
description: Given an execution date, run the consumer sentiment analysis pipeline process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.CONSUMER_SENTIMENT_ANALYSIS_PIPELINE LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.CONSUMER_SENTIMENT_ANALYSIS_PI_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_consumer_sentiment_a_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Pulls Azure DevOps sprint velocity data into Snowflake, computes team trends, and sends sprint reports to engineering managers via Microsoft Teams.
naftiko: '0.5'
info:
label: Azure DevOps Sprint Velocity Reporter
description: Pulls Azure DevOps sprint velocity data into Snowflake, computes team trends, and sends sprint reports to engineering managers via Microsoft Teams.
tags:
- devops
- azure-devops
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: azure_devops_sprint_
port: 8080
tools:
- name: azure-devops
description: Given an execution date, run the azure devops sprint velocity reporter process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.AZURE_DEVOPS_SPRINT_VELOCITY_REPORTER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.AZURE_DEVOPS_SPRINT_VELOCITY_R_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_azure_devops_sprint__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors Datadog for eCommerce application performance alerts and creates a ServiceNow incident when a critical monitor fires on the P&G.com platform.
naftiko: '0.5'
info:
label: Datadog eCommerce Monitoring Alert
description: Monitors Datadog for eCommerce application performance alerts and creates a ServiceNow incident when a critical monitor fires on the P&G.com platform.
tags:
- observability
- datadog
- servicenow
- ecommerce
- incident-response
capability:
exposes:
- type: mcp
namespace: ecommerce-ops
port: 8080
tools:
- name: handle-ecommerce-alert
description: Given a Datadog monitor ID, alert severity, and affected eCommerce service, create a ServiceNow incident and alert the digital operations team in Teams.
inputParameters:
- name: monitor_id
in: body
type: string
description: The Datadog monitor ID that fired the eCommerce alert.
- name: monitor_name
in: body
type: string
description: The human-readable Datadog monitor name.
- name: severity
in: body
type: string
description: 'Alert severity: ''critical'' or ''warning''.'
- name: teams_channel_id
in: body
type: string
description: Teams channel ID for the digital operations team.
steps:
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'eCommerce Alert [{{severity}}]: {{monitor_name}}'
category: ecommerce_monitoring
urgency: '1'
- name: alert-digital-ops
type: call
call: msteams.send-message
with:
channel_id: '{{teams_channel_id}}'
text: 'eCommerce Alert [{{severity}}]: {{monitor_name}} | Monitor: {{monitor_id}} | SNOW: {{create-incident.number}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://pg.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: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors recipe formula changes in SAP, validates compliance in Snowflake, creates ServiceNow change records, and notifies the R&D team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Recipe Management Change Tracker
description: Monitors recipe formula changes in SAP, validates compliance in Snowflake, creates ServiceNow change records, and notifies the R&D team via Microsoft Teams.
tags:
- manufacturing
- sap
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_recipe_managemen
port: 8080
tools:
- name: sap-recipe
description: Given an execution date, run the sap recipe management change tracker process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_RECIPE_MANAGEMENT_CHANGE_TRACKER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_RECIPE_MANAGEMENT_CHANGE_T_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: manufacturing
short_description: SAP Recipe Management Change Tracker processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_recipe_managemen_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://pg.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves a goods movement document from SAP by document number, returning material, quantity, movement type, and posting date.
naftiko: '0.5'
info:
label: SAP Goods Movement Lookup
description: Retrieves a goods movement document from SAP by document number, returning material, quantity, movement type, and posting date.
tags:
- logistics
- sap
- inventory
capability:
exposes:
- type: mcp
namespace: goods-movement
port: 8080
tools:
- name: get-goods-movement
description: Given a SAP material document number, retrieve goods movement details including movement type, quantity, and storage location. Use for inventory transaction audits.
inputParameters:
- name: document_number
in: body
type: string
description: The SAP material document number.
call: sap.get-goods-movement
with:
document_number: '{{document_number}}'
outputParameters:
- name: movement_type
type: string
mapping: $.d.GoodsMovementType
- name: quantity
type: string
mapping: $.d.QuantityInEntryUnit
consumes:
- type: http
namespace: sap
baseUri: https://pg-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_DOCUMENT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: material-documents
path: /A_MaterialDocumentHeader('{{document_number}}')
inputParameters:
- name: document_number
in: path
operations:
- name: get-goods-movement
method: GET
Audits Google Tag Manager containers for compliance with tagging standards, logs findings in Snowflake, and notifies the web analytics team via Microsoft Teams.
naftiko: '0.5'
info:
label: Google Tag Manager Container Audit
description: Audits Google Tag Manager containers for compliance with tagging standards, logs findings in Snowflake, and notifies the web analytics team via Microsoft Teams.
tags:
- analytics
- google-tag-manager
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: google_tag_manager_c
port: 8080
tools:
- name: google-tag
description: Given an execution date, run the google tag manager container audit process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.GOOGLE_TAG_MANAGER_CONTAINER_AUDIT LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.GOOGLE_TAG_MANAGER_CONTAINER_A_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_google_tag_manager_c_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Pulls LinkedIn employer brand metrics, stores in Snowflake, and distributes talent acquisition insights to the HR team via Microsoft Teams.
naftiko: '0.5'
info:
label: LinkedIn Employer Brand Analytics
description: Pulls LinkedIn employer brand metrics, stores in Snowflake, and distributes talent acquisition insights to the HR team via Microsoft Teams.
tags:
- hr
- linkedin
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: linkedin_employer_br
port: 8080
tools:
- name: linkedin-employer
description: Given an execution date, run the linkedin employer brand analytics process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.LINKEDIN_EMPLOYER_BRAND_ANALYTICS LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.LINKEDIN_EMPLOYER_BRAND_ANALYT_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_linkedin_employer_br_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Given a consumer complaint narrative, uses Anthropic Claude to classify the complaint category and urgency, then creates a Salesforce case for the consumer affairs team.
naftiko: '0.5'
info:
label: AI-Assisted Consumer Complaint Triage
description: Given a consumer complaint narrative, uses Anthropic Claude to classify the complaint category and urgency, then creates a Salesforce case for the consumer affairs team.
tags:
- ai
- consumer-affairs
- anthropic
- salesforce
- customer-support
capability:
exposes:
- type: mcp
namespace: consumer-affairs-ai
port: 8080
tools:
- name: triage-consumer-complaint
description: Given a consumer complaint text and product name, invoke Anthropic Claude to classify the complaint type and urgency, then create a Salesforce consumer affairs case.
inputParameters:
- name: complaint_text
in: body
type: string
description: The full consumer complaint narrative text.
- name: product_name
in: body
type: string
description: The P&G product associated with the complaint (e.g., 'Tide Pods', 'Pampers Size 4').
- name: consumer_email
in: body
type: string
description: The consumer's email address for case creation.
steps:
- name: classify-complaint
type: call
call: anthropic.create-message
with:
model: claude-3-5-sonnet-20241022
prompt: 'Classify this consumer complaint about {{product_name}} into: 1) Category (Product Quality, Packaging, Performance, Safety, Other), 2) Urgency (Immediate, High, Standard), 3) Recommended action. Complaint: {{complaint_text}}'
- name: create-sf-case
type: call
call: salesforce.create-case
with:
subject: Consumer Complaint — {{product_name}}
description: '{{complaint_text}}
AI Classification: {{classify-complaint.content}}'
suppliedEmail: '{{consumer_email}}'
origin: AI Triage
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://pg.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
Processes Salesforce Einstein lead scores into Snowflake, identifies high-priority leads, and notifies the sales team via Microsoft Teams.
naftiko: '0.5'
info:
label: Salesforce Einstein Lead Scoring Pipeline
description: Processes Salesforce Einstein lead scores into Snowflake, identifies high-priority leads, and notifies the sales team via Microsoft Teams.
tags:
- sales
- salesforce
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: salesforce_einstein_
port: 8080
tools:
- name: salesforce-einstein
description: Given an execution date, run the salesforce einstein lead scoring pipeline process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SALESFORCE_EINSTEIN_LEAD_SCORING_PIPELIN LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SALESFORCE_EINSTEIN_LEAD_SCORI_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_salesforce_einstein__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Collects Cisco Webex meeting usage data, aggregates in Snowflake, and distributes adoption reports to IT leadership via Microsoft Teams.
naftiko: '0.5'
info:
label: Cisco Webex Meeting Usage Analytics
description: Collects Cisco Webex meeting usage data, aggregates in Snowflake, and distributes adoption reports to IT leadership via Microsoft Teams.
tags:
- collaboration
- cisco-webex
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: cisco_webex_meeting_
port: 8080
tools:
- name: cisco-webex
description: Given an execution date, run the cisco webex meeting usage analytics process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.CISCO_WEBEX_MEETING_USAGE_ANALYTICS LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.CISCO_WEBEX_MEETING_USAGE_ANAL_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_cisco_webex_meeting__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a quality hold is placed on a batch in SAP, creates a ServiceNow investigation case, logs in Snowflake, and notifies the quality assurance team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Quality Hold Release Workflow
description: When a quality hold is placed on a batch in SAP, creates a ServiceNow investigation case, logs in Snowflake, and notifies the quality assurance team via Microsoft Teams.
tags:
- quality
- sap
- servicenow
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_quality_hold_rel
port: 8080
tools:
- name: sap-quality
description: Given an execution date, run the sap quality hold release workflow process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_QUALITY_HOLD_RELEASE_WORKFLOW LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_QUALITY_HOLD_RELEASE_WORKF_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: quality
short_description: SAP Quality Hold Release Workflow processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_quality_hold_rel_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://pg.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Analyzes Coupa procurement spend data in Snowflake, identifies savings opportunities, creates Jira action items, and notifies the procurement team via Microsoft Teams.
naftiko: '0.5'
info:
label: Coupa Procurement Spend Analyzer
description: Analyzes Coupa procurement spend data in Snowflake, identifies savings opportunities, creates Jira action items, and notifies the procurement team via Microsoft Teams.
tags:
- procurement
- coupa
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: coupa_procurement_sp
port: 8080
tools:
- name: coupa-procurement
description: Given an execution date, run the coupa procurement spend analyzer process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.COUPA_PROCUREMENT_SPEND_ANALYZER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.COUPA_PROCUREMENT_SPEND_ANALYZ_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: PGOPS
issue_type: Task
summary: Coupa Procurement Spend Analyzer - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_coupa_procurement_sp_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://pg.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Syncs Adobe Campaign email performance metrics to Snowflake, analyzes engagement trends, and distributes reports to the digital marketing team via Microsoft Teams.
naftiko: '0.5'
info:
label: Adobe Campaign Email Performance Sync
description: Syncs Adobe Campaign email performance metrics to Snowflake, analyzes engagement trends, and distributes reports to the digital marketing team via Microsoft Teams.
tags:
- marketing
- adobe-campaign
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: adobe_campaign_email
port: 8080
tools:
- name: adobe-campaign
description: Given an execution date, run the adobe campaign email performance sync process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.ADOBE_CAMPAIGN_EMAIL_PERFORMANCE_SYNC LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.ADOBE_CAMPAIGN_EMAIL_PERFORMAN_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_adobe_campaign_email_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Computes vendor performance scorecards from SAP data in Snowflake, flags underperforming suppliers, creates Jira review tasks, and notifies procurement via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Vendor Performance Scorecard
description: Computes vendor performance scorecards from SAP data in Snowflake, flags underperforming suppliers, creates Jira review tasks, and notifies procurement via Microsoft Teams.
tags:
- procurement
- sap
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_vendor_performan
port: 8080
tools:
- name: sap-vendor
description: Given an execution date, run the sap vendor performance scorecard process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_VENDOR_PERFORMANCE_SCORECARD LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_VENDOR_PERFORMANCE_SCORECA_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: PGOPS
issue_type: Task
summary: SAP Vendor Performance Scorecard - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_vendor_performan_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://pg.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Tracks packaging waste metrics from manufacturing in Snowflake, computes progress against sustainability goals, and notifies the ESG team via Microsoft Teams.
naftiko: '0.5'
info:
label: Sustainability Packaging Waste Tracker
description: Tracks packaging waste metrics from manufacturing in Snowflake, computes progress against sustainability goals, and notifies the ESG team via Microsoft Teams.
tags:
- sustainability
- manufacturing
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sustainability_packa
port: 8080
tools:
- name: sustainability-packaging
description: Given an execution date, run the sustainability packaging waste tracker process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SUSTAINABILITY_PACKAGING_WASTE_TRACKER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SUSTAINABILITY_PACKAGING_WASTE_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sustainability_packa_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Reviews SAP Concur travel bookings for policy compliance in Snowflake, creates ServiceNow exceptions for violations, and notifies the travel team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Concur Travel Booking Compliance
description: Reviews SAP Concur travel bookings for policy compliance in Snowflake, creates ServiceNow exceptions for violations, and notifies the travel team via Microsoft Teams.
tags:
- travel
- sap
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_concur_travel_bo
port: 8080
tools:
- name: sap-concur
description: Given an execution date, run the sap concur travel booking compliance process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_CONCUR_TRAVEL_BOOKING_COMPLIANCE LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_CONCUR_TRAVEL_BOOKING_COMP_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: travel
short_description: SAP Concur Travel Booking Compliance processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_concur_travel_bo_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://pg.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors MuleSoft API integration health metrics in Snowflake, creates ServiceNow incidents for failing integrations, and alerts the integration team via Microsoft Teams.
naftiko: '0.5'
info:
label: MuleSoft API Integration Health Check
description: Monitors MuleSoft API integration health metrics in Snowflake, creates ServiceNow incidents for failing integrations, and alerts the integration team via Microsoft Teams.
tags:
- integration
- mulesoft
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: mulesoft_api_integra
port: 8080
tools:
- name: mulesoft-api
description: Given an execution date, run the mulesoft api integration health check process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.MULESOFT_API_INTEGRATION_HEALTH_CHECK LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.MULESOFT_API_INTEGRATION_HEALT_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: integration
short_description: MuleSoft API Integration Health Check processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_mulesoft_api_integra_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://pg.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Analyzes GitHub Actions build quality metrics in Snowflake, flags degrading build success rates, creates Jira tickets, and notifies engineering via Microsoft Teams.
naftiko: '0.5'
info:
label: GitHub CI/CD Build Quality Monitor
description: Analyzes GitHub Actions build quality metrics in Snowflake, flags degrading build success rates, creates Jira tickets, and notifies engineering via Microsoft Teams.
tags:
- devops
- github
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: github_cicd_build_qu
port: 8080
tools:
- name: github-cicd
description: Given an execution date, run the github ci/cd build quality monitor process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.GITHUB_CICD_BUILD_QUALITY_MONITOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.GITHUB_CICD_BUILD_QUALITY_MONI_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: PGOPS
issue_type: Task
summary: GitHub CI/CD Build Quality Monitor - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_github_cicd_build_qu_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://pg.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Checks SAP period-end close task completion for a fiscal period and company code, posting a status digest to the finance leadership Microsoft Teams channel.
naftiko: '0.5'
info:
label: SAP Period-End Close Monitor
description: Checks SAP period-end close task completion for a fiscal period and company code, posting a status digest to the finance leadership Microsoft Teams channel.
tags:
- finance
- sap
- period-close
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finance-close
port: 8080
tools:
- name: monitor-period-close
description: Given a fiscal period and company code, check SAP period-end close completion percentage and post a status digest to the finance Teams channel.
inputParameters:
- name: fiscal_period
in: body
type: string
description: The SAP fiscal period to monitor (e.g., '006/2026').
- name: company_code
in: body
type: string
description: The SAP company code (e.g., 'US01').
- name: teams_channel_id
in: body
type: string
description: Teams channel ID for the finance leadership status digest.
steps:
- name: get-close-status
type: call
call: sap.get-close-tasks
with:
fiscal_period: '{{fiscal_period}}'
company_code: '{{company_code}}'
- name: post-status
type: call
call: msteams.send-message
with:
channel_id: '{{teams_channel_id}}'
text: 'Period Close Status {{fiscal_period}} ({{company_code}}): {{get-close-status.completion_pct}}% complete. Open tasks: {{get-close-status.open_count}}. Blockers: {{get-close-status.blockers}}.'
consumes:
- type: http
namespace: sap
baseUri: https://pg-s4.sap.com/sap/opu/odata/sap/FCO_PI_CLOSE_COCKPIT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: close-tasks
path: /ClosingTaskSet
inputParameters:
- name: fiscal_period
in: query
- name: company_code
in: query
operations:
- name: get-close-tasks
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Lists Okta users in privileged groups who lack MFA enrollment and creates a ServiceNow security task for remediation.
naftiko: '0.5'
info:
label: Okta Privileged Access MFA Audit
description: Lists Okta users in privileged groups who lack MFA enrollment and creates a ServiceNow security task for remediation.
tags:
- security
- identity
- okta
- servicenow
- compliance
- access-review
capability:
exposes:
- type: mcp
namespace: security-audit
port: 8080
tools:
- name: audit-privileged-mfa
description: Given an Okta privileged access group ID, list members without MFA enrollment and create a ServiceNow security remediation task.
inputParameters:
- name: okta_group_id
in: body
type: string
description: The Okta privileged group ID to audit for MFA compliance.
steps:
- name: list-users-without-mfa
type: call
call: okta.list-users
with:
group_id: '{{okta_group_id}}'
- name: create-remediation-task
type: call
call: servicenow.create-incident
with:
short_description: MFA Remediation — {{list-users-without-mfa.count}} privileged users lack MFA
category: security_compliance
description: 'Users without MFA in privileged group {{okta_group_id}}: {{list-users-without-mfa.emails}}'
consumes:
- type: http
namespace: okta
baseUri: https://pg.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_key
placement: header
resources:
- name: users
path: /groups/{{group_id}}/users
inputParameters:
- name: group_id
in: path
operations:
- name: list-users
method: GET
- type: http
namespace: servicenow
baseUri: https://pg.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 consumer complaints in Salesforce exceed thresholds for a product, creates a ServiceNow quality investigation, logs in Snowflake, and alerts the quality team via Microsoft Teams.
naftiko: '0.5'
info:
label: Consumer Complaint Quality Escalation
description: When consumer complaints in Salesforce exceed thresholds for a product, creates a ServiceNow quality investigation, logs in Snowflake, and alerts the quality team via Microsoft Teams.
tags:
- quality
- salesforce
- servicenow
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: consumer_complaint_q
port: 8080
tools:
- name: consumer-complaint
description: Given an execution date, run the consumer complaint quality escalation process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.CONSUMER_COMPLAINT_QUALITY_ESCALATION LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.CONSUMER_COMPLAINT_QUALITY_ESC_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: quality
short_description: Consumer Complaint Quality Escalation processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_consumer_complaint_q_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://pg.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Fetches Adobe Analytics campaign performance data for a P&G brand campaign and posts a consumer engagement digest to the brand marketing Teams channel.
naftiko: '0.5'
info:
label: Consumer Insight Campaign Performance Digest
description: Fetches Adobe Analytics campaign performance data for a P&G brand campaign and posts a consumer engagement digest to the brand marketing Teams channel.
tags:
- marketing
- analytics
- reporting
- microsoft-teams
- campaign
- consumer
capability:
exposes:
- type: mcp
namespace: brand-analytics
port: 8080
tools:
- name: digest-campaign-performance
description: Given an Adobe Analytics report suite ID and campaign ID, retrieve visits, conversions, and revenue metrics, then post a performance digest to the brand marketing Teams channel.
inputParameters:
- name: report_suite_id
in: body
type: string
description: The Adobe Analytics report suite ID for the brand (e.g., 'pg-tide-global').
- name: campaign_id
in: body
type: string
description: The campaign tracking code or ID to filter metrics.
- name: teams_channel_id
in: body
type: string
description: Teams channel ID for the brand marketing digest.
steps:
- name: get-campaign-metrics
type: call
call: adobe-analytics.get-report
with:
report_suite: '{{report_suite_id}}'
campaign: '{{campaign_id}}'
- name: post-digest
type: call
call: msteams.send-message
with:
channel_id: '{{teams_channel_id}}'
text: 'Brand Campaign Digest — {{campaign_id}}: Visits: {{get-campaign-metrics.visits}} | Conversions: {{get-campaign-metrics.conversions}} | Revenue: ${{get-campaign-metrics.revenue}} | Bounce Rate: {{get-campaign-metrics.bounce_rate}}%'
consumes:
- type: http
namespace: adobe-analytics
baseUri: https://analytics.adobe.io/api
authentication:
type: bearer
token: $secrets.adobe_analytics_token
resources:
- name: reports
path: /{{report_suite_id}}/reports
inputParameters:
- name: report_suite_id
in: path
operations:
- name: get-report
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors customs declaration status from SAP in Snowflake, flags delayed clearances, creates ServiceNow cases, and alerts the trade compliance team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Customs Declaration Monitor
description: Monitors customs declaration status from SAP in Snowflake, flags delayed clearances, creates ServiceNow cases, and alerts the trade compliance team via Microsoft Teams.
tags:
- compliance
- sap
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_customs_declarat
port: 8080
tools:
- name: sap-customs
description: Given an execution date, run the sap customs declaration monitor process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_CUSTOMS_DECLARATION_MONITOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_CUSTOMS_DECLARATION_MONITO_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: compliance
short_description: SAP Customs Declaration Monitor processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_customs_declarat_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://pg.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors in-transit shipments in SAP via Snowflake, flags delayed deliveries, creates ServiceNow cases, and alerts the logistics team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Transportation Shipment Tracker
description: Monitors in-transit shipments in SAP via Snowflake, flags delayed deliveries, creates ServiceNow cases, and alerts the logistics team via Microsoft Teams.
tags:
- logistics
- sap
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_transportation_s
port: 8080
tools:
- name: sap-transportation
description: Given an execution date, run the sap transportation shipment tracker process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_TRANSPORTATION_SHIPMENT_TRACKER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_TRANSPORTATION_SHIPMENT_TR_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: logistics
short_description: SAP Transportation Shipment Tracker processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_transportation_s_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://pg.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Identifies privileged access accounts in Okta for certification review, logs in Snowflake, creates ServiceNow audit tasks, and notifies the IAM team via Microsoft Teams.
naftiko: '0.5'
info:
label: Okta Privileged Access Certification
description: Identifies privileged access accounts in Okta for certification review, logs in Snowflake, creates ServiceNow audit tasks, and notifies the IAM team via Microsoft Teams.
tags:
- security
- okta
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: okta_privileged_acce
port: 8080
tools:
- name: okta-privileged
description: Given an execution date, run the okta privileged access certification process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.OKTA_PRIVILEGED_ACCESS_CERTIFICATION LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.OKTA_PRIVILEGED_ACCESS_CERTIFI_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: security
short_description: Okta Privileged Access Certification processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_okta_privileged_acce_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://pg.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Pulls DTC website conversion funnel metrics from Adobe Analytics into Snowflake, refreshes Power BI dashboards, and sends insights to the e-commerce team via Microsoft Teams.
naftiko: '0.5'
info:
label: Adobe Analytics DTC Conversion Funnel
description: Pulls DTC website conversion funnel metrics from Adobe Analytics into Snowflake, refreshes Power BI dashboards, and sends insights to the e-commerce team via Microsoft Teams.
tags:
- analytics
- adobe-analytics
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: adobe_analytics_dtc_
port: 8080
tools:
- name: adobe-analytics
description: Given an execution date, run the adobe analytics dtc conversion funnel process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.ADOBE_ANALYTICS_DTC_CONVERSION_FUNNEL LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.ADOBE_ANALYTICS_DTC_CONVERSION_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_adobe_analytics_dtc__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Compares demand forecasts against actual sales in Snowflake, flags significant variances, and notifies the demand planning team via Microsoft Teams.
naftiko: '0.5'
info:
label: Demand Forecast Accuracy Monitor
description: Compares demand forecasts against actual sales in Snowflake, flags significant variances, and notifies the demand planning team via Microsoft Teams.
tags:
- supply-chain
- forecasting
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: demand_forecast_accu
port: 8080
tools:
- name: demand-forecast
description: Given an execution date, run the demand forecast accuracy monitor process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.DEMAND_FORECAST_ACCURACY_MONITOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.DEMAND_FORECAST_ACCURACY_MONIT_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_demand_forecast_accu_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When SAP blocks a sales order due to credit limits, logs the event in Snowflake, creates a ServiceNow case, and notifies the credit management team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Credit Management Block Handler
description: When SAP blocks a sales order due to credit limits, logs the event in Snowflake, creates a ServiceNow case, and notifies the credit management team via Microsoft Teams.
tags:
- finance
- sap
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_credit_managemen
port: 8080
tools:
- name: sap-credit
description: Given an execution date, run the sap credit management block handler process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_CREDIT_MANAGEMENT_BLOCK_HANDLER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_CREDIT_MANAGEMENT_BLOCK_HA_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: finance
short_description: SAP Credit Management Block Handler processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_credit_managemen_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://pg.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Creates a new retailer account and primary contact in Salesforce, opens a ServiceNow onboarding task, and notifies the assigned key account manager in Microsoft Teams.
naftiko: '0.5'
info:
label: Salesforce New Retailer Account Onboarding
description: Creates a new retailer account and primary contact in Salesforce, opens a ServiceNow onboarding task, and notifies the assigned key account manager in Microsoft Teams.
tags:
- sales
- crm
- salesforce
- servicenow
- onboarding
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: retailer-onboarding
port: 8080
tools:
- name: onboard-retailer
description: Given retailer company name, primary contact details, region, and assigned KAM Teams UPN, create a Salesforce account and contact, open a ServiceNow onboarding task, and notify the KAM.
inputParameters:
- name: company_name
in: body
type: string
description: The retailer's legal company name.
- name: contact_name
in: body
type: string
description: Primary contact's full name at the retailer.
- name: contact_email
in: body
type: string
description: Primary contact's email address.
- name: region
in: body
type: string
description: The sales region (e.g., 'NA', 'EMEA', 'APAC').
- name: kam_teams_upn
in: body
type: string
description: The Teams UPN of the assigned key account manager.
steps:
- name: create-account
type: call
call: salesforce.create-account
with:
name: '{{company_name}}'
type: Retailer
region: '{{region}}'
- name: create-contact
type: call
call: salesforce.create-contact
with:
account_id: '{{create-account.id}}'
name: '{{contact_name}}'
email: '{{contact_email}}'
- name: open-onboarding-task
type: call
call: servicenow.create-incident
with:
short_description: 'Retailer Onboarding: {{company_name}} — {{region}}'
category: retailer_onboarding
description: 'Salesforce Account: {{create-account.id}}. Contact: {{contact_name}} ({{contact_email}}).'
- name: notify-kam
type: call
call: msteams.send-message
with:
channel_id: '{{kam_teams_upn}}'
text: 'New retailer onboarded: {{company_name}} ({{region}}). Salesforce account: {{create-account.id}}. SNOW setup task: {{open-onboarding-task.number}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://pg.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
- name: contacts
path: /sobjects/Contact
operations:
- name: create-contact
method: POST
- type: http
namespace: servicenow
baseUri: https://pg.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: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Analyzes transportation costs from SAP in Snowflake, identifies routing optimizations, creates Jira action items, and notifies the logistics team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Transportation Cost Optimizer
description: Analyzes transportation costs from SAP in Snowflake, identifies routing optimizations, creates Jira action items, and notifies the logistics team via Microsoft Teams.
tags:
- logistics
- sap
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_transportation_c
port: 8080
tools:
- name: sap-transportation
description: Given an execution date, run the sap transportation cost optimizer process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_TRANSPORTATION_COST_OPTIMIZER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_TRANSPORTATION_COST_OPTIMI_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: PGOPS
issue_type: Task
summary: SAP Transportation Cost Optimizer - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_transportation_c_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://pg.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When Azure Cost Management detects a spend anomaly on a P&G subscription, creates a ServiceNow financial incident and posts a FinOps alert to the Microsoft Teams cost management channel.
naftiko: '0.5'
info:
label: Azure FinOps Cost Anomaly Responder
description: When Azure Cost Management detects a spend anomaly on a P&G subscription, creates a ServiceNow financial incident and posts a FinOps alert to the Microsoft Teams cost management channel.
tags:
- finops
- cloud
- azure
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finops
port: 8080
tools:
- name: handle-azure-cost-anomaly
description: Given an Azure subscription, resource group, and estimated overage in USD, create a ServiceNow financial incident and post a FinOps Teams alert.
inputParameters:
- name: subscription_id
in: body
type: string
description: The Azure subscription ID where the cost anomaly was detected.
- name: resource_group
in: body
type: string
description: The Azure resource group driving the anomaly.
- name: estimated_overage_usd
in: body
type: number
description: Estimated spend overage in US dollars.
steps:
- name: create-snow-incident
type: call
call: servicenow.create-incident
with:
short_description: Azure Cost Anomaly — {{resource_group}} — ${{estimated_overage_usd}}
category: cloud_cost
urgency: '2'
- name: post-finops-alert
type: call
call: msteams.send-message
with:
channel_id: finops-alerts
text: 'Azure Cost Anomaly: {{resource_group}} ({{subscription_id}}) | Overage: ${{estimated_overage_usd}} | SNOW: {{create-snow-incident.number}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://pg.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: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Scans AKS container images for vulnerabilities via Snowflake data, creates Jira remediation tickets, and alerts the security team via Microsoft Teams.
naftiko: '0.5'
info:
label: Azure Kubernetes Container Vulnerability Scanner
description: Scans AKS container images for vulnerabilities via Snowflake data, creates Jira remediation tickets, and alerts the security team via Microsoft Teams.
tags:
- security
- microsoft-azure
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: azure_kubernetes_con
port: 8080
tools:
- name: azure-kubernetes
description: Given an execution date, run the azure kubernetes container vulnerability scanner process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.AZURE_KUBERNETES_CONTAINER_VULNERABILITY LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.AZURE_KUBERNETES_CONTAINER_VUL_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: PGOPS
issue_type: Task
summary: Azure Kubernetes Container Vulnerability Scanner - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_azure_kubernetes_con_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://pg.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Aggregates production line downtime events from SAP in Snowflake, creates Jira improvement tasks, and notifies plant management via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Production Line Downtime Reporter
description: Aggregates production line downtime events from SAP in Snowflake, creates Jira improvement tasks, and notifies plant management via Microsoft Teams.
tags:
- manufacturing
- sap
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_production_line_
port: 8080
tools:
- name: sap-production
description: Given an execution date, run the sap production line downtime reporter process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_PRODUCTION_LINE_DOWNTIME_REPORTER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_PRODUCTION_LINE_DOWNTIME_R_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: PGOPS
issue_type: Task
summary: SAP Production Line Downtime Reporter - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_production_line__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://pg.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Queries SAP S/4HANA for materials below safety stock at a given manufacturing plant and posts a restocking alert to the supply chain Microsoft Teams channel.
naftiko: '0.5'
info:
label: Supply Chain Inventory Low-Stock Alert
description: Queries SAP S/4HANA for materials below safety stock at a given manufacturing plant and posts a restocking alert to the supply chain Microsoft Teams channel.
tags:
- supply-chain
- sap
- inventory
- microsoft-teams
- manufacturing
capability:
exposes:
- type: mcp
namespace: supply-chain-ops
port: 8080
tools:
- name: alert-low-inventory
description: Given a SAP plant code, query for materials at or below their safety stock threshold and post a restocking alert to the supply chain Teams channel.
inputParameters:
- name: plant_code
in: body
type: string
description: The SAP plant code to check inventory for (e.g., 'US10').
- name: teams_channel_id
in: body
type: string
description: Teams channel ID for the supply chain alert.
steps:
- name: get-low-stock
type: call
call: sap.get-low-stock-materials
with:
plant: '{{plant_code}}'
- name: post-alert
type: call
call: msteams.send-message
with:
channel_id: '{{teams_channel_id}}'
text: 'Inventory Alert — Plant {{plant_code}}: {{get-low-stock.count}} materials below safety stock. Critical SKUs: {{get-low-stock.critical_materials}}.'
consumes:
- type: http
namespace: sap
baseUri: https://pg-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: plant
in: query
operations:
- name: get-low-stock-materials
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors NetApp storage utilization from Snowflake metrics, forecasts capacity needs, creates Jira procurement tasks, and notifies the infrastructure team via Microsoft Teams.
naftiko: '0.5'
info:
label: NetApp Storage Capacity Planner
description: Monitors NetApp storage utilization from Snowflake metrics, forecasts capacity needs, creates Jira procurement tasks, and notifies the infrastructure team via Microsoft Teams.
tags:
- infrastructure
- netapp
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: netapp_storage_capac
port: 8080
tools:
- name: netapp-storage
description: Given an execution date, run the netapp storage capacity planner process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.NETAPP_STORAGE_CAPACITY_PLANNER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.NETAPP_STORAGE_CAPACITY_PLANNE_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: PGOPS
issue_type: Task
summary: NetApp Storage Capacity Planner - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_netapp_storage_capac_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://pg.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Identifies equipment due for planned maintenance in SAP via Snowflake, creates ServiceNow work orders, and notifies plant maintenance teams via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Planned Maintenance Scheduler
description: Identifies equipment due for planned maintenance in SAP via Snowflake, creates ServiceNow work orders, and notifies plant maintenance teams via Microsoft Teams.
tags:
- maintenance
- sap
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_planned_maintena
port: 8080
tools:
- name: sap-planned
description: Given an execution date, run the sap planned maintenance scheduler process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_PLANNED_MAINTENANCE_SCHEDULER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_PLANNED_MAINTENANCE_SCHEDU_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: maintenance
short_description: SAP Planned Maintenance Scheduler processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_planned_maintena_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://pg.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors Snowflake task execution for the retail analytics pipelines and alerts the data engineering team in Teams if failures are detected in the last 24 hours.
naftiko: '0.5'
info:
label: Snowflake Retail Analytics Pipeline Monitor
description: Monitors Snowflake task execution for the retail analytics pipelines and alerts the data engineering team in Teams if failures are detected in the last 24 hours.
tags:
- data
- analytics
- snowflake
- monitoring
- microsoft-teams
- retail
capability:
exposes:
- type: mcp
namespace: retail-data-ops
port: 8080
tools:
- name: monitor-retail-pipelines
description: Given a Snowflake database and schema for retail analytics, check for task failures in the past 24 hours and post an alert to the data engineering Teams channel.
inputParameters:
- name: database
in: body
type: string
description: The Snowflake database name for retail analytics (e.g., 'RETAIL_ANALYTICS').
- name: schema
in: body
type: string
description: The Snowflake schema containing retail pipeline tasks.
- name: teams_channel_id
in: body
type: string
description: Teams channel ID for data engineering alerts.
steps:
- name: check-failures
type: call
call: snowflake.query-task-history
with:
database: '{{database}}'
schema: '{{schema}}'
- name: post-alert
type: call
call: msteams.send-message
with:
channel_id: '{{teams_channel_id}}'
text: 'Retail Pipeline Health ({{database}}.{{schema}}): {{check-failures.failed_count}} failures in 24h. Failed: {{check-failures.failed_task_names}}.'
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.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-task-history
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msteams_token
resources:
- name: messages
path: /teams/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a Revert API integration fails, logs the error in Snowflake, creates a ServiceNow incident, and notifies the integration team via Microsoft Teams.
naftiko: '0.5'
info:
label: Revert API Integration Failure Handler
description: When a Revert API integration fails, logs the error in Snowflake, creates a ServiceNow incident, and notifies the integration team via Microsoft Teams.
tags:
- integration
- revert
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: revert_api_integrati
port: 8080
tools:
- name: revert-api
description: Given an execution date, run the revert api integration failure handler process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.REVERT_API_INTEGRATION_FAILURE_HANDLER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.REVERT_API_INTEGRATION_FAILURE_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: integration
short_description: Revert API Integration Failure Handler processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_revert_api_integrati_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://pg.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://pg.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Orchestrates e commerce content optimization pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: E Commerce Content Optimization Pipeline
description: Orchestrates e commerce content optimization pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
tags:
- e
- reckitt
- salesforce
- servicenow
- snowflake
capability:
exposes:
- type: mcp
namespace: e
port: 8080
tools:
- name: e-commerce-content-optimization-pipeline
description: Orchestrates e commerce content optimization pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: salesforce.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: servicenow.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: snowflake.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://reckitt.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: salesforce-resource
path: /api/e
operations:
- name: execute-1
method: POST
- type: http
namespace: servicenow
baseUri: https://reckitt.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: servicenow-resource
path: /api/e
operations:
- name: execute-2
method: POST
- type: http
namespace: snowflake
baseUri: https://reckitt.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: snowflake-resource
path: /api/e
operations:
- name: execute-3
method: POST
Orchestrates consumer insight mining pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Consumer Insight Mining Pipeline
description: Orchestrates consumer insight mining pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
tags:
- consumer
- reckitt
- servicenow
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: consumer
port: 8080
tools:
- name: consumer-insight-mining-pipeline
description: Orchestrates consumer insight mining pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: servicenow.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: snowflake.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: slack.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://reckitt.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: servicenow-resource
path: /api/consumer
operations:
- name: execute-1
method: POST
- type: http
namespace: snowflake
baseUri: https://reckitt.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: snowflake-resource
path: /api/consumer
operations:
- name: execute-2
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: slack-resource
path: /api/consumer
operations:
- name: execute-3
method: POST
Retrieves manufacturing batch record lookup data from the Reckitt consumer health and hygiene products systems.
naftiko: '0.5'
info:
label: Manufacturing Batch Record Lookup
description: Retrieves manufacturing batch record lookup data from the Reckitt consumer health and hygiene products systems.
tags:
- manufacturing
- reckitt
- lookup
capability:
exposes:
- type: mcp
namespace: manufacturing
port: 8080
tools:
- name: manufacturing-batch-record-lookup
description: Retrieves manufacturing batch record lookup data from the Reckitt consumer health and hygiene products systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: reckitt.manufacturing-batch-record-lookup
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: reckitt
baseUri: https://api.reckitt.com/v2
authentication:
type: bearer
token: $secrets.reckitt_api_token
resources:
- name: resource
path: /manufacturing/batch/record/lookup/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: manufacturing-batch-record-lookup
method: GET
When a BigCommerce order is placed, checks SAP inventory, creates a shipment in SAP, updates the BigCommerce order status, and notifies the customer via WhatsApp.
naftiko: '0.5'
info:
label: E-Commerce Fulfillment Orchestrator
description: When a BigCommerce order is placed, checks SAP inventory, creates a shipment in SAP, updates the BigCommerce order status, and notifies the customer via WhatsApp.
tags:
- e-commerce
- fulfillment
- bigcommerce
- sap
- whatsapp
- supply-chain
capability:
exposes:
- type: mcp
namespace: ecommerce-fulfillment
port: 8080
tools:
- name: fulfill-order
description: Given a BigCommerce order ID, check SAP inventory, create a shipment, update order status, and notify the customer via WhatsApp.
inputParameters:
- name: order_id
in: body
type: string
description: The BigCommerce order ID.
steps:
- name: get-order
type: call
call: bigcommerce.get-order
with:
order_id: '{{order_id}}'
- name: check-inventory
type: call
call: sap.check-stock
with:
material_number: '{{get-order.line_items[0].sku}}'
plant: '{{get-order.shipping_warehouse}}'
- name: create-shipment
type: call
call: sap.create-delivery
with:
sales_order: '{{get-order.erp_reference}}'
shipping_address: '{{get-order.shipping_address}}'
- name: update-order-status
type: call
call: bigcommerce.update-order
with:
order_id: '{{order_id}}'
status: shipped
tracking_number: '{{create-shipment.tracking_number}}'
- name: notify-customer
type: call
call: whatsapp.send-message
with:
phone_number: '{{get-order.customer_phone}}'
message: 'Your Reckitt order #{{order_id}} has been shipped! Tracking: {{create-shipment.tracking_number}}'
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/{{store_hash}}/v2
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: orders
path: /orders/{{order_id}}
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- name: update-order
method: PUT
- type: http
namespace: sap
baseUri: https://reckitt-s4.sap.com/sap/opu/odata/sap/API_OUTBOUND_DELIVERY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: stock
path: /A_MaterialStock(Material='{{material_number}}',Plant='{{plant}}')
inputParameters:
- name: material_number
in: path
- name: plant
in: path
operations:
- name: check-stock
method: GET
- name: deliveries
path: /A_OutbDeliveryHeader
operations:
- name: create-delivery
method: POST
- type: http
namespace: whatsapp
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.whatsapp_token
resources:
- name: messages
path: /{{phone_number_id}}/messages
operations:
- name: send-message
method: POST
Sends a message to a Microsoft Teams channel, used by workflows to push notifications and alerts.
naftiko: '0.5'
info:
label: Microsoft Teams Channel Message
description: Sends a message to a Microsoft Teams channel, used by workflows to push notifications and alerts.
tags:
- collaboration
- messaging
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: comms-teams
port: 8080
tools:
- name: send-channel-message
description: Send a message to a Microsoft Teams channel by team and channel ID.
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 content.
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
Orchestrates distribution network optimization pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Distribution Network Optimization Pipeline
description: Orchestrates distribution network optimization pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
tags:
- distribution
- reckitt
- teams
- jira
- confluence
capability:
exposes:
- type: mcp
namespace: distribution
port: 8080
tools:
- name: distribution-network-optimization-pipeline
description: Orchestrates distribution network optimization pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: teams.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: jira.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: confluence.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: teams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.teams_token
resources:
- name: teams-resource
path: /api/distribution
operations:
- name: execute-1
method: POST
- type: http
namespace: jira
baseUri: https://reckitt.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: jira-resource
path: /api/distribution
operations:
- name: execute-2
method: POST
- type: http
namespace: confluence
baseUri: https://reckitt.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: confluence-resource
path: /api/distribution
operations:
- name: execute-3
method: POST
Orchestrates consumer health claim validation pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Consumer Health Claim Validation Pipeline
description: Orchestrates consumer health claim validation pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
tags:
- consumer
- reckitt
- snowflake
- slack
- sap
capability:
exposes:
- type: mcp
namespace: consumer
port: 8080
tools:
- name: consumer-health-claim-validation-pipeline
description: Orchestrates consumer health claim validation pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: snowflake.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: slack.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: sap.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://reckitt.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: snowflake-resource
path: /api/consumer
operations:
- name: execute-1
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: slack-resource
path: /api/consumer
operations:
- name: execute-2
method: POST
- type: http
namespace: sap
baseUri: https://reckitt-erp.s4hana.ondemand.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: sap-resource
path: /api/consumer
operations:
- name: execute-3
method: POST
Orchestrates consumer complaint trending pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Consumer Complaint Trending Pipeline
description: Orchestrates consumer complaint trending pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
tags:
- consumer
- reckitt
- confluence
- datadog
- reckitt
capability:
exposes:
- type: mcp
namespace: consumer
port: 8080
tools:
- name: consumer-complaint-trending-pipeline
description: Orchestrates consumer complaint trending pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: confluence.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: datadog.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: reckitt.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: confluence
baseUri: https://reckitt.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: confluence-resource
path: /api/consumer
operations:
- name: execute-1
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: bearer
token: $secrets.datadog_api_key
resources:
- name: datadog-resource
path: /api/consumer
operations:
- name: execute-2
method: POST
- type: http
namespace: reckitt
baseUri: https://api.reckitt.com/v2
authentication:
type: bearer
token: $secrets.reckitt_api_token
resources:
- name: reckitt-resource
path: /api/consumer
operations:
- name: execute-3
method: POST
Orchestrates product regulatory approval pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Product Regulatory Approval Pipeline
description: Orchestrates product regulatory approval pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
tags:
- product
- reckitt
- jira
- confluence
- datadog
capability:
exposes:
- type: mcp
namespace: product
port: 8080
tools:
- name: product-regulatory-approval-pipeline
description: Orchestrates product regulatory approval pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: jira.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: confluence.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: datadog.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: jira
baseUri: https://reckitt.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: jira-resource
path: /api/product
operations:
- name: execute-1
method: POST
- type: http
namespace: confluence
baseUri: https://reckitt.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: confluence-resource
path: /api/product
operations:
- name: execute-2
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: bearer
token: $secrets.datadog_api_key
resources:
- name: datadog-resource
path: /api/product
operations:
- name: execute-3
method: POST
Creates a new folder in Box under a specified parent and returns the folder URL and ID.
naftiko: '0.5'
info:
label: Box Folder Provisioning
description: Creates a new folder in Box under a specified parent and returns the folder URL and ID.
tags:
- collaboration
- storage
- box
capability:
exposes:
- type: mcp
namespace: storage-box
port: 8080
tools:
- name: create-folder
description: Create a new Box folder under a parent folder. Returns folder ID and URL.
inputParameters:
- name: folder_name
in: body
type: string
description: The name of the new folder.
- name: parent_folder_id
in: body
type: string
description: The parent folder ID in Box.
call: box.create-folder
with:
name: '{{folder_name}}'
parent_id: '{{parent_folder_id}}'
consumes:
- type: http
namespace: box
baseUri: https://api.box.com/2.0
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: folders
path: /folders
operations:
- name: create-folder
method: POST
Retrieves retail distribution coverage lookup data from the Reckitt consumer health and hygiene products systems.
naftiko: '0.5'
info:
label: Retail Distribution Coverage Lookup
description: Retrieves retail distribution coverage lookup data from the Reckitt consumer health and hygiene products systems.
tags:
- retail
- reckitt
- lookup
capability:
exposes:
- type: mcp
namespace: retail
port: 8080
tools:
- name: retail-distribution-coverage-lookup
description: Retrieves retail distribution coverage lookup data from the Reckitt consumer health and hygiene products systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: reckitt.retail-distribution-coverage-lookup
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: reckitt
baseUri: https://api.reckitt.com/v2
authentication:
type: bearer
token: $secrets.reckitt_api_token
resources:
- name: resource
path: /retail/distribution/coverage/lookup/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: retail-distribution-coverage-lookup
method: GET
Orchestrates manufacturing quality deviation pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Manufacturing Quality Deviation Pipeline
description: Orchestrates manufacturing quality deviation pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
tags:
- manufacturing
- reckitt
- snowflake
- slack
- sap
capability:
exposes:
- type: mcp
namespace: manufacturing
port: 8080
tools:
- name: manufacturing-quality-deviation-pipeline
description: Orchestrates manufacturing quality deviation pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: snowflake.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: slack.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: sap.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://reckitt.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: snowflake-resource
path: /api/manufacturing
operations:
- name: execute-1
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: slack-resource
path: /api/manufacturing
operations:
- name: execute-2
method: POST
- type: http
namespace: sap
baseUri: https://reckitt-erp.s4hana.ondemand.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: sap-resource
path: /api/manufacturing
operations:
- name: execute-3
method: POST
Retrieves brand equity score lookup data from the Reckitt consumer health and hygiene products systems.
naftiko: '0.5'
info:
label: Brand Equity Score Lookup
description: Retrieves brand equity score lookup data from the Reckitt consumer health and hygiene products systems.
tags:
- brand
- reckitt
- lookup
capability:
exposes:
- type: mcp
namespace: brand
port: 8080
tools:
- name: brand-equity-score-lookup
description: Retrieves brand equity score lookup data from the Reckitt consumer health and hygiene products systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: reckitt.brand-equity-score-lookup
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: reckitt
baseUri: https://api.reckitt.com/v2
authentication:
type: bearer
token: $secrets.reckitt_api_token
resources:
- name: resource
path: /brand/equity/score/lookup/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: brand-equity-score-lookup
method: GET
Orchestrates product formulation change pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Product Formulation Change Pipeline
description: Orchestrates product formulation change pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
tags:
- product
- reckitt
- sap
- teams
- jira
capability:
exposes:
- type: mcp
namespace: product
port: 8080
tools:
- name: product-formulation-change-pipeline
description: Orchestrates product formulation change pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: sap.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: teams.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: jira.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://reckitt-erp.s4hana.ondemand.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: sap-resource
path: /api/product
operations:
- name: execute-1
method: POST
- type: http
namespace: teams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.teams_token
resources:
- name: teams-resource
path: /api/product
operations:
- name: execute-2
method: POST
- type: http
namespace: jira
baseUri: https://reckitt.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: jira-resource
path: /api/product
operations:
- name: execute-3
method: POST
When a production line goes down, logs the event in SAP, creates a ServiceNow P1 incident, notifies the plant manager via Microsoft Teams, and records the downtime in Datadog.
naftiko: '0.5'
info:
label: Production Line Downtime Orchestrator
description: When a production line goes down, logs the event in SAP, creates a ServiceNow P1 incident, notifies the plant manager via Microsoft Teams, and records the downtime in Datadog.
tags:
- manufacturing
- production
- sap
- servicenow
- microsoft-teams
- datadog
capability:
exposes:
- type: mcp
namespace: mfg-downtime
port: 8080
tools:
- name: report-downtime
description: Given a plant code and production line ID, log the downtime event across SAP, ServiceNow, Microsoft Teams, and Datadog.
inputParameters:
- name: plant_code
in: body
type: string
description: The manufacturing plant code.
- name: line_id
in: body
type: string
description: The production line identifier.
- name: reason
in: body
type: string
description: The downtime reason code.
steps:
- name: log-sap-event
type: call
call: sap.create-maintenance-order
with:
plant: '{{plant_code}}'
equipment: '{{line_id}}'
description: 'Unplanned downtime: {{reason}}'
order_type: PM01
- name: create-p1-incident
type: call
call: servicenow.create-incident
with:
short_description: Production line {{line_id}} down at plant {{plant_code}}
priority: '1'
category: production_downtime
assigned_group: Plant_Maintenance_{{plant_code}}
description: 'Line {{line_id}} is down. Reason: {{reason}}. SAP order: {{log-sap-event.order_number}}.'
- name: notify-plant-manager
type: call
call: msteams.send-channel-message
with:
team_id: plant_{{plant_code}}
channel: Production
text: 'ALERT: Line {{line_id}} is DOWN. Reason: {{reason}}. Incident: {{create-p1-incident.number}}. SAP order: {{log-sap-event.order_number}}.'
- name: record-metric
type: call
call: datadog.send-event
with:
title: 'Production downtime: {{line_id}} at {{plant_code}}'
text: 'Reason: {{reason}}, Incident: {{create-p1-incident.number}}'
alert_type: error
tags: plant:{{plant_code}},line:{{line_id}}
consumes:
- type: http
namespace: sap
baseUri: https://reckitt-s4.sap.com/sap/opu/odata/sap/API_MAINTORDER
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: maintenance-orders
path: /MaintenanceOrder
operations:
- name: create-maintenance-order
method: POST
- type: http
namespace: servicenow
baseUri: https://reckitt.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/{{team_id}}/channels/{{channel}}/messages
inputParameters:
- name: team_id
in: path
- name: channel
in: path
operations:
- name: send-channel-message
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apiKey
key: $secrets.datadog_api_key
resources:
- name: events
path: /events
operations:
- name: send-event
method: POST
Orchestrates supply chain demand planning pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Supply Chain Demand Planning Pipeline
description: Orchestrates supply chain demand planning pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
tags:
- supply
- reckitt
- teams
- jira
- confluence
capability:
exposes:
- type: mcp
namespace: supply
port: 8080
tools:
- name: supply-chain-demand-planning-pipeline
description: Orchestrates supply chain demand planning pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: teams.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: jira.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: confluence.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: teams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.teams_token
resources:
- name: teams-resource
path: /api/supply
operations:
- name: execute-1
method: POST
- type: http
namespace: jira
baseUri: https://reckitt.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: jira-resource
path: /api/supply
operations:
- name: execute-2
method: POST
- type: http
namespace: confluence
baseUri: https://reckitt.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: confluence-resource
path: /api/supply
operations:
- name: execute-3
method: POST
Runs a report in Adobe Analytics for a specified report suite and date range, returning page views, visits, and unique visitors.
naftiko: '0.5'
info:
label: Adobe Analytics Report
description: Runs a report in Adobe Analytics for a specified report suite and date range, returning page views, visits, and unique visitors.
tags:
- analytics
- digital-marketing
- adobe-analytics
capability:
exposes:
- type: mcp
namespace: analytics-adobe
port: 8080
tools:
- name: run-report
description: Run an Adobe Analytics report for a report suite and date range. Returns page views, visits, and unique visitors.
inputParameters:
- name: report_suite_id
in: body
type: string
description: The Adobe Analytics report suite ID.
- 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: adobe-analytics.get-report
with:
rsid: '{{report_suite_id}}'
start_date: '{{start_date}}'
end_date: '{{end_date}}'
consumes:
- type: http
namespace: adobe-analytics
baseUri: https://analytics.adobe.io/api/reckitt
authentication:
type: bearer
token: $secrets.adobe_analytics_token
resources:
- name: reports
path: /reports
operations:
- name: get-report
method: POST
Queries SAP HANA for current inventory levels for a material across all plants.
naftiko: '0.5'
info:
label: SAP HANA Inventory Snapshot
description: Queries SAP HANA for current inventory levels for a material across all plants.
tags:
- supply-chain
- inventory
- sap-hana
capability:
exposes:
- type: mcp
namespace: supply-chain-inventory
port: 8080
tools:
- name: get-inventory-levels
description: Query SAP HANA for inventory levels across all plants for a given material number.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number.
call: saphana.query-inventory
with:
material_number: '{{material_number}}'
consumes:
- type: http
namespace: saphana
baseUri: https://reckitt-hana.sap.com/sap/opu/odata/sap/INVENTORY_SRV
authentication:
type: basic
username: $secrets.sap_hana_user
password: $secrets.sap_hana_password
resources:
- name: stock
path: /MaterialStock?$filter=Material eq '{{material_number}}'
inputParameters:
- name: material_number
in: path
operations:
- name: query-inventory
method: GET
Orchestrates raw material sourcing optimization pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Raw Material Sourcing Optimization Pipeline
description: Orchestrates raw material sourcing optimization pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
tags:
- raw
- reckitt
- datadog
- reckitt
- salesforce
capability:
exposes:
- type: mcp
namespace: raw
port: 8080
tools:
- name: raw-material-sourcing-optimization-pipeline
description: Orchestrates raw material sourcing optimization pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: datadog.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: reckitt.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: salesforce.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: bearer
token: $secrets.datadog_api_key
resources:
- name: datadog-resource
path: /api/raw
operations:
- name: execute-1
method: POST
- type: http
namespace: reckitt
baseUri: https://api.reckitt.com/v2
authentication:
type: bearer
token: $secrets.reckitt_api_token
resources:
- name: reckitt-resource
path: /api/raw
operations:
- name: execute-2
method: POST
- type: http
namespace: salesforce
baseUri: https://reckitt.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: salesforce-resource
path: /api/raw
operations:
- name: execute-3
method: POST
Retrieves a material master record from SAP S/4HANA by material number, returning description, unit of measure, and material group.
naftiko: '0.5'
info:
label: SAP S/4HANA Material Master Lookup
description: Retrieves a material master record from SAP S/4HANA by material number, returning description, unit of measure, and material group.
tags:
- erp
- master-data
- sap
- sap-s4hana
capability:
exposes:
- type: mcp
namespace: erp-materials
port: 8080
tools:
- name: get-material
description: Look up a SAP S/4HANA material master by material number. Returns description, UoM, material group, and weight.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number.
call: sap.get-material
with:
material_number: '{{material_number}}'
consumes:
- type: http
namespace: sap
baseUri: https://reckitt-s4.sap.com/sap/opu/odata/sap/API_PRODUCT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: materials
path: /A_Product('{{material_number}}')
inputParameters:
- name: material_number
in: path
operations:
- name: get-material
method: GET
Retrieves a Salesforce lead record by ID, returning contact info, lead source, status, and assigned owner.
naftiko: '0.5'
info:
label: Salesforce Lead Lookup
description: Retrieves a Salesforce lead record by ID, returning contact info, lead source, status, and assigned owner.
tags:
- sales
- crm
- salesforce
capability:
exposes:
- type: mcp
namespace: sales-crm
port: 8080
tools:
- name: get-lead
description: Look up a Salesforce lead by ID. Returns name, email, company, lead source, status, and owner.
inputParameters:
- name: lead_id
in: body
type: string
description: The Salesforce lead record ID.
call: salesforce.get-lead
with:
lead_id: '{{lead_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://reckitt.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
When a quality deviation is detected in SAP, creates a ServiceNow incident, notifies the plant quality team via Microsoft Teams, and logs the event in Datadog.
naftiko: '0.5'
info:
label: Manufacturing Quality Alert Orchestrator
description: When a quality deviation is detected in SAP, creates a ServiceNow incident, notifies the plant quality team via Microsoft Teams, and logs the event in Datadog.
tags:
- manufacturing
- quality
- sap
- servicenow
- microsoft-teams
- datadog
capability:
exposes:
- type: mcp
namespace: mfg-quality
port: 8080
tools:
- name: raise-quality-alert
description: Given a SAP quality notification ID, create a ServiceNow incident, alert the quality team in Microsoft Teams, and send an event to Datadog.
inputParameters:
- name: notification_id
in: body
type: string
description: The SAP quality notification ID.
- name: plant_code
in: body
type: string
description: The manufacturing plant code.
steps:
- name: get-notification
type: call
call: sap.get-quality-notification
with:
notification_id: '{{notification_id}}'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Quality deviation at plant {{plant_code}}: {{get-notification.description}}'
category: quality
assigned_group: Plant_Quality_{{plant_code}}
priority: '2'
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: quality_{{plant_code}}
channel: Alerts
text: 'Quality Alert: {{get-notification.description}} at plant {{plant_code}}. ServiceNow: {{create-incident.number}}. Material: {{get-notification.material_number}}.'
- name: log-event
type: call
call: datadog.send-event
with:
title: 'Quality deviation: {{notification_id}}'
text: Plant {{plant_code}}, material {{get-notification.material_number}}, incident {{create-incident.number}}
tags: plant:{{plant_code}},type:quality
consumes:
- type: http
namespace: sap
baseUri: https://reckitt-s4.sap.com/sap/opu/odata/sap/QM_NOTIFICATION_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: notifications
path: /QualityNotifications('{{notification_id}}')
inputParameters:
- name: notification_id
in: path
operations:
- name: get-quality-notification
method: GET
- type: http
namespace: servicenow
baseUri: https://reckitt.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/{{team_id}}/channels/{{channel}}/messages
inputParameters:
- name: team_id
in: path
- name: channel
in: path
operations:
- name: send-channel-message
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apiKey
key: $secrets.datadog_api_key
resources:
- name: events
path: /events
operations:
- name: send-event
method: POST
Orchestrates retailer joint business planning pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Retailer Joint Business Planning Pipeline
description: Orchestrates retailer joint business planning pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
tags:
- retailer
- reckitt
- sap
- teams
- jira
capability:
exposes:
- type: mcp
namespace: retailer
port: 8080
tools:
- name: retailer-joint-business-planning-pipeline
description: Orchestrates retailer joint business planning pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: sap.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: teams.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: jira.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://reckitt-erp.s4hana.ondemand.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: sap-resource
path: /api/retailer
operations:
- name: execute-1
method: POST
- type: http
namespace: teams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.teams_token
resources:
- name: teams-resource
path: /api/retailer
operations:
- name: execute-2
method: POST
- type: http
namespace: jira
baseUri: https://reckitt.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: jira-resource
path: /api/retailer
operations:
- name: execute-3
method: POST
Retrieves product packaging specification data from the Reckitt consumer health and hygiene products systems.
naftiko: '0.5'
info:
label: Product Packaging Specification
description: Retrieves product packaging specification data from the Reckitt consumer health and hygiene products systems.
tags:
- product
- reckitt
- specification
capability:
exposes:
- type: mcp
namespace: product
port: 8080
tools:
- name: product-packaging-specification
description: Retrieves product packaging specification data from the Reckitt consumer health and hygiene products systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: reckitt.product-packaging-specification
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: reckitt
baseUri: https://api.reckitt.com/v2
authentication:
type: bearer
token: $secrets.reckitt_api_token
resources:
- name: resource
path: /product/packaging/specification/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: product-packaging-specification
method: GET
Retrieves product safety data sheet lookup data from the Reckitt consumer health and hygiene products systems.
naftiko: '0.5'
info:
label: Product Safety Data Sheet Lookup
description: Retrieves product safety data sheet lookup data from the Reckitt consumer health and hygiene products systems.
tags:
- product
- reckitt
- lookup
capability:
exposes:
- type: mcp
namespace: product
port: 8080
tools:
- name: product-safety-data-sheet-lookup
description: Retrieves product safety data sheet lookup data from the Reckitt consumer health and hygiene products systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: reckitt.product-safety-data-sheet-lookup
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: reckitt
baseUri: https://api.reckitt.com/v2
authentication:
type: bearer
token: $secrets.reckitt_api_token
resources:
- name: resource
path: /product/safety/data/sheet/lookup/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: product-safety-data-sheet-lookup
method: GET
Orchestrates sustainability packaging transition pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Sustainability Packaging Transition Pipeline
description: Orchestrates sustainability packaging transition pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
tags:
- sustainability
- reckitt
- slack
- sap
- teams
capability:
exposes:
- type: mcp
namespace: sustainability
port: 8080
tools:
- name: sustainability-packaging-transition-pipeline
description: Orchestrates sustainability packaging transition pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: slack.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: sap.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: teams.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: slack-resource
path: /api/sustainability
operations:
- name: execute-1
method: POST
- type: http
namespace: sap
baseUri: https://reckitt-erp.s4hana.ondemand.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: sap-resource
path: /api/sustainability
operations:
- name: execute-2
method: POST
- type: http
namespace: teams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.teams_token
resources:
- name: teams-resource
path: /api/sustainability
operations:
- name: execute-3
method: POST
Retrieves a travel booking from SAP Concur by trip ID, returning itinerary details, approval status, and estimated cost.
naftiko: '0.5'
info:
label: SAP Concur Travel Booking Lookup
description: Retrieves a travel booking from SAP Concur by trip ID, returning itinerary details, approval status, and estimated cost.
tags:
- travel
- expense
- sap-concur
capability:
exposes:
- type: mcp
namespace: travel-concur
port: 8080
tools:
- name: get-travel-booking
description: Look up a SAP Concur travel booking by trip ID. Returns itinerary, approval status, and cost estimate.
inputParameters:
- name: trip_id
in: body
type: string
description: The SAP Concur trip ID.
call: concur.get-trip
with:
trip_id: '{{trip_id}}'
consumes:
- type: http
namespace: concur
baseUri: https://us.api.concursolutions.com/api/v3.0
authentication:
type: bearer
token: $secrets.concur_token
resources:
- name: trips
path: /travel/trips/{{trip_id}}
inputParameters:
- name: trip_id
in: path
operations:
- name: get-trip
method: GET
Retrieves the latest CI/CD pipeline status from GitLab for a given project, returning status, duration, and stages.
naftiko: '0.5'
info:
label: GitLab Pipeline Status
description: Retrieves the latest CI/CD pipeline status from GitLab for a given project, returning status, duration, and stages.
tags:
- devops
- ci-cd
- gitlab
capability:
exposes:
- type: mcp
namespace: devops-gitlab
port: 8080
tools:
- name: get-pipeline-status
description: Get the latest GitLab CI/CD pipeline status for a project. Returns status, duration, and stage details.
inputParameters:
- name: project_id
in: body
type: string
description: The GitLab project ID.
call: gitlab.get-pipelines
with:
project_id: '{{project_id}}'
consumes:
- type: http
namespace: gitlab
baseUri: https://gitlab.reckitt.com/api/v4
authentication:
type: bearer
token: $secrets.gitlab_token
resources:
- name: pipelines
path: /projects/{{project_id}}/pipelines?per_page=1
inputParameters:
- name: project_id
in: path
operations:
- name: get-pipelines
method: GET
When an employee leaves in Workday, deactivates their Azure AD account, closes open ServiceNow tickets, revokes Box access, and logs the offboarding in Microsoft Teams.
naftiko: '0.5'
info:
label: IT Asset Lifecycle Orchestrator
description: When an employee leaves in Workday, deactivates their Azure AD account, closes open ServiceNow tickets, revokes Box access, and logs the offboarding in Microsoft Teams.
tags:
- hr
- offboarding
- workday
- azure-active-directory
- servicenow
- box
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-offboarding
port: 8080
tools:
- name: offboard-employee
description: Given a Workday employee ID, deactivate Azure AD, close ServiceNow tickets, revoke Box access, and notify via Teams.
inputParameters:
- name: employee_id
in: body
type: string
description: The Workday employee ID of the departing employee.
- name: last_day
in: body
type: string
description: The employee's last working day in YYYY-MM-DD format.
steps:
- name: get-employee
type: call
call: workday.get-worker
with:
worker_id: '{{employee_id}}'
- name: disable-ad-account
type: call
call: aad.disable-user
with:
upn: '{{get-employee.work_email}}'
- name: close-tickets
type: call
call: servicenow.close-user-tickets
with:
caller_id: '{{get-employee.work_email}}'
close_notes: 'Employee offboarding: {{get-employee.full_name}} last day {{last_day}}'
- name: revoke-box-access
type: call
call: box.remove-collaborator
with:
user_email: '{{get-employee.work_email}}'
- name: notify-hr
type: call
call: msteams.send-message
with:
recipient_upn: hr-team@reckitt.com
text: 'Offboarding complete for {{get-employee.full_name}} ({{employee_id}}). AD disabled, tickets closed, Box access revoked. Last day: {{last_day}}.'
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: aad
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: users
path: /users/{{upn}}
inputParameters:
- name: upn
in: path
operations:
- name: disable-user
method: PATCH
- type: http
namespace: servicenow
baseUri: https://reckitt.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident?sysparm_query=caller_id={{caller_id}}^state!=7
inputParameters:
- name: caller_id
in: path
operations:
- name: close-user-tickets
method: PATCH
- type: http
namespace: box
baseUri: https://api.box.com/2.0
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: collaborations
path: /collaborations
operations:
- name: remove-collaborator
method: DELETE
- 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 regulatory change is detected, creates a Confluence page with the change summary, opens a ServiceNow change request, and notifies the compliance team via Microsoft Teams.
naftiko: '0.5'
info:
label: Regulatory Compliance Document Workflow
description: When a regulatory change is detected, creates a Confluence page with the change summary, opens a ServiceNow change request, and notifies the compliance team via Microsoft Teams.
tags:
- compliance
- regulatory
- confluence
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: compliance-regulatory
port: 8080
tools:
- name: process-regulatory-change
description: Given a regulatory change reference and description, create a Confluence page, open a ServiceNow change request, and alert the compliance team.
inputParameters:
- name: regulation_ref
in: body
type: string
description: The regulatory reference identifier.
- name: change_summary
in: body
type: string
description: Summary of the regulatory change.
- name: effective_date
in: body
type: string
description: Effective date in YYYY-MM-DD format.
steps:
- name: create-page
type: call
call: confluence.create-page
with:
space_key: COMPLIANCE
title: 'Regulatory Change: {{regulation_ref}} — Effective {{effective_date}}'
body: '{{change_summary}}'
- name: open-change-request
type: call
call: servicenow.create-change-request
with:
short_description: 'Regulatory change: {{regulation_ref}}'
description: '{{change_summary}}. Effective date: {{effective_date}}. Confluence: {{create-page.url}}'
category: regulatory_compliance
assigned_group: Compliance_Team
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: compliance_team
channel: Regulatory
text: 'New regulatory change: {{regulation_ref}} effective {{effective_date}}. Change request: {{open-change-request.number}}. Details: {{create-page.url}}'
consumes:
- type: http
namespace: confluence
baseUri: https://reckitt.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: servicenow
baseUri: https://reckitt.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.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel}}/messages
inputParameters:
- name: team_id
in: path
- name: channel
in: path
operations:
- name: send-channel-message
method: POST
Retrieves product regulatory status data from the Reckitt consumer health and hygiene products systems.
naftiko: '0.5'
info:
label: Product Regulatory Status
description: Retrieves product regulatory status data from the Reckitt consumer health and hygiene products systems.
tags:
- product
- reckitt
- status
capability:
exposes:
- type: mcp
namespace: product
port: 8080
tools:
- name: product-regulatory-status
description: Retrieves product regulatory status data from the Reckitt consumer health and hygiene products systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: reckitt.product-regulatory-status
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: reckitt
baseUri: https://api.reckitt.com/v2
authentication:
type: bearer
token: $secrets.reckitt_api_token
resources:
- name: resource
path: /product/regulatory/status/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: product-regulatory-status
method: GET
When a SAP Ariba requisition exceeds a spend threshold, routes for manager approval via Workday and notifies the requestor in Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Ariba Requisition Approval Pipeline
description: When a SAP Ariba requisition exceeds a spend threshold, routes for manager approval via Workday and notifies the requestor in Microsoft Teams.
tags:
- procurement
- ariba
- 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, check amount, resolve approver from Workday, and notify via Microsoft Teams.
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 on the requisition.
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}}.'
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
Queries Dynatrace for service-level performance data including response time, failure rate, and throughput.
naftiko: '0.5'
info:
label: Dynatrace Service Performance
description: Queries Dynatrace for service-level performance data including response time, failure rate, and throughput.
tags:
- monitoring
- apm
- dynatrace
capability:
exposes:
- type: mcp
namespace: ops-dynatrace
port: 8080
tools:
- name: get-service-metrics
description: Query Dynatrace for a service entity's performance metrics. Returns response time, failure rate, and throughput.
inputParameters:
- name: entity_id
in: body
type: string
description: The Dynatrace service entity ID.
call: dynatrace.get-entity-metrics
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: dynatrace
baseUri: https://reckitt.live.dynatrace.com/api/v2
authentication:
type: bearer
token: $secrets.dynatrace_token
resources:
- name: metrics
path: /metrics/query?metricSelector=builtin:service.response.time,builtin:service.errors.total.rate&entitySelector=entityId({{entity_id}})
inputParameters:
- name: entity_id
in: path
operations:
- name: get-entity-metrics
method: GET
Sends an email notification via Microsoft Outlook/Graph API to a specified recipient.
naftiko: '0.5'
info:
label: Microsoft Outlook Email Notification
description: Sends an email notification via Microsoft Outlook/Graph API to a specified recipient.
tags:
- communications
- email
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: comms-email
port: 8080
tools:
- name: send-email
description: Send an email via Microsoft Graph. Specify recipient, subject, and body.
inputParameters:
- name: to_email
in: body
type: string
description: The recipient email address.
- name: subject
in: body
type: string
description: The email subject.
- name: body
in: body
type: string
description: The email body content.
call: outlook.send-mail
with:
to: '{{to_email}}'
subject: '{{subject}}'
body: '{{body}}'
consumes:
- 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-mail
method: POST
When SAP inventory drops below threshold, creates a purchase requisition in SAP Ariba, notifies the procurement team via Microsoft Teams, and logs the event in ServiceNow.
naftiko: '0.5'
info:
label: Inventory Replenishment Orchestrator
description: When SAP inventory drops below threshold, creates a purchase requisition in SAP Ariba, notifies the procurement team via Microsoft Teams, and logs the event in ServiceNow.
tags:
- supply-chain
- inventory
- sap
- sap-ariba
- microsoft-teams
- servicenow
capability:
exposes:
- type: mcp
namespace: supply-chain-replenishment
port: 8080
tools:
- name: trigger-replenishment
description: Given a material number and plant code, check inventory, create an Ariba requisition, notify procurement, and log in ServiceNow.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number.
- name: plant_code
in: body
type: string
description: The plant code where stock is low.
- name: reorder_quantity
in: body
type: number
description: The quantity to reorder.
steps:
- name: check-stock
type: call
call: sap.check-stock
with:
material_number: '{{material_number}}'
plant: '{{plant_code}}'
- name: create-requisition
type: call
call: ariba.create-requisition
with:
material: '{{material_number}}'
quantity: '{{reorder_quantity}}'
plant: '{{plant_code}}'
description: Auto-replenishment for {{material_number}} at plant {{plant_code}}
- name: notify-procurement
type: call
call: msteams.send-channel-message
with:
team_id: procurement_team
channel: Replenishment
text: 'Auto-replenishment triggered: {{material_number}} at plant {{plant_code}}. Quantity: {{reorder_quantity}}. Ariba requisition: {{create-requisition.requisition_id}}.'
- name: log-event
type: call
call: servicenow.create-task
with:
short_description: 'Inventory replenishment: {{material_number}} at {{plant_code}}'
description: 'Stock level: {{check-stock.available_quantity}}. Reorder: {{reorder_quantity}}. Requisition: {{create-requisition.requisition_id}}.'
category: inventory_replenishment
consumes:
- type: http
namespace: sap
baseUri: https://reckitt-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(Material='{{material_number}}',Plant='{{plant}}')
inputParameters:
- name: material_number
in: path
- name: plant
in: path
operations:
- name: check-stock
method: GET
- 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
operations:
- name: create-requisition
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}}/messages
inputParameters:
- name: team_id
in: path
- name: channel
in: path
operations:
- name: send-channel-message
method: POST
- type: http
namespace: servicenow
baseUri: https://reckitt.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 trade promotion status data from the Reckitt consumer health and hygiene products systems.
naftiko: '0.5'
info:
label: Trade Promotion Status
description: Retrieves trade promotion status data from the Reckitt consumer health and hygiene products systems.
tags:
- trade
- reckitt
- status
capability:
exposes:
- type: mcp
namespace: trade
port: 8080
tools:
- name: trade-promotion-status
description: Retrieves trade promotion status data from the Reckitt consumer health and hygiene products systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: reckitt.trade-promotion-status
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: reckitt
baseUri: https://api.reckitt.com/v2
authentication:
type: bearer
token: $secrets.reckitt_api_token
resources:
- name: resource
path: /trade/promotion/status/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: trade-promotion-status
method: GET
Retrieves product shelf life lookup data from the Reckitt consumer health and hygiene products systems.
naftiko: '0.5'
info:
label: Product Shelf Life Lookup
description: Retrieves product shelf life lookup data from the Reckitt consumer health and hygiene products systems.
tags:
- product
- reckitt
- lookup
capability:
exposes:
- type: mcp
namespace: product
port: 8080
tools:
- name: product-shelf-life-lookup
description: Retrieves product shelf life lookup data from the Reckitt consumer health and hygiene products systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: reckitt.product-shelf-life-lookup
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: reckitt
baseUri: https://api.reckitt.com/v2
authentication:
type: bearer
token: $secrets.reckitt_api_token
resources:
- name: resource
path: /product/shelf/life/lookup/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: product-shelf-life-lookup
method: GET
Orchestrates retailer compliance audit pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Retailer Compliance Audit Pipeline
description: Orchestrates retailer compliance audit pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
tags:
- retailer
- reckitt
- servicenow
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: retailer
port: 8080
tools:
- name: retailer-compliance-audit-pipeline
description: Orchestrates retailer compliance audit pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: servicenow.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: snowflake.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: slack.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://reckitt.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: servicenow-resource
path: /api/retailer
operations:
- name: execute-1
method: POST
- type: http
namespace: snowflake
baseUri: https://reckitt.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: snowflake-resource
path: /api/retailer
operations:
- name: execute-2
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: slack-resource
path: /api/retailer
operations:
- name: execute-3
method: POST
Retrieves DNS records for a Cloudflare zone by record type, returning record names, values, and TTL.
naftiko: '0.5'
info:
label: Cloudflare DNS Record Lookup
description: Retrieves DNS records for a Cloudflare zone by record type, returning record names, values, and TTL.
tags:
- infrastructure
- dns
- cloudflare
capability:
exposes:
- type: mcp
namespace: infra-dns
port: 8080
tools:
- name: get-dns-records
description: List DNS records for a Cloudflare zone filtered by record type. Returns record name, content, and TTL.
inputParameters:
- name: zone_id
in: body
type: string
description: The Cloudflare zone ID.
- name: record_type
in: body
type: string
description: The DNS record type (A, CNAME, MX, etc.).
call: cloudflare.list-dns-records
with:
zone_id: '{{zone_id}}'
type: '{{record_type}}'
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?type={{type}}
inputParameters:
- name: zone_id
in: path
- name: type
in: path
operations:
- name: list-dns-records
method: GET
Orchestrates manufacturing equipment maintenance pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Manufacturing Equipment Maintenance Pipeline
description: Orchestrates manufacturing equipment maintenance pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
tags:
- manufacturing
- reckitt
- jira
- confluence
- datadog
capability:
exposes:
- type: mcp
namespace: manufacturing
port: 8080
tools:
- name: manufacturing-equipment-maintenance-pipeline
description: Orchestrates manufacturing equipment maintenance pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: jira.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: confluence.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: datadog.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: jira
baseUri: https://reckitt.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: jira-resource
path: /api/manufacturing
operations:
- name: execute-1
method: POST
- type: http
namespace: confluence
baseUri: https://reckitt.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: confluence-resource
path: /api/manufacturing
operations:
- name: execute-2
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: bearer
token: $secrets.datadog_api_key
resources:
- name: datadog-resource
path: /api/manufacturing
operations:
- name: execute-3
method: POST
Orchestrates manufacturing batch release pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Manufacturing Batch Release Pipeline
description: Orchestrates manufacturing batch release pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
tags:
- manufacturing
- reckitt
- salesforce
- servicenow
- snowflake
capability:
exposes:
- type: mcp
namespace: manufacturing
port: 8080
tools:
- name: manufacturing-batch-release-pipeline
description: Orchestrates manufacturing batch release pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: salesforce.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: servicenow.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: snowflake.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://reckitt.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: salesforce-resource
path: /api/manufacturing
operations:
- name: execute-1
method: POST
- type: http
namespace: servicenow
baseUri: https://reckitt.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: servicenow-resource
path: /api/manufacturing
operations:
- name: execute-2
method: POST
- type: http
namespace: snowflake
baseUri: https://reckitt.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: snowflake-resource
path: /api/manufacturing
operations:
- name: execute-3
method: POST
Orchestrates retail execution monitoring pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Retail Execution Monitoring Pipeline
description: Orchestrates retail execution monitoring pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
tags:
- retail
- reckitt
- slack
- sap
- teams
capability:
exposes:
- type: mcp
namespace: retail
port: 8080
tools:
- name: retail-execution-monitoring-pipeline
description: Orchestrates retail execution monitoring pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: slack.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: sap.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: teams.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: slack-resource
path: /api/retail
operations:
- name: execute-1
method: POST
- type: http
namespace: sap
baseUri: https://reckitt-erp.s4hana.ondemand.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: sap-resource
path: /api/retail
operations:
- name: execute-2
method: POST
- type: http
namespace: teams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.teams_token
resources:
- name: teams-resource
path: /api/retail
operations:
- name: execute-3
method: POST
Triggers a Tableau workbook extract refresh and returns the refresh job status.
naftiko: '0.5'
info:
label: Tableau Workbook Refresh
description: Triggers a Tableau workbook extract refresh and returns the refresh job status.
tags:
- analytics
- reporting
- tableau
capability:
exposes:
- type: mcp
namespace: analytics-tableau
port: 8080
tools:
- name: refresh-workbook
description: Trigger a Tableau workbook extract refresh by workbook ID. Returns the refresh job ID and status.
inputParameters:
- name: workbook_id
in: body
type: string
description: The Tableau workbook ID.
- name: site_id
in: body
type: string
description: The Tableau site ID.
call: tableau.refresh-workbook
with:
workbook_id: '{{workbook_id}}'
site_id: '{{site_id}}'
consumes:
- type: http
namespace: tableau
baseUri: https://reckitt.online.tableau.com/api/3.21
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: workbooks
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
Orchestrates product launch readiness pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Product Launch Readiness Pipeline
description: Orchestrates product launch readiness pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
tags:
- product
- reckitt
- confluence
- datadog
- reckitt
capability:
exposes:
- type: mcp
namespace: product
port: 8080
tools:
- name: product-launch-readiness-pipeline
description: Orchestrates product launch readiness pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: confluence.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: datadog.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: reckitt.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: confluence
baseUri: https://reckitt.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: confluence-resource
path: /api/product
operations:
- name: execute-1
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: bearer
token: $secrets.datadog_api_key
resources:
- name: datadog-resource
path: /api/product
operations:
- name: execute-2
method: POST
- type: http
namespace: reckitt
baseUri: https://api.reckitt.com/v2
authentication:
type: bearer
token: $secrets.reckitt_api_token
resources:
- name: reckitt-resource
path: /api/product
operations:
- name: execute-3
method: POST
Retrieves a production order from SAP S/4HANA by order number, returning status, quantity, scheduled dates, and material details.
naftiko: '0.5'
info:
label: SAP S/4HANA Production Order Tracking
description: Retrieves a production order from SAP S/4HANA by order number, returning status, quantity, scheduled dates, and material details.
tags:
- manufacturing
- production
- sap
- sap-s4hana
capability:
exposes:
- type: mcp
namespace: mfg-production
port: 8080
tools:
- name: get-production-order
description: Look up a SAP S/4HANA production order. Returns status, planned quantity, scheduled start/finish, and material.
inputParameters:
- name: order_number
in: body
type: string
description: The SAP production order number.
call: sap.get-production-order
with:
order_number: '{{order_number}}'
consumes:
- type: http
namespace: sap
baseUri: https://reckitt-s4.sap.com/sap/opu/odata/sap/API_PRODUCTION_ORDERS
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 consumer satisfaction score lookup data from the Reckitt consumer health and hygiene products systems.
naftiko: '0.5'
info:
label: Consumer Satisfaction Score Lookup
description: Retrieves consumer satisfaction score lookup data from the Reckitt consumer health and hygiene products systems.
tags:
- consumer
- reckitt
- lookup
capability:
exposes:
- type: mcp
namespace: consumer
port: 8080
tools:
- name: consumer-satisfaction-score-lookup
description: Retrieves consumer satisfaction score lookup data from the Reckitt consumer health and hygiene products systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: reckitt.consumer-satisfaction-score-lookup
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: reckitt
baseUri: https://api.reckitt.com/v2
authentication:
type: bearer
token: $secrets.reckitt_api_token
resources:
- name: resource
path: /consumer/satisfaction/score/lookup/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: consumer-satisfaction-score-lookup
method: GET
Triggers a dataset refresh in Power BI and returns the refresh status for supply chain and finance reporting dashboards.
naftiko: '0.5'
info:
label: Power BI Dashboard Refresh
description: Triggers a dataset refresh in Power BI and returns the refresh status for supply chain and finance reporting dashboards.
tags:
- analytics
- reporting
- power-bi
capability:
exposes:
- type: mcp
namespace: bi-reporting
port: 8080
tools:
- name: refresh-dataset
description: Trigger a Power BI dataset refresh by dataset ID and return the current refresh status.
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.trigger-refresh
with:
dataset_id: '{{dataset_id}}'
group_id: '{{group_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: trigger-refresh
method: POST
Uploads a file to a specified Google Drive folder and returns the file ID and shareable link.
naftiko: '0.5'
info:
label: Google Drive File Upload
description: Uploads a file to a specified Google Drive folder and returns the file ID and shareable link.
tags:
- collaboration
- storage
- google-drive
capability:
exposes:
- type: mcp
namespace: storage-gdrive
port: 8080
tools:
- name: upload-file
description: Upload a file to a Google Drive folder. Returns file ID and shareable link.
inputParameters:
- name: folder_id
in: body
type: string
description: The Google Drive folder ID.
- name: file_name
in: body
type: string
description: The name for the uploaded file.
- name: content_type
in: body
type: string
description: The MIME type of the file.
call: gdrive.upload-file
with:
folder_id: '{{folder_id}}'
name: '{{file_name}}'
mimeType: '{{content_type}}'
consumes:
- type: http
namespace: gdrive
baseUri: https://www.googleapis.com/upload/drive/v3
authentication:
type: bearer
token: $secrets.google_drive_token
resources:
- name: files
path: /files?uploadType=multipart
operations:
- name: upload-file
method: POST
Orchestrates product counterfeit detection pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Product Counterfeit Detection Pipeline
description: Orchestrates product counterfeit detection pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
tags:
- product
- reckitt
- datadog
- reckitt
- salesforce
capability:
exposes:
- type: mcp
namespace: product
port: 8080
tools:
- name: product-counterfeit-detection-pipeline
description: Orchestrates product counterfeit detection pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: datadog.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: reckitt.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: salesforce.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: bearer
token: $secrets.datadog_api_key
resources:
- name: datadog-resource
path: /api/product
operations:
- name: execute-1
method: POST
- type: http
namespace: reckitt
baseUri: https://api.reckitt.com/v2
authentication:
type: bearer
token: $secrets.reckitt_api_token
resources:
- name: reckitt-resource
path: /api/product
operations:
- name: execute-2
method: POST
- type: http
namespace: salesforce
baseUri: https://reckitt.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: salesforce-resource
path: /api/product
operations:
- name: execute-3
method: POST
Retrieves a journal entry from Oracle Cloud ERP by journal ID, returning header details, line amounts, and posting status.
naftiko: '0.5'
info:
label: Oracle Cloud ERP Journal Entry
description: Retrieves a journal entry from Oracle Cloud ERP by journal ID, returning header details, line amounts, and posting status.
tags:
- finance
- erp
- oracle-cloud
capability:
exposes:
- type: mcp
namespace: finance-oracle
port: 8080
tools:
- name: get-journal-entry
description: Look up an Oracle Cloud ERP journal entry by ID. Returns header info, line amounts, and posting status.
inputParameters:
- name: journal_id
in: body
type: string
description: The Oracle Cloud journal entry ID.
call: oracle.get-journal
with:
journal_id: '{{journal_id}}'
consumes:
- type: http
namespace: oracle
baseUri: https://reckitt.oraclecloud.com/fscmRestApi/resources/v1
authentication:
type: basic
username: $secrets.oracle_cloud_user
password: $secrets.oracle_cloud_password
resources:
- name: journals
path: /journals/{{journal_id}}
inputParameters:
- name: journal_id
in: path
operations:
- name: get-journal
method: GET
Queries New Relic for application performance metrics including response time, throughput, and error rate.
naftiko: '0.5'
info:
label: New Relic Application Performance
description: Queries New Relic for application performance metrics including response time, throughput, and error rate.
tags:
- monitoring
- apm
- new-relic
capability:
exposes:
- type: mcp
namespace: ops-apm
port: 8080
tools:
- name: get-app-performance
description: Query New Relic for application performance. Returns response time, throughput, and error rate.
inputParameters:
- name: app_id
in: body
type: string
description: The New Relic application ID.
call: newrelic.get-app-metrics
with:
app_id: '{{app_id}}'
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}}/metrics/data.json
inputParameters:
- name: app_id
in: path
operations:
- name: get-app-metrics
method: GET
Orchestrates supply chain risk monitoring pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Supply Chain Risk Monitoring Pipeline
description: Orchestrates supply chain risk monitoring pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
tags:
- supply
- reckitt
- datadog
- reckitt
- salesforce
capability:
exposes:
- type: mcp
namespace: supply
port: 8080
tools:
- name: supply-chain-risk-monitoring-pipeline
description: Orchestrates supply chain risk monitoring pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: datadog.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: reckitt.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: salesforce.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: bearer
token: $secrets.datadog_api_key
resources:
- name: datadog-resource
path: /api/supply
operations:
- name: execute-1
method: POST
- type: http
namespace: reckitt
baseUri: https://api.reckitt.com/v2
authentication:
type: bearer
token: $secrets.reckitt_api_token
resources:
- name: reckitt-resource
path: /api/supply
operations:
- name: execute-2
method: POST
- type: http
namespace: salesforce
baseUri: https://reckitt.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: salesforce-resource
path: /api/supply
operations:
- name: execute-3
method: POST
Extracts demand forecast data from SAP BW, transforms it, and pushes to Tableau for supply chain planning dashboards.
naftiko: '0.5'
info:
label: Supply Chain Demand Forecast Sync
description: Extracts demand forecast data from SAP BW, transforms it, and pushes to Tableau for supply chain planning dashboards.
tags:
- supply-chain
- forecasting
- sap-bw
- tableau
capability:
exposes:
- type: mcp
namespace: supply-chain-forecast
port: 8080
tools:
- name: sync-demand-forecast
description: Extract demand forecast from SAP BW for a product group and date range, then publish to Tableau for visualization.
inputParameters:
- name: product_group
in: body
type: string
description: The SAP product group code.
- name: forecast_period
in: body
type: string
description: The forecast period in YYYY-MM format.
steps:
- name: extract-forecast
type: call
call: sapbw.run-query
with:
query_name: DEMAND_FORECAST
product_group: '{{product_group}}'
period: '{{forecast_period}}'
- name: publish-to-tableau
type: call
call: tableau.publish-datasource
with:
datasource_name: demand_forecast_{{product_group}}
data: '{{extract-forecast.results}}'
consumes:
- type: http
namespace: sapbw
baseUri: https://reckitt-bw.sap.com/sap/bw/odata/v1
authentication:
type: basic
username: $secrets.sap_bw_user
password: $secrets.sap_bw_password
resources:
- name: queries
path: /query/{{query_name}}
inputParameters:
- name: query_name
in: path
operations:
- name: run-query
method: POST
- type: http
namespace: tableau
baseUri: https://reckitt.online.tableau.com/api/3.21
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: datasources
path: /sites/{{site_id}}/datasources
operations:
- name: publish-datasource
method: POST
Orchestrates product cost optimization pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Product Cost Optimization Pipeline
description: Orchestrates product cost optimization pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
tags:
- product
- reckitt
- snowflake
- slack
- sap
capability:
exposes:
- type: mcp
namespace: product
port: 8080
tools:
- name: product-cost-optimization-pipeline
description: Orchestrates product cost optimization pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: snowflake.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: slack.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: sap.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://reckitt.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: snowflake-resource
path: /api/product
operations:
- name: execute-1
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: slack-resource
path: /api/product
operations:
- name: execute-2
method: POST
- type: http
namespace: sap
baseUri: https://reckitt-erp.s4hana.ondemand.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: sap-resource
path: /api/product
operations:
- name: execute-3
method: POST
Orchestrates manufacturing waste reduction pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Manufacturing Waste Reduction Pipeline
description: Orchestrates manufacturing waste reduction pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
tags:
- manufacturing
- reckitt
- salesforce
- servicenow
- snowflake
capability:
exposes:
- type: mcp
namespace: manufacturing
port: 8080
tools:
- name: manufacturing-waste-reduction-pipeline
description: Orchestrates manufacturing waste reduction pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: salesforce.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: servicenow.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: snowflake.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://reckitt.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: salesforce-resource
path: /api/manufacturing
operations:
- name: execute-1
method: POST
- type: http
namespace: servicenow
baseUri: https://reckitt.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: servicenow-resource
path: /api/manufacturing
operations:
- name: execute-2
method: POST
- type: http
namespace: snowflake
baseUri: https://reckitt.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: snowflake-resource
path: /api/manufacturing
operations:
- name: execute-3
method: POST
Orchestrates trade promotion planning pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Trade Promotion Planning Pipeline
description: Orchestrates trade promotion planning pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
tags:
- trade
- reckitt
- reckitt
- salesforce
- servicenow
capability:
exposes:
- type: mcp
namespace: trade
port: 8080
tools:
- name: trade-promotion-planning-pipeline
description: Orchestrates trade promotion planning pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: reckitt.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: salesforce.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: servicenow.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: reckitt
baseUri: https://api.reckitt.com/v2
authentication:
type: bearer
token: $secrets.reckitt_api_token
resources:
- name: reckitt-resource
path: /api/trade
operations:
- name: execute-1
method: POST
- type: http
namespace: salesforce
baseUri: https://reckitt.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: salesforce-resource
path: /api/trade
operations:
- name: execute-2
method: POST
- type: http
namespace: servicenow
baseUri: https://reckitt.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: servicenow-resource
path: /api/trade
operations:
- name: execute-3
method: POST
Orchestrates brand reputation monitoring pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Brand Reputation Monitoring Pipeline
description: Orchestrates brand reputation monitoring pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
tags:
- brand
- reckitt
- sap
- teams
- jira
capability:
exposes:
- type: mcp
namespace: brand
port: 8080
tools:
- name: brand-reputation-monitoring-pipeline
description: Orchestrates brand reputation monitoring pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: sap.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: teams.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: jira.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://reckitt-erp.s4hana.ondemand.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: sap-resource
path: /api/brand
operations:
- name: execute-1
method: POST
- type: http
namespace: teams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.teams_token
resources:
- name: teams-resource
path: /api/brand
operations:
- name: execute-2
method: POST
- type: http
namespace: jira
baseUri: https://reckitt.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: jira-resource
path: /api/brand
operations:
- name: execute-3
method: POST
Retrieves raw material specification lookup data from the Reckitt consumer health and hygiene products systems.
naftiko: '0.5'
info:
label: Raw Material Specification Lookup
description: Retrieves raw material specification lookup data from the Reckitt consumer health and hygiene products systems.
tags:
- raw
- reckitt
- lookup
capability:
exposes:
- type: mcp
namespace: raw
port: 8080
tools:
- name: raw-material-specification-lookup
description: Retrieves raw material specification lookup data from the Reckitt consumer health and hygiene products systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: reckitt.raw-material-specification-lookup
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: reckitt
baseUri: https://api.reckitt.com/v2
authentication:
type: bearer
token: $secrets.reckitt_api_token
resources:
- name: resource
path: /raw/material/specification/lookup/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: raw-material-specification-lookup
method: GET
Retrieves email campaign performance metrics from MailChimp including open rate, click rate, and bounce rate.
naftiko: '0.5'
info:
label: MailChimp Email Campaign Metrics
description: Retrieves email campaign performance metrics from MailChimp including open rate, click rate, and bounce rate.
tags:
- marketing
- email
- mailchimp
capability:
exposes:
- type: mcp
namespace: marketing-email
port: 8080
tools:
- name: get-campaign-metrics
description: Retrieve MailChimp campaign metrics by campaign ID. Returns open rate, click rate, bounce rate, and total recipients.
inputParameters:
- name: campaign_id
in: body
type: string
description: The MailChimp campaign ID.
call: mailchimp.get-campaign-report
with:
campaign_id: '{{campaign_id}}'
consumes:
- type: http
namespace: mailchimp
baseUri: https://us1.api.mailchimp.com/3.0
authentication:
type: basic
username: anystring
password: $secrets.mailchimp_api_key
resources:
- name: reports
path: /reports/{{campaign_id}}
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-campaign-report
method: GET
Retrieves consumer complaint status data from the Reckitt consumer health and hygiene products systems.
naftiko: '0.5'
info:
label: Consumer Complaint Status
description: Retrieves consumer complaint status data from the Reckitt consumer health and hygiene products systems.
tags:
- consumer
- reckitt
- status
capability:
exposes:
- type: mcp
namespace: consumer
port: 8080
tools:
- name: consumer-complaint-status
description: Retrieves consumer complaint status data from the Reckitt consumer health and hygiene products systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: reckitt.consumer-complaint-status
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: reckitt
baseUri: https://api.reckitt.com/v2
authentication:
type: bearer
token: $secrets.reckitt_api_token
resources:
- name: resource
path: /consumer/complaint/status/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: consumer-complaint-status
method: GET
Orchestrates manufacturing line changeover pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Manufacturing Line Changeover Pipeline
description: Orchestrates manufacturing line changeover pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
tags:
- manufacturing
- reckitt
- reckitt
- salesforce
- servicenow
capability:
exposes:
- type: mcp
namespace: manufacturing
port: 8080
tools:
- name: manufacturing-line-changeover-pipeline
description: Orchestrates manufacturing line changeover pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: reckitt.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: salesforce.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: servicenow.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: reckitt
baseUri: https://api.reckitt.com/v2
authentication:
type: bearer
token: $secrets.reckitt_api_token
resources:
- name: reckitt-resource
path: /api/manufacturing
operations:
- name: execute-1
method: POST
- type: http
namespace: salesforce
baseUri: https://reckitt.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: salesforce-resource
path: /api/manufacturing
operations:
- name: execute-2
method: POST
- type: http
namespace: servicenow
baseUri: https://reckitt.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: servicenow-resource
path: /api/manufacturing
operations:
- name: execute-3
method: POST
Retrieves brand market share lookup data from the Reckitt consumer health and hygiene products systems.
naftiko: '0.5'
info:
label: Brand Market Share Lookup
description: Retrieves brand market share lookup data from the Reckitt consumer health and hygiene products systems.
tags:
- brand
- reckitt
- lookup
capability:
exposes:
- type: mcp
namespace: brand
port: 8080
tools:
- name: brand-market-share-lookup
description: Retrieves brand market share lookup data from the Reckitt consumer health and hygiene products systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: reckitt.brand-market-share-lookup
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: reckitt
baseUri: https://api.reckitt.com/v2
authentication:
type: bearer
token: $secrets.reckitt_api_token
resources:
- name: resource
path: /brand/market/share/lookup/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: brand-market-share-lookup
method: GET
Retrieves LinkedIn advertising campaign performance metrics including impressions, clicks, and spend.
naftiko: '0.5'
info:
label: LinkedIn Campaign Performance
description: Retrieves LinkedIn advertising campaign performance metrics including impressions, clicks, and spend.
tags:
- marketing
- advertising
- linkedin
capability:
exposes:
- type: mcp
namespace: marketing-linkedin
port: 8080
tools:
- name: get-linkedin-campaign
description: Retrieve LinkedIn campaign performance by campaign ID. Returns impressions, clicks, spend, and engagement rate.
inputParameters:
- name: campaign_id
in: body
type: string
description: The LinkedIn campaign ID.
call: linkedin.get-campaign-analytics
with:
campaign_id: '{{campaign_id}}'
consumes:
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/rest
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: campaign-analytics
path: /adAnalytics?q=analytics&campaigns=urn:li:sponsoredCampaign:{{campaign_id}}
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-campaign-analytics
method: GET
Aggregates marketing performance from Google Analytics, Google Ads, Facebook Ads, and LinkedIn into a single summary, then posts the digest to a Microsoft Teams channel.
naftiko: '0.5'
info:
label: Cross-Channel Marketing Performance Orchestrator
description: Aggregates marketing performance from Google Analytics, Google Ads, Facebook Ads, and LinkedIn into a single summary, then posts the digest to a Microsoft Teams channel.
tags:
- marketing
- analytics
- google-analytics
- google-ads
- facebook-ads
- linkedin
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: marketing-performance
port: 8080
tools:
- name: generate-performance-digest
description: Aggregate marketing performance data from multiple channels and post a summary to Microsoft Teams.
inputParameters:
- 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.
steps:
- name: get-ga-data
type: call
call: ga.run-report
with:
property_id: $secrets.ga_property_id
start_date: '{{start_date}}'
end_date: '{{end_date}}'
- name: get-google-ads
type: call
call: googleads.search-stream
with:
customer_id: $secrets.google_ads_customer_id
query: SELECT metrics.impressions, metrics.clicks, metrics.cost_micros, metrics.conversions FROM campaign WHERE segments.date BETWEEN '{{start_date}}' AND '{{end_date}}'
- name: get-fb-ads
type: call
call: fbads.get-account-insights
with:
date_start: '{{start_date}}'
date_end: '{{end_date}}'
- name: get-linkedin
type: call
call: linkedin.get-account-analytics
with:
start_date: '{{start_date}}'
end_date: '{{end_date}}'
- name: post-digest
type: call
call: msteams.send-channel-message
with:
team_id: marketing_team
channel: Performance
text: 'Marketing Digest {{start_date}} to {{end_date}}: GA sessions: {{get-ga-data.totals.sessions}}. Google Ads clicks: {{get-google-ads.total_clicks}}. FB reach: {{get-fb-ads.reach}}. LinkedIn impressions: {{get-linkedin.impressions}}.'
consumes:
- type: http
namespace: ga
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: googleads
baseUri: https://googleads.googleapis.com/v15
authentication:
type: bearer
token: $secrets.google_ads_token
resources:
- name: search
path: /customers/{{customer_id}}/googleAds:searchStream
inputParameters:
- name: customer_id
in: path
operations:
- name: search-stream
method: POST
- type: http
namespace: fbads
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.meta_access_token
resources:
- name: account-insights
path: /act_{{ad_account_id}}/insights
operations:
- name: get-account-insights
method: GET
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/rest
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: analytics
path: /adAnalytics?q=analytics&dateRange.start.year={{start_year}}&dateRange.end.year={{end_year}}
operations:
- name: get-account-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}}/messages
inputParameters:
- name: team_id
in: path
- name: channel
in: path
operations:
- name: send-channel-message
method: POST
Retrieves a user profile from Azure Active Directory by UPN, returning display name, job title, department, and group memberships.
naftiko: '0.5'
info:
label: Azure Active Directory User Lookup
description: Retrieves a user profile from Azure Active Directory by UPN, returning display name, job title, department, and group memberships.
tags:
- identity
- directory
- azure-active-directory
capability:
exposes:
- type: mcp
namespace: identity-aad
port: 8080
tools:
- name: get-user
description: Look up an Azure AD user by UPN. Returns display name, job title, department, and group memberships.
inputParameters:
- name: user_upn
in: body
type: string
description: The user principal name (email).
call: aad.get-user
with:
upn: '{{user_upn}}'
consumes:
- type: http
namespace: aad
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: users
path: /users/{{upn}}
inputParameters:
- name: upn
in: path
operations:
- name: get-user
method: GET
Orchestrates consumer segmentation pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Consumer Segmentation Pipeline
description: Orchestrates consumer segmentation pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
tags:
- consumer
- reckitt
- jira
- confluence
- datadog
capability:
exposes:
- type: mcp
namespace: consumer
port: 8080
tools:
- name: consumer-segmentation-pipeline
description: Orchestrates consumer segmentation pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: jira.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: confluence.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: datadog.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: jira
baseUri: https://reckitt.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: jira-resource
path: /api/consumer
operations:
- name: execute-1
method: POST
- type: http
namespace: confluence
baseUri: https://reckitt.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: confluence-resource
path: /api/consumer
operations:
- name: execute-2
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: bearer
token: $secrets.datadog_api_key
resources:
- name: datadog-resource
path: /api/consumer
operations:
- name: execute-3
method: POST
Orchestrates consumer loyalty program pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Consumer Loyalty Program Pipeline
description: Orchestrates consumer loyalty program pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
tags:
- consumer
- reckitt
- confluence
- datadog
- reckitt
capability:
exposes:
- type: mcp
namespace: consumer
port: 8080
tools:
- name: consumer-loyalty-program-pipeline
description: Orchestrates consumer loyalty program pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: confluence.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: datadog.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: reckitt.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: confluence
baseUri: https://reckitt.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: confluence-resource
path: /api/consumer
operations:
- name: execute-1
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: bearer
token: $secrets.datadog_api_key
resources:
- name: datadog-resource
path: /api/consumer
operations:
- name: execute-2
method: POST
- type: http
namespace: reckitt
baseUri: https://api.reckitt.com/v2
authentication:
type: bearer
token: $secrets.reckitt_api_token
resources:
- name: reckitt-resource
path: /api/consumer
operations:
- name: execute-3
method: POST
Orchestrates brand social listening pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Brand Social Listening Pipeline
description: Orchestrates brand social listening pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
tags:
- brand
- reckitt
- servicenow
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: brand
port: 8080
tools:
- name: brand-social-listening-pipeline
description: Orchestrates brand social listening pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: servicenow.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: snowflake.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: slack.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://reckitt.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: servicenow-resource
path: /api/brand
operations:
- name: execute-1
method: POST
- type: http
namespace: snowflake
baseUri: https://reckitt.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: snowflake-resource
path: /api/brand
operations:
- name: execute-2
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: slack-resource
path: /api/brand
operations:
- name: execute-3
method: POST
Retrieves distributor order status data from the Reckitt consumer health and hygiene products systems.
naftiko: '0.5'
info:
label: Distributor Order Status
description: Retrieves distributor order status data from the Reckitt consumer health and hygiene products systems.
tags:
- distributor
- reckitt
- status
capability:
exposes:
- type: mcp
namespace: distributor
port: 8080
tools:
- name: distributor-order-status
description: Retrieves distributor order status data from the Reckitt consumer health and hygiene products systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: reckitt.distributor-order-status
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: reckitt
baseUri: https://api.reckitt.com/v2
authentication:
type: bearer
token: $secrets.reckitt_api_token
resources:
- name: resource
path: /distributor/order/status/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: distributor-order-status
method: GET
Retrieves the status of a DocuSign envelope including signer status, completion date, and document details.
naftiko: '0.5'
info:
label: DocuSign Envelope Status
description: Retrieves the status of a DocuSign envelope including signer status, completion date, and document details.
tags:
- legal
- contracts
- docusign
capability:
exposes:
- type: mcp
namespace: legal-docusign
port: 8080
tools:
- name: get-envelope-status
description: Look up a DocuSign envelope by ID. Returns signer status, sent date, and completion details.
inputParameters:
- name: envelope_id
in: body
type: string
description: The DocuSign envelope ID.
call: docusign.get-envelope
with:
envelope_id: '{{envelope_id}}'
consumes:
- type: http
namespace: docusign
baseUri: https://na4.docusign.net/restapi/v2.1/accounts/{{account_id}}
authentication:
type: bearer
token: $secrets.docusign_token
inputParameters:
- name: account_id
in: path
value: $secrets.docusign_account_id
resources:
- name: envelopes
path: /envelopes/{{envelope_id}}
inputParameters:
- name: envelope_id
in: path
operations:
- name: get-envelope
method: GET
When a consumer complaint arrives in Zendesk, enriches it with Salesforce customer data, creates a quality investigation in SAP, and escalates to the brand team in Microsoft Teams.
naftiko: '0.5'
info:
label: Consumer Complaint Orchestrator
description: When a consumer complaint arrives in Zendesk, enriches it with Salesforce customer data, creates a quality investigation in SAP, and escalates to the brand team in Microsoft Teams.
tags:
- customer-service
- quality
- zendesk
- salesforce
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: customer-complaints
port: 8080
tools:
- name: process-complaint
description: Given a Zendesk ticket ID, enrich with Salesforce data, create a SAP quality notification, and alert the brand team.
inputParameters:
- name: ticket_id
in: body
type: string
description: The Zendesk complaint ticket ID.
steps:
- name: get-ticket
type: call
call: zendesk.get-ticket
with:
ticket_id: '{{ticket_id}}'
- name: get-customer
type: call
call: salesforce.get-account
with:
email: '{{get-ticket.requester_email}}'
- name: create-quality-notification
type: call
call: sap.create-quality-notification
with:
notification_type: Q1
description: 'Consumer complaint: {{get-ticket.subject}}'
material_number: '{{get-ticket.custom_fields.product_sku}}'
- name: alert-brand-team
type: call
call: msteams.send-channel-message
with:
team_id: brand_quality
channel: Complaints
text: 'Consumer complaint: {{get-ticket.subject}}. Customer: {{get-customer.Name}}. Product: {{get-ticket.custom_fields.product_sku}}. SAP notification: {{create-quality-notification.notification_id}}. Zendesk: {{ticket_id}}.'
consumes:
- type: http
namespace: zendesk
baseUri: https://reckitt.zendesk.com/api/v2
authentication:
type: basic
username: $secrets.zendesk_user
password: $secrets.zendesk_api_token
resources:
- name: tickets
path: /tickets/{{ticket_id}}
inputParameters:
- name: ticket_id
in: path
operations:
- name: get-ticket
method: GET
- type: http
namespace: salesforce
baseUri: https://reckitt.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /parameterizedSearch/?q={{email}}&sobject=Account
inputParameters:
- name: email
in: path
operations:
- name: get-account
method: GET
- type: http
namespace: sap
baseUri: https://reckitt-s4.sap.com/sap/opu/odata/sap/QM_NOTIFICATION_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: notifications
path: /QualityNotifications
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}}/messages
inputParameters:
- name: team_id
in: path
- name: channel
in: path
operations:
- name: send-channel-message
method: POST
When a new product campaign is approved, creates scheduled posts on Instagram and Facebook, sets up Google Tag Manager tracking, and logs the campaign in Salesforce.
naftiko: '0.5'
info:
label: Social Media Campaign Launch Orchestrator
description: When a new product campaign is approved, creates scheduled posts on Instagram and Facebook, sets up Google Tag Manager tracking, and logs the campaign in Salesforce.
tags:
- marketing
- social-media
- instagram
- facebook
- google-tag-manager
- salesforce
capability:
exposes:
- type: mcp
namespace: marketing-campaigns
port: 8080
tools:
- name: launch-social-campaign
description: Given campaign details, create posts on Instagram and Facebook, configure GTM tracking, and log the campaign in Salesforce.
inputParameters:
- name: campaign_name
in: body
type: string
description: The marketing campaign name.
- name: product_sku
in: body
type: string
description: The product SKU being promoted.
- name: launch_date
in: body
type: string
description: Campaign launch date in YYYY-MM-DD format.
- name: creative_url
in: body
type: string
description: URL of the approved creative asset.
steps:
- name: create-ig-post
type: call
call: instagram.create-media
with:
image_url: '{{creative_url}}'
caption: '{{campaign_name}} — Shop now! #Reckitt'
scheduled_publish_time: '{{launch_date}}T09:00:00Z'
- name: create-fb-post
type: call
call: facebook.create-post
with:
message: '{{campaign_name}} — Discover our latest product!'
link: https://www.reckitt.com/products/{{product_sku}}
scheduled_publish_time: '{{launch_date}}T09:00:00Z'
- name: setup-tracking
type: call
call: gtm.create-tag
with:
tag_name: campaign_{{campaign_name}}
trigger: page_view
utm_campaign: '{{campaign_name}}'
- name: log-campaign
type: call
call: salesforce.create-campaign
with:
name: '{{campaign_name}}'
type: Social Media
start_date: '{{launch_date}}'
status: Planned
consumes:
- type: http
namespace: instagram
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.meta_access_token
resources:
- name: media
path: /{{ig_user_id}}/media
operations:
- name: create-media
method: POST
- type: http
namespace: facebook
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.meta_access_token
resources:
- name: posts
path: /{{page_id}}/feed
operations:
- name: create-post
method: POST
- type: http
namespace: gtm
baseUri: https://www.googleapis.com/tagmanager/v2
authentication:
type: bearer
token: $secrets.google_tagmanager_token
resources:
- name: tags
path: /accounts/{{account_id}}/containers/{{container_id}}/workspaces/{{workspace_id}}/tags
operations:
- name: create-tag
method: POST
- type: http
namespace: salesforce
baseUri: https://reckitt.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: campaigns
path: /sobjects/Campaign
operations:
- name: create-campaign
method: POST
Retrieves product formulation lookup data from the Reckitt consumer health and hygiene products systems.
naftiko: '0.5'
info:
label: Product Formulation Lookup
description: Retrieves product formulation lookup data from the Reckitt consumer health and hygiene products systems.
tags:
- product
- reckitt
- lookup
capability:
exposes:
- type: mcp
namespace: product
port: 8080
tools:
- name: product-formulation-lookup
description: Retrieves product formulation lookup data from the Reckitt consumer health and hygiene products systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: reckitt.product-formulation-lookup
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: reckitt
baseUri: https://api.reckitt.com/v2
authentication:
type: bearer
token: $secrets.reckitt_api_token
resources:
- name: resource
path: /product/formulation/lookup/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: product-formulation-lookup
method: GET
Orchestrates manufacturing energy optimization pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Manufacturing Energy Optimization Pipeline
description: Orchestrates manufacturing energy optimization pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
tags:
- manufacturing
- reckitt
- teams
- jira
- confluence
capability:
exposes:
- type: mcp
namespace: manufacturing
port: 8080
tools:
- name: manufacturing-energy-optimization-pipeline
description: Orchestrates manufacturing energy optimization pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: teams.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: jira.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: confluence.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: teams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.teams_token
resources:
- name: teams-resource
path: /api/manufacturing
operations:
- name: execute-1
method: POST
- type: http
namespace: jira
baseUri: https://reckitt.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: jira-resource
path: /api/manufacturing
operations:
- name: execute-2
method: POST
- type: http
namespace: confluence
baseUri: https://reckitt.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: confluence-resource
path: /api/manufacturing
operations:
- name: execute-3
method: POST
Orchestrates consumer trend forecasting pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Consumer Trend Forecasting Pipeline
description: Orchestrates consumer trend forecasting pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
tags:
- consumer
- reckitt
- slack
- sap
- teams
capability:
exposes:
- type: mcp
namespace: consumer
port: 8080
tools:
- name: consumer-trend-forecasting-pipeline
description: Orchestrates consumer trend forecasting pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: slack.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: sap.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: teams.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: slack-resource
path: /api/consumer
operations:
- name: execute-1
method: POST
- type: http
namespace: sap
baseUri: https://reckitt-erp.s4hana.ondemand.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: sap-resource
path: /api/consumer
operations:
- name: execute-2
method: POST
- type: http
namespace: teams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.teams_token
resources:
- name: teams-resource
path: /api/consumer
operations:
- name: execute-3
method: POST
Orchestrates trade spend reconciliation pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Trade Spend Reconciliation Pipeline
description: Orchestrates trade spend reconciliation pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
tags:
- trade
- reckitt
- servicenow
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: trade
port: 8080
tools:
- name: trade-spend-reconciliation-pipeline
description: Orchestrates trade spend reconciliation pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: servicenow.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: snowflake.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: slack.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://reckitt.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: servicenow-resource
path: /api/trade
operations:
- name: execute-1
method: POST
- type: http
namespace: snowflake
baseUri: https://reckitt.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: snowflake-resource
path: /api/trade
operations:
- name: execute-2
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: slack-resource
path: /api/trade
operations:
- name: execute-3
method: POST
Orchestrates brand campaign performance pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
naftiko: '0.5'
info:
label: Brand Campaign Performance Pipeline
description: Orchestrates brand campaign performance pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
tags:
- brand
- reckitt
- reckitt
- salesforce
- servicenow
capability:
exposes:
- type: mcp
namespace: brand
port: 8080
tools:
- name: brand-campaign-performance-pipeline
description: Orchestrates brand campaign performance pipeline across consumer health and hygiene products systems, coordinating multiple services and notifying stakeholders.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
steps:
- name: step-1
type: call
call: reckitt.execute-1
with:
input: '{{input_id}}'
- name: step-2
type: call
call: salesforce.execute-2
with:
input: '{{input_id}}'
- name: step-3
type: call
call: servicenow.execute-3
with:
input: '{{input_id}}'
consumes:
- type: http
namespace: reckitt
baseUri: https://api.reckitt.com/v2
authentication:
type: bearer
token: $secrets.reckitt_api_token
resources:
- name: reckitt-resource
path: /api/brand
operations:
- name: execute-1
method: POST
- type: http
namespace: salesforce
baseUri: https://reckitt.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: salesforce-resource
path: /api/brand
operations:
- name: execute-2
method: POST
- type: http
namespace: servicenow
baseUri: https://reckitt.service-now.com/api/now
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: servicenow-resource
path: /api/brand
operations:
- name: execute-3
method: POST
Retrieves consumer panel data lookup data from the Reckitt consumer health and hygiene products systems.
naftiko: '0.5'
info:
label: Consumer Panel Data Lookup
description: Retrieves consumer panel data lookup data from the Reckitt consumer health and hygiene products systems.
tags:
- consumer
- reckitt
- lookup
capability:
exposes:
- type: mcp
namespace: consumer
port: 8080
tools:
- name: consumer-panel-data-lookup
description: Retrieves consumer panel data lookup data from the Reckitt consumer health and hygiene products systems.
inputParameters:
- name: input_id
in: body
type: string
description: The input id.
call: reckitt.consumer-panel-data-lookup
with:
input_id: '{{input_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: reckitt
baseUri: https://api.reckitt.com/v2
authentication:
type: bearer
token: $secrets.reckitt_api_token
resources:
- name: resource
path: /consumer/panel/data/lookup/{{input_id}}
inputParameters:
- name: input_id
in: path
operations:
- name: consumer-panel-data-lookup
method: GET
Retrieves Google Ads campaign performance data including impressions, clicks, cost, and conversions for a specified date range.
naftiko: '0.5'
info:
label: Google Ads Performance Snapshot
description: Retrieves Google Ads campaign performance data including impressions, clicks, cost, and conversions for a specified date range.
tags:
- marketing
- advertising
- google-ads
capability:
exposes:
- type: mcp
namespace: marketing-ads
port: 8080
tools:
- name: get-ads-performance
description: Retrieve Google Ads campaign performance for a date range. Returns impressions, clicks, cost, and conversions.
inputParameters:
- name: customer_id
in: body
type: string
description: The Google Ads customer ID.
- 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: googleads.search-stream
with:
customer_id: '{{customer_id}}'
query: SELECT campaign.name, metrics.impressions, metrics.clicks, metrics.cost_micros, metrics.conversions FROM campaign WHERE segments.date BETWEEN '{{start_date}}' AND '{{end_date}}'
consumes:
- type: http
namespace: googleads
baseUri: https://googleads.googleapis.com/v15
authentication:
type: bearer
token: $secrets.google_ads_token
resources:
- name: search
path: /customers/{{customer_id}}/googleAds:searchStream
inputParameters:
- name: customer_id
in: path
operations:
- name: search-stream
method: POST
Retrieves Facebook Ads campaign insights including reach, impressions, spend, and cost per result.
naftiko: '0.5'
info:
label: Facebook Ads Campaign Report
description: Retrieves Facebook Ads campaign insights including reach, impressions, spend, and cost per result.
tags:
- marketing
- advertising
- facebook-ads
capability:
exposes:
- type: mcp
namespace: marketing-facebook
port: 8080
tools:
- name: get-fb-campaign-insights
description: Retrieve Facebook Ads campaign insights by campaign ID. Returns reach, impressions, spend, and cost per result.
inputParameters:
- name: campaign_id
in: body
type: string
description: The Facebook Ads campaign ID.
- name: date_preset
in: body
type: string
description: Date preset (e.g. last_7d, last_30d).
call: fbads.get-insights
with:
campaign_id: '{{campaign_id}}'
date_preset: '{{date_preset}}'
consumes:
- type: http
namespace: fbads
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.meta_access_token
resources:
- name: insights
path: /{{campaign_id}}/insights?date_preset={{date_preset}}
inputParameters:
- name: campaign_id
in: path
- name: date_preset
in: path
operations:
- name: get-insights
method: GET
Retrieves Facebook advertising spend and ROAS metrics for a specified ad account and date range.
naftiko: '0.5'
info:
label: Facebook Ads Spend Reporter
description: Retrieves Facebook advertising spend and ROAS metrics for a specified ad account and date range.
tags:
- marketing
- advertising
- facebook
capability:
exposes:
- type: mcp
namespace: paid-media
port: 8080
tools:
- name: get-fb-ad-spend
description: Fetch Facebook ad account spend and ROAS for a date range.
inputParameters:
- name: ad_account_id
in: body
type: string
description: Facebook ad account ID.
- name: start_date
in: body
type: string
description: Start date YYYY-MM-DD.
- name: end_date
in: body
type: string
description: End date YYYY-MM-DD.
call: meta.get-account-insights
with:
ad_account_id: '{{ad_account_id}}'
start_date: '{{start_date}}'
end_date: '{{end_date}}'
outputParameters:
- name: spend
type: string
mapping: $.data[0].spend
- name: roas
type: string
mapping: $.data[0].purchase_roas[0].value
consumes:
- type: http
namespace: meta
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.meta_ads_token
resources:
- name: account-insights
path: /act_{{ad_account_id}}/insights
inputParameters:
- name: ad_account_id
in: path
operations:
- name: get-account-insights
method: GET
Checks order status for a wholesale account.
naftiko: '0.5'
info:
label: Wholesale Account Order Status
description: Checks order status for a wholesale account.
tags:
- sales
- logistics
capability:
exposes:
- type: mcp
namespace: sales
port: 8080
tools:
- name: get-wholesale
description: Checks order status for a wholesale account.
inputParameters:
- name: entity_id
in: body
type: string
description: The wholesale account order status identifier.
call: sales-api.get-data
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: sales-api
baseUri: https://api.under-armour.com/sales/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: wholesale
path: /wholesale/account/order/status/{{entity_id}}
inputParameters:
- name: entity_id
in: path
operations:
- name: get-wholesale
method: GET
Sends a notification to a Slack channel.
naftiko: '0.5'
info:
label: Slack Notification Publisher
description: Sends a notification to a Slack channel.
tags:
- communications
- slack
capability:
exposes:
- type: mcp
namespace: communications
port: 8080
tools:
- name: get-slack
description: Sends a notification to a Slack channel.
inputParameters:
- name: entity_id
in: body
type: string
description: The slack notification publisher identifier.
call: communications-api.get-data
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: communications-api
baseUri: https://api.under-armour.com/communications/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: slack
path: /slack/notification/publisher/{{entity_id}}
inputParameters:
- name: entity_id
in: path
operations:
- name: get-slack
method: GET
Retrieves Instagram ad campaign metrics including impressions, reach, and engagement rate for a specified campaign ID and date range.
naftiko: '0.5'
info:
label: Instagram Campaign Performance Lookup
description: Retrieves Instagram ad campaign metrics including impressions, reach, and engagement rate for a specified campaign ID and date range.
tags:
- marketing
- social-media
- instagram
capability:
exposes:
- type: mcp
namespace: social-analytics
port: 8080
tools:
- name: get-instagram-campaign
description: Fetch performance metrics for a given Instagram campaign.
inputParameters:
- name: campaign_id
in: body
type: string
description: The Instagram/Meta campaign ID.
- name: date_range
in: body
type: string
description: Date range as start,end in YYYY-MM-DD format.
call: meta.get-campaign-insights
with:
campaign_id: '{{campaign_id}}'
date_range: '{{date_range}}'
outputParameters:
- name: impressions
type: number
mapping: $.data[0].impressions
- name: reach
type: number
mapping: $.data[0].reach
- name: engagement_rate
type: string
mapping: $.data[0].engagement_rate
consumes:
- type: http
namespace: meta
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.meta_ads_token
resources:
- name: campaign-insights
path: /{{campaign_id}}/insights
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-campaign-insights
method: GET
Searches for files in Google Drive by name and returns file ID, type, modified date, and sharing status.
naftiko: '0.5'
info:
label: Google Drive File Lookup
description: Searches for files in Google Drive by name and returns file ID, type, modified date, and sharing status.
tags:
- documents
- google-drive
capability:
exposes:
- type: mcp
namespace: drive-search
port: 8080
tools:
- name: search-drive-files
description: Search Google Drive for files by name.
inputParameters:
- name: query
in: body
type: string
description: File name search query.
call: gdrive.search-files
with:
q: name contains '{{query}}'
outputParameters:
- name: files
type: array
mapping: $.files
consumes:
- type: http
namespace: gdrive
baseUri: https://www.googleapis.com/drive/v3
authentication:
type: bearer
token: $secrets.google_drive_token
resources:
- name: files
path: /files
operations:
- name: search-files
method: GET
Retrieves a Salesforce service case by case number, returning status, priority, subject, and contact information.
naftiko: '0.5'
info:
label: Salesforce Case Lookup
description: Retrieves a Salesforce service case by case number, returning status, priority, subject, and contact information.
tags:
- customer-service
- salesforce
capability:
exposes:
- type: mcp
namespace: customer-support
port: 8080
tools:
- name: get-case
description: Look up a Salesforce case by case number.
inputParameters:
- name: case_number
in: body
type: string
description: Salesforce case number.
call: salesforce.get-case
with:
case_number: '{{case_number}}'
outputParameters:
- name: status
type: string
mapping: $.Status
- name: priority
type: string
mapping: $.Priority
- name: subject
type: string
mapping: $.Subject
consumes:
- type: http
namespace: salesforce
baseUri: https://ua.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: cases
path: /sobjects/Case/{{case_number}}
inputParameters:
- name: case_number
in: path
operations:
- name: get-case
method: GET
Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI.
naftiko: '0.5'
info:
label: Executive Dashboard Refresh Orchestrator
description: Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI.
tags:
- analytics
- power-bi
- business
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: run-executive-dashboard-refresh-orchestrator
description: Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Executive Dashboard Refresh Orchestrator for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
Retrieves a Confluence wiki page.
naftiko: '0.5'
info:
label: Confluence Page Viewer
description: Retrieves a Confluence wiki page.
tags:
- collaboration
- confluence
capability:
exposes:
- type: mcp
namespace: collaboration
port: 8080
tools:
- name: get-confluence
description: Retrieves a Confluence wiki page.
inputParameters:
- name: entity_id
in: body
type: string
description: The confluence page viewer identifier.
call: collaboration-api.get-data
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: collaboration-api
baseUri: https://api.under-armour.com/collaboration/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: confluence
path: /confluence/page/viewer/{{entity_id}}
inputParameters:
- name: entity_id
in: path
operations:
- name: get-confluence
method: GET
When a new athlete endorsement is approved in Salesforce, generates the contract in SharePoint, creates a finance line item in SAP, and notifies legal and marketing via Microsoft Teams.
naftiko: '0.5'
info:
label: Athlete Endorsement Contract Workflow
description: When a new athlete endorsement is approved in Salesforce, generates the contract in SharePoint, creates a finance line item in SAP, and notifies legal and marketing via Microsoft Teams.
tags:
- endorsements
- legal
- salesforce
- sharepoint
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: endorsement-ops
port: 8080
tools:
- name: process-endorsement
description: Orchestrate contract generation, finance entry, and team notification for a new athlete endorsement.
inputParameters:
- name: opportunity_id
in: body
type: string
description: Salesforce opportunity ID for the endorsement deal.
steps:
- name: get-deal
type: call
call: salesforce.get-opportunity
with:
opportunity_id: '{{opportunity_id}}'
- name: generate-contract
type: call
call: sharepoint.create-document
with:
site_id: legal_contracts
template: athlete_endorsement
fields:
athlete_name: '{{get-deal.Contact_Name__c}}'
deal_value: '{{get-deal.Amount}}'
term: '{{get-deal.Contract_Term__c}}'
- name: create-cost-center
type: call
call: sap.create-cost-element
with:
cost_center: marketing_endorsements
amount: '{{get-deal.Amount}}'
description: 'Endorsement: {{get-deal.Contact_Name__c}}'
- name: notify-teams
type: call
call: msteams.send-message
with:
channel_id: endorsement-deals
text: 'New endorsement approved: {{get-deal.Contact_Name__c}} for ${{get-deal.Amount}}. Contract: {{generate-contract.url}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://ua.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: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: documents
path: /{{site_id}}/drive/root:/{{template}}
inputParameters:
- name: site_id
in: path
- name: template
in: path
operations:
- name: create-document
method: POST
- type: http
namespace: sap
baseUri: https://ua-sap.under-armour.com/sap/opu/odata/sap/API_COSTCENTERACTIVITYTYPE_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: cost-elements
path: /A_CostCenterActivityType
operations:
- name: create-cost-element
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-message
method: POST
Retrieves metadata for a Tableau workbook view including view name, last refresh time, and content URL.
naftiko: '0.5'
info:
label: Tableau Dashboard Lookup
description: Retrieves metadata for a Tableau workbook view including view name, last refresh time, and content URL.
tags:
- analytics
- reporting
- tableau
capability:
exposes:
- type: mcp
namespace: bi-dashboards
port: 8080
tools:
- name: get-tableau-view
description: Fetch Tableau view metadata.
inputParameters:
- name: site_id
in: body
type: string
description: Tableau site ID.
- name: view_id
in: body
type: string
description: Tableau view ID.
call: tableau.get-view
with:
site_id: '{{site_id}}'
view_id: '{{view_id}}'
outputParameters:
- name: name
type: string
mapping: $.view.name
- name: content_url
type: string
mapping: $.view.contentUrl
consumes:
- type: http
namespace: tableau
baseUri: https://ua-tableau.under-armour.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: views
path: /sites/{{site_id}}/views/{{view_id}}
inputParameters:
- name: site_id
in: path
- name: view_id
in: path
operations:
- name: get-view
method: GET
Retrieves on-hand inventory quantities from Oracle E-Business Suite for a given item and organization.
naftiko: '0.5'
info:
label: Oracle EBS Inventory Snapshot
description: Retrieves on-hand inventory quantities from Oracle E-Business Suite for a given item and organization.
tags:
- supply-chain
- inventory
- oracle-e-business-suite
capability:
exposes:
- type: mcp
namespace: inventory-lookup
port: 8080
tools:
- name: get-inventory-onhand
description: Fetch on-hand inventory from Oracle EBS.
inputParameters:
- name: item_number
in: body
type: string
description: Oracle item number.
- name: org_id
in: body
type: string
description: Organization ID.
call: oracle-ebs.get-onhand
with:
item: '{{item_number}}'
org: '{{org_id}}'
outputParameters:
- name: quantity_on_hand
type: number
mapping: $.onhand_quantity
- name: reserved
type: number
mapping: $.reserved_quantity
- name: available
type: number
mapping: $.available_to_promise
consumes:
- type: http
namespace: oracle-ebs
baseUri: https://ua-ebs.under-armour.com/webservices/rest/inventory
authentication:
type: basic
username: $secrets.oracle_ebs_user
password: $secrets.oracle_ebs_password
resources:
- name: onhand
path: /on-hand?item={{item}}&org={{org}}
inputParameters:
- name: item
in: query
- name: org
in: query
operations:
- name: get-onhand
method: GET
Retrieves Salesforce Marketing Cloud email send metrics including delivery rate, open rate, and click-through rate for a given send job.
naftiko: '0.5'
info:
label: Salesforce Marketing Cloud Email Performance
description: Retrieves Salesforce Marketing Cloud email send metrics including delivery rate, open rate, and click-through rate for a given send job.
tags:
- marketing
- email
- salesforce-marketing-cloud
capability:
exposes:
- type: mcp
namespace: sfmc-analytics
port: 8080
tools:
- name: get-email-send-metrics
description: Fetch SFMC email send performance metrics.
inputParameters:
- name: send_id
in: body
type: string
description: SFMC send job ID.
call: sfmc.get-send-summary
with:
send_id: '{{send_id}}'
outputParameters:
- name: delivery_rate
type: string
mapping: $.deliveryRate
- name: open_rate
type: string
mapping: $.uniqueOpenRate
- name: click_rate
type: string
mapping: $.uniqueClickRate
consumes:
- type: http
namespace: sfmc
baseUri: https://ua.rest.marketingcloudapis.com/v1
authentication:
type: bearer
token: $secrets.sfmc_token
resources:
- name: sends
path: /sends/{{send_id}}
inputParameters:
- name: send_id
in: path
operations:
- name: get-send-summary
method: GET
Retrieves a Jira ticket by issue key.
naftiko: '0.5'
info:
label: Jira Ticket Viewer
description: Retrieves a Jira ticket by issue key.
tags:
- engineering
- jira
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: get-jira
description: Retrieves a Jira ticket by issue key.
inputParameters:
- name: entity_id
in: body
type: string
description: The jira ticket viewer identifier.
call: engineering-api.get-data
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: engineering-api
baseUri: https://api.under-armour.com/engineering/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: jira
path: /jira/ticket/viewer/{{entity_id}}
inputParameters:
- name: entity_id
in: path
operations:
- name: get-jira
method: GET
Exports subscriber details from a MailChimp audience list, returning total count, open rate, and click rate.
naftiko: '0.5'
info:
label: MailChimp Subscriber List Export
description: Exports subscriber details from a MailChimp audience list, returning total count, open rate, and click rate.
tags:
- marketing
- email
- mailchimp
capability:
exposes:
- type: mcp
namespace: email-marketing
port: 8080
tools:
- name: get-audience-stats
description: Retrieve MailChimp audience list statistics.
inputParameters:
- name: list_id
in: body
type: string
description: MailChimp audience list ID.
call: mailchimp.get-list
with:
list_id: '{{list_id}}'
outputParameters:
- name: member_count
type: number
mapping: $.stats.member_count
- name: open_rate
type: number
mapping: $.stats.open_rate
- name: click_rate
type: number
mapping: $.stats.click_rate
consumes:
- type: http
namespace: mailchimp
baseUri: https://us1.api.mailchimp.com/3.0
authentication:
type: basic
username: anystring
password: $secrets.mailchimp_api_key
resources:
- name: lists
path: /lists/{{list_id}}
inputParameters:
- name: list_id
in: path
operations:
- name: get-list
method: GET
Retrieves Mastercard settlement data for a date range and reconciles against SAP payment records, logging discrepancies to Google Sheets.
naftiko: '0.5'
info:
label: Mastercard Transaction Reconciliation
description: Retrieves Mastercard settlement data for a date range and reconciles against SAP payment records, logging discrepancies to Google Sheets.
tags:
- finance
- payments
- mastercard
- sap
- google-sheets
capability:
exposes:
- type: mcp
namespace: payment-reconciliation
port: 8080
tools:
- name: reconcile-settlements
description: Compare Mastercard settlements against SAP payments and log discrepancies.
inputParameters:
- name: settlement_date
in: body
type: string
description: Settlement date YYYY-MM-DD.
steps:
- name: get-settlements
type: call
call: mastercard.get-settlements
with:
date: '{{settlement_date}}'
- name: get-sap-payments
type: call
call: sap.get-payment-docs
with:
date: '{{settlement_date}}'
- name: log-discrepancies
type: call
call: gsheets.append-row
with:
spreadsheet_id: ua_reconciliation_log
row:
date: '{{settlement_date}}'
mc_total: '{{get-settlements.total}}'
sap_total: '{{get-sap-payments.total}}'
consumes:
- type: http
namespace: mastercard
baseUri: https://api.mastercard.com/settlement/v1
authentication:
type: bearer
token: $secrets.mastercard_token
resources:
- name: settlements
path: /settlements
operations:
- name: get-settlements
method: GET
- type: http
namespace: sap
baseUri: https://ua-sap.under-armour.com/sap/opu/odata/sap/API_PAYMENT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: payments
path: /A_PaymentDocument
operations:
- name: get-payment-docs
method: GET
- type: http
namespace: gsheets
baseUri: https://sheets.googleapis.com/v4
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: rows
path: /spreadsheets/{{spreadsheet_id}}/values/Sheet1:append
inputParameters:
- name: spreadsheet_id
in: path
operations:
- name: append-row
method: POST
When a SAP inbound delivery is delayed beyond threshold, creates a ServiceNow incident, updates the Salesforce wholesale account with delay notice, and alerts the supply chain team in Microsoft Teams.
naftiko: '0.5'
info:
label: Supply Chain Delay Alert Orchestrator
description: When a SAP inbound delivery is delayed beyond threshold, creates a ServiceNow incident, updates the Salesforce wholesale account with delay notice, and alerts the supply chain team in Microsoft Teams.
tags:
- supply-chain
- alerts
- sap
- servicenow
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: supply-chain-alerts
port: 8080
tools:
- name: handle-delivery-delay
description: Orchestrate delay notifications across ServiceNow, Salesforce, and Teams.
inputParameters:
- name: delivery_id
in: body
type: string
description: SAP inbound delivery document number.
- name: delay_days
in: body
type: number
description: Number of days the delivery is delayed.
steps:
- name: get-delivery
type: call
call: sap.get-inbound-delivery
with:
delivery_id: '{{delivery_id}}'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Supply chain delay: {{delivery_id}} - {{delay_days}} days'
category: supply_chain
priority: '2'
- name: update-account
type: call
call: salesforce.update-account
with:
account_id: '{{get-delivery.vendor_account_id}}'
delay_notice: Delivery {{delivery_id}} delayed by {{delay_days}} days
- name: alert-team
type: call
call: msteams.send-message
with:
channel_id: supply-chain-ops
text: 'DELAY ALERT: Delivery {{delivery_id}} from {{get-delivery.vendor_name}} is {{delay_days}} days late. Incident: {{create-incident.number}}'
consumes:
- type: http
namespace: sap
baseUri: https://ua-sap.under-armour.com/sap/opu/odata/sap/API_INBOUND_DELIVERY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: deliveries
path: /A_InbDeliveryHeader('{{delivery_id}}')
inputParameters:
- name: delivery_id
in: path
operations:
- name: get-inbound-delivery
method: GET
- type: http
namespace: servicenow
baseUri: https://underarmour.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: salesforce
baseUri: https://ua.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
- 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-message
method: POST
Orchestrates athletic apparel workflow 2 by coordinating across systems, validating data, and sending notifications.
naftiko: '0.5'
info:
label: Athletic Apparel Workflow 2
description: Orchestrates athletic apparel workflow 2 by coordinating across systems, validating data, and sending notifications.
tags:
- athletic
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: athletic
port: 8080
tools:
- name: run-athletic-apparel-workflow-002
description: Orchestrates athletic apparel workflow 2 by coordinating across systems, validating data, and sending notifications.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Athletic Apparel Workflow 2 for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
When a customer initiates a return on BigCommerce, validates the order, creates a return authorization in SAP, triggers a refund via Square, and sends a return label email through MailChimp.
naftiko: '0.5'
info:
label: Return Processing Orchestrator
description: When a customer initiates a return on BigCommerce, validates the order, creates a return authorization in SAP, triggers a refund via Square, and sends a return label email through MailChimp.
tags:
- e-commerce
- returns
- bigcommerce
- sap
- square
- mailchimp
capability:
exposes:
- type: mcp
namespace: returns-processing
port: 8080
tools:
- name: process-return
description: Orchestrate return authorization, refund, and customer communication.
inputParameters:
- name: order_id
in: body
type: string
description: BigCommerce order ID.
- name: reason
in: body
type: string
description: Return reason code.
steps:
- name: get-order
type: call
call: bigcommerce.get-order
with:
order_id: '{{order_id}}'
- name: create-return
type: call
call: sap.create-return-order
with:
order_ref: '{{get-order.id}}'
reason: '{{reason}}'
items: '{{get-order.line_items}}'
- name: issue-refund
type: call
call: square.create-refund
with:
payment_id: '{{get-order.payment_id}}'
amount: '{{get-order.total}}'
- name: send-label
type: call
call: mailchimp.send-transactional
with:
email: '{{get-order.customer_email}}'
template: return_label
merge_vars:
return_auth: '{{create-return.return_number}}'
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/ua-store/v2
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: orders
path: /orders/{{order_id}}
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: sap
baseUri: https://ua-sap.under-armour.com/sap/opu/odata/sap/API_RETURNS_DELIVERY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: returns
path: /A_ReturnsDeliveryHeader
operations:
- name: create-return-order
method: POST
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_token
resources:
- name: refunds
path: /refunds
operations:
- name: create-refund
method: POST
- type: http
namespace: mailchimp
baseUri: https://mandrillapp.com/api/1.0
authentication:
type: bearer
token: $secrets.mailchimp_transactional_key
resources:
- name: messages
path: /messages/send-template
operations:
- name: send-transactional
method: POST
When a new wholesale lead is created in Salesforce, enriches it with ZoomInfo firmographic data and creates an opportunity with projected revenue, then notifies the sales team via Microsoft Teams.
naftiko: '0.5'
info:
label: Salesforce Lead to Wholesale Opportunity
description: When a new wholesale lead is created in Salesforce, enriches it with ZoomInfo firmographic data and creates an opportunity with projected revenue, then notifies the sales team via Microsoft Teams.
tags:
- sales
- wholesale
- salesforce
- zoominfo
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: wholesale-pipeline
port: 8080
tools:
- name: qualify-wholesale-lead
description: Enrich a Salesforce lead with ZoomInfo data, create an opportunity, and notify the sales team.
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: enrich-lead
type: call
call: zoominfo.enrich-company
with:
company_name: '{{get-lead.Company}}'
domain: '{{get-lead.Website}}'
- name: create-opportunity
type: call
call: salesforce.create-opportunity
with:
name: Wholesale - {{get-lead.Company}}
account_id: '{{get-lead.ConvertedAccountId}}'
amount: '{{enrich-lead.estimated_revenue}}'
stage: Qualification
- name: notify-sales
type: call
call: msteams.send-message
with:
channel_id: wholesale-leads
text: 'New wholesale opportunity: {{get-lead.Company}} (est. ${{enrich-lead.estimated_revenue}}). Opp ID: {{create-opportunity.id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://ua.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: opportunities
path: /sobjects/Opportunity
operations:
- name: create-opportunity
method: POST
- type: http
namespace: zoominfo
baseUri: https://api.zoominfo.com
authentication:
type: bearer
token: $secrets.zoominfo_token
resources:
- name: enrich
path: /enrich/company
operations:
- name: enrich-company
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-message
method: POST
Retrieves athletic apparel operational data for workflow 3.
naftiko: '0.5'
info:
label: Athletic Apparel Data Query 3
description: Retrieves athletic apparel operational data for workflow 3.
tags:
- athletic
- operations
capability:
exposes:
- type: mcp
namespace: athletic
port: 8080
tools:
- name: get-data-3
description: Query athletic apparel data for workflow 3.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
call: athletic-api.get-data
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: athletic-api
baseUri: https://api.under-armour.com/athletic-apparel/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: data
path: /data/{{entity_id}}
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-3
method: GET
Retrieves athletic apparel operational data for workflow 15.
naftiko: '0.5'
info:
label: Athletic Apparel Data Query 15
description: Retrieves athletic apparel operational data for workflow 15.
tags:
- athletic
- operations
capability:
exposes:
- type: mcp
namespace: athletic
port: 8080
tools:
- name: get-data-15
description: Query athletic apparel data for workflow 15.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
call: athletic-api.get-data
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: athletic-api
baseUri: https://api.under-armour.com/athletic-apparel/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: data
path: /data/{{entity_id}}
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-15
method: GET
Orchestrates athletic apparel workflow 1 by coordinating across systems, validating data, and sending notifications.
naftiko: '0.5'
info:
label: Athletic Apparel Workflow 1
description: Orchestrates athletic apparel workflow 1 by coordinating across systems, validating data, and sending notifications.
tags:
- athletic
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: athletic
port: 8080
tools:
- name: run-athletic-apparel-workflow-001
description: Orchestrates athletic apparel workflow 1 by coordinating across systems, validating data, and sending notifications.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Athletic Apparel Workflow 1 for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
Synchronizes athlete activity data from the Under Armour connected fitness platform into Salesforce for personalized marketing, updates user segments in HubSpot, and triggers targeted MailChimp campaigns.
naftiko: '0.5'
info:
label: Connected Fitness Data Sync Orchestrator
description: Synchronizes athlete activity data from the Under Armour connected fitness platform into Salesforce for personalized marketing, updates user segments in HubSpot, and triggers targeted MailChimp campaigns.
tags:
- dtc
- connected-fitness
- salesforce
- hubspot
- mailchimp
capability:
exposes:
- type: mcp
namespace: fitness-marketing
port: 8080
tools:
- name: sync-fitness-segments
description: Sync connected fitness activity data to Salesforce and HubSpot, and trigger targeted email.
inputParameters:
- name: segment_type
in: body
type: string
description: Activity segment (e.g., 'high_activity_runners').
- name: period_days
in: body
type: number
description: Lookback period in days.
steps:
- name: get-segment-users
type: call
call: salesforce.query-contacts
with:
query: SELECT Id, Email FROM Contact WHERE Fitness_Segment__c = '{{segment_type}}'
- name: update-hubspot-list
type: call
call: hubspot.update-list
with:
list_id: fitness_{{segment_type}}
emails: '{{get-segment-users.records}}'
- name: trigger-campaign
type: call
call: mailchimp.send-campaign
with:
list_id: fitness_segments
segment_id: '{{segment_type}}'
template: fitness_engagement_{{segment_type}}
consumes:
- type: http
namespace: salesforce
baseUri: https://ua.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: query
path: /query
operations:
- name: query-contacts
method: GET
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com/contacts/v1
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: lists
path: /lists/{{list_id}}/add
inputParameters:
- name: list_id
in: path
operations:
- name: update-list
method: POST
- type: http
namespace: mailchimp
baseUri: https://us1.api.mailchimp.com/3.0
authentication:
type: basic
username: anystring
password: $secrets.mailchimp_api_key
resources:
- name: campaigns
path: /campaigns
operations:
- name: send-campaign
method: POST
Retrieves a Salesforce account by account ID.
naftiko: '0.5'
info:
label: Salesforce Account Viewer
description: Retrieves a Salesforce account by account ID.
tags:
- sales
- salesforce
capability:
exposes:
- type: mcp
namespace: sales
port: 8080
tools:
- name: get-salesforce
description: Retrieves a Salesforce account by account ID.
inputParameters:
- name: entity_id
in: body
type: string
description: The salesforce account viewer identifier.
call: sales-api.get-data
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: sales-api
baseUri: https://api.under-armour.com/sales/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: salesforce
path: /salesforce/account/viewer/{{entity_id}}
inputParameters:
- name: entity_id
in: path
operations:
- name: get-salesforce
method: GET
Uploads a document to a specified SharePoint site and folder path.
naftiko: '0.5'
info:
label: SharePoint Document Upload
description: Uploads a document to a specified SharePoint site and folder path.
tags:
- documents
- sharepoint
capability:
exposes:
- type: mcp
namespace: document-mgmt
port: 8080
tools:
- name: upload-document
description: Upload a document to SharePoint.
inputParameters:
- name: site_id
in: body
type: string
description: SharePoint site ID.
- name: folder_path
in: body
type: string
description: Folder path for the upload.
- name: file_name
in: body
type: string
description: Name of the file.
call: sharepoint.upload-file
with:
site_id: '{{site_id}}'
folder_path: '{{folder_path}}'
file_name: '{{file_name}}'
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}}/{{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
Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports.
naftiko: '0.5'
info:
label: Data Governance Review Orchestrator
description: Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports.
tags:
- data-governance
- compliance
- analytics
capability:
exposes:
- type: mcp
namespace: data-governance
port: 8080
tools:
- name: run-data-governance-review-orchestrator
description: Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Data Governance Review Orchestrator for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters.
naftiko: '0.5'
info:
label: Cross-Functional Project Kickoff Orchestrator
description: Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters.
tags:
- project-management
- collaboration
- operations
capability:
exposes:
- type: mcp
namespace: project-management
port: 8080
tools:
- name: run-cross-functional-project-kickoff-orchestrator
description: Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Cross-Functional Project Kickoff Orchestrator for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
Fetches recent Twitter mentions of the Under Armour brand, runs sentiment analysis, and logs results to Google Sheets for social media team review.
naftiko: '0.5'
info:
label: Twitter Mention Sentiment Tracker
description: Fetches recent Twitter mentions of the Under Armour brand, runs sentiment analysis, and logs results to Google Sheets for social media team review.
tags:
- marketing
- social-media
- twitter
- google-sheets
capability:
exposes:
- type: mcp
namespace: social-listening
port: 8080
tools:
- name: track-brand-mentions
description: Pull Twitter mentions and log sentiment analysis results to Google Sheets.
inputParameters:
- name: query
in: body
type: string
description: Search query (e.g., '@UnderArmour').
- name: since_date
in: body
type: string
description: Start date in YYYY-MM-DD format.
steps:
- name: search-tweets
type: call
call: twitter.search-recent
with:
query: '{{query}}'
start_time: '{{since_date}}T00:00:00Z'
- name: log-results
type: call
call: gsheets.append-row
with:
spreadsheet_id: ua_social_mentions
row:
query: '{{query}}'
tweet_count: '{{search-tweets.meta.result_count}}'
date: '{{since_date}}'
consumes:
- type: http
namespace: twitter
baseUri: https://api.twitter.com/2
authentication:
type: bearer
token: $secrets.twitter_bearer_token
resources:
- name: tweets-search
path: /tweets/search/recent
operations:
- name: search-recent
method: GET
- type: http
namespace: gsheets
baseUri: https://sheets.googleapis.com/v4
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: rows
path: /spreadsheets/{{spreadsheet_id}}/values/Sheet1:append
inputParameters:
- name: spreadsheet_id
in: path
operations:
- name: append-row
method: POST
Orchestrates athletic apparel workflow 14 by coordinating across systems, validating data, and sending notifications.
naftiko: '0.5'
info:
label: Athletic Apparel Workflow 14
description: Orchestrates athletic apparel workflow 14 by coordinating across systems, validating data, and sending notifications.
tags:
- athletic
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: athletic
port: 8080
tools:
- name: run-athletic-apparel-workflow-014
description: Orchestrates athletic apparel workflow 14 by coordinating across systems, validating data, and sending notifications.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Athletic Apparel Workflow 14 for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
When a wholesale order is confirmed in Salesforce, creates a sales order in SAP, generates an invoice, and emails it to the buyer via Microsoft Outlook.
naftiko: '0.5'
info:
label: Wholesale Order to Invoice Orchestrator
description: When a wholesale order is confirmed in Salesforce, creates a sales order in SAP, generates an invoice, and emails it to the buyer via Microsoft Outlook.
tags:
- wholesale
- finance
- salesforce
- sap
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: wholesale-billing
port: 8080
tools:
- name: process-wholesale-invoice
description: Create SAP sales order and invoice from a confirmed Salesforce wholesale order.
inputParameters:
- name: opportunity_id
in: body
type: string
description: Salesforce opportunity ID.
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:
customer: '{{get-opportunity.Account.Name}}'
items: '{{get-opportunity.OpportunityLineItems}}'
total: '{{get-opportunity.Amount}}'
- name: create-invoice
type: call
call: sap.create-invoice
with:
sales_order: '{{create-sales-order.order_number}}'
- name: email-invoice
type: call
call: outlook.send-mail
with:
to: '{{get-opportunity.Contact_Email__c}}'
subject: Under Armour Invoice {{create-invoice.invoice_number}}
body: Please find your invoice for order {{create-sales-order.order_number}}.
attachment_url: '{{create-invoice.pdf_url}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://ua.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://ua-sap.under-armour.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
- name: invoices
path: /A_BillingDocument
operations:
- name: create-invoice
method: POST
- 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-mail
method: POST
Orchestrates end-of-season closeout by pulling aging inventory from SAP, creating clearance promotions on BigCommerce, updating Shopify sale prices, and reporting results to the merchandising team in Google Sheets.
naftiko: '0.5'
info:
label: End of Season Closeout Orchestrator
description: Orchestrates end-of-season closeout by pulling aging inventory from SAP, creating clearance promotions on BigCommerce, updating Shopify sale prices, and reporting results to the merchandising team in Google Sheets.
tags:
- merchandising
- e-commerce
- sap
- bigcommerce
- shopify
- google-sheets
capability:
exposes:
- type: mcp
namespace: closeout-ops
port: 8080
tools:
- name: execute-closeout
description: Run end-of-season closeout across DTC channels and report.
inputParameters:
- name: season_code
in: body
type: string
description: SAP season code (e.g., 'FW24').
- name: clearance_pct
in: body
type: number
description: Clearance discount percentage.
steps:
- name: get-aging-inventory
type: call
call: sap.get-aging-stock
with:
season: '{{season_code}}'
- name: create-bc-promotions
type: call
call: bigcommerce.create-promotion
with:
name: '{{season_code}} Closeout'
discount_pct: '{{clearance_pct}}'
product_ids: '{{get-aging-inventory.product_ids}}'
- name: update-shopify-prices
type: call
call: shopify.bulk-price-update
with:
items: '{{get-aging-inventory.items}}'
discount_pct: '{{clearance_pct}}'
- name: log-report
type: call
call: gsheets.append-row
with:
spreadsheet_id: ua_closeout_tracker
row:
season: '{{season_code}}'
items_count: '{{get-aging-inventory.total_items}}'
clearance_pct: '{{clearance_pct}}'
consumes:
- type: http
namespace: sap
baseUri: https://ua-sap.under-armour.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: aging-stock
path: /A_MatlStkInAcctMod
operations:
- name: get-aging-stock
method: GET
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/ua-store/v3
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: promotions
path: /promotions
operations:
- name: create-promotion
method: POST
- type: http
namespace: shopify
baseUri: https://under-armour.myshopify.com/admin/api/2024-01
authentication:
type: bearer
token: $secrets.shopify_token
resources:
- name: products
path: /products.json
operations:
- name: bulk-price-update
method: PUT
- type: http
namespace: gsheets
baseUri: https://sheets.googleapis.com/v4
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: rows
path: /spreadsheets/{{spreadsheet_id}}/values/Sheet1:append
inputParameters:
- name: spreadsheet_id
in: path
operations:
- name: append-row
method: POST
Orchestrates athletic apparel workflow 10 by coordinating across systems, validating data, and sending notifications.
naftiko: '0.5'
info:
label: Athletic Apparel Workflow 10
description: Orchestrates athletic apparel workflow 10 by coordinating across systems, validating data, and sending notifications.
tags:
- athletic
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: athletic
port: 8080
tools:
- name: run-athletic-apparel-workflow-010
description: Orchestrates athletic apparel workflow 10 by coordinating across systems, validating data, and sending notifications.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Athletic Apparel Workflow 10 for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
Orchestrates athletic apparel workflow 4 by coordinating across systems, validating data, and sending notifications.
naftiko: '0.5'
info:
label: Athletic Apparel Workflow 4
description: Orchestrates athletic apparel workflow 4 by coordinating across systems, validating data, and sending notifications.
tags:
- athletic
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: athletic
port: 8080
tools:
- name: run-athletic-apparel-workflow-004
description: Orchestrates athletic apparel workflow 4 by coordinating across systems, validating data, and sending notifications.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Athletic Apparel Workflow 4 for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
Retrieves search performance data from Google Search Console for the UA.com property including clicks, impressions, and average position.
naftiko: '0.5'
info:
label: Google Search Console Performance Lookup
description: Retrieves search performance data from Google Search Console for the UA.com property including clicks, impressions, and average position.
tags:
- seo
- analytics
- google-search-console
capability:
exposes:
- type: mcp
namespace: seo-analytics
port: 8080
tools:
- name: get-search-performance
description: Fetch Google Search Console performance data.
inputParameters:
- name: site_url
in: body
type: string
description: The site URL property in GSC.
- name: start_date
in: body
type: string
description: Start date YYYY-MM-DD.
- name: end_date
in: body
type: string
description: End date YYYY-MM-DD.
call: gsc.query-analytics
with:
site_url: '{{site_url}}'
start_date: '{{start_date}}'
end_date: '{{end_date}}'
outputParameters:
- name: clicks
type: number
mapping: $.rows[0].clicks
- name: impressions
type: number
mapping: $.rows[0].impressions
- name: avg_position
type: number
mapping: $.rows[0].position
consumes:
- type: http
namespace: gsc
baseUri: https://www.googleapis.com/webmasters/v3
authentication:
type: bearer
token: $secrets.google_search_console_token
resources:
- name: analytics
path: /sites/{{site_url}}/searchAnalytics/query
inputParameters:
- name: site_url
in: path
operations:
- name: query-analytics
method: POST
Retrieves status of an athlete endorsement deal.
naftiko: '0.5'
info:
label: Athlete Endorsement Status
description: Retrieves status of an athlete endorsement deal.
tags:
- marketing
- legal
capability:
exposes:
- type: mcp
namespace: marketing
port: 8080
tools:
- name: get-athlete
description: Retrieves status of an athlete endorsement deal.
inputParameters:
- name: entity_id
in: body
type: string
description: The athlete endorsement status identifier.
call: marketing-api.get-data
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: marketing-api
baseUri: https://api.under-armour.com/marketing/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: athlete
path: /athlete/endorsement/status/{{entity_id}}
inputParameters:
- name: entity_id
in: path
operations:
- name: get-athlete
method: GET
Retrieves e-commerce conversion rate metrics.
naftiko: '0.5'
info:
label: E-Commerce Conversion Rate
description: Retrieves e-commerce conversion rate metrics.
tags:
- e-commerce
- analytics
capability:
exposes:
- type: mcp
namespace: e-commerce
port: 8080
tools:
- name: get-e
description: Retrieves e-commerce conversion rate metrics.
inputParameters:
- name: entity_id
in: body
type: string
description: The e commerce conversion rate identifier.
call: e-commerce-api.get-data
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: e-commerce-api
baseUri: https://api.under-armour.com/e-commerce/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: e
path: /e/commerce/conversion/rate/{{entity_id}}
inputParameters:
- name: entity_id
in: path
operations:
- name: get-e
method: GET
Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports.
naftiko: '0.5'
info:
label: Procurement Spend Analysis Orchestrator
description: Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports.
tags:
- procurement
- analytics
- finance
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: run-procurement-spend-analysis-orchestrator
description: Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Procurement Spend Analysis Orchestrator for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
Orchestrates athletic apparel workflow 5 by coordinating across systems, validating data, and sending notifications.
naftiko: '0.5'
info:
label: Athletic Apparel Workflow 5
description: Orchestrates athletic apparel workflow 5 by coordinating across systems, validating data, and sending notifications.
tags:
- athletic
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: athletic
port: 8080
tools:
- name: run-athletic-apparel-workflow-005
description: Orchestrates athletic apparel workflow 5 by coordinating across systems, validating data, and sending notifications.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Athletic Apparel Workflow 5 for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
Orchestrates athletic apparel workflow 11 by coordinating across systems, validating data, and sending notifications.
naftiko: '0.5'
info:
label: Athletic Apparel Workflow 11
description: Orchestrates athletic apparel workflow 11 by coordinating across systems, validating data, and sending notifications.
tags:
- athletic
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: athletic
port: 8080
tools:
- name: run-athletic-apparel-workflow-011
description: Orchestrates athletic apparel workflow 11 by coordinating across systems, validating data, and sending notifications.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Athletic Apparel Workflow 11 for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
Runs an analytics query against the Snowflake data warehouse.
naftiko: '0.5'
info:
label: Snowflake Analytics Query
description: Runs an analytics query against the Snowflake data warehouse.
tags:
- analytics
- snowflake
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: get-snowflake
description: Runs an analytics query against the Snowflake data warehouse.
inputParameters:
- name: entity_id
in: body
type: string
description: The snowflake analytics query identifier.
call: analytics-api.get-data
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: analytics-api
baseUri: https://api.under-armour.com/analytics/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: snowflake
path: /snowflake/analytics/query/{{entity_id}}
inputParameters:
- name: entity_id
in: path
operations:
- name: get-snowflake
method: GET
Orchestrates athletic apparel workflow 7 by coordinating across systems, validating data, and sending notifications.
naftiko: '0.5'
info:
label: Athletic Apparel Workflow 7
description: Orchestrates athletic apparel workflow 7 by coordinating across systems, validating data, and sending notifications.
tags:
- athletic
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: athletic
port: 8080
tools:
- name: run-athletic-apparel-workflow-007
description: Orchestrates athletic apparel workflow 7 by coordinating across systems, validating data, and sending notifications.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Athletic Apparel Workflow 7 for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
Orchestrates athletic apparel workflow 13 by coordinating across systems, validating data, and sending notifications.
naftiko: '0.5'
info:
label: Athletic Apparel Workflow 13
description: Orchestrates athletic apparel workflow 13 by coordinating across systems, validating data, and sending notifications.
tags:
- athletic
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: athletic
port: 8080
tools:
- name: run-athletic-apparel-workflow-013
description: Orchestrates athletic apparel workflow 13 by coordinating across systems, validating data, and sending notifications.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Athletic Apparel Workflow 13 for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
Manages annual compliance certifications by distributing attestations, tracking completion, and filing results.
naftiko: '0.5'
info:
label: Annual Compliance Certification Orchestrator
description: Manages annual compliance certifications by distributing attestations, tracking completion, and filing results.
tags:
- compliance
- hr
- legal
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: run-annual-compliance-certification-orchestrator
description: Manages annual compliance certifications by distributing attestations, tracking completion, and filing results.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Annual Compliance Certification Orchestrator for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
Executes disaster recovery tests by failing over systems, validating recovery, and documenting results.
naftiko: '0.5'
info:
label: Disaster Recovery Test Orchestrator
description: Executes disaster recovery tests by failing over systems, validating recovery, and documenting results.
tags:
- infrastructure
- operations
- compliance
capability:
exposes:
- type: mcp
namespace: infrastructure
port: 8080
tools:
- name: run-disaster-recovery-test-orchestrator
description: Executes disaster recovery tests by failing over systems, validating recovery, and documenting results.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Disaster Recovery Test Orchestrator for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
When a customer reaches a spending threshold in Salesforce, upgrades their loyalty tier, sends a congratulations email via MailChimp, and creates a personalized discount code in Shopify.
naftiko: '0.5'
info:
label: Customer Loyalty Tier Upgrade Orchestrator
description: When a customer reaches a spending threshold in Salesforce, upgrades their loyalty tier, sends a congratulations email via MailChimp, and creates a personalized discount code in Shopify.
tags:
- dtc
- loyalty
- salesforce
- mailchimp
- shopify
capability:
exposes:
- type: mcp
namespace: loyalty-ops
port: 8080
tools:
- name: upgrade-loyalty-tier
description: Upgrade customer loyalty tier and trigger rewards.
inputParameters:
- name: contact_id
in: body
type: string
description: Salesforce contact ID.
- name: new_tier
in: body
type: string
description: New loyalty tier name.
steps:
- name: get-contact
type: call
call: salesforce.get-contact
with:
contact_id: '{{contact_id}}'
- name: update-tier
type: call
call: salesforce.update-contact
with:
contact_id: '{{contact_id}}'
loyalty_tier: '{{new_tier}}'
- name: create-discount
type: call
call: shopify.create-price-rule
with:
title: LOYALTY_{{new_tier}}_{{contact_id}}
value: '-15'
target_type: line_item
- name: send-congrats
type: call
call: mailchimp.send-transactional
with:
email: '{{get-contact.Email}}'
template: loyalty_upgrade
merge_vars:
first_name: '{{get-contact.FirstName}}'
new_tier: '{{new_tier}}'
discount_code: '{{create-discount.code}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://ua.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: contacts
path: /sobjects/Contact/{{contact_id}}
inputParameters:
- name: contact_id
in: path
operations:
- name: get-contact
method: GET
- name: update-contact
method: PATCH
- type: http
namespace: shopify
baseUri: https://under-armour.myshopify.com/admin/api/2024-01
authentication:
type: bearer
token: $secrets.shopify_token
resources:
- name: price-rules
path: /price_rules.json
operations:
- name: create-price-rule
method: POST
- type: http
namespace: mailchimp
baseUri: https://mandrillapp.com/api/1.0
authentication:
type: bearer
token: $secrets.mailchimp_transactional_key
resources:
- name: messages
path: /messages/send-template
operations:
- name: send-transactional
method: POST
Applies seasonal markdowns by reading pricing rules from SAP, updating prices on BigCommerce and Shopify storefronts, and logging the change in Microsoft Excel via SharePoint.
naftiko: '0.5'
info:
label: Seasonal Markdown Orchestrator
description: Applies seasonal markdowns by reading pricing rules from SAP, updating prices on BigCommerce and Shopify storefronts, and logging the change in Microsoft Excel via SharePoint.
tags:
- pricing
- e-commerce
- sap
- bigcommerce
- shopify
- sharepoint
capability:
exposes:
- type: mcp
namespace: pricing-ops
port: 8080
tools:
- name: apply-seasonal-markdown
description: Apply a markdown across DTC channels for a given product category.
inputParameters:
- name: category_id
in: body
type: string
description: SAP product category identifier.
- name: markdown_pct
in: body
type: number
description: Markdown percentage to apply.
steps:
- name: get-pricing-rules
type: call
call: sap.get-pricing-conditions
with:
category: '{{category_id}}'
- name: update-bigcommerce
type: call
call: bigcommerce.bulk-price-update
with:
items: '{{get-pricing-rules.items}}'
discount_pct: '{{markdown_pct}}'
- name: update-shopify
type: call
call: shopify.bulk-price-update
with:
items: '{{get-pricing-rules.items}}'
discount_pct: '{{markdown_pct}}'
- name: log-change
type: call
call: sharepoint.append-row
with:
site_id: pricing_ops
workbook: MarkdownLog.xlsx
row:
category: '{{category_id}}'
markdown: '{{markdown_pct}}'
items_count: '{{get-pricing-rules.total_items}}'
consumes:
- type: http
namespace: sap
baseUri: https://ua-sap.under-armour.com/sap/opu/odata/sap/API_SLSPRICINGCONDITIONRECORD_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: conditions
path: /A_SlsPrcgCndnRecdValidity
operations:
- name: get-pricing-conditions
method: GET
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/ua-store/v3
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: pricing
path: /catalog/products
operations:
- name: bulk-price-update
method: PUT
- type: http
namespace: shopify
baseUri: https://under-armour.myshopify.com/admin/api/2024-01
authentication:
type: bearer
token: $secrets.shopify_token
resources:
- name: products
path: /products.json
operations:
- name: bulk-price-update
method: PUT
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: workbook-rows
path: /{{site_id}}/drive/root:/{{workbook}}:/workbook/tables/Table1/rows
inputParameters:
- name: site_id
in: path
- name: workbook
in: path
operations:
- name: append-row
method: POST
Retrieves athletic apparel operational data for workflow 12.
naftiko: '0.5'
info:
label: Athletic Apparel Data Query 12
description: Retrieves athletic apparel operational data for workflow 12.
tags:
- athletic
- operations
capability:
exposes:
- type: mcp
namespace: athletic
port: 8080
tools:
- name: get-data-12
description: Query athletic apparel data for workflow 12.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
call: athletic-api.get-data
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: athletic-api
baseUri: https://api.under-armour.com/athletic-apparel/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: data
path: /data/{{entity_id}}
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-12
method: GET
Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans.
naftiko: '0.5'
info:
label: Third Party Risk Assessment Orchestrator
description: Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans.
tags:
- risk
- procurement
- compliance
capability:
exposes:
- type: mcp
namespace: risk
port: 8080
tools:
- name: run-third-party-risk-assessment-orchestrator
description: Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Third Party Risk Assessment Orchestrator for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
Retrieves athletic apparel operational data for workflow 6.
naftiko: '0.5'
info:
label: Athletic Apparel Data Query 6
description: Retrieves athletic apparel operational data for workflow 6.
tags:
- athletic
- operations
capability:
exposes:
- type: mcp
namespace: athletic
port: 8080
tools:
- name: get-data-6
description: Query athletic apparel data for workflow 6.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
call: athletic-api.get-data
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: athletic-api
baseUri: https://api.under-armour.com/athletic-apparel/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: data
path: /data/{{entity_id}}
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-6
method: GET
Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks.
naftiko: '0.5'
info:
label: Digital Transformation Progress Orchestrator
description: Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks.
tags:
- strategy
- analytics
- project-management
capability:
exposes:
- type: mcp
namespace: strategy
port: 8080
tools:
- name: run-digital-transformation-progress-orchestrator
description: Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Digital Transformation Progress Orchestrator for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder for documents, and sends a Microsoft Teams welcome message.
naftiko: '0.5'
info:
label: Employee Onboarding Pipeline
description: On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder for documents, and sends a Microsoft Teams welcome message.
tags:
- hr
- onboarding
- workday
- servicenow
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-onboarding
port: 8080
tools:
- name: trigger-onboarding
description: Orchestrate onboarding across Workday, ServiceNow, SharePoint, and Teams for a new hire.
inputParameters:
- name: workday_employee_id
in: body
type: string
description: The Workday worker ID.
- name: start_date
in: body
type: string
description: Employee start date in YYYY-MM-DD format.
- name: department
in: body
type: string
description: Department the new hire is joining.
steps:
- name: get-employee
type: call
call: workday.get-worker
with:
worker_id: '{{workday_employee_id}}'
- name: open-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'New hire onboarding: {{get-employee.full_name}}'
category: hr_onboarding
assigned_group: IT_Onboarding
- 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 Under Armour, {{get-employee.first_name}}! Your onboarding ticket is {{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: servicenow
baseUri: https://underarmour.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
Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests.
naftiko: '0.5'
info:
label: Infrastructure Capacity Planning Orchestrator
description: Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests.
tags:
- infrastructure
- planning
- finance
capability:
exposes:
- type: mcp
namespace: infrastructure
port: 8080
tools:
- name: run-infrastructure-capacity-planning-orchestrator
description: Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Infrastructure Capacity Planning Orchestrator for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
Aggregates campaign data from Google Analytics, Facebook Ads, and Instagram into a unified Power BI dataset refresh for the marketing leadership dashboard.
naftiko: '0.5'
info:
label: Campaign Performance Dashboard Orchestrator
description: Aggregates campaign data from Google Analytics, Facebook Ads, and Instagram into a unified Power BI dataset refresh for the marketing leadership dashboard.
tags:
- marketing
- analytics
- google-analytics
- facebook
- instagram
- power-bi
capability:
exposes:
- type: mcp
namespace: campaign-dashboard
port: 8080
tools:
- name: refresh-campaign-dashboard
description: Pull multi-channel campaign metrics and refresh the Power BI dashboard.
inputParameters:
- name: campaign_name
in: body
type: string
description: Campaign name to aggregate metrics for.
- name: date_range
in: body
type: string
description: Date range in YYYY-MM-DD/YYYY-MM-DD format.
steps:
- name: get-ga-data
type: call
call: ga.get-report
with:
campaign: '{{campaign_name}}'
date_range: '{{date_range}}'
- name: get-fb-data
type: call
call: meta.get-campaign-insights
with:
campaign_name: '{{campaign_name}}'
date_range: '{{date_range}}'
- name: refresh-dashboard
type: call
call: powerbi.trigger-refresh
with:
workspace_id: marketing_workspace
dataset_id: campaign_performance
consumes:
- type: http
namespace: ga
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: get-report
method: POST
- type: http
namespace: meta
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.meta_ads_token
resources:
- name: campaign-insights
path: /{{campaign_id}}/insights
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-campaign-insights
method: GET
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: 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
Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports.
naftiko: '0.5'
info:
label: Marketing Campaign Performance Orchestrator
description: Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports.
tags:
- marketing
- analytics
- finance
capability:
exposes:
- type: mcp
namespace: marketing
port: 8080
tools:
- name: run-marketing-campaign-performance-orchestrator
description: Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Marketing Campaign Performance Orchestrator for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
Retrieves product inventory data from BigCommerce including stock level, low stock warning, and SKU details.
naftiko: '0.5'
info:
label: BigCommerce Product Inventory Lookup
description: Retrieves product inventory data from BigCommerce including stock level, low stock warning, and SKU details.
tags:
- e-commerce
- inventory
- bigcommerce
capability:
exposes:
- type: mcp
namespace: storefront-inventory
port: 8080
tools:
- name: get-product-inventory
description: Fetch inventory for a BigCommerce product.
inputParameters:
- name: product_id
in: body
type: string
description: BigCommerce product ID.
call: bigcommerce.get-product
with:
product_id: '{{product_id}}'
outputParameters:
- name: inventory_level
type: number
mapping: $.data.inventory_level
- name: inventory_warning_level
type: number
mapping: $.data.inventory_warning_level
- name: sku
type: string
mapping: $.data.sku
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/ua-store/v3
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: products
path: /catalog/products/{{product_id}}
inputParameters:
- name: product_id
in: path
operations:
- name: get-product
method: GET
Sends a message to a Microsoft Teams channel.
naftiko: '0.5'
info:
label: Microsoft Teams Message Sender
description: Sends a message to a Microsoft Teams channel.
tags:
- communications
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: communications
port: 8080
tools:
- name: get-microsoft
description: Sends a message to a Microsoft Teams channel.
inputParameters:
- name: entity_id
in: body
type: string
description: The microsoft teams message sender identifier.
call: communications-api.get-data
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: communications-api
baseUri: https://api.under-armour.com/communications/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: microsoft
path: /microsoft/teams/message/sender/{{entity_id}}
inputParameters:
- name: entity_id
in: path
operations:
- name: get-microsoft
method: GET
Orchestrates athletic apparel workflow 8 by coordinating across systems, validating data, and sending notifications.
naftiko: '0.5'
info:
label: Athletic Apparel Workflow 8
description: Orchestrates athletic apparel workflow 8 by coordinating across systems, validating data, and sending notifications.
tags:
- athletic
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: athletic
port: 8080
tools:
- name: run-athletic-apparel-workflow-008
description: Orchestrates athletic apparel workflow 8 by coordinating across systems, validating data, and sending notifications.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Athletic Apparel Workflow 8 for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
Retrieves active problems from Dynatrace for the Under Armour e-commerce environment, returning problem ID, title, impact, and root cause.
naftiko: '0.5'
info:
label: Dynatrace Problem Detection Lookup
description: Retrieves active problems from Dynatrace for the Under Armour e-commerce environment, returning problem ID, title, impact, and root cause.
tags:
- monitoring
- e-commerce
- dynatrace
capability:
exposes:
- type: mcp
namespace: observability
port: 8080
tools:
- name: get-active-problems
description: Fetch active Dynatrace problems.
inputParameters:
- name: time_range
in: body
type: string
description: Time range (e.g., 'last2hours').
call: dynatrace.get-problems
with:
relativeTime: '{{time_range}}'
outputParameters:
- name: total_count
type: number
mapping: $.totalCount
- name: problems
type: array
mapping: $.problems
consumes:
- type: http
namespace: dynatrace
baseUri: https://ua.live.dynatrace.com/api/v2
authentication:
type: bearer
token: $secrets.dynatrace_token
resources:
- name: problems
path: /problems
operations:
- name: get-problems
method: GET
Checks SAP inventory levels against reorder points, creates purchase requisitions for low-stock items, and notifies procurement via Microsoft Teams.
naftiko: '0.5'
info:
label: Inventory Reorder Point Orchestrator
description: Checks SAP inventory levels against reorder points, creates purchase requisitions for low-stock items, and notifies procurement via Microsoft Teams.
tags:
- supply-chain
- inventory
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: inventory-replenishment
port: 8080
tools:
- name: check-and-reorder
description: Check inventory levels and create purchase requisitions for items below reorder point.
inputParameters:
- name: plant_id
in: body
type: string
description: SAP plant ID.
- name: material_group
in: body
type: string
description: Material group to check.
steps:
- name: check-levels
type: call
call: sap.get-inventory-levels
with:
plant: '{{plant_id}}'
material_group: '{{material_group}}'
- name: create-requisition
type: call
call: sap.create-purchase-requisition
with:
items: '{{check-levels.below_reorder_items}}'
plant: '{{plant_id}}'
- name: notify-procurement
type: call
call: msteams.send-message
with:
channel_id: procurement-alerts
text: 'Reorder triggered for {{check-levels.below_reorder_count}} items in plant {{plant_id}}. PR: {{create-requisition.pr_number}}'
consumes:
- type: http
namespace: sap
baseUri: https://ua-sap.under-armour.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
operations:
- name: get-inventory-levels
method: GET
- name: requisitions
path: /A_PurchaseRequisition
operations:
- name: create-purchase-requisition
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-message
method: POST
Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders.
naftiko: '0.5'
info:
label: Quarterly Business Review Orchestrator
description: Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders.
tags:
- analytics
- business
- sharepoint
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: run-quarterly-business-review-orchestrator
description: Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Quarterly Business Review Orchestrator for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation.
naftiko: '0.5'
info:
label: Security Audit Orchestrator
description: Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation.
tags:
- security
- servicenow
- compliance
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: run-security-audit-orchestrator
description: Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Security Audit Orchestrator for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign.
naftiko: '0.5'
info:
label: Vendor Contract Renewal Pipeline
description: Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign.
tags:
- procurement
- legal
- docusign
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: run-vendor-contract-renewal-pipeline
description: Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Vendor Contract Renewal Pipeline for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
Retrieves athletic apparel operational data for workflow 9.
naftiko: '0.5'
info:
label: Athletic Apparel Data Query 9
description: Retrieves athletic apparel operational data for workflow 9.
tags:
- athletic
- operations
capability:
exposes:
- type: mcp
namespace: athletic
port: 8080
tools:
- name: get-data-9
description: Query athletic apparel data for workflow 9.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
call: athletic-api.get-data
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: athletic-api
baseUri: https://api.under-armour.com/athletic-apparel/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: data
path: /data/{{entity_id}}
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-9
method: GET
Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates.
naftiko: '0.5'
info:
label: Knowledge Base Refresh Orchestrator
description: Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates.
tags:
- knowledge-management
- collaboration
- operations
capability:
exposes:
- type: mcp
namespace: knowledge-management
port: 8080
tools:
- name: run-knowledge-base-refresh-orchestrator
description: Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Knowledge Base Refresh Orchestrator for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
Creates a new incident in ServiceNow.
naftiko: '0.5'
info:
label: ServiceNow Incident Creator
description: Creates a new incident in ServiceNow.
tags:
- it
- servicenow
capability:
exposes:
- type: mcp
namespace: it
port: 8080
tools:
- name: get-servicenow
description: Creates a new incident in ServiceNow.
inputParameters:
- name: entity_id
in: body
type: string
description: The servicenow incident creator identifier.
call: it-api.get-data
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: it-api
baseUri: https://api.under-armour.com/it/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: servicenow
path: /servicenow/incident/creator/{{entity_id}}
inputParameters:
- name: entity_id
in: path
operations:
- name: get-servicenow
method: GET
Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams.
naftiko: '0.5'
info:
label: IT Change Management Orchestrator
description: Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams.
tags:
- it
- servicenow
- operations
capability:
exposes:
- type: mcp
namespace: it
port: 8080
tools:
- name: run-it-change-management-orchestrator
description: Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed IT Change Management Orchestrator for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
Retrieves the current status and details of a Datadog monitor by ID, returning state, message, and last triggered timestamp.
naftiko: '0.5'
info:
label: Datadog Infrastructure Alert Lookup
description: Retrieves the current status and details of a Datadog monitor by ID, returning state, message, and last triggered timestamp.
tags:
- monitoring
- infrastructure
- datadog
capability:
exposes:
- type: mcp
namespace: infra-monitoring
port: 8080
tools:
- name: get-monitor-status
description: Fetch the current status of a Datadog monitor.
inputParameters:
- name: monitor_id
in: body
type: string
description: Datadog monitor ID.
call: datadog.get-monitor
with:
monitor_id: '{{monitor_id}}'
outputParameters:
- name: state
type: string
mapping: $.overall_state
- name: message
type: string
mapping: $.message
- name: last_triggered
type: string
mapping: $.overall_state_modified
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: monitors
path: /monitor/{{monitor_id}}
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation.
naftiko: '0.5'
info:
label: API Lifecycle Management Orchestrator
description: Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation.
tags:
- engineering
- api
- operations
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: run-api-lifecycle-management-orchestrator
description: Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed API Lifecycle Management Orchestrator for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
Retrieves Adobe Analytics site traffic data for the UA.com storefront, returning unique visitors, page views, and average session duration.
naftiko: '0.5'
info:
label: Adobe Analytics Traffic Report
description: Retrieves Adobe Analytics site traffic data for the UA.com storefront, returning unique visitors, page views, and average session duration.
tags:
- analytics
- e-commerce
- adobe-analytics
capability:
exposes:
- type: mcp
namespace: web-analytics
port: 8080
tools:
- name: get-site-traffic
description: Fetch UA.com traffic metrics from Adobe Analytics.
inputParameters:
- name: report_suite_id
in: body
type: string
description: The Adobe Analytics report suite ID.
- name: date_range
in: body
type: string
description: Date range in YYYY-MM-DD/YYYY-MM-DD format.
call: adobe-analytics.get-report
with:
rsid: '{{report_suite_id}}'
date_range: '{{date_range}}'
outputParameters:
- name: unique_visitors
type: number
mapping: $.totalPages[0].data[0].uniqueVisitors
- name: page_views
type: number
mapping: $.totalPages[0].data[0].pageViews
consumes:
- type: http
namespace: adobe-analytics
baseUri: https://analytics.adobe.io/api
authentication:
type: bearer
token: $secrets.adobe_analytics_token
inputParameters:
- name: x-api-key
in: header
value: $secrets.adobe_api_key
resources:
- name: reports
path: /{{company_id}}/reports
inputParameters:
- name: company_id
in: path
operations:
- name: get-report
method: POST
Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations.
naftiko: '0.5'
info:
label: Customer Journey Mapping Orchestrator
description: Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations.
tags:
- customer-experience
- analytics
- product-management
capability:
exposes:
- type: mcp
namespace: customer-experience
port: 8080
tools:
- name: run-customer-journey-mapping-orchestrator
description: Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Customer Journey Mapping Orchestrator for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
Checks size availability for a product across channels.
naftiko: '0.5'
info:
label: Product Size Availability
description: Checks size availability for a product across channels.
tags:
- inventory
- product-management
capability:
exposes:
- type: mcp
namespace: inventory
port: 8080
tools:
- name: get-product
description: Checks size availability for a product across channels.
inputParameters:
- name: entity_id
in: body
type: string
description: The product size availability identifier.
call: inventory-api.get-data
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: inventory-api
baseUri: https://api.under-armour.com/inventory/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: product
path: /product/size/availability/{{entity_id}}
inputParameters:
- name: entity_id
in: path
operations:
- name: get-product
method: GET
Retrieves YouTube channel analytics for Under Armour's brand channel, including views, subscribers gained, and watch time.
naftiko: '0.5'
info:
label: YouTube Channel Analytics Lookup
description: Retrieves YouTube channel analytics for Under Armour's brand channel, including views, subscribers gained, and watch time.
tags:
- marketing
- video
- youtube
capability:
exposes:
- type: mcp
namespace: video-analytics
port: 8080
tools:
- name: get-channel-analytics
description: Fetch YouTube channel analytics for a given date range.
inputParameters:
- name: channel_id
in: body
type: string
description: YouTube channel ID.
- name: start_date
in: body
type: string
description: Start date YYYY-MM-DD.
- name: end_date
in: body
type: string
description: End date YYYY-MM-DD.
call: youtube.get-analytics
with:
channel_id: '{{channel_id}}'
start_date: '{{start_date}}'
end_date: '{{end_date}}'
outputParameters:
- name: views
type: number
mapping: $.rows[0][0]
- name: subscribers_gained
type: number
mapping: $.rows[0][1]
consumes:
- type: http
namespace: youtube
baseUri: https://youtubeanalytics.googleapis.com/v2
authentication:
type: bearer
token: $secrets.youtube_token
resources:
- name: reports
path: /reports
operations:
- name: get-analytics
method: GET
Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports.
naftiko: '0.5'
info:
label: Sustainability Metrics Collection Orchestrator
description: Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports.
tags:
- sustainability
- analytics
- compliance
capability:
exposes:
- type: mcp
namespace: sustainability
port: 8080
tools:
- name: run-sustainability-metrics-collection-orchestrator
description: Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Sustainability Metrics Collection Orchestrator for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
Initiates a stock transfer between Under Armour warehouses by creating a transfer order in SAP, updating Oracle EBS inventory at both locations, and notifying logistics via Microsoft Teams.
naftiko: '0.5'
info:
label: Warehouse Transfer Orchestrator
description: Initiates a stock transfer between Under Armour warehouses by creating a transfer order in SAP, updating Oracle EBS inventory at both locations, and notifying logistics via Microsoft Teams.
tags:
- supply-chain
- logistics
- sap
- oracle-e-business-suite
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: warehouse-ops
port: 8080
tools:
- name: initiate-transfer
description: Create an inter-warehouse stock transfer with notifications.
inputParameters:
- name: material_id
in: body
type: string
description: SAP material number.
- name: from_plant
in: body
type: string
description: Source warehouse/plant ID.
- name: to_plant
in: body
type: string
description: Destination warehouse/plant ID.
- name: quantity
in: body
type: number
description: Quantity to transfer.
steps:
- name: create-transfer
type: call
call: sap.create-stock-transfer
with:
material: '{{material_id}}'
from_plant: '{{from_plant}}'
to_plant: '{{to_plant}}'
quantity: '{{quantity}}'
- name: update-source
type: call
call: oracle-ebs.adjust-inventory
with:
item: '{{material_id}}'
org: '{{from_plant}}'
adjustment: -{{quantity}}
- name: update-destination
type: call
call: oracle-ebs.adjust-inventory
with:
item: '{{material_id}}'
org: '{{to_plant}}'
adjustment: +{{quantity}}
- name: notify-logistics
type: call
call: msteams.send-message
with:
channel_id: logistics-ops
text: 'Stock transfer {{create-transfer.transfer_number}}: {{quantity}} units of {{material_id}} from {{from_plant}} to {{to_plant}}.'
consumes:
- type: http
namespace: sap
baseUri: https://ua-sap.under-armour.com/sap/opu/odata/sap/API_STOCK_TRANSFER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: transfers
path: /A_StockTransfer
operations:
- name: create-stock-transfer
method: POST
- type: http
namespace: oracle-ebs
baseUri: https://ua-ebs.under-armour.com/webservices/rest/inventory
authentication:
type: basic
username: $secrets.oracle_ebs_user
password: $secrets.oracle_ebs_password
resources:
- name: adjustments
path: /adjustments
operations:
- name: adjust-inventory
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-message
method: POST
Retrieves Google Analytics session and conversion data for a given date range and campaign, returning pageviews, bounce rate, and goal completions for DTC performance reviews.
naftiko: '0.5'
info:
label: Google Analytics Session Lookup
description: Retrieves Google Analytics session and conversion data for a given date range and campaign, returning pageviews, bounce rate, and goal completions for DTC performance reviews.
tags:
- analytics
- dtc
- google-analytics
capability:
exposes:
- type: mcp
namespace: analytics-reporting
port: 8080
tools:
- name: get-campaign-metrics
description: Retrieve GA session data for a specific campaign and date range.
inputParameters:
- name: campaign_name
in: body
type: string
description: The UTM campaign name to filter on.
- 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: ga.get-report
with:
campaign: '{{campaign_name}}'
start_date: '{{start_date}}'
end_date: '{{end_date}}'
outputParameters:
- name: sessions
type: number
mapping: $.rows[0].sessions
- name: bounce_rate
type: string
mapping: $.rows[0].bounceRate
- name: conversions
type: number
mapping: $.rows[0].goalCompletionsAll
consumes:
- type: http
namespace: ga
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: get-report
method: POST
When a new order is placed on BigCommerce, creates a fulfillment record in SAP, updates inventory in Oracle E-Business Suite, and sends a shipping confirmation via MailChimp to the customer.
naftiko: '0.5'
info:
label: DTC Order Fulfillment Orchestrator
description: When a new order is placed on BigCommerce, creates a fulfillment record in SAP, updates inventory in Oracle E-Business Suite, and sends a shipping confirmation via MailChimp to the customer.
tags:
- e-commerce
- fulfillment
- bigcommerce
- sap
- oracle-e-business-suite
- mailchimp
capability:
exposes:
- type: mcp
namespace: dtc-fulfillment
port: 8080
tools:
- name: process-dtc-order
description: Given a BigCommerce order ID, orchestrate fulfillment across SAP, Oracle EBS, and MailChimp shipping notification.
inputParameters:
- name: order_id
in: body
type: string
description: The BigCommerce order identifier.
steps:
- name: get-order
type: call
call: bigcommerce.get-order
with:
order_id: '{{order_id}}'
- name: create-delivery
type: call
call: sap.create-delivery
with:
order_ref: '{{get-order.id}}'
ship_to: '{{get-order.shipping_address}}'
items: '{{get-order.line_items}}'
- name: decrement-inventory
type: call
call: oracle-ebs.update-inventory
with:
items: '{{get-order.line_items}}'
warehouse: '{{create-delivery.warehouse_id}}'
- name: send-confirmation
type: call
call: mailchimp.send-transactional
with:
email: '{{get-order.customer_email}}'
template: shipping_confirmation
merge_vars:
tracking_number: '{{create-delivery.tracking_number}}'
order_id: '{{order_id}}'
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/ua-store/v2
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: orders
path: /orders/{{order_id}}
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: sap
baseUri: https://ua-sap.under-armour.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
operations:
- name: create-delivery
method: POST
- type: http
namespace: oracle-ebs
baseUri: https://ua-ebs.under-armour.com/webservices/rest/inventory
authentication:
type: basic
username: $secrets.oracle_ebs_user
password: $secrets.oracle_ebs_password
resources:
- name: inventory
path: /on-hand
operations:
- name: update-inventory
method: PUT
- type: http
namespace: mailchimp
baseUri: https://mandrillapp.com/api/1.0
authentication:
type: bearer
token: $secrets.mailchimp_transactional_key
resources:
- name: messages
path: /messages/send-template
operations:
- name: send-transactional
method: POST
Coordinates a new product launch by creating SKUs in SAP, publishing to BigCommerce and Shopify, scheduling a MailChimp email campaign, and posting teaser content to Instagram.
naftiko: '0.5'
info:
label: Product Launch Coordination Orchestrator
description: Coordinates a new product launch by creating SKUs in SAP, publishing to BigCommerce and Shopify, scheduling a MailChimp email campaign, and posting teaser content to Instagram.
tags:
- product-management
- e-commerce
- sap
- bigcommerce
- shopify
- mailchimp
- instagram
capability:
exposes:
- type: mcp
namespace: product-launch
port: 8080
tools:
- name: coordinate-launch
description: Orchestrate cross-platform product launch activities.
inputParameters:
- name: material_id
in: body
type: string
description: SAP material number for the new product.
- name: launch_date
in: body
type: string
description: Planned launch date YYYY-MM-DD.
steps:
- name: get-product
type: call
call: sap.get-material
with:
material_id: '{{material_id}}'
- name: publish-bigcommerce
type: call
call: bigcommerce.create-product
with:
name: '{{get-product.description}}'
price: '{{get-product.list_price}}'
sku: '{{material_id}}'
- name: publish-shopify
type: call
call: shopify.create-product
with:
title: '{{get-product.description}}'
variants_price: '{{get-product.list_price}}'
sku: '{{material_id}}'
- name: schedule-email
type: call
call: mailchimp.schedule-campaign
with:
list_id: ua_subscribers
subject: 'New Arrival: {{get-product.description}}'
send_time: '{{launch_date}}T10:00:00Z'
- name: post-teaser
type: call
call: instagram.create-media
with:
caption: 'Coming {{launch_date}}: {{get-product.description}} #UnderArmour #NewArrival'
image_url: '{{get-product.image_url}}'
consumes:
- type: http
namespace: sap
baseUri: https://ua-sap.under-armour.com/sap/opu/odata/sap/API_PRODUCT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: materials
path: /A_Product('{{material_id}}')
inputParameters:
- name: material_id
in: path
operations:
- name: get-material
method: GET
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/ua-store/v3
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: products
path: /catalog/products
operations:
- name: create-product
method: POST
- type: http
namespace: shopify
baseUri: https://under-armour.myshopify.com/admin/api/2024-01
authentication:
type: bearer
token: $secrets.shopify_token
resources:
- name: products
path: /products.json
operations:
- name: create-product
method: POST
- type: http
namespace: mailchimp
baseUri: https://us1.api.mailchimp.com/3.0
authentication:
type: basic
username: anystring
password: $secrets.mailchimp_api_key
resources:
- name: campaigns
path: /campaigns
operations:
- name: schedule-campaign
method: POST
- type: http
namespace: instagram
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.instagram_token
resources:
- name: media
path: /{{ig_user_id}}/media
inputParameters:
- name: ig_user_id
in: path
operations:
- name: create-media
method: POST
Creates a LinkedIn sponsored content campaign by pulling audience segments from Salesforce Marketing Cloud, publishing ad creative, and reporting initial performance back to Google Sheets.
naftiko: '0.5'
info:
label: LinkedIn Sponsored Content Orchestrator
description: Creates a LinkedIn sponsored content campaign by pulling audience segments from Salesforce Marketing Cloud, publishing ad creative, and reporting initial performance back to Google Sheets.
tags:
- marketing
- social-media
- linkedin
- salesforce
- google-sheets
capability:
exposes:
- type: mcp
namespace: social-campaigns
port: 8080
tools:
- name: launch-linkedin-campaign
description: Create and launch a LinkedIn sponsored campaign with audience from SFMC and reporting in Google Sheets.
inputParameters:
- name: campaign_name
in: body
type: string
description: Name for the new campaign.
- name: audience_segment_id
in: body
type: string
description: Salesforce Marketing Cloud segment ID.
- name: creative_url
in: body
type: string
description: URL of the ad creative asset.
steps:
- name: get-audience
type: call
call: sfmc.get-segment
with:
segment_id: '{{audience_segment_id}}'
- name: create-campaign
type: call
call: linkedin.create-campaign
with:
name: '{{campaign_name}}'
targeting: '{{get-audience.targeting_criteria}}'
creative_url: '{{creative_url}}'
- name: log-campaign
type: call
call: gsheets.append-row
with:
spreadsheet_id: ua_campaign_tracker
row:
campaign_name: '{{campaign_name}}'
platform: LinkedIn
campaign_id: '{{create-campaign.id}}'
status: Launched
consumes:
- type: http
namespace: sfmc
baseUri: https://ua.rest.marketingcloudapis.com/v1
authentication:
type: bearer
token: $secrets.sfmc_token
resources:
- name: segments
path: /segments/{{segment_id}}
inputParameters:
- name: segment_id
in: path
operations:
- name: get-segment
method: GET
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: campaigns
path: /adCampaignsV2
operations:
- name: create-campaign
method: POST
- type: http
namespace: gsheets
baseUri: https://sheets.googleapis.com/v4
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: rows
path: /spreadsheets/{{spreadsheet_id}}/values/Sheet1:append
inputParameters:
- name: spreadsheet_id
in: path
operations:
- name: append-row
method: POST
Triggers a Power BI dataset refresh.
naftiko: '0.5'
info:
label: Power BI Dashboard Refresher
description: Triggers a Power BI dataset refresh.
tags:
- analytics
- power-bi
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: get-power
description: Triggers a Power BI dataset refresh.
inputParameters:
- name: entity_id
in: body
type: string
description: The power bi dashboard refresher identifier.
call: analytics-api.get-data
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: analytics-api
baseUri: https://api.under-armour.com/analytics/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: power
path: /power/bi/dashboard/refresher/{{entity_id}}
inputParameters:
- name: entity_id
in: path
operations:
- name: get-power
method: GET
Handles customer data privacy requests by locating records, processing deletions, and confirming compliance.
naftiko: '0.5'
info:
label: Customer Data Privacy Request Handler
description: Handles customer data privacy requests by locating records, processing deletions, and confirming compliance.
tags:
- compliance
- privacy
- customer-service
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: run-customer-data-privacy-request-handler
description: Handles customer data privacy requests by locating records, processing deletions, and confirming compliance.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Customer Data Privacy Request Handler for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
When a product is updated in SAP, synchronizes the product title, description, price, and inventory count to the Shopify DTC storefront.
naftiko: '0.5'
info:
label: Shopify Product Catalog Sync
description: When a product is updated in SAP, synchronizes the product title, description, price, and inventory count to the Shopify DTC storefront.
tags:
- e-commerce
- product-management
- sap
- shopify
capability:
exposes:
- type: mcp
namespace: product-sync
port: 8080
tools:
- name: sync-product-to-shopify
description: Push a SAP product update to the Shopify storefront.
inputParameters:
- name: sap_material_id
in: body
type: string
description: The SAP material number.
steps:
- name: get-material
type: call
call: sap.get-material
with:
material_id: '{{sap_material_id}}'
- name: update-shopify
type: call
call: shopify.update-product
with:
title: '{{get-material.description}}'
body_html: '{{get-material.long_text}}'
variants_price: '{{get-material.list_price}}'
inventory_quantity: '{{get-material.available_stock}}'
consumes:
- type: http
namespace: sap
baseUri: https://ua-sap.under-armour.com/sap/opu/odata/sap/API_PRODUCT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: materials
path: /A_Product('{{material_id}}')
inputParameters:
- name: material_id
in: path
operations:
- name: get-material
method: GET
- type: http
namespace: shopify
baseUri: https://under-armour.myshopify.com/admin/api/2024-01
authentication:
type: bearer
token: $secrets.shopify_token
resources:
- name: products
path: /products/{{product_id}}.json
inputParameters:
- name: product_id
in: path
operations:
- name: update-product
method: PUT
Retrieves a file from Google Drive.
naftiko: '0.5'
info:
label: Google Drive File Viewer
description: Retrieves a file from Google Drive.
tags:
- collaboration
- google-drive
capability:
exposes:
- type: mcp
namespace: collaboration
port: 8080
tools:
- name: get-google
description: Retrieves a file from Google Drive.
inputParameters:
- name: entity_id
in: body
type: string
description: The google drive file viewer identifier.
call: collaboration-api.get-data
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: collaboration-api
baseUri: https://api.under-armour.com/collaboration/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: google
path: /google/drive/file/viewer/{{entity_id}}
inputParameters:
- name: entity_id
in: path
operations:
- name: get-google
method: GET
Retrieves available colorways for a product style.
naftiko: '0.5'
info:
label: Product Colorway Catalog
description: Retrieves available colorways for a product style.
tags:
- product-management
- merchandising
capability:
exposes:
- type: mcp
namespace: product-management
port: 8080
tools:
- name: get-product
description: Retrieves available colorways for a product style.
inputParameters:
- name: entity_id
in: body
type: string
description: The product colorway catalog identifier.
call: product-management-api.get-data
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: product-management-api
baseUri: https://api.under-armour.com/product-management/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: product
path: /product/colorway/catalog/{{entity_id}}
inputParameters:
- name: entity_id
in: path
operations:
- name: get-product
method: GET
Computes vendor evaluation scorecards from SAP data in Snowflake, flags underperformers, creates Jira review tasks, and notifies procurement via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Vendor Evaluation Scorecard
description: Computes vendor evaluation scorecards from SAP data in Snowflake, flags underperformers, creates Jira review tasks, and notifies procurement via Microsoft Teams.
tags:
- procurement
- sap
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_vendor_evaluatio
port: 8080
tools:
- name: sap-vendor
description: Given an execution date, run the sap vendor evaluation scorecard process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_VENDOR_EVALUATION_SCORECARD LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_VENDOR_EVALUATION_SCORECAR_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: ULOPS
issue_type: Task
summary: SAP Vendor Evaluation Scorecard - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_vendor_evaluatio_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://unilever.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Validates consumer panel data ingestion completeness in Snowflake, flags missing feeds, creates ServiceNow incidents, and alerts the analytics team via Microsoft Teams.
naftiko: '0.5'
info:
label: Consumer Panel Data Ingestion Validator
description: Validates consumer panel data ingestion completeness in Snowflake, flags missing feeds, creates ServiceNow incidents, and alerts the analytics team via Microsoft Teams.
tags:
- analytics
- consumer-insights
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: consumer_panel_data_
port: 8080
tools:
- name: consumer-panel
description: Given an execution date, run the consumer panel data ingestion validator process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.CONSUMER_PANEL_DATA_INGESTION_VALIDATOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.CONSUMER_PANEL_DATA_INGESTION__RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: analytics
short_description: Consumer Panel Data Ingestion Validator processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_consumer_panel_data__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://unilever.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves customer master data from SAP by customer number.
naftiko: '0.5'
info:
label: SAP Customer Master Lookup
description: Retrieves customer master data from SAP by customer number.
tags:
- sales
- sap
- customer-data
capability:
exposes:
- type: mcp
namespace: customer-data
port: 8080
tools:
- name: get-customer
description: Given a SAP customer number, retrieve master data. Use for customer verification.
inputParameters:
- name: customer_number
in: body
type: string
description: The SAP customer number.
call: sap.get-customer
with:
customer_number: '{{customer_number}}'
outputParameters:
- name: customer_name
type: string
mapping: $.d.CustomerName
- name: country
type: string
mapping: $.d.Country
consumes:
- type: http
namespace: sap
baseUri: https://unilever-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: customers
path: /A_Customer('{{customer_number}}')
inputParameters:
- name: customer_number
in: path
operations:
- name: get-customer
method: GET
Pulls succession planning data from Workday into Snowflake, identifies gaps, creates Jira development plans, and notifies HR leadership via Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Succession Planning Digest
description: Pulls succession planning data from Workday into Snowflake, identifies gaps, creates Jira development plans, and notifies HR leadership via Microsoft Teams.
tags:
- hr
- succession-planning
- workday
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_succession_p
port: 8080
tools:
- name: workday-succession
description: Given an execution date, run the workday succession planning digest process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.WORKDAY_SUCCESSION_PLANNING_DIGEST LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.WORKDAY_SUCCESSION_PLANNING_DI_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: ULOPS
issue_type: Task
summary: Workday Succession Planning Digest - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_workday_succession_p_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://unilever.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a personal care production line goes down, retrieves SAP equipment status, creates a ServiceNow ticket, and notifies plant operations via Microsoft Teams.
naftiko: '0.5'
info:
label: Personal Care Production Line Downtime Response
description: When a personal care production line goes down, retrieves SAP equipment status, creates a ServiceNow ticket, and notifies plant operations via Microsoft Teams.
tags:
- manufacturing
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: manufacturing-ops
port: 8080
tools:
- name: handle-line-downtime
description: 'Orchestrate production line downtime: check SAP equipment, create ServiceNow ticket, notify plant ops.'
inputParameters:
- name: equipment_id
in: body
type: string
description: The SAP equipment ID.
- name: plant_code
in: body
type: string
description: The plant code.
steps:
- name: get-equipment-status
type: call
call: sap.get-equipment
with:
equipment_id: '{{equipment_id}}'
- name: create-maintenance-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'Line downtime: {{equipment_id}} at {{plant_code}}'
category: plant_maintenance
urgency: '1'
assignment_group: Plant_Maintenance_{{plant_code}}
- name: notify-plant-ops
type: call
call: msteams.send-message
with:
channel_id: plant-ops-{{plant_code}}
text: 'ALERT: Line {{equipment_id}} down at {{plant_code}}. Status: {{get-equipment-status.system_status}}. Ticket: {{create-maintenance-ticket.number}}'
consumes:
- type: http
namespace: sap
baseUri: https://unilever-s4.sap.com/sap/opu/odata/sap/API_EQUIPMENT
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: equipment
path: /A_Equipment('{{equipment_id}}')
inputParameters:
- name: equipment_id
in: path
operations:
- name: get-equipment
method: GET
- type: http
namespace: servicenow
baseUri: https://unilever.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/{{channel_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves a transportation order from SAP, returning carrier, route, and status.
naftiko: '0.5'
info:
label: SAP Transportation Order Lookup
description: Retrieves a transportation order from SAP, returning carrier, route, and status.
tags:
- logistics
- sap
- transportation
capability:
exposes:
- type: mcp
namespace: logistics
port: 8080
tools:
- name: get-transport-order
description: Given a SAP transportation order number, retrieve details. Use for shipment tracking.
inputParameters:
- name: transport_order
in: body
type: string
description: The transportation order number.
call: sap.get-transport
with:
transport_order: '{{transport_order}}'
outputParameters:
- name: carrier
type: string
mapping: $.d.Carrier
- name: status
type: string
mapping: $.d.TransportationStatus
consumes:
- type: http
namespace: sap
baseUri: https://unilever-s4.sap.com/sap/opu/odata/sap/API_FREIGHT_ORDER
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: transport-orders
path: /FreightOrder('{{transport_order}}')
inputParameters:
- name: transport_order
in: path
operations:
- name: get-transport
method: GET
Reconciles intercompany elimination entries in SAP via Snowflake, flags imbalances, creates ServiceNow tasks, and notifies the consolidation team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Intercompany Elimination Reconciler
description: Reconciles intercompany elimination entries in SAP via Snowflake, flags imbalances, creates ServiceNow tasks, and notifies the consolidation team via Microsoft Teams.
tags:
- finance
- sap
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_intercompany_eli
port: 8080
tools:
- name: sap-intercompany
description: Given an execution date, run the sap intercompany elimination reconciler process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_INTERCOMPANY_ELIMINATION_RECONCILER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_INTERCOMPANY_ELIMINATION_R_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: finance
short_description: SAP Intercompany Elimination Reconciler processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_intercompany_eli_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://unilever.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Analyzes factory yield data from SAP in Snowflake, identifies improvement opportunities, creates Jira tasks, and notifies plant management via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Factory Yield Optimization Report
description: Analyzes factory yield data from SAP in Snowflake, identifies improvement opportunities, creates Jira tasks, and notifies plant management via Microsoft Teams.
tags:
- manufacturing
- sap
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_factory_yield_op
port: 8080
tools:
- name: sap-factory
description: Given an execution date, run the sap factory yield optimization report process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_FACTORY_YIELD_OPTIMIZATION_REPORT LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_FACTORY_YIELD_OPTIMIZATION_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: ULOPS
issue_type: Task
summary: SAP Factory Yield Optimization Report - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_factory_yield_op_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://unilever.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Validates SAP period-end close completeness in Snowflake, flags open items, creates ServiceNow tasks, and notifies the accounting team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Period End Close Validator
description: Validates SAP period-end close completeness in Snowflake, flags open items, creates ServiceNow tasks, and notifies the accounting team via Microsoft Teams.
tags:
- finance
- sap
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_period_end_close
port: 8080
tools:
- name: sap-period
description: Given an execution date, run the sap period end close validator process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_PERIOD_END_CLOSE_VALIDATOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_PERIOD_END_CLOSE_VALIDATOR_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: finance
short_description: SAP Period End Close Validator processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_period_end_close_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://unilever.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Tracks palm oil sourcing traceability in Snowflake, validates against sustainability commitments, creates Jira action items, and notifies the sustainability team via Microsoft Teams.
naftiko: '0.5'
info:
label: Sustainable Sourcing Palm Oil Tracker
description: Tracks palm oil sourcing traceability in Snowflake, validates against sustainability commitments, creates Jira action items, and notifies the sustainability team via Microsoft Teams.
tags:
- sustainability
- sourcing
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sustainable_sourcing
port: 8080
tools:
- name: sustainable-sourcing
description: Given an execution date, run the sustainable sourcing palm oil tracker process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SUSTAINABLE_SOURCING_PALM_OIL_TRACKER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SUSTAINABLE_SOURCING_PALM_OIL__RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: ULOPS
issue_type: Task
summary: Sustainable Sourcing Palm Oil Tracker - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sustainable_sourcing_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://unilever.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Pulls gender, ethnicity, and leadership representation data from Workday and publishes a quarterly D&I metrics digest to the HR leadership Teams channel.
naftiko: '0.5'
info:
label: Workforce Diversity and Inclusion Report
description: Pulls gender, ethnicity, and leadership representation data from Workday and publishes a quarterly D&I metrics digest to the HR leadership Teams channel.
tags:
- hr
- diversity-inclusion
- workday
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: di-reporting
port: 8080
tools:
- name: publish-di-report
description: Given a reporting quarter, retrieve D&I workforce metrics from Workday and post a quarterly diversity and inclusion digest to the HR leadership Teams channel.
inputParameters:
- name: reporting_quarter
in: body
type: string
description: Reporting quarter in YYYY-QN format (e.g., 2026-Q1).
- name: hr_leadership_channel_id
in: body
type: string
description: Teams channel ID for HR leadership.
steps:
- name: get-di-metrics
type: call
call: workday-di.get-di-report
with:
period: '{{reporting_quarter}}'
- name: post-di-digest
type: call
call: msteams-di.post-channel-message
with:
channel_id: '{{hr_leadership_channel_id}}'
text: 'D&I Report ({{reporting_quarter}}): Women in leadership: {{get-di-metrics.women_leadership_pct}}% | Gender parity score: {{get-di-metrics.gender_parity_score}} | Diverse hires: {{get-di-metrics.diverse_hire_pct}}%'
consumes:
- type: http
namespace: workday-di
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: di-report
path: /reports/diversityInclusion
inputParameters:
- name: period
in: query
operations:
- name: get-di-report
method: GET
- type: http
namespace: msteams-di
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: channel_id
in: path
operations:
- name: post-channel-message
method: POST
When an employee or consumer submits a GDPR data subject access request, creates a ServiceNow compliance ticket with 30-day SLA and notifies the data privacy team via Teams.
naftiko: '0.5'
info:
label: Data Privacy Subject Access Request Handling
description: When an employee or consumer submits a GDPR data subject access request, creates a ServiceNow compliance ticket with 30-day SLA and notifies the data privacy team via Teams.
tags:
- compliance
- gdpr
- data-privacy
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: data-privacy
port: 8080
tools:
- name: handle-subject-access-request
description: Given a requestor email and request type (access, erasure, rectification), create a ServiceNow GDPR compliance ticket with a 30-day SLA and notify the privacy team via Teams.
inputParameters:
- name: requestor_email
in: body
type: string
description: Email address of the data subject making the request.
- name: request_type
in: body
type: string
description: 'GDPR request type: access, erasure, rectification, portability.'
- name: privacy_team_channel_id
in: body
type: string
description: Teams channel ID for the data privacy team.
steps:
- name: create-dsar-ticket
type: call
call: servicenow-dsar.create-task
with:
short_description: GDPR {{request_type}} request — {{requestor_email}}
category: data_privacy
assignment_group: Data_Privacy_Team
due_date: 30_days_from_now
- name: notify-privacy-team
type: call
call: msteams-dsar.post-channel-message
with:
channel_id: '{{privacy_team_channel_id}}'
text: 'New GDPR request: {{request_type}} from {{requestor_email}} | SLA: 30 days | ServiceNow ticket: {{create-dsar-ticket.number}}'
consumes:
- type: http
namespace: servicenow-dsar
baseUri: https://unilever.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-dsar
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: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Tracks manufacturing waste data from SAP in Snowflake, validates regulatory compliance, creates ServiceNow audit tasks, and notifies the EHS team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Waste Management Compliance Report
description: Tracks manufacturing waste data from SAP in Snowflake, validates regulatory compliance, creates ServiceNow audit tasks, and notifies the EHS team via Microsoft Teams.
tags:
- sustainability
- compliance
- sap
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_waste_management
port: 8080
tools:
- name: sap-waste
description: Given an execution date, run the sap waste management compliance report process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_WASTE_MANAGEMENT_COMPLIANCE_REPORT LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_WASTE_MANAGEMENT_COMPLIANC_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: sustainability
short_description: SAP Waste Management Compliance Report processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_waste_management_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://unilever.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Processes returned goods in SAP, logs return reasons in Snowflake, creates Jira root cause analysis tasks, and notifies the quality team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Returned Goods Processing Chain
description: Processes returned goods in SAP, logs return reasons in Snowflake, creates Jira root cause analysis tasks, and notifies the quality team via Microsoft Teams.
tags:
- quality
- sap
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_returned_goods_p
port: 8080
tools:
- name: sap-returned
description: Given an execution date, run the sap returned goods processing chain process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_RETURNED_GOODS_PROCESSING_CHAIN LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_RETURNED_GOODS_PROCESSING__RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: ULOPS
issue_type: Task
summary: SAP Returned Goods Processing Chain - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_returned_goods_p_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://unilever.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Launches the annual performance review cycle in Workday for all employees, posts a kickoff notification to the global HR Teams channel, and tracks completion via ServiceNow.
naftiko: '0.5'
info:
label: Annual Performance Review Kickoff
description: Launches the annual performance review cycle in Workday for all employees, posts a kickoff notification to the global HR Teams channel, and tracks completion via ServiceNow.
tags:
- hr
- performance-management
- workday
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: performance-mgmt
port: 8080
tools:
- name: launch-annual-review
description: Given a review cycle name and deadline, launch the performance review in Workday, create a ServiceNow tracking task, and notify all managers via Teams.
inputParameters:
- name: cycle_name
in: body
type: string
description: Name of the performance review cycle (e.g., 2026 Annual Performance Review).
- name: submission_deadline
in: body
type: string
description: Review submission deadline in YYYY-MM-DD format.
- name: global_hr_channel_id
in: body
type: string
description: Teams channel ID for the global HR communications channel.
steps:
- name: launch-review-cycle
type: call
call: workday-perf.create-review-cycle
with:
cycleName: '{{cycle_name}}'
dueDate: '{{submission_deadline}}'
- name: create-tracking-task
type: call
call: servicenow-perf.create-task
with:
short_description: '{{cycle_name}} completion tracking'
category: performance_management
assignment_group: HR_Operations
due_date: '{{submission_deadline}}'
- name: notify-managers
type: call
call: msteams-perf.post-channel-message
with:
channel_id: '{{global_hr_channel_id}}'
text: '{{cycle_name}} is now open. All managers must complete reviews by {{submission_deadline}}. Log in to Workday to begin. Tracking task: {{create-tracking-task.number}}'
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: /performanceReviewCycles
operations:
- name: create-review-cycle
method: POST
- type: http
namespace: servicenow-perf
baseUri: https://unilever.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-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: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Retrieves open Salesforce opportunity pipeline for Unilever's top retail accounts and posts a weekly pipeline digest to the global sales leadership Teams channel.
naftiko: '0.5'
info:
label: Retail Customer Opportunity Pipeline Report
description: Retrieves open Salesforce opportunity pipeline for Unilever's top retail accounts and posts a weekly pipeline digest to the global sales leadership Teams channel.
tags:
- sales
- crm
- salesforce
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: sales-pipeline
port: 8080
tools:
- name: digest-retail-pipeline
description: Retrieve all open Salesforce opportunities for a key account tier and post a pipeline health digest to the global sales leadership Teams channel.
inputParameters:
- name: account_tier
in: body
type: string
description: Retail account tier to report on (e.g., Global Strategic, Regional Key Account).
- name: sales_channel_id
in: body
type: string
description: Teams channel ID for global sales leadership.
steps:
- name: get-pipeline-data
type: call
call: salesforce-pipeline.search-opportunities
with:
account_tier: '{{account_tier}}'
stage: Open
- name: post-pipeline-digest
type: call
call: msteams-pipeline.post-channel-message
with:
channel_id: '{{sales_channel_id}}'
text: 'Retail Pipeline ({{account_tier}}): Open opps: {{get-pipeline-data.count}} | Total value: {{get-pipeline-data.total_amount}} | Closing this month: {{get-pipeline-data.closing_this_month}}'
consumes:
- type: http
namespace: salesforce-pipeline
baseUri: https://unilever.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /query
inputParameters:
- name: account_tier
in: query
- name: stage
in: query
operations:
- name: search-opportunities
method: GET
- type: http
namespace: msteams-pipeline
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: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Retrieves routing operations for a material from SAP, returning operation details and work center.
naftiko: '0.5'
info:
label: SAP Routing Operation Lookup
description: Retrieves routing operations for a material from SAP, returning operation details and work center.
tags:
- manufacturing
- sap
- production-planning
capability:
exposes:
- type: mcp
namespace: production-planning
port: 8080
tools:
- name: get-routing
description: Given a SAP material and plant, retrieve routing operations. Use for production planning.
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-routing
with:
material_number: '{{material_number}}'
plant: '{{plant}}'
outputParameters:
- name: work_center
type: string
mapping: $.d.WorkCenter
consumes:
- type: http
namespace: sap
baseUri: https://unilever-s4.sap.com/sap/opu/odata/sap/API_PRODUCTION_ROUTING
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: routings
path: /A_ProductionRouting
operations:
- name: get-routing
method: GET
Analyzes Azure cloud costs in Snowflake, identifies savings opportunities, creates Jira optimization tasks, and notifies the cloud governance team via Microsoft Teams.
naftiko: '0.5'
info:
label: Azure FinOps Cost Optimization Advisor
description: Analyzes Azure cloud costs in Snowflake, identifies savings opportunities, creates Jira optimization tasks, and notifies the cloud governance team via Microsoft Teams.
tags:
- cloud
- microsoft-azure
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: azure_finops_cost_op
port: 8080
tools:
- name: azure-finops
description: Given an execution date, run the azure finops cost optimization advisor process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.AZURE_FINOPS_COST_OPTIMIZATION_ADVISOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.AZURE_FINOPS_COST_OPTIMIZATION_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: ULOPS
issue_type: Task
summary: Azure FinOps Cost Optimization Advisor - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_azure_finops_cost_op_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://unilever.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Tracks employee global mobility assignments in Workday via Snowflake, flags upcoming visa expirations, creates Jira tasks, and notifies HR via Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Global Mobility Tracker
description: Tracks employee global mobility assignments in Workday via Snowflake, flags upcoming visa expirations, creates Jira tasks, and notifies HR via Microsoft Teams.
tags:
- hr
- global-mobility
- workday
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_global_mobil
port: 8080
tools:
- name: workday-global
description: Given an execution date, run the workday global mobility tracker process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.WORKDAY_GLOBAL_MOBILITY_TRACKER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.WORKDAY_GLOBAL_MOBILITY_TRACKE_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: ULOPS
issue_type: Task
summary: Workday Global Mobility Tracker - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_workday_global_mobil_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://unilever.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Validates product content on digital shelves against brand standards in Snowflake, creates Jira remediation tasks, and alerts the e-commerce team via Microsoft Teams.
naftiko: '0.5'
info:
label: Digital Shelf Content Compliance Checker
description: Validates product content on digital shelves against brand standards in Snowflake, creates Jira remediation tasks, and alerts the e-commerce team via Microsoft Teams.
tags:
- e-commerce
- content
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: digital_shelf_conten
port: 8080
tools:
- name: digital-shelf
description: Given an execution date, run the digital shelf content compliance checker process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.DIGITAL_SHELF_CONTENT_COMPLIANCE_CHECKER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.DIGITAL_SHELF_CONTENT_COMPLIAN_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: ULOPS
issue_type: Task
summary: Digital Shelf Content Compliance Checker - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_digital_shelf_conten_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://unilever.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Enriches a Salesforce retail account with the latest trade terms, promotional history, and volume data from SAP, and notifies the key account manager via Microsoft Teams.
naftiko: '0.5'
info:
label: Salesforce Account Enrichment
description: Enriches a Salesforce retail account with the latest trade terms, promotional history, and volume data from SAP, and notifies the key account manager via Microsoft Teams.
tags:
- sales
- crm
- salesforce
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sales-enrichment
port: 8080
tools:
- name: enrich-retailer-account
description: Given a Salesforce account ID and SAP customer number, fetch the latest trade terms and sales volume from SAP, update the Salesforce account record, and notify the KAM via Teams.
inputParameters:
- name: salesforce_account_id
in: body
type: string
description: The Salesforce account ID for the retail customer.
- name: sap_customer_number
in: body
type: string
description: The SAP customer number corresponding to this retailer.
- name: kam_upn
in: body
type: string
description: UPN of the key account manager to notify.
steps:
- name: get-sap-customer
type: call
call: sap-sales.get-customer
with:
customer_number: '{{sap_customer_number}}'
- name: update-sf-account
type: call
call: salesforce.update-account
with:
account_id: '{{salesforce_account_id}}'
annual_revenue: '{{get-sap-customer.annual_revenue}}'
trade_terms: '{{get-sap-customer.trade_terms}}'
- name: notify-kam
type: call
call: msteams-sales.send-message
with:
recipient_upn: '{{kam_upn}}'
text: 'Account enriched: SAP customer {{sap_customer_number}} data synced to Salesforce. Trade terms: {{get-sap-customer.trade_terms}}. Annual revenue: {{get-sap-customer.annual_revenue}}'
consumes:
- type: http
namespace: sap-sales
baseUri: https://unilever-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: customers
path: /A_BusinessPartner('{{customer_number}}')
inputParameters:
- name: customer_number
in: path
operations:
- name: get-customer
method: GET
- type: http
namespace: salesforce
baseUri: https://unilever.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
- type: http
namespace: msteams-sales
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
Pulls demand forecast signals from Salesforce opportunity pipeline for key retail customers and updates SAP supply planning parameters to align production with anticipated demand.
naftiko: '0.5'
info:
label: Supply Chain Demand Signal Sync
description: Pulls demand forecast signals from Salesforce opportunity pipeline for key retail customers and updates SAP supply planning parameters to align production with anticipated demand.
tags:
- supply-chain
- sap
- salesforce
- demand-planning
capability:
exposes:
- type: mcp
namespace: supply-chain
port: 8080
tools:
- name: sync-demand-signals
description: Given a retail account ID in Salesforce, retrieve opportunity pipeline demand signals and update SAP supply planning parameters to reflect anticipated order volumes.
inputParameters:
- name: salesforce_account_id
in: body
type: string
description: The Salesforce account ID of the retail customer.
- name: planning_horizon_months
in: body
type: integer
description: Number of months forward for the demand signal (1-12).
steps:
- name: get-sf-pipeline
type: call
call: salesforce-supply.get-account-opportunities
with:
account_id: '{{salesforce_account_id}}'
- name: update-sap-demand
type: call
call: sap-supply.update-demand-plan
with:
customer_id: '{{get-sf-pipeline.sap_customer_number}}'
forecast_quantity: '{{get-sf-pipeline.total_quantity}}'
horizon_months: '{{planning_horizon_months}}'
consumes:
- type: http
namespace: salesforce-supply
baseUri: https://unilever.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /sobjects/Account/{{account_id}}/Opportunities
inputParameters:
- name: account_id
in: path
operations:
- name: get-account-opportunities
method: GET
- type: http
namespace: sap-supply
baseUri: https://unilever-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_REQUIREMENTS_PLANNING_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: demand-plans
path: /A_DemandPlanItem
operations:
- name: update-demand-plan
method: POST
Traces batch genealogy from raw materials to finished goods in SAP via Snowflake, logs the full chain, and notifies the quality team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Batch Genealogy Traceability Chain
description: Traces batch genealogy from raw materials to finished goods in SAP via Snowflake, logs the full chain, and notifies the quality team via Microsoft Teams.
tags:
- quality
- sap
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_batch_genealogy_
port: 8080
tools:
- name: sap-batch
description: Given an execution date, run the sap batch genealogy traceability chain process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_BATCH_GENEALOGY_TRACEABILITY_CHAIN LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_BATCH_GENEALOGY_TRACEABILI_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_batch_genealogy__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Compares Workday headcount against budget in Snowflake, flags variances, refreshes Power BI dashboards, and notifies finance via Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Headcount Budget Variance Report
description: Compares Workday headcount against budget in Snowflake, flags variances, refreshes Power BI dashboards, and notifies finance via Microsoft Teams.
tags:
- hr
- finance
- workday
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_headcount_bu
port: 8080
tools:
- name: workday-headcount
description: Given an execution date, run the workday headcount budget variance report process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.WORKDAY_HEADCOUNT_BUDGET_VARIANCE_REPORT LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.WORKDAY_HEADCOUNT_BUDGET_VARIA_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_workday_headcount_bu_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a supplier invoice arrives in SAP, validates it against the purchase order, routes for approval in ServiceNow, and notifies the accounts payable team via Microsoft Teams.
naftiko: '0.5'
info:
label: Supplier Invoice Processing and Approval
description: When a supplier invoice arrives in SAP, validates it against the purchase order, routes for approval in ServiceNow, and notifies the accounts payable team via Microsoft Teams.
tags:
- finance
- accounts-payable
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finance-ap
port: 8080
tools:
- name: process-supplier-invoice
description: Given a SAP invoice number and PO number, validate the invoice for three-way match, create a ServiceNow approval task, and notify the AP team lead via Teams.
inputParameters:
- name: invoice_number
in: body
type: string
description: The SAP supplier invoice number.
- name: po_number
in: body
type: string
description: The associated purchase order number for three-way match.
- name: invoice_amount
in: body
type: number
description: Invoice amount in local currency.
steps:
- name: get-invoice
type: call
call: sap-invoice.get-invoice
with:
invoice_number: '{{invoice_number}}'
- name: create-approval-task
type: call
call: servicenow-ap.create-task
with:
short_description: 'Invoice approval: {{invoice_number}} vs PO {{po_number}} — {{invoice_amount}}'
category: accounts_payable
assignment_group: AP_Team
- name: notify-ap-lead
type: call
call: msteams-ap.send-message
with:
recipient_upn: ap-lead@unilever.com
text: 'Invoice {{invoice_number}} pending approval. PO: {{po_number}}, Amount: {{invoice_amount}}. Task: {{create-approval-task.number}}'
consumes:
- type: http
namespace: sap-invoice
baseUri: https://unilever-s4.sap.com/sap/opu/odata/sap/API_SUPPLIERINVOICE_PROCESS_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-invoice
method: GET
- type: http
namespace: servicenow-ap
baseUri: https://unilever.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-ap
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
Syncs product innovation ideas from Notion to Jira epics, logs in Snowflake, and notifies the innovation team via Microsoft Teams.
naftiko: '0.5'
info:
label: Notion Product Innovation Pipeline Sync
description: Syncs product innovation ideas from Notion to Jira epics, logs in Snowflake, and notifies the innovation team via Microsoft Teams.
tags:
- innovation
- notion
- jira
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: notion_product_innov
port: 8080
tools:
- name: notion-product
description: Given an execution date, run the notion product innovation pipeline sync process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.NOTION_PRODUCT_INNOVATION_PIPELINE_SYNC LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.NOTION_PRODUCT_INNOVATION_PIPE_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: ULOPS
issue_type: Task
summary: Notion Product Innovation Pipeline Sync - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_notion_product_innov_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://unilever.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Initiates month-end GL period close in SAP S/4HANA, creates a ServiceNow close checklist task, and notifies the global controller via Microsoft Teams.
naftiko: '0.5'
info:
label: General Ledger Period Close
description: Initiates month-end GL period close in SAP S/4HANA, creates a ServiceNow close checklist task, and notifies the global controller via Microsoft Teams.
tags:
- finance
- period-close
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finance-close
port: 8080
tools:
- name: initiate-period-close
description: Given a fiscal period and year, open the period close in SAP S/4HANA, create a ServiceNow checklist task, and notify the global controller via Teams.
inputParameters:
- name: fiscal_period
in: body
type: string
description: Fiscal period number (01-12).
- name: fiscal_year
in: body
type: string
description: Fiscal year (e.g., 2026).
- name: controller_upn
in: body
type: string
description: UPN of the global controller to notify.
steps:
- name: open-period
type: call
call: sap-close.open-period
with:
period: '{{fiscal_period}}'
year: '{{fiscal_year}}'
- name: create-checklist
type: call
call: servicenow-close.create-task
with:
short_description: GL close checklist FY{{fiscal_year}}-P{{fiscal_period}}
category: finance_close
assignment_group: Finance_Accounting
- name: notify-controller
type: call
call: msteams-close.send-message
with:
recipient_upn: '{{controller_upn}}'
text: 'Period close initiated: FY{{fiscal_year}}-P{{fiscal_period}}. Checklist task: {{create-checklist.number}}. Please approve all journal entries by the deadline.'
consumes:
- type: http
namespace: sap-close
baseUri: https://unilever-s4.sap.com/sap/opu/odata/sap/API_FISCALPERIOD_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: fiscal-periods
path: /A_FiscalPeriod
operations:
- name: open-period
method: POST
- type: http
namespace: servicenow-close
baseUri: https://unilever.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-close
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 manufacturing plant equipment failure is reported, creates a SAP Plant Maintenance work order and notifies the maintenance team via Microsoft Teams.
naftiko: '0.5'
info:
label: Plant Maintenance Work Order Management
description: When a manufacturing plant equipment failure is reported, creates a SAP Plant Maintenance work order and notifies the maintenance team via Microsoft Teams.
tags:
- manufacturing
- plant-maintenance
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: plant-maintenance
port: 8080
tools:
- name: create-maintenance-work-order
description: Given a plant code, equipment ID, and fault description, create a SAP PM work order for the maintenance team and notify the plant engineer via Teams.
inputParameters:
- name: plant_code
in: body
type: string
description: SAP plant code where the equipment is located.
- name: equipment_id
in: body
type: string
description: SAP equipment ID requiring maintenance.
- name: fault_description
in: body
type: string
description: Description of the equipment fault or failure.
- name: plant_engineer_upn
in: body
type: string
description: UPN of the plant engineer to notify.
steps:
- name: create-work-order
type: call
call: sap-pm.create-work-order
with:
plant: '{{plant_code}}'
equipment: '{{equipment_id}}'
short_text: '{{fault_description}}'
- name: notify-plant-engineer
type: call
call: msteams-pm.send-message
with:
recipient_upn: '{{plant_engineer_upn}}'
text: 'SAP PM work order created: Equipment {{equipment_id}} at Plant {{plant_code}}. Fault: {{fault_description}}. Work order: {{create-work-order.work_order_number}}'
consumes:
- type: http
namespace: sap-pm
baseUri: https://unilever-s4.sap.com/sap/opu/odata/sap/API_MAINTENANCEORDER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: work-orders
path: /MaintenanceOrder
operations:
- name: create-work-order
method: POST
- type: http
namespace: msteams-pm
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
Collects code quality metrics from GitHub repos in Snowflake, tracks trends, creates Jira improvement tasks, and notifies engineering leads via Microsoft Teams.
naftiko: '0.5'
info:
label: GitHub Code Quality Metrics Reporter
description: Collects code quality metrics from GitHub repos in Snowflake, tracks trends, creates Jira improvement tasks, and notifies engineering leads via Microsoft Teams.
tags:
- devops
- github
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: github_code_quality_
port: 8080
tools:
- name: github-code
description: Given an execution date, run the github code quality metrics reporter process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.GITHUB_CODE_QUALITY_METRICS_REPORTER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.GITHUB_CODE_QUALITY_METRICS_RE_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: ULOPS
issue_type: Task
summary: GitHub Code Quality Metrics Reporter - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_github_code_quality__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://unilever.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Identifies SAP Ariba contracts expiring within 90 days, creates a ServiceNow renewal task for the responsible category manager, and notifies them via Microsoft Teams.
naftiko: '0.5'
info:
label: Supplier Contract Renewal Alert
description: Identifies SAP Ariba contracts expiring within 90 days, creates a ServiceNow renewal task for the responsible category manager, and notifies them via Microsoft Teams.
tags:
- procurement
- contracts
- sap-ariba
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: contract-management
port: 8080
tools:
- name: alert-contract-expiry
description: Given a SAP Ariba contract ID, retrieve expiry details, create a ServiceNow renewal task, and notify the category manager via Teams with renewal action items.
inputParameters:
- name: contract_id
in: body
type: string
description: The SAP Ariba contract ID approaching expiry.
- name: category_manager_upn
in: body
type: string
description: UPN of the category manager responsible for contract renewal.
steps:
- name: get-contract
type: call
call: ariba-contract.get-contract
with:
contractId: '{{contract_id}}'
- name: create-renewal-task
type: call
call: servicenow-contract.create-task
with:
short_description: 'Contract renewal: {{get-contract.title}} — expires {{get-contract.expirationDate}}'
category: procurement
assignment_group: Category_Management
- name: notify-category-manager
type: call
call: msteams-contract.send-message
with:
recipient_upn: '{{category_manager_upn}}'
text: 'Contract expiry alert: {{get-contract.title}} expires {{get-contract.expirationDate}}. Renewal task: {{create-renewal-task.number}}. Please initiate supplier negotiations.'
consumes:
- type: http
namespace: ariba-contract
baseUri: https://openapi.ariba.com/api/contract-management/v1
authentication:
type: apikey
key: apikey
value: $secrets.ariba_api_key
placement: header
resources:
- name: contracts
path: /contracts/{{contractId}}
inputParameters:
- name: contractId
in: path
operations:
- name: get-contract
method: GET
- type: http
namespace: servicenow-contract
baseUri: https://unilever.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-contract
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
Retrieves LinkedIn and Meta brand page engagement metrics for a Unilever brand and publishes a weekly social performance digest to the brand marketing Teams channel.
naftiko: '0.5'
info:
label: Brand Social Media Performance Report
description: Retrieves LinkedIn and Meta brand page engagement metrics for a Unilever brand and publishes a weekly social performance digest to the brand marketing Teams channel.
tags:
- marketing
- social-media
- linkedin
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: social-reporting
port: 8080
tools:
- name: digest-social-performance
description: Given a LinkedIn organization ID and a brand name, retrieve social engagement metrics and post a weekly social performance digest to the brand marketing Teams channel.
inputParameters:
- name: linkedin_org_id
in: body
type: string
description: LinkedIn organization URN ID for the Unilever brand.
- name: brand_name
in: body
type: string
description: Name of the Unilever brand (e.g., Dove, Axe, Hellmann's, Knorr).
- name: marketing_channel_id
in: body
type: string
description: Teams channel ID for the brand marketing team.
steps:
- name: get-linkedin-metrics
type: call
call: linkedin-social.get-organization-statistics
with:
organizationId: '{{linkedin_org_id}}'
- name: post-social-digest
type: call
call: msteams-social.post-channel-message
with:
channel_id: '{{marketing_channel_id}}'
text: 'Social Report — {{brand_name}}: LinkedIn followers: {{get-linkedin-metrics.follower_count}} | New followers (7d): {{get-linkedin-metrics.new_followers}} | Engagement: {{get-linkedin-metrics.engagement_rate}}%'
consumes:
- type: http
namespace: linkedin-social
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: organization-statistics
path: /organizationPageStatistics
inputParameters:
- name: organizationId
in: query
operations:
- name: get-organization-statistics
method: GET
- type: http
namespace: msteams-social
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: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Prepares key account quarterly review packages from Salesforce data in Snowflake, refreshes Power BI dashboards, and notifies account managers via Microsoft Teams.
naftiko: '0.5'
info:
label: Salesforce Key Account Quarterly Review
description: Prepares key account quarterly review packages from Salesforce data in Snowflake, refreshes Power BI dashboards, and notifies account managers via Microsoft Teams.
tags:
- sales
- salesforce
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: salesforce_key_accou
port: 8080
tools:
- name: salesforce-key
description: Given an execution date, run the salesforce key account quarterly review process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SALESFORCE_KEY_ACCOUNT_QUARTERLY_REVIEW LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SALESFORCE_KEY_ACCOUNT_QUARTER_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_salesforce_key_accou_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Calculates scope 3 carbon footprint across the supply chain in Snowflake, logs progress against targets, and notifies the ESG team via Microsoft Teams.
naftiko: '0.5'
info:
label: Carbon Footprint Supply Chain Calculator
description: Calculates scope 3 carbon footprint across the supply chain in Snowflake, logs progress against targets, and notifies the ESG team via Microsoft Teams.
tags:
- sustainability
- supply-chain
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: carbon_footprint_sup
port: 8080
tools:
- name: carbon-footprint
description: Given an execution date, run the carbon footprint supply chain calculator process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.CARBON_FOOTPRINT_SUPPLY_CHAIN_CALCULATOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.CARBON_FOOTPRINT_SUPPLY_CHAIN__RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_carbon_footprint_sup_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Tracks influencer marketing campaign performance in Snowflake, computes engagement ROI, and distributes insights to the brand team via Microsoft Teams.
naftiko: '0.5'
info:
label: Beauty Brand Influencer Campaign Tracker
description: Tracks influencer marketing campaign performance in Snowflake, computes engagement ROI, and distributes insights to the brand team via Microsoft Teams.
tags:
- marketing
- influencer
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: beauty_brand_influen
port: 8080
tools:
- name: beauty-brand
description: Given an execution date, run the beauty brand influencer campaign tracker process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.BEAUTY_BRAND_INFLUENCER_CAMPAIGN_TRACKER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.BEAUTY_BRAND_INFLUENCER_CAMPAI_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_beauty_brand_influen_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Submits a global IT change request in ServiceNow for system changes affecting Unilever's global infrastructure, routes for CAB approval, and notifies impacted stakeholders via Teams.
naftiko: '0.5'
info:
label: Global IT Change Management Request
description: Submits a global IT change request in ServiceNow for system changes affecting Unilever's global infrastructure, routes for CAB approval, and notifies impacted stakeholders via Teams.
tags:
- itsm
- change-management
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: change-mgmt
port: 8080
tools:
- name: submit-change-request
description: Given a change description, risk level, and affected regions, create a ServiceNow change request, assign to the Global CAB, and notify regional IT leads via Teams.
inputParameters:
- name: change_description
in: body
type: string
description: Description of the proposed global IT change.
- name: risk_level
in: body
type: string
description: 'Risk level: low, medium, high, critical.'
- name: implementation_date
in: body
type: string
description: Planned implementation date in YYYY-MM-DD format.
- name: it_leads_channel_id
in: body
type: string
description: Teams channel ID for regional IT leads.
steps:
- name: create-change
type: call
call: servicenow-change.create-change
with:
short_description: '{{change_description}}'
risk: '{{risk_level}}'
start_date: '{{implementation_date}}'
assignment_group: Global_CAB
- name: notify-it-leads
type: call
call: msteams-change.post-channel-message
with:
channel_id: '{{it_leads_channel_id}}'
text: 'Change request {{create-change.number}}: {{change_description}} | Risk: {{risk_level}} | Implementation: {{implementation_date}} | CAB review required.'
consumes:
- type: http
namespace: servicenow-change
baseUri: https://unilever.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: changes
path: /table/change_request
operations:
- name: create-change
method: POST
- type: http
namespace: msteams-change
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: channel_id
in: path
operations:
- name: post-channel-message
method: POST
When a major incident is declared in ServiceNow, creates a Microsoft Teams bridge channel, logs the event in Snowflake, and notifies the SRE team.
naftiko: '0.5'
info:
label: IT Incident Major Incident Bridge Launcher
description: When a major incident is declared in ServiceNow, creates a Microsoft Teams bridge channel, logs the event in Snowflake, and notifies the SRE team.
tags:
- itsm
- servicenow
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: it_incident_major_in
port: 8080
tools:
- name: it-incident
description: Given an execution date, run the it incident major incident bridge launcher process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.IT_INCIDENT_MAJOR_INCIDENT_BRIDGE_LAUNCH LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.IT_INCIDENT_MAJOR_INCIDENT_BRI_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: itsm
short_description: IT Incident Major Incident Bridge Launcher processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_it_incident_major_in_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://unilever.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Generates quality certificates for shipped batches from SAP data in Snowflake, logs issuance, creates ServiceNow records, and notifies the QA team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Quality Certificate Generator
description: Generates quality certificates for shipped batches from SAP data in Snowflake, logs issuance, creates ServiceNow records, and notifies the QA team via Microsoft Teams.
tags:
- quality
- sap
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_quality_certific
port: 8080
tools:
- name: sap-quality
description: Given an execution date, run the sap quality certificate generator process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_QUALITY_CERTIFICATE_GENERATOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_QUALITY_CERTIFICATE_GENERA_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: quality
short_description: SAP Quality Certificate Generator processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_quality_certific_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://unilever.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors cold chain temperature data in Snowflake, flags excursions, creates ServiceNow incidents, and alerts the logistics team via Microsoft Teams.
naftiko: '0.5'
info:
label: Ice Cream Cold Chain Temperature Monitor
description: Monitors cold chain temperature data in Snowflake, flags excursions, creates ServiceNow incidents, and alerts the logistics team via Microsoft Teams.
tags:
- logistics
- cold-chain
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ice_cream_cold_chain
port: 8080
tools:
- name: ice-cream
description: Given an execution date, run the ice cream cold chain temperature monitor process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.ICE_CREAM_COLD_CHAIN_TEMPERATURE_MONITOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.ICE_CREAM_COLD_CHAIN_TEMPERATU_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: logistics
short_description: Ice Cream Cold Chain Temperature Monitor processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_ice_cream_cold_chain_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://unilever.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Detects production scheduling conflicts in SAP via Snowflake, creates ServiceNow escalation cases, and notifies the planning team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Production Scheduling Conflict Resolver
description: Detects production scheduling conflicts in SAP via Snowflake, creates ServiceNow escalation cases, and notifies the planning team via Microsoft Teams.
tags:
- manufacturing
- sap
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_production_sched
port: 8080
tools:
- name: sap-production
description: Given an execution date, run the sap production scheduling conflict resolver process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_PRODUCTION_SCHEDULING_CONFLICT_RESOL LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_PRODUCTION_SCHEDULING_CONF_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: manufacturing
short_description: SAP Production Scheduling Conflict Resolver processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_production_sched_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://unilever.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves SAP sustainability data (carbon emissions, water usage, waste) for a reporting period and publishes a sustainability KPI digest to the Unilever ESG leadership Teams channel.
naftiko: '0.5'
info:
label: Sustainability KPI Reporting
description: Retrieves SAP sustainability data (carbon emissions, water usage, waste) for a reporting period and publishes a sustainability KPI digest to the Unilever ESG leadership Teams channel.
tags:
- sustainability
- esg
- sap
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: sustainability-reporting
port: 8080
tools:
- name: publish-sustainability-kpis
description: Given a reporting quarter and plant or business unit, retrieve carbon, water, and waste KPIs from SAP and post a sustainability performance digest to the ESG leadership Teams channel.
inputParameters:
- name: reporting_quarter
in: body
type: string
description: Reporting quarter in YYYY-QN format (e.g., 2026-Q1).
- name: plant_code
in: body
type: string
description: SAP plant code to report on. Leave blank for global rollup.
- name: esg_channel_id
in: body
type: string
description: Teams channel ID for the ESG leadership team.
steps:
- name: get-sustainability-data
type: call
call: sap-esg.get-sustainability-kpis
with:
period: '{{reporting_quarter}}'
plant: '{{plant_code}}'
- name: post-esg-digest
type: call
call: msteams-esg.post-channel-message
with:
channel_id: '{{esg_channel_id}}'
text: 'Sustainability Report ({{reporting_quarter}}): CO2e: {{get-sustainability-data.carbon_tonnes}}t | Water: {{get-sustainability-data.water_m3}}m³ | Waste recycled: {{get-sustainability-data.waste_recycled_pct}}% | Renewable energy: {{get-sustainability-data.renewable_energy_pct}}%'
consumes:
- type: http
namespace: sap-esg
baseUri: https://unilever-s4.sap.com/sap/opu/odata/sap/SUSTAINABILITY_REPORTING_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: sustainability-kpis
path: /SustainabilityKPI
inputParameters:
- name: period
in: query
- name: plant
in: query
operations:
- name: get-sustainability-kpis
method: GET
- type: http
namespace: msteams-esg
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: channel_id
in: path
operations:
- name: post-channel-message
method: POST
When a P1 IT incident is raised in ServiceNow, creates a Datadog event for observability tracking, sends an escalation alert to the regional IT team via Microsoft Teams.
naftiko: '0.5'
info:
label: IT Incident Response and Escalation
description: When a P1 IT incident is raised in ServiceNow, creates a Datadog event for observability tracking, sends an escalation alert to the regional IT team via Microsoft Teams.
tags:
- itsm
- incident-response
- servicenow
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: it-incident-response
port: 8080
tools:
- name: handle-it-incident
description: Given a P1 ServiceNow incident ID and affected system, create a Datadog event for correlation and notify the regional IT team lead via Teams with full incident context.
inputParameters:
- name: incident_number
in: body
type: string
description: The ServiceNow incident number (e.g., INC0012345).
- name: affected_system
in: body
type: string
description: The IT system affected by the incident (e.g., SAP ERP, M365, Network).
- name: it_lead_upn
in: body
type: string
description: UPN of the regional IT team lead for escalation.
steps:
- name: get-incident
type: call
call: servicenow-it.get-incident
with:
incident_number: '{{incident_number}}'
- name: create-datadog-event
type: call
call: datadog.create-event
with:
title: 'P1 IT Incident: {{affected_system}}'
text: 'ServiceNow: {{incident_number}} — {{get-incident.short_description}}'
alert_type: error
- name: escalate-to-it-lead
type: call
call: msteams-it.send-message
with:
recipient_upn: '{{it_lead_upn}}'
text: 'P1 IT INCIDENT: {{affected_system}} | ServiceNow: {{incident_number}} | Description: {{get-incident.short_description}} | Datadog: {{create-datadog-event.url}}'
consumes:
- type: http
namespace: servicenow-it
baseUri: https://unilever.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident/{{incident_number}}
inputParameters:
- name: incident_number
in: path
operations:
- name: get-incident
method: GET
- 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-it
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
Runs demand sensing algorithms against POS data in Snowflake, updates SAP forecast, and notifies the demand planning team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Demand Sensing Pipeline
description: Runs demand sensing algorithms against POS data in Snowflake, updates SAP forecast, and notifies the demand planning team via Microsoft Teams.
tags:
- supply-chain
- sap
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_demand_sensing_p
port: 8080
tools:
- name: sap-demand
description: Given an execution date, run the sap demand sensing pipeline process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_DEMAND_SENSING_PIPELINE LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_DEMAND_SENSING_PIPELINE_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_demand_sensing_p_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors shelf life expiration dates for stocked materials in SAP via Snowflake, flags soon-to-expire inventory, creates ServiceNow tasks, and alerts the warehouse team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Shelf Life Expiry Alert
description: Monitors shelf life expiration dates for stocked materials in SAP via Snowflake, flags soon-to-expire inventory, creates ServiceNow tasks, and alerts the warehouse team via Microsoft Teams.
tags:
- supply-chain
- sap
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_shelf_life_expir
port: 8080
tools:
- name: sap-shelf
description: Given an execution date, run the sap shelf life expiry alert process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_SHELF_LIFE_EXPIRY_ALERT LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_SHELF_LIFE_EXPIRY_ALERT_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: supply-chain
short_description: SAP Shelf Life Expiry Alert processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_shelf_life_expir_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://unilever.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Aggregates DTC e-commerce metrics in Snowflake, refreshes Power BI dashboards, and distributes performance digests to the digital commerce team via Microsoft Teams.
naftiko: '0.5'
info:
label: E-Commerce DTC Channel Performance Digest
description: Aggregates DTC e-commerce metrics in Snowflake, refreshes Power BI dashboards, and distributes performance digests to the digital commerce team via Microsoft Teams.
tags:
- e-commerce
- analytics
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ecommerce_dtc_channe
port: 8080
tools:
- name: ecommerce-dtc
description: Given an execution date, run the e-commerce dtc channel performance digest process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.ECOMMERCE_DTC_CHANNEL_PERFORMANCE_DIGEST LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.ECOMMERCE_DTC_CHANNEL_PERFORMA_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_ecommerce_dtc_channe_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Processes MRP exception messages from SAP in Snowflake, creates ServiceNow urgency cases, and alerts the supply planning team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP MRP Exception Handler
description: Processes MRP exception messages from SAP in Snowflake, creates ServiceNow urgency cases, and alerts the supply planning team via Microsoft Teams.
tags:
- supply-chain
- sap
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_mrp_exception_ha
port: 8080
tools:
- name: sap-mrp
description: Given an execution date, run the sap mrp exception handler process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_MRP_EXCEPTION_HANDLER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_MRP_EXCEPTION_HANDLER_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: supply-chain
short_description: SAP MRP Exception Handler processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_mrp_exception_ha_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://unilever.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a food safety concern is reported, creates a ServiceNow P1 incident, logs in Snowflake, opens a Jira investigation, and alerts the food safety team via Microsoft Teams.
naftiko: '0.5'
info:
label: Food Safety Incident Response Chain
description: When a food safety concern is reported, creates a ServiceNow P1 incident, logs in Snowflake, opens a Jira investigation, and alerts the food safety team via Microsoft Teams.
tags:
- food-safety
- servicenow
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: food_safety_incident
port: 8080
tools:
- name: food-safety
description: Given an execution date, run the food safety incident response chain process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.FOOD_SAFETY_INCIDENT_RESPONSE_CHAIN LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.FOOD_SAFETY_INCIDENT_RESPONSE__RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: food-safety
short_description: Food Safety Incident Response Chain processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_food_safety_incident_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://unilever.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://unilever.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a product quality non-conformance is detected in SAP QM, opens a ServiceNow quality incident, assigns it to the quality assurance team, and notifies the plant manager via Teams.
naftiko: '0.5'
info:
label: Product Quality Non-Conformance Alert
description: When a product quality non-conformance is detected in SAP QM, opens a ServiceNow quality incident, assigns it to the quality assurance team, and notifies the plant manager via Teams.
tags:
- manufacturing
- quality
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: quality-ops
port: 8080
tools:
- name: handle-quality-nonconformance
description: Given a SAP quality notification ID and plant, create a ServiceNow quality incident, assign it to QA, and notify the plant manager via Teams with corrective action requirements.
inputParameters:
- name: quality_notification_id
in: body
type: string
description: The SAP quality notification ID for the non-conformance.
- name: plant_code
in: body
type: string
description: SAP plant code where the non-conformance was detected.
- name: product_material
in: body
type: string
description: SAP material number of the affected product.
- name: plant_manager_upn
in: body
type: string
description: UPN of the plant manager to notify.
steps:
- name: get-quality-notification
type: call
call: sap-quality.get-quality-notification
with:
notification_id: '{{quality_notification_id}}'
- name: create-quality-incident
type: call
call: servicenow-quality.create-incident
with:
short_description: 'Quality NC: Material {{product_material}} at Plant {{plant_code}}'
category: quality_assurance
priority: '2'
assignment_group: QA_Team
- name: notify-plant-manager
type: call
call: msteams-quality.send-message
with:
recipient_upn: '{{plant_manager_upn}}'
text: 'Quality non-conformance at Plant {{plant_code}}: Material {{product_material}}. SAP notification: {{quality_notification_id}}. ServiceNow incident: {{create-quality-incident.number}}'
consumes:
- type: http
namespace: sap-quality
baseUri: https://unilever-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: /A_QualityNotification('{{notification_id}}')
inputParameters:
- name: notification_id
in: path
operations:
- name: get-quality-notification
method: GET
- type: http
namespace: servicenow-quality
baseUri: https://unilever.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-quality
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
Tracks plastic packaging reduction metrics in Snowflake, computes progress against targets, refreshes Power BI dashboards, and notifies the sustainability team via Microsoft Teams.
naftiko: '0.5'
info:
label: Plastic Waste Reduction Progress Tracker
description: Tracks plastic packaging reduction metrics in Snowflake, computes progress against targets, refreshes Power BI dashboards, and notifies the sustainability team via Microsoft Teams.
tags:
- sustainability
- packaging
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: plastic_waste_reduct
port: 8080
tools:
- name: plastic-waste
description: Given an execution date, run the plastic waste reduction progress tracker process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.PLASTIC_WASTE_REDUCTION_PROGRESS_TRACKER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.PLASTIC_WASTE_REDUCTION_PROGRE_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_plastic_waste_reduct_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves all Workday employees who have not yet completed open enrollment and sends personalized benefit enrollment reminders via Microsoft Teams.
naftiko: '0.5'
info:
label: Employee Benefits Enrollment Reminder
description: Retrieves all Workday employees who have not yet completed open enrollment and sends personalized benefit enrollment reminders via Microsoft Teams.
tags:
- hr
- benefits
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-benefits
port: 8080
tools:
- name: send-enrollment-reminders
description: Given an enrollment deadline and benefit portal URL, retrieve unenrolled employees from Workday and post reminder messages to the all-employees Teams channel.
inputParameters:
- name: enrollment_deadline
in: body
type: string
description: Open enrollment deadline in YYYY-MM-DD format.
- name: benefit_portal_url
in: body
type: string
description: URL to the benefits enrollment portal.
- name: hr_channel_id
in: body
type: string
description: Teams channel ID for the all-employees channel.
steps:
- name: get-unenrolled-workers
type: call
call: workday-benefits.get-workers
with:
enrollmentStatus: not_started
- name: post-enrollment-reminder
type: call
call: msteams-benefits.post-channel-message
with:
channel_id: '{{hr_channel_id}}'
text: Benefits enrollment closes {{enrollment_deadline}}. {{get-unenrolled-workers.count}} employees have not yet enrolled. Complete your elections at {{benefit_portal_url}}.
consumes:
- type: http
namespace: workday-benefits
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers
path: /workers
inputParameters:
- name: enrollmentStatus
in: query
operations:
- name: get-workers
method: GET
- type: http
namespace: msteams-benefits
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: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Tracks supplier diversity spend metrics in Snowflake, computes progress against targets, refreshes Power BI dashboards, and notifies procurement leadership via Microsoft Teams.
naftiko: '0.5'
info:
label: Supplier Diversity Spend Tracker
description: Tracks supplier diversity spend metrics in Snowflake, computes progress against targets, refreshes Power BI dashboards, and notifies procurement leadership via Microsoft Teams.
tags:
- procurement
- diversity
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: supplier_diversity_s
port: 8080
tools:
- name: supplier-diversity
description: Given an execution date, run the supplier diversity spend tracker process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SUPPLIER_DIVERSITY_SPEND_TRACKER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SUPPLIER_DIVERSITY_SPEND_TRACK_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_supplier_diversity_s_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Processes employee engagement survey results from Workday in Snowflake, generates insights, and distributes to HR business partners via Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Employee Engagement Survey Processor
description: Processes employee engagement survey results from Workday in Snowflake, generates insights, and distributes to HR business partners via Microsoft Teams.
tags:
- hr
- engagement
- workday
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_employee_eng
port: 8080
tools:
- name: workday-employee
description: Given an execution date, run the workday employee engagement survey processor process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.WORKDAY_EMPLOYEE_ENGAGEMENT_SURVEY_PROCE LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.WORKDAY_EMPLOYEE_ENGAGEMENT_SU_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_workday_employee_eng_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors customs compliance status from SAP in Snowflake, flags delayed clearances, creates ServiceNow cases, and alerts the trade compliance team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Customs Trade Compliance Monitor
description: Monitors customs compliance status from SAP in Snowflake, flags delayed clearances, creates ServiceNow cases, and alerts the trade compliance team via Microsoft Teams.
tags:
- compliance
- sap
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_customs_trade_co
port: 8080
tools:
- name: sap-customs
description: Given an execution date, run the sap customs trade compliance monitor process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_CUSTOMS_TRADE_COMPLIANCE_MONITOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_CUSTOMS_TRADE_COMPLIANCE_M_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: compliance
short_description: SAP Customs Trade Compliance Monitor processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_customs_trade_co_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://unilever.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Runs predictive maintenance models against SAP sensor data in Snowflake, creates ServiceNow work orders, and notifies the maintenance team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Plant Maintenance Predictive Scheduler
description: Runs predictive maintenance models against SAP sensor data in Snowflake, creates ServiceNow work orders, and notifies the maintenance team via Microsoft Teams.
tags:
- maintenance
- sap
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_plant_maintenanc
port: 8080
tools:
- name: sap-plant
description: Given an execution date, run the sap plant maintenance predictive scheduler process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_PLANT_MAINTENANCE_PREDICTIVE_SCHEDUL LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_PLANT_MAINTENANCE_PREDICTI_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: maintenance
short_description: SAP Plant Maintenance Predictive Scheduler processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_plant_maintenanc_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://unilever.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves the GL balance from SAP for a given company code and account.
naftiko: '0.5'
info:
label: SAP General Ledger Balance Lookup
description: Retrieves the GL balance from SAP for a given company code and account.
tags:
- finance
- sap
- accounting
capability:
exposes:
- type: mcp
namespace: accounting
port: 8080
tools:
- name: get-gl-balance
description: Given a company code and GL account, retrieve the balance. Use for financial close.
inputParameters:
- name: company_code
in: body
type: string
description: The SAP company code.
- name: gl_account
in: body
type: string
description: The GL account number.
call: sap.get-gl-balance
with:
company_code: '{{company_code}}'
gl_account: '{{gl_account}}'
outputParameters:
- name: balance
type: string
mapping: $.d.EndingBalanceAmtInCoCodeCrcy
consumes:
- type: http
namespace: sap
baseUri: https://unilever-s4.sap.com/sap/opu/odata/sap/API_JOURNALENTRYITEMBASIC_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: gl-balances
path: /A_GLAccountLineItem
operations:
- name: get-gl-balance
method: GET
Reviews home care product formulas against regulatory requirements in Snowflake, flags non-compliant ingredients, creates ServiceNow cases, and notifies the regulatory team via Microsoft Teams.
naftiko: '0.5'
info:
label: Home Care Formula Regulatory Review
description: Reviews home care product formulas against regulatory requirements in Snowflake, flags non-compliant ingredients, creates ServiceNow cases, and notifies the regulatory team via Microsoft Teams.
tags:
- regulatory
- home-care
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: home_care_formula_re
port: 8080
tools:
- name: home-care
description: Given an execution date, run the home care formula regulatory review process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.HOME_CARE_FORMULA_REGULATORY_REVIEW LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.HOME_CARE_FORMULA_REGULATORY_R_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: regulatory
short_description: Home Care Formula Regulatory Review processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_home_care_formula_re_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://unilever.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors contract lifecycle events in SAP Ariba via Snowflake, flags expiring contracts, creates Jira renewal tasks, and notifies procurement via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Ariba Contract Lifecycle Monitor
description: Monitors contract lifecycle events in SAP Ariba via Snowflake, flags expiring contracts, creates Jira renewal tasks, and notifies procurement via Microsoft Teams.
tags:
- procurement
- sap
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_ariba_contract_l
port: 8080
tools:
- name: sap-ariba
description: Given an execution date, run the sap ariba contract lifecycle monitor process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_ARIBA_CONTRACT_LIFECYCLE_MONITOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_ARIBA_CONTRACT_LIFECYCLE_M_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: ULOPS
issue_type: Task
summary: SAP Ariba Contract Lifecycle Monitor - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_ariba_contract_l_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://unilever.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors social media sentiment spikes in Snowflake, flags potential brand crises, creates ServiceNow incidents, and alerts the communications team via Microsoft Teams.
naftiko: '0.5'
info:
label: Brand Social Media Crisis Detector
description: Monitors social media sentiment spikes in Snowflake, flags potential brand crises, creates ServiceNow incidents, and alerts the communications team via Microsoft Teams.
tags:
- marketing
- social-media
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: brand_social_media_c
port: 8080
tools:
- name: brand-social
description: Given an execution date, run the brand social media crisis detector process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.BRAND_SOCIAL_MEDIA_CRISIS_DETECTOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.BRAND_SOCIAL_MEDIA_CRISIS_DETE_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: marketing
short_description: Brand Social Media Crisis Detector processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_brand_social_media_c_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://unilever.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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Reconciles SAP Concur expense reports against corporate travel bookings for a given reporting period, flags policy violations, and routes exceptions to the finance team via Teams.
naftiko: '0.5'
info:
label: Travel Expense Report Reconciliation
description: Reconciles SAP Concur expense reports against corporate travel bookings for a given reporting period, flags policy violations, and routes exceptions to the finance team via Teams.
tags:
- finance
- travel-expense
- sap-concur
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: travel-expense
port: 8080
tools:
- name: reconcile-travel-expenses
description: Given a reporting period, retrieve all Concur expense reports, identify policy violations, and notify the finance team via Teams with a reconciliation summary.
inputParameters:
- name: period_start
in: body
type: string
description: Start of the reconciliation period in YYYY-MM-DD format.
- name: period_end
in: body
type: string
description: End of the reconciliation period in YYYY-MM-DD format.
- name: finance_channel_id
in: body
type: string
description: Teams channel ID for the finance team.
steps:
- name: get-expense-reports
type: call
call: concur.get-expense-reports
with:
modifiedAfter: '{{period_start}}'
modifiedBefore: '{{period_end}}'
- name: post-reconciliation-summary
type: call
call: msteams-expense.post-channel-message
with:
channel_id: '{{finance_channel_id}}'
text: 'Expense Reconciliation ({{period_start}} to {{period_end}}): Reports: {{get-expense-reports.count}} | Total: {{get-expense-reports.total_amount}} | Policy violations: {{get-expense-reports.violations_count}}'
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: modifiedAfter
in: query
- name: modifiedBefore
in: query
operations:
- name: get-expense-reports
method: GET
- type: http
namespace: msteams-expense
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: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Analyzes transportation costs from SAP in Snowflake, identifies optimization opportunities, creates Jira tasks, and notifies the logistics team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Transportation Cost Analysis
description: Analyzes transportation costs from SAP in Snowflake, identifies optimization opportunities, creates Jira tasks, and notifies the logistics team via Microsoft Teams.
tags:
- logistics
- sap
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_transportation_c
port: 8080
tools:
- name: sap-transportation
description: Given an execution date, run the sap transportation cost analysis process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_TRANSPORTATION_COST_ANALYSIS LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_TRANSPORTATION_COST_ANALYS_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: ULOPS
issue_type: Task
summary: SAP Transportation Cost Analysis - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_transportation_c_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://unilever.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Validates personal care product ingredients against regulatory databases in Snowflake, flags non-compliant formulations, and alerts the regulatory affairs team via Microsoft Teams.
naftiko: '0.5'
info:
label: Personal Care Ingredient Compliance Checker
description: Validates personal care product ingredients against regulatory databases in Snowflake, flags non-compliant formulations, and alerts the regulatory affairs team via Microsoft Teams.
tags:
- regulatory
- personal-care
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: personal_care_ingred
port: 8080
tools:
- name: personal-care
description: Given an execution date, run the personal care ingredient compliance checker process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.PERSONAL_CARE_INGREDIENT_COMPLIANCE_CHEC LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.PERSONAL_CARE_INGREDIENT_COMPL_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_personal_care_ingred_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Tracks deployment frequency from Azure DevOps in Snowflake, computes DORA metrics, and distributes reports to engineering leadership via Microsoft Teams.
naftiko: '0.5'
info:
label: Azure DevOps Deployment Frequency Reporter
description: Tracks deployment frequency from Azure DevOps in Snowflake, computes DORA metrics, and distributes reports to engineering leadership via Microsoft Teams.
tags:
- devops
- azure-devops
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: azure_devops_deploym
port: 8080
tools:
- name: azure-devops
description: Given an execution date, run the azure devops deployment frequency reporter process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.AZURE_DEVOPS_DEPLOYMENT_FREQUENCY_REPORT LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.AZURE_DEVOPS_DEPLOYMENT_FREQUE_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_azure_devops_deploym_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Identifies distribution gaps across retail channels in Snowflake, creates Jira tasks for field teams, and notifies sales management via Microsoft Teams.
naftiko: '0.5'
info:
label: Retail Distribution Gap Analyzer
description: Identifies distribution gaps across retail channels in Snowflake, creates Jira tasks for field teams, and notifies sales management via Microsoft Teams.
tags:
- sales
- retail
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: retail_distribution_
port: 8080
tools:
- name: retail-distribution
description: Given an execution date, run the retail distribution gap analyzer process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.RETAIL_DISTRIBUTION_GAP_ANALYZER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.RETAIL_DISTRIBUTION_GAP_ANALYZ_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: ULOPS
issue_type: Task
summary: Retail Distribution Gap Analyzer - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_retail_distribution__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://unilever.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves real-time stock levels for a material from SAP S/4HANA.
naftiko: '0.5'
info:
label: SAP Material Stock Check
description: Retrieves real-time stock levels for a material from SAP S/4HANA.
tags:
- supply-chain
- sap
- inventory
capability:
exposes:
- type: mcp
namespace: inventory
port: 8080
tools:
- name: get-material-stock
description: Given a SAP material number, retrieve stock levels. Use for inventory checks.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number.
call: sap.get-stock
with:
material_number: '{{material_number}}'
outputParameters:
- name: unrestricted_qty
type: string
mapping: $.d.MatlWrhsStkQtyInMatlBaseUnit
consumes:
- type: http
namespace: sap
baseUri: https://unilever-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(Material='{{material_number}}')
inputParameters:
- name: material_number
in: path
operations:
- name: get-stock
method: GET
Scans GitHub Actions workflows for supply chain vulnerabilities in Snowflake, creates Jira remediation tickets, and alerts the security team via Microsoft Teams.
naftiko: '0.5'
info:
label: GitHub Actions Supply Chain Security Scanner
description: Scans GitHub Actions workflows for supply chain vulnerabilities in Snowflake, creates Jira remediation tickets, and alerts the security team via Microsoft Teams.
tags:
- security
- github
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: github_actions_suppl
port: 8080
tools:
- name: github-actions
description: Given an execution date, run the github actions supply chain security scanner process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.GITHUB_ACTIONS_SUPPLY_CHAIN_SECURITY_SCA LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.GITHUB_ACTIONS_SUPPLY_CHAIN_SE_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: ULOPS
issue_type: Task
summary: GitHub Actions Supply Chain Security Scanner - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_github_actions_suppl_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://unilever.atlassian.net/rest/api/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: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Tracks water usage metrics from manufacturing in Snowflake, computes progress against sustainability goals, and notifies the ESG team via Microsoft Teams.
naftiko: '0.5'
info:
label: Water Usage Sustainability Reporter
description: Tracks water usage metrics from manufacturing in Snowflake, computes progress against sustainability goals, and notifies the ESG team via Microsoft Teams.
tags:
- sustainability
- manufacturing
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: water_usage_sustaina
port: 8080
tools:
- name: water-usage
description: Given an execution date, run the water usage sustainability reporter process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.WATER_USAGE_SUSTAINABILITY_REPORTER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.WATER_USAGE_SUSTAINABILITY_REP_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_water_usage_sustaina_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://unilever.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
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/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Score Breakdown — Total: 21350
Each row links to its full definition on the Naftiko Signal Groups page.
242 41 96 719 875 356 702 472 269 1601 402 615 1030 177 500 498 192 219 93 579 786 542 98 373 1425 3496 579 421 132 216 164 9 168 350 762 177 217 79 162 290 337Areas — Total: 2108
- .NET
- 3D
- 3D Modeling
- A/B Testing
- AI Agents
- AI Applications
- AI Architectures
- AI Assistants
- AI Governance
- AI Platforms
- AI Tools
- AJAX
- API Design
- API Development
- API Gateways
- API Management
- Acceptance Testing
- Access Cards
- Access Control Management
- Access Controls
- Access Management
- Accessibility
- Accessibility Audits
- Account Based Marketing
- Account Management
- Accountability
- Accounting
- Accounting Platforms
- Accounting Software
- Accounting Systems
- Accounts Payables
- Accounts Receivables
- Active Directory
- Activity Tracking
- Ad Management
- Ad-teches
- Administration
- Administratives
- Advertising
- Advertising Platforms
- Advertising Technologies
- Agent Frameworks
- Agentic AI
- Agentic Frameworks
- Agentic Systems
- Agentics
- Agents
- Alarm Systems
- Alerting
- Alerts
- Algorithm Design
- Algorithm Development
- Algorithms
- Ambassadors
- Analysis
- Analytics
- Androids
- Animations
- Annotations
- Anomaly Detections
- Anti-Money Launderings
- Apache Portable Runtimes
- Applicant Tracking Systems
- Application Architectures
- Application Deliveries
- Application Development
- Application Integrations
- Application Lifecycle Management
- Application Management
- Application Performance Management
- Application Platforms
- Application Programming Interfaces
- Application Securities
- Applications
- Architecture Design
- Architecture Strategies
- Architectures
- Archives
- Archiving
- Artemis
- Artifact Repositories
- Artificial Intelligence
- Artificial Intelligence/Machine Learning
- Assessment Tools
- Assessments
- Asset Inventories
- Asset Management
- Asset Managers
- Asset Protection
- Asset Tracking
- Assignments
- Asynchronous
- Audience Engagements
- Audience Segmentations
- Audience Targetings
- Audio
- Audit Management
- Audit Processes
- Audit Reports
- Audit Techniques
- Audit Trails
- Audits
- Australias
- Authentications
- Authoring Tools
- Authorizations
- Automated Testing
- Automation
- Automation Platforms
- Automation Testing
- Automotive
- Autoscalings
- Awareness
- B2B Marketing
- BI
- BPM
- Backend Development
- Backend Engineering
- Backends
- Background Checks
- Backup And Recovery
- Backups
- Banking
- Banking Platforms
- Bashes
- Battery Technologies
- Behavioral Analysis
- Belts
- Benchmarkings
- Benchmarks
- Benefits Administration
- Best Practices
- Big Data
- Billings
- Biotechnologies
- Blockchains
- Bloggings
- Bookings
- Bookkeepings
- Border Controls
- Borrowings
- Bots
- Bridges
- Broadcastings
- Browser Support
- Browsers
- Budgetings
- Build Automation
- Build Pipelines
- Build Systems
- Build Tools
- Building Automation
- Building Securities
- Business
- Business Alignments
- Business Analysis
- Business Analytics
- Business Applications
- Business Continuities
- Business Excellence
- Business Intelligence
- Business Logics
- Business Management
- Business Models
- Business Operations
- Business Plannings
- Business Plans
- Business Process
- Business Process Automation
- Business Process Management
- Business Process Mappings
- Business Roles
- Business Software
- Business Solutions
- Business Strategies
- Business Tools
- Business Transformations
- Business to Consumers
- Business-to-Business
- CAD Software
- CI
- Caches
- Caching
- Calendars
- Cameras
- Campaign Management
- Capacity Management
- Capital Markets
- Carbon Accounting
- Career Development
- Case Management
- Cash Flow Management
- Cash Management
- Catalogs
- Centralized Management
- Centralized Repositories
- Certificate Authorities
- Certificates
- Certifications
- Change Data Captures
- Change Management
- Charting
- Charts
- Chatbots
- Chats
- Chemical Engineering
- Cities
- Claims Management
- Classification
- Clean Energies
- Clearings
- Client Communications
- Client Experiences
- Client Management
- Client Relations
- Client Relationship Management
- Client Services
- Clients
- Climate Changes
- Climate Strategies
- Climates
- Cloud Adoptions
- Cloud Architectures
- Cloud Computes
- Cloud Computing
- Cloud Computing Environments
- Cloud Connectivity
- Cloud Data
- Cloud Data Environments
- Cloud Data Platforms
- Cloud Development
- Cloud Ecosystems
- Cloud Engineering
- Cloud Environments
- Cloud Governance
- Cloud Implementations
- Cloud Infrastructure
- Cloud Integrations
- Cloud Migrations
- Cloud Natives
- Cloud Networking
- Cloud Platforms
- Cloud Runs
- Cloud Securities
- Cloud Security Best Practices
- Cloud Security Posture Management
- Cloud Service Providers
- Cloud Services
- Cloud Software
- Cloud Solutions
- Cloud Storage
- Cloud Systems
- Cloud Technologies
- Cloud Transformations
- Cloud-Based
- Cloud-Based Architectures
- Cloud-Based Data Platforms
- Cloud-Based Software
- Cloud-Based Technologies
- Cloud-based Solutions
- Cloud-native Applications
- Cloud-native Architectures
- Cloud-native Development
- Cloud-native Platforms
- Cloud-native Services
- Cloud-native Solutions
- Clouds
- Clustering
- Coals
- Code Analysis
- Code Management
- Code Quality
- Code Repositories
- Code Reviews
- Code Signings
- Codes
- Collaboration Tools
- Collaborations
- Collaborative Development
- Collaterals
- Collections
- Command Lines
- Commerce
- Commodities
- Common Sense
- Communication Tools
- Communications
- Communities
- Community Engagements
- Community Healths
- Compatibilities
- Compensation Management
- Competency Frameworks
- Competitive Analyses
- Competitive Analysis
- Competitive Intelligence
- Competitor Analysis
- Compilations
- Compilers
- Complaint Management
- Complex Systems
- Compliance
- Compliance Expertises
- Compliance Frameworks
- Compliance Management
- Compliance Managers
- Compliance Monitoring
- Compliance Monitoring Programs
- Compliance Oversights
- Compliance Policies
- Compliance Services
- Compliance Systems
- Compliance Tools
- Component Based
- Compressions
- Computational Biologies
- Computational Modeling
- Computations
- Computer Aided Design
- Computer Aided Engineering
- Computer Aided Manufacturing
- Computer Applications
- Computer Sciences
- Computer Systems
- Computer Visions
- Computers
- Computes
- Computing
- Conference Plannings
- Conferences
- Conferencings
- Configuration Management
- Configuration Management Tools
- Configurations
- Connectivity
- Connectors
- Construction
- Consulting Services
- Consultings
- Consumer Analytics
- Consumer Behaviors
- Consumer Electronics
- Consumer Protection
- Contact Centers
- Contact Management
- Contacts
- Container Orchestration
- Containerization
- Containerization Technologies
- Containerized Applications
- Containerized Workloads
- Containers
- Content Creations
- Content Deliveries
- Content Delivery Networks
- Content Generations
- Content Management
- Content Management Systems
- Content Marketing
- Content Organizations
- Content Personalizations
- Content Strategies
- Contents
- Contexts and Dependency Injections
- 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
- Controls Frameworks
- Conversational AI
- Conversion Optimizations
- Conversion Rate Optimizations
- Conveyor Systems
- Coordinates
- Copywritings
- Core Systems
- Corporate Finances
- Corporate Learning
- Cost Accounting
- Cost Containments
- Cost Controls
- Cost Management
- Cost Optimizations
- Country-Specific
- Crawlings
- Creative Productions
- Creative Services
- Creative Suites
- Creative Tools
- Credentials
- Credit Cards
- Credit Controls
- Credit Management
- Credit Ratings
- Credit Risks
- Credit Valuation Adjustments
- Crisis Management
- Critical Thinkings
- Cross Platforms
- Cross-border Data Transfers
- Cs
- Cultural Changes
- Currencies
- Custodial Services
- Custodies
- Custom Development
- Custom Software
- Custom Solutions
- Customer Analytics
- Customer Data
- Customer Data Platforms
- Customer Databases
- Customer Engagements
- Customer Experience Design
- Customer Experiences
- Customer Feedback
- Customer Intelligence
- Customer Journey Mappings
- Customer Journeys
- Customer Management
- Customer Onboardings
- Customer Portals
- Customer Relationship Management
- Customer Satisfactions
- Customer Segmentations
- Customer Service
- Customer Success
- Customer Support
- Customer Targetings
- Customizations
- Customs
- Customs Brokerages
- Customs Procedures
- Cyber Defenses
- Cyber Resiliences
- Cyber Securities
- Cyber Security Assessments
- Cybersecurities
- DNS, DHCP, and IP Address Management
- Dashboards
- Data
- Data Access
- Data Acquisition
- Data Activations
- Data Analysis
- Data Analysis Methods
- Data Analysis Software
- Data Analysis Tools
- Data Analysis Tools And Software
- Data Analytic Tools
- Data Analytics
- Data Analytics Platforms
- Data Analytics Tools
- Data And Analytical Tools
- Data Architectures
- Data Capabilities
- Data Captures
- Data Catalogs
- Data Centers
- Data Classification
- Data Cleanings
- Data Cleansing
- Data Cleanups
- Data Collection Systems
- Data Collection Tools
- Data Collections
- Data Consumptions
- Data Conversions
- Data Discoveries
- Data Distributions
- Data Encryptions
- Data Engineering
- Data Enrichments
- Data Entries
- Data Exchanges
- Data Extractions
- Data Fabrics
- Data Factories
- Data Flows
- Data Foundations
- Data Gatherings
- Data Governance
- Data Governance Frameworks
- Data Governance Policies
- Data Governance Strategies
- Data Governance Toolings
- Data Governance Tools
- Data Handling
- Data Infrastructure
- Data Ingestions
- Data Insights
- Data Integrations
- Data Integrity
- Data Interpretations
- Data Lake Storage
- Data Lakes
- Data Lifecycle
- Data Lifecycle Management
- Data Lineages
- Data Loss Preventions
- Data Management
- Data Management Frameworks
- Data Management Platforms
- Data Management Systems
- Data Management Tools
- Data Manipulations
- Data Mappings
- Data Marketplaces
- Data Meshes
- Data Migrations
- Data Minimizations
- Data Mining
- Data Monitoring
- Data Movements
- Data Operations
- Data Orchestration
- Data Ownerships
- Data Pipelines
- Data Platforms
- Data Preparations
- Data Privacies
- Data Processes
- Data Processing
- Data Processing Frameworks
- Data Processing Pipelines
- Data Products
- Data Profilings
- Data Protection
- Data Providers
- Data Quality
- Data Quality Checks
- Data Quality Controls
- Data Quality Management
- Data Quality Tools
- Data Reconciliations
- Data Replications
- Data Reportings
- Data Repositories
- Data Retentions
- Data Retrievals
- Data Science Models
- Data Sciences
- Data Securities
- Data Services
- Data Sharing
- Data Stacks
- Data Standardizations
- Data Stewardships
- Data Storage
- Data Storytellings
- Data Strategies
- Data Streamings
- Data Structures
- Data Systems
- Data Technologies
- Data Testing
- Data Tools
- Data Tracking
- Data Transfers
- Data Transformations
- Data Transmissions
- Data Validation
- Data Visualisations
- 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 Initiatives
- Data-driven Insights
- Data-driven Optimizations
- Database Administration
- Database Applications
- Database Design
- Database Management
- Database Queries
- Database Securities
- Database Systems
- Database Technologies
- Databases
- Debt Collections
- Debuggings
- Decentralized
- Decentralized Autonomous Organizations
- Decision Making
- Decision Sciences
- Decision Support
- Decision Support Systems
- Deep Learning
- Defis
- Deliveries
- Dependencies
- Dependency Management
- Dependency Mappings
- Dependency Tracking
- Deployment Pipelines
- Deployment Plannings
- Deployment Strategies
- Deployments
- Derivatives
- Design
- Design Guidelines
- Design Principles
- Design Reviews
- Design Software
- Design Systems
- Design Thinkings
- Design Tools
- Design Validation
- Desktop Software
- Desktops
- Developer Experiences
- Development
- Development Lifecycle
- Development Operations
- Development Platforms
- Development Practices
- Development Process
- Development Tools
- Device Drivers
- Diagnostic Tools
- Diagnostics
- Diagrammings
- Digital Ads
- Digital Advertising
- Digital Arts
- Digital Assets
- Digital Certificates
- Digital Channels
- Digital Commerce
- Digital Contents
- Digital Distributions
- Digital Engagements
- Digital Experiences
- Digital Infrastructure
- Digital Learning Tools
- Digital Marketing
- Digital Marketing Technologies
- Digital Media
- Digital Operations
- Digital Products
- Digital Services
- Digital Solutions
- Digital Strategies
- Digital Systems
- Digital Technologies
- Digital Tools
- Digital Transformations
- Digital Twins
- Digital Wallets
- Digitals
- Digitizations
- Directed Acyclic Graphs
- Directory
- Directory Services
- Disaster Recovery
- Discontinued
- Disease Preventions
- Distributed
- Distributed Applications
- Distributed Computing
- Distributed Data Processing
- Distributed Environments
- Distributed Systems
- Distribution Systems
- Distributions
- Document Creations
- Document Management
- Document Management Systems
- Document Object Models
- Document Processing
- Documentaries
- Documentations
- Documents
- Drift Detections
- Due Diligences
- Dynamic Application Security Testing
- Dynamic Contents
- Dynamic Models
- Dynamics
- E-commerces
- E-learnings
- E-mails
- E-procurements
- ERP
- ESB
- Ecommerce Platforms
- Ecommerces
- Econometric Models
- Econometric Techniques
- Econometrics
- Economic Analysis
- Economic Data
- Economics
- Ecosystems
- Edge Computing
- Edteches
- Education Technologies
- Educations
- Efficiencies
- Elections
- Electric Vehicles
- Electrical Grids
- Electromagnetic Compatibilities
- Electronic Commerce
- Electronic Communications
- Electronic Data Interchange
- Electronic Payments
- Electronic Signatures
- Electronic Tradings
- Electronics
- Email Marketing
- Email Securities
- Emails
- Embedded Analytics
- 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
- Endpoint Management
- Endpoint Protection
- Energies
- Energy Efficiencies
- Energy Management
- Energy Performances
- Engineering
- Enterprise AI
- Enterprise Applications
- Enterprise Architectures
- Enterprise Communications
- Enterprise Data
- Enterprise IT
- Enterprise Integrations
- Enterprise Management
- Enterprise Performance Management
- Enterprise Resource Planning
- Enterprise Risk Management
- Enterprise Risks
- Enterprise Securities
- Enterprise Software
- Enterprise Solutions
- Enterprise Systems
- Enterprise Technologies
- Enterprises
- Entertainments
- Entity Resolutions
- Entrepreneurships
- Environment Management
- Equipments
- Equities
- Error Handling
- Estimations
- Ethics
- Evaluation Frameworks
- Evaluations
- Event Management
- Event Marketing
- Event Plannings
- Event Streamings
- Event Technologies
- Event-driven Solutions
- Events
- Examples
- Excels
- Executions
- Executive Reportings
- Expense Management
- Experiment Design
- Experimentations
- Exploitations
- Exploratory Data Analysis
- Extended Detection and Responses
- Extensions
- External Databases
- External Services
- External Systems
- Extract Transform Loads
- Facilities Management
- Feature Engineering
- Feature Enhancements
- Federations
- Feedback
- Feedback Collections
- Feedback Controls
- Feedback Systems
- File Sharing
- File Transfers
- Filing Systems
- Finances
- Financial Accounting
- Financial Analysis
- Financial Analytics
- Financial Compliances
- Financial Controls
- Financial Data
- Financial Instruments
- Financial Management
- Financial Messaging
- Financial Modeling
- Financial Models
- Financial News
- Financial Operations
- Financial Plannings
- Financial Policies
- Financial Reportings
- Financial Risk Management
- Financial Securities
- Financial Services
- Financial Software
- Financial Stabilities
- Financial Systems
- Fine-tunings
- Firewalls
- Firmwares
- First-Party Data
- Flashes
- Flexibilities
- Flexible Workings
- Flinks
- Flow Data
- Food Safety
- Forecasting
- Forecasting Models
- Foreign Exchanges
- Forexes
- Forge
- 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
- Futures
- Game Developers
- Game Development
- Game Engines
- Gaming Consoles
- Gamings
- Gateways
- General Ledgers
- Generative AI
- Generative Modeling
- Generative Models
- Genomics
- Geographies
- Geolocations
- Global Markets
- Global Positioning Systems
- Goal Settings
- Google Cloud Functions
- Governance
- Governance And Controls
- Governance Frameworks
- Governance Tools
- Government
- Government Policies
- Government Relations
- Graphic Design
- Graphical User Interfaces
- Graphics
- Graphics Processing Units
- Graphs
- Green Buildings
- Green Technologies
- HCM
- HR Analytics
- HR Management
- HR Systems
- HR Tech
- HR Technologies
- Hardenings
- Hardware
- Hbases
- Healthcare
- Healthcare Economics
- Healthcare Systems
- 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
- Hypothesis Testing
- IP Address Management
- IPAM
- IT Architectures
- IT Audits
- IT Governance
- IT Infrastructure
- IT Management
- IT Operations
- IT Plannings
- IT Platforms
- IT Project Management
- IT Risk Management
- IT Risks
- IT Service Management
- IT Services
- IT Strategies
- Ideas
- Ideations
- Identities
- Identity And Access Management
- Identity Management
- Identity Verifications
- Illuminations
- Image Buildings
- Image Generations
- Implementations
- Import Exports
- Incident Management
- Incident Responses
- Inclusive Design
- Incubation
- Indexings
- Industrial Automation
- Industrial Engineering
- Industrial Equipments
- Industry Analysis
- Inference Optimizations
- Inferences
- Informatics
- Information Architectures
- Information Design
- Information Governance
- Information Management
- Information Protection
- Information Securities
- Information Security Risk Management
- Information Sharing
- Information Systems
- Information Technologies
- Infrastructure
- Infrastructure As Codes
- Infrastructure Improvements
- Infrastructure Management
- Infrastructure-as-a-Service
- Innovation
- Insights
- Inspections
- Instant Messaging
- Instrumentations
- Insurances
- Integrated Development Environments
- Integrated Solutions
- Integration Frameworks
- Integration Platforms
- Integration Strategies
- Integration Testing
- Integration Tests
- Integrations
- Integrity
- Intellectual Properties
- Intelligence
- Intelligent Systems
- Interactive Design
- Interactive Voice Responses
- Interactives
- Interest Rate Swaps
- Interface Design
- Interfaces
- Internal Applications
- Internal Audits
- Internal Communications
- Internal Control Frameworks
- Internal Controls
- Internal Databases
- Internal Networks
- Internal Platforms
- Internal Reporting Tools
- Internal Systems
- Internal Tools
- International Laws
- International Markets
- International Trades
- Internationalizations
- Internet
- Internet Securities
- Internet of Things
- Interoperabilities
- Intranets
- Intrusion Detections
- Inventory Management
- Investment Analysis
- Investment Banking
- Investment Management
- Investments
- Investor Relations
- Invoice Processing
- Isolations
- Issue Tracking
- Iterative Development
- Ivies
- Java Virtual Machines
- Job Boards
- Journalism
- Journey Design
- Journey Mappings
- Kernels
- Key Management
- Key Metrics
- Key Values
- Knowledge Bases
- Knowledge Graphs
- Knowledge Management
- Knowledge Sharing
- LLM
- Large Data Sets
- Large Datasets
- Large Language Models
- Large-scale Distributed Systems
- Launch Strategies
- Law Enforcements
- Lead Generations
- Lead Management
- Leaderships
- Learning
- Learning And Development
- Learning Management
- Learning Technologies
- Ledgers
- Legacy Systems
- Legal
- Legal Compliances
- Legal Frameworks
- Legal Holds
- Legal Tech
- Legal Technologies
- Lendings
- Lessons Learned
- Libraries
- License Management
- Licensings
- Life Cycle Management
- Lifecycle Management
- Lightings
- Linear Algebras
- Liquidity Management
- Live Chats
- Live Data
- Live Streamings
- Load Balancers
- Load Balancings
- Load Testing
- Local GAAP
- Localizations
- Log Management
- Logging
- Logistic Regressions
- Logistics
- Loss Data
- Low Carbons
- Low Codes
- Low Latencies
- Low-Code Platforms
- M&AS
- Machine Learning
- Machine Learning Algorithms
- Machine Learning Engineering
- Machine Learning Frameworks
- Machine Learning Models
- Machine Learning Platforms
- Machine Learning Systems
- Machinings
- Mails
- Maintenance
- Major Incident Management
- Malware Protection
- Managed Services
- Management
- Management Accounting
- Management Information
- Management Software
- Management Systems
- Management Tools
- Manual Processes
- Manual Testing
- Manufacturing
- Mappings
- Market Analysis
- Market Analytics
- Market Coverages
- Market Data
- Market Information
- Market Intelligence
- Market Researches
- Market Risks
- Marketing
- Marketing Analytics
- Marketing Automation
- Marketing Platforms
- Marketing Strategies
- Marketing Technologies
- Marketing Tools
- Marketplace Platforms
- Marketplaces
- Markets
- Massively Parallel Processing
- Master Data
- Master Data Management
- Material Design
- Material Handling
- Mathematical Modeling
- Mathematics
- Matrixes
- Measurements
- Mechanical Systems
- Media
- Media Contents
- Media Management
- Media Monitoring
- Mediations
- Medical Devices
- Medical Records
- Meeting Management
- Meetings
- Mental Healths
- Mentoring
- Mergers And Acquisitions
- Meridians
- Messaging
- Messaging Platforms
- Metadata
- Metadata Management
- Metrics
- Microcontrollers
- Microservices
- Microsoft Access
- Middle Offices
- Middlewares
- Migrations
- Milestone Tracking
- Mission Critical
- Mobile Analytics
- Mobile Applications
- Mobile Apps
- Mobile Devices
- Mobile Technologies
- Mobiles
- Model Analysis
- Model Architectures
- Model Compressions
- Model Context Protocols
- Model Context Protocols (MCP)
- Model Deployments
- Model Development
- Model Evaluations
- Model Fine-tunings
- Model Governance
- Model Interpretabilities
- Model Lifecycle Management
- Model Management
- Model Monitoring
- Model Optimizations
- Model Performance
- Model Trainings
- Model Validation
- Modeling
- Modeling Tools
- Modernizations
- Modularity
- Monetizations
- Monitoring
- Monitoring And Controls
- Monitoring Tools
- Monte Carloes
- Multi-Agent Systems
- Multi-Factor Authentications
- Multi-channels
- Multi-platforms
- Multi-regions
- Multimedias
- Multimodals
- Multiplatforms
- Multiple Systems
- NLP
- Natural Gas
- Natural Language Processing
- Navigation
- Negotiations
- Netwerkens
- Network Analysis
- Network Architectures
- Network Automation
- Network Configurations
- Network Design
- Network Devices
- Network Engineering
- Network Infrastructure
- Network Management
- Network Monitoring
- Network Optimizations
- Network Performance
- Network Securities
- Network Topologies
- Networking
- Neural Networks
- Neurodiversities
- New Tabs
- News
- News Media
- Newsletters
- No Codes
- NoSQL
- Nonprofits
- Nostro
- Notebooks
- Notifications
- OIA
- OLE for Process Controls
- ORM
- OSX
- Object-Oriented
- Observability
- Observability Toolings
- Observability Tools
- Office Applications
- Office Management
- Office Software
- Office Suites
- Omnichannels
- On Demands
- Onboardings
- Online Banking
- Online Learning
- Online Services
- Online Shoppings
- Online Tools
- Ontologies
- Open Source
- Open-source Libraries
- Open-source Technologies
- Operating System Securities
- Operating Systems
- Operational Efficiencies
- Operational Excellence
- Operational Intelligence
- Operational Metrics
- Operational Reportings
- Operational Resiliences
- Operational Risks
- Operational Systems
- Operational Technologies
- Operations
- Operations Management
- Operations Researches
- Operators
- Optical Character Recognitions
- Optimization Techniques
- Optimizations
- Options
- Orchestration
- Order Books
- Order Executions
- Order Management
- Order Management Systems
- Organizational Changes
- Organizational Design
- Organizational Development
- Organizational Learning
- Organizational Structures
- Organizational Transformations
- Organizations
- Package Management
- Packages
- Packaging
- Packaging Innovation
- Paid Media
- Panoramas
- Patch Management
- Pattern Recognitions
- Patterns
- Pay Per Clicks
- Payment Models
- Payment Processing
- Payment Solutions
- Payment Systems
- Payments
- Payroll
- Penetration Testing
- Performance
- Performance Analysis
- Performance Engineering
- Performance Evaluations
- Performance Improvements
- Performance Management
- Performance Marketing
- Performance Measurements
- Performance Metrics
- Performance Monitoring
- Performance Optimizations
- Performance Testing
- Performance Tracking
- Performance Tuning
- Persistences
- Personalizations
- Pharmaceuticals
- Photographies
- Physical Securities
- Pigs
- Pipeline Management
- Pipeline Orchestration
- Pipelines
- Pivot Tables
- Planning Analytics
- Plannings
- Platform Development
- Platform Ecosystems
- Platform Engineering
- Platform Management
- Platform Observability
- Platform Securities
- Platform Services
- Platform Software
- Platform Solutions
- Platform Strategies
- Platform Systems
- Platform-as-a-Service
- Platforms
- Plugins
- Point Of Sales
- Policies
- Policy Administration
- Policy As Codes
- Policy Enforcements
- Policy Researches
- Political Engagements
- Portabilities
- Portables
- Portals
- Portfolio Management
- Portfolio Management Tools
- Portfolio Reviews
- Power Distributions
- Power Generations
- Power Plants
- Power Tools
- Power Transmissions
- Practice Management
- Predictabilities
- Predictions
- Predictive Analytics
- Predictive Modeling
- Presentation Software
- Presentations
- Price Optimizations
- Price Transparency
- Pricing Analytics
- Pricing Models
- Pricing Strategies
- Pricing Systems
- Pricings
- Prioritizations
- Privacy
- Privacy Impact Assessments
- Probabilities
- Problem Management
- Problem Resolutions
- Problem Solving
- Problem-Solving Tools
- Process Analysis
- Process Analytics
- Process Automation
- Process Controls
- Process Design
- Process Documentations
- Process Engineering
- Process Frameworks
- Process Improvements
- Process Management
- Process Mappings
- Process Maps
- Process Mining
- Process Modeling
- Process Monitoring
- Process Optimizations
- Process Orchestration
- Process Re-engineerings
- Process Reengineerings
- Process Safety
- Processes
- Procurement Tools
- Procurements
- Product Analytics
- Product Areas
- Product Costings
- Product Creation Life Cycles
- Product Creation Lifecycle
- Product Design
- Product Design And Development Process
- Product Development
- Product Development Lifecycle
- Product Information Management
- Product Lifecycle Management
- Product Management
- Product Management Tools
- Product Owners
- Product Ownerships
- Product Platforms
- Product Roadmaps
- Product Securities
- Product Strategies
- Product Testing
- Production
- Production Deployments
- Production Environments
- Production Management
- Production Monitoring
- Production Support
- Production Systems
- Productivity
- Productivity Software
- 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 Charters
- Project Closeouts
- Project Governance
- 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
- Push Notifications
- QA
- QA Automation
- Quality Assurance
- Quality Control Reports
- Quality Controls
- Quality Frameworks
- Quality Management
- Quality Metrics
- Quality Testing
- Quality Tools
- Quality Tracking
- Quantitative Analysis
- Quantitative Methods
- Quantitative Modeling
- Quantum Computing
- Query Languages
- Query Optimizations
- Queues
- Rapid Development
- Rapid Prototyping
- Ratings
- Reactives
- Real Estates
- Real Time
- Real-Time Operating Systems
- Real-time Analytics
- Real-time Data
- Real-time Data Streaming Technologies
- Real-time Data Visualizations
- Real-time Insights
- Real-time Monitoring
- Real-time Visibility
- Reasonings
- Receivables Management
- Recipes
- Reconciliation Reports
- Reconciliations
- Reconnaissances
- Record Keepings
- Recordings
- Records Management
- Recruitings
- Recruitment
- Reference Data
- Registrations
- Regression Analysis
- Regression Testing
- Regulatory Affairs
- Regulatory Compliances
- Regulatory Filings
- Regulatory Intelligence
- Regulatory Reportings
- Regulatory Solutions
- Regulatory Technologies
- Reinforcement Learning
- Relational Data
- Relational Databases
- Relationals
- Relationship Buildings
- Relationship Management
- Release Activities
- Release Engineering
- Release Management
- Release Management Processes
- Release Pipelines
- Release Plannings
- Reliabilities
- Reliability Engineering
- Remittances
- Remote Access
- Remote Collaborations
- Remote Communications
- Remote Works
- Rendering
- Renewable Energies
- Replications
- Reporting And Analytics
- Reporting Applications
- Reporting Automation
- Reporting Dashboards
- Reporting Frameworks
- Reporting Mechanisms
- Reporting Platforms
- Reporting Solutions
- Reporting Systems
- Reporting Tools
- Reportings
- Repository Management
- Requirements
- Requirements Gatherings
- Requirements Management
- Research
- Research Data
- Research Tools
- Reservation Systems
- Resilience Engineering
- Resiliences
- Resiliency
- Resource Allocations
- Resource Management
- Resource Plannings
- Rest Assured
- Retail Technologies
- Retails
- Reusable Components
- Revenue Management
- Revenue Optimizations
- Revenues
- Review And Approvals
- Reviews
- Rich Internet Applications
- Risk Analysis
- Risk Analysis Tools
- Risk Assessments
- Risk Management
- Risk Management Plans
- Risk Management Tools
- Risk Models
- Robotic Process Automation
- Robotics
- Robustness
- Root Cause Analysis
- Routers
- Routings
- Runtimes
- SUMIF
- Safes
- Safety
- Safety Engineering
- Sales
- Sales Analytics
- Sales Analytics Tools
- Sales Automation
- Sales Enablement
- Sales Enablement Tools
- Sales Intelligence
- Sales Management
- Sales Productivity
- Sales Technologies
- Sales Tools
- 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
- Secure Architectures
- Secure Coding Practices
- Secure Codings
- Secure Configurations
- Secure Design
- Secure Design Reviews
- Secure Development
- Secure Platforms
- Secure Transports
- Secure+s
- Securities Tradings
- Security
- Security Administration
- Security Architectures
- Security Assessments
- Security Audits
- Security Automation
- Security Best Practices
- Security Compliances
- Security Controls
- Security Design
- Security Development Lifecycle
- Security Engineering
- Security Frameworks
- Security Governance
- Security Groups
- Security Incident Responses
- Security Information and Event Management
- Security Infrastructure
- Security Management
- Security Measures
- Security Monitoring
- Security Operations
- Security Orchestration, Automation and Responses
- Security Platforms
- Security Procedures
- Security Requirements
- Security Reviews
- Security Risk Assessments
- Security Settings
- Security Solutions
- Security Systems
- Security Testing
- Security Tools
- Segmentations
- Self Services
- Self-Hosted
- Self-improvements
- Semantic Searches
- Sensors
- Serverless
- Serverless Architectures
- Servers
- Service Bus
- Service Catalogs
- Service Clouds
- Service Deliveries
- Service Design
- Service Desks
- Service Management
- Service Operations
- Service Portfolio Management
- Service Recovery
- Services
- Servlets
- Settlements
- Shared Responsibilities
- Shells
- Shippings
- Short Message Services
- Signal Processing
- Simple API for XML
- Simulation Modeling
- Simulation Platforms
- Simulation Tools
- Simulations
- Simulators
- Site Reliability Engineering
- Skill Development
- Skills Development
- Slides
- Slideshows
- Smart Homes
- Smart Workings
- Smartphones
- Smoke Testing
- Social
- Social Data
- Social Media
- Social Media Management
- Social Media Marketing
- Social Networking
- Social Networks
- Software
- Software Applications
- Software Architectures
- Software Configuration Management
- Software Configurations
- Software Deliveries
- Software Deployments
- Software Design
- Software Development
- Software Development Kits
- Software Engineering
- Software Interfaces
- Software Licensings
- Software Management
- Software Platforms
- Software Projects
- Software Quality
- Software Solutions
- Software Systems
- Software Technologies
- Software Testing
- Software Tools
- Software-as-a-Service
- Solutions
- Source Code Management
- Source Codes
- Source Controls
- Source Systems
- Sourcings
- Space Explorations
- Spend Management
- Spreadsheets
- Stakeholder Management
- Standups
- Startups
- Static Application Security Testing
- Statistical Analysis
- Statistical Analysis Software
- Statistical Analysis Techniques
- Statistical Computing
- Statistical Methods
- Statistical Modeling
- Statistical Modellings
- Statistical Models
- Statistical Packages
- Statistical Techniques
- Statistical Tools
- Statistics
- Stock Controls
- Stock Reconciliations
- Storage
- Stored Procedures
- Strategic Design
- Strategic Plannings
- Strategies
- Stream Analytics
- Streaming Data
- Streamings
- Structured Data
- Subscription Management
- Subscriptions
- Supervised Learning
- Supplier Contracts
- Supplier Management
- Supply Chain Finances
- Supply Chain Management
- Supply Chain Securities
- Supply Chains
- Support
- Support Platforms
- Support Systems
- Surveillances
- Survey Tools
- Sustainability
- Switches
- Synthetic Testing
- Synthetics
- System Administration
- System Analysis
- System Applications
- System Architectures
- System Automation
- System Configurations
- System Design
- System Development
- System Enhancements
- System Hardenings
- System Implementations
- System Information
- System Integrations
- System Interfaces
- System Maintenance
- System Management
- System Monitoring
- System Operations
- System Optimizations
- System Performances
- System Programming
- System Requirements
- System Securities
- System Software
- System Solutions
- System Stabilities
- System Testing
- System Tests
- System Tools
- System Updates
- Systems
- Systems Administration
- Systems Analysis
- Systems Architectures
- Systems Design
- Systems Development
- Systems Engineering
- Systems Enhancements
- Systems Integrations
- Systems Management
- Systems Testing
- Systems Thinkings
- T1S
- Tableaux De Bords
- Tablets
- Tainas
- Talent Acquisition
- Talent Management
- Task Management
- Tasks
- Tax Compliances
- Tax Laws
- Tax Management
- Tax Plannings
- Tax Preparations
- Tax Researches
- Tax Software
- Tax Systems
- Tax Technology Solutions
- Taxes
- Tcls
- Team Collaborations
- Team Communications
- Team Development
- Team Management
- Teaps
- Technical Debt
- Technical Plannings
- Technical Reviews
- Technical Support
- Technical Writings
- Technologies
- Technology Adoptions
- Technology Architectures
- Technology Governance
- Technology Platforms
- Technology Risk Management
- Technology Services
- Technology Stacks
- Technology Strategies
- Technology Upgrades
- Telecommunications
- Telefonoes
- Telefons
- Telefoons
- Telemetry
- Telephonies
- Telewerkens
- Terminals
- Territory Management
- Test Anything Protocols
- Test Automation
- Test Automation Frameworks
- Test Design
- Test Engineering
- Test Equipments
- Test Executions
- Test Instruments
- Test Plannings
- Test Reportings
- Test Strategies
- Test Tools
- Test-and-learns
- Testing Frameworks
- Testing Strategies
- Testing Tools
- Tests
- Text Mining
- Third Parties
- Third Party Risks
- Third-Party Integrations
- Third-party Data
- Third-party Management
- Third-party Risk Management
- Third-party Securities
- Third-party Systems
- Threat Analysis
- Threat Detections
- Threat Huntings
- Threat Intelligence
- Threat Mitigations
- Threat Modeling
- Threat Preventions
- Threat Protection
- Ticketing
- Ticketing Systems
- Tickets
- Time Management
- Time Series
- Timelines
- Tools
- Total Rewards
- Tracing
- Tracking
- Tracs
- Trade Compliances
- Trade Finances
- Trade Management
- Trade Operations
- Trade Shows
- Trade Support
- Trading Platforms
- Tradings
- Traffic Management
- Training Data
- Training Management
- Training Matrixes
- Training Platforms
- Trainings
- Transaction Processing
- Transfer Learning
- Transformations
- Transformers
- Translations
- Transparency
- Transportation
- Travel Management
- Travels
- Traversals
- Treasuries
- Treasury Management
- Treasury Operations
- Troubleshooting
- Tuning
- Turkishes
- UI
- UI Design
- UX
- UX Design
- Unified Communications
- Unit Testing
- Unixes
- Unstructured Data
- Unsupervised Learning
- Updates
- Uptime
- Usabilities
- Usability Testing
- User Acceptance Testing
- User Engagements
- User Experiences
- User Feedback
- User Generated Contents
- User Guides
- User Insights
- User Interface/User Experiences
- User Interfaces
- User Journeys
- User Management
- User Provisionings
- User Researches
- User Testing
- Utilities
- Utility Systems
- VBA
- VOIP
- Validation
- Validation Rules
- Validation and Testing
- Valuation Models
- Valuations
- Value Streams
- Vector Databases
- Vehicle Repairs
- Vendor Management
- Venture Capital
- Venue Management
- Venue Selections
- Venues
- Verifications
- Version Control Systems
- Version Controls
- Versionings
- Video Editing Tools
- Video Editings
- Video Games
- Video Productions
- Videogespreks
- Videos
- Virtual Environments
- Virtual Events
- Virtual Meetings
- Virtual Trainings
- Virtualizations
- Visibility
- Visual Analytics
- Visual Design
- Visual Effects
- Visual Management
- Visualizations
- Voice
- Volume Managers
- Votings
- Vues
- Vulnerability Assessments
- Vulnerability Management
- Vulnerability Scannings
- Wallets
- Warehouse Automation
- Warehouse Equipments
- Warehouse Management
- Warehouse Technologies
- Web Analytics
- Web Application Technologies
- Web Applications
- Web Apps
- Web Based
- Web Browsers
- Web Components
- Web Design
- Web Development
- Web Interfaces
- Web Performances
- Web Platforms
- Web Services
- Web Sites
- Web Technologies
- Web-based Applications
- Webinars
- Webs
- Wellbeings
- Whiteboards
- Wi-Fi
- Wikis
- Wins
- Words
- Work From Homes
- Work Life Balances
- Workflow Analysis
- Workflow Automation
- Workflow Design
- Workflow Management
- Workflow Management Tools
- Workflow Optimizations
- Workflow Orchestration
- Workflow Systems
- Workflow Toolings
- Workflow Tools
- Workflows
- Workforce Development
- Workforce Management
- Working Capital
- Workplace Safety
- Workshops
- Workspaces
Services — Total: 378
- 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 Redshift
- Amazon S3
- Amazon SNS
- Amazon SQS
- Amazon SageMaker
- Amazon Web Services
- Ambassador
- Android
- Ansible Automation Platform
- Ansible Tower
- Anthropic
- Apache Airflow
- Apache Software Foundation
- Apigee
- Appian
- Apple
- Apple Keynote
- Apple Pay
- Apple Safari
- Ariba
- Artifactory
- Aruba
- Asana
- Atlassian
- AutoCAD
- Autodesk Fusion 360
- Autodesk Maya
- Avalara
- Axway
- Azure Active Directory
- 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 Service Bus
- Azure Synapse Analytics
- Azure Virtual Desktop
- Azure Virtual Machines
- Backstage
- BigCommerce
- Bitbucket
- Bloomberg
- Bloomberg AIM
- Bloomberg Buyside Enterprise Solutions
- Bloomberg Economics
- Bloomberg Enterprise Data
- Bloomberg Intelligence
- Bloomberg Law (BLAW)
- Bloomberg News
- Bloomberg Professional Service
- Bloomberg Query Language (BQL)
- Bloomberg TV
- Bloomberg Television and Radio
- Bloomberg Terminal
- Bloomberg Tradebook
- Boomi
- Box
- Canva
- ChatGPT
- Checkmarx
- Choreo
- Circana
- Cisco
- Cisco Catalyst Center
- Cisco Expressway
- Cisco Firepower
- Cisco Nexus
- Cisco Voice Portal
- Cisco Webex
- Citrix
- Citrix NetScaler
- Claude
- CloudFormation
- CloudWatch
- Cloudflare
- Cobalt
- Commvault
- Concur
- Conductor
- Confluence
- Cortex
- Coupa
- Crystal Reports
- Cvent
- Databricks
- Databricks Asset Bundles
- Datadog
- Dataiku
- Discord
- DocuSign
- DynamoDB
- Dynatrace
- EC2
- EMC
- Eloqua
- F5 Networks
- Facebook Ads
- FactSet
- Fern
- Figma
- Finch
- Fortify
- Fusio
- G2
- GCP Cloud Storage
- Gemini
- GitHub
- GitHub Actions
- GitHub Copilot
- GitLab
- Gmail
- Gong
- Google Ads
- Google Analytics
- Google Android
- Google Apps Script
- Google Campaign Manager
- Google Chrome
- Google Cloud Dataflow
- Google Cloud Platform
- Google Data Studio
- Google Docs
- Google Drive
- Google Forms
- Google Maps
- Google Marketing Platform
- Google Optimize
- Google Pay
- Google Search Console
- Google Sheets
- Google Slides
- Google Tag Manager
- Google Workspace
- Harness
- Hobart
- HubSpot
- Hugging Face
- Hunter
- IBM
- Indeed
- Informatica
- Informática
- Insomnia
- IntelliJ IDEA
- International Business Machines
- Intuit
- Istio
- JFrog Artifactory
- Jira
- Juniper
- Juniper Networks
- Kinesis
- Knit
- Konfig
- Kong
- Kuma
- Lambda
- Lightroom
- Looker
- Looker Studio
- Lumos
- 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
- 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 Word
- Microsoft Xbox
- Mixpanel
- Montran
- Moody's
- MuleSoft
- NASA
- Nango
- Navision
- NetApp
- New Relic
- Notion
- Ollama
- OpenAI
- OpenShift
- Oracle
- Oracle APEX
- Oracle Cloud
- Oracle Database
- Oracle E-Business Suite
- Oracle Enterprise Manager
- Oracle Fusion
- Oracle GoldenGate
- Oracle Hyperion
- Oracle Integration
- Oracle R12
- Oracle Siebel
- Oracle WebLogic
- Orion
- Palo Alto Networks
- Panora
- Paradox
- Paragon
- Paw
- PeopleSoft
- Perforce
- Photoshop
- Pluralsight
- Port
- Power Apps
- Power BI
- Power Platform
- Power Query
- Prefect
- Prisma
- Productiv
- Prosci
- Pulse
- Qlik
- Qlik Sense
- Qlik Sense Enterprise
- QlikSense
- QlikView
- Qube
- Red Hat
- Red Hat Ansible Automation Platform
- Red Hat Enterprise Linux
- Red Hat Satellite
- Reuters
- Revert
- SAP
- SAP Ariba
- SAP BRIM (Billing and Revenue Innovation Management)
- SAP BW
- SAP Commerce Cloud
- SAP Concur
- SAP Concur Expense
- SAP HANA
- SAP Integration Suite
- SAP S/4HANA
- SAP Sales and Distribution (SD)
- SQL Server
- SailPoint
- Salesforce
- Salesforce Automation
- Salesforce Einstein
- Salesforce Lightning
- Salesforce Marketing Cloud
- Salesforce Sales Cloud
- Salesforce Service Cloud
- Scalar
- Seismic
- Sentry System
- Service Cloud
- ServiceNow
- SharePoint
- Shell
- Shopify
- Siebel
- SimCorp Dimension
- Slack
- Snowflake
- SolarWinds
- Solaris Zones
- Sparx Enterprise Architect
- Splunk
- Spot
- Square
- Stainless
- Stripe
- Tableau
- Tableau Desktop
- Tanium
- TeamCity
- Temenos Transact
- Temporal
- Teradata
- Torii
- Tradeweb
- Trellix Web Gateway
- Tropic
- Twitch
- Tyk
- Unity
- Unix
- VMware
- Vantage
- Vendr
- Vercel
- Veritas Cluster
- Veritas InfoScale
- Veritas NetBackup
- Veritas Volume Manager
- Vessel
- Visio
- Visualforce
- WebLogic
- WebSphere
- Windmill
- Workday
- Workday Integration
- Workday Payroll
- Workday Report Writer
- Youtube
- Zendesk
- Zesty
- Zoom
- ZoomInfo
- Zylo
- n8n
- nOps
Tools — Total: 231
- Akri
- Angular
- Ansible
- Apache
- Apache AGE
- Apache APR
- Apache ActiveMQ
- Apache Airflow
- Apache Ant
- Apache Archiva
- Apache Aries
- Apache Arrow
- Apache Atlas
- Apache Axis
- Apache Beam
- Apache BookKeeper
- Apache Brooklyn
- Apache CXF
- Apache Camel
- Apache Cassandra
- Apache Commons
- Apache Cordova
- Apache CouchDB
- Apache Curator
- Apache DolphinScheduler
- Apache Drill
- Apache Felix
- Apache Flex
- Apache Flink
- Apache Flume
- Apache Fluo
- Apache FreeMarker
- Apache Gora
- Apache Groovy
- Apache HBase
- Apache Hadoop
- Apache Hive
- Apache Hop
- Apache Iceberg
- Apache Ignite
- Apache Ivy
- Apache Jackrabbit
- Apache James
- Apache Jena
- Apache Kafka
- Apache Kibble
- Apache Knox
- Apache Kylin
- Apache MINA
- Apache Maven
- Apache Mesos
- 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 Royale
- Apache Rya
- Apache SDAP
- Apache SINGA
- Apache Serf
- Apache ShenYu
- Apache SkyWalking
- Apache Sling
- Apache SpamAssassin
- Apache Spark
- Apache Spatial
- Apache Steve
- Apache Storm
- Apache Streams
- Apache Submarine
- Apache Subversion
- Apache Synapse
- Apache TVM
- Apache Tapestry
- Apache Tcl
- Apache Tez
- Apache Thrift
- Apache Tika
- Apache TinkerPop
- Apache Traffic Control
- Apache Traffic Server
- Apache Turbine
- Apache VCL
- Apache Velocity
- Apache Web Services
- Apache Wicket
- Apache XML Graphics
- Apache Zeppelin
- Apache ZooKeeper
- Argo
- BFE
- Backstage
- Blender
- Buildpacks
- C#
- C++
- Capsule
- Chef
- ClickHouse
- Cloud Custodian
- Consul
- Contour
- Copa
- Cortex
- Cucumber
- Dex
- Django
- Docker
- Dragonfly
- Eclipse
- Elastic Stack
- Elasticsearch
- Elk
- Elk Stack
- Envoy
- Ethereum
- Falco
- FastAPI
- Fluid
- Flux
- Git
- Grafana
- HAMI
- Harbor
- Hashicorp Vault
- Helm
- Hugging Face Transformers
- Interlink
- Istio
- JUnit
- Jenkins
- Jest
- K3s
- KCL
- Kafka Connect
- Keycloak
- Kotlin
- Kubeflow
- Kubeflow Pipelines
- Kubernetes
- Kubernetes Operators
- Kuma
- Lean
- Lightning Web Components
- Lima
- Linux
- Llama
- Matplotlib
- MongoDB
- MySQL
- NATS
- NUnit
- Nexus
- Nginx
- Node.js
- NumPy
- ORAS
- Open Policy Agent
- OpenSearch
- OpenTelemetry
- PHP
- Packer
- Pandas
- Perl
- Pixie
- Playwright
- Porter
- PostgreSQL
- PowerShell
- Prometheus
- Pulumi
- PySpark
- PyTorch
- Python
- R
- RabbitMQ
- Radius
- Ratify
- React
- React Native
- Redis
- Redux
- Rook
- SOPS
- SPIRE
- SVN
- Scala
- Score
- Semantic Kernel
- Sonar
- SonarQube
- Spring
- Spring Boot
- Spring Boot Admin Console
- Spring Cloud Stream
- Spring Framework
- Stacker
- Swift
- Telepresence
- TensorFlow
- Terraform
- Thanos
- Ubuntu
- Vault
- Vineyard
- Vite
- Vitess
- Vue.js
- Wireshark
- WordPress
- YARN
- Zot
- bootc
- cURL
- eBPF
- gRPC
- jQuery
- kpt
- werf
Standards — Total: 219
- ACID
- AIS
- API-First
- AUTHORS.md
- Acceptance Criteria
- Accessibility Standards
- Accounting Standards
- Actor Model
- Agile
- Agile Delivery
- Agile Methodology
- Agile SDLC
- 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
- CSS
- Certificate Enrolment Protocols
- Circuit Breaker
- Communication Protocols
- Configuration Language
- Consensus
- Convention Over Configuration
- Cybersecurity Standards
- DHCP
- DNS
- DSL
- Data Flow Diagrams
- Data Format
- Data Modeling
- Data Models
- Data Privacy Standards
- Data Quality Standards
- Data Warehouse Schemas
- Database Schema Design
- Defense In Depth
- Dependency Injection
- Design Patterns
- Design Standards
- DevOps
- DevSecOps
- Development Methodology
- Dimensional Modeling
- Disclosure Requirements
- Domain-Driven Design
- Enterprise Integration Patterns
- Entity Relationship
- Equator Principles
- Event Sourcing
- Event-driven Architecture
- Extreme Programming
- FDA Regulations
- FTP
- File Format
- FinOps
- Financial Regulation
- Flowcharts
- Functional Programming
- GDPR
- Gantt Charts
- Good Manufacturing Practices
- Graph Query Language (GQL)
- GraphQL
- Gremlin
- HIPAA
- HTML
- HTML5
- HTTP
- HTTP/2
- Health Standards
- IAM
- ISO
- ISO Standard
- IT Standards
- ITIL
- ITSM
- Integration Patterns
- Internal Control Standards
- Inversion Of Control
- JCR
- JMS
- JPA
- JSF
- JSON
- Kanban
- Kerberos
- LDAP
- LICENSE.md
- Lean Management
- Lean Manufacturing
- Lean Six Sigma
- Lean Six Sigma Black Belt
- MLOps
- MVC
- Mandatory Reserves Requirement
- MapReduce
- Methodology
- Mockups
- Monolithic Architecture
- NFC
- NIO
- NIST
- Network Protocols
- Normalization
- OAuth
- OCI
- OData
- OIDC
- OSHA
- OWASP
- Object-Oriented Programming
- OpenAPI
- OpenID Connect
- PCI Compliance
- 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
- RDF
- RDP
- REST
- RESTful
- RFID
- RPC
- RTSP
- Raft
- Reactive Programming
- Regular Expressions
- Regulation
- Regulatory
- Relational Data Modeling
- Reporting Templates
- Reserve Requirements
- Runbooks
- SAFe Agile
- SAML
- SCADA
- SDLC
- SECURITY.md
- SOA
- SOAP
- SPA
- SQL
- SSH
- SSL/TLS
- SSO
- SUPPORT.md
- Scaled Agile
- Schema Design
- Schema Evolution
- Schema Validation
- Scrum
- SecOps
- Secure-by-Design
- Security By Design
- Security Protocols
- Security Standards
- Security Standards And Procedures
- Service Oriented Architecture
- Six Sigma
- Sketches
- Software Design Patterns
- Software Development Life Cycle
- Software Development Lifecycle
- Software-Defined Networking
- Specification
- Standard Operating Procedures
- Standardization
- Standards
- Swagger
- TCP/IP
- Technical Specifications
- Technology Standards
- Templates
- Test Cases
- Test First
- Test Plans
- Test Scripts
- Test Specifications
- Test Suites
- Test-driven Development
- UML
- Use Cases
- User Stories
- VNC
- VPN
- WCAG
- Waterfall
- Web Standards
- WebSockets
- Wireframes
- Write Ahead Log
- XML
- Zero Trust
- Zero Trust Architecture
- Zero Trust Network Access
- Zero-Trust Security Model
- openCypher
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 →