E-commerce Platform Industry Signals

Companies operating online retail platforms that enable consumers to browse, purchase, and receive products digitally.

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

Across 35 companies in E-commerce Platform we detected 1803 areas, 361 services, 240 tools, and 212 standards — producing an aggregate signal score of 19224.

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

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

E-commerce Platform Industry Technology Investment Report

Prepared by Naftiko May 2026

Executive Summary

The E-commerce Platform industry is assessed across 26 companies spanning the full spectrum of online retail — from native digital platforms like Amazon and Shopify to traditional retailers executing digital transformation strategies including Walmart, Target, Home Depot, and Macy’s. Scoring covers all 11 technology investment layers, and the three highest-scoring areas across the sector — Cloud (Amazon: 97), Retrieval & Grounding Data (Amazon: 96), and Productivity Services (Lego: 226) — reveal an industry whose technology investment is bifurcated between a small cohort of digitally native leaders and a large mass of incumbents still closing the gap. The sector’s 26-company footprint is the broadest in this report, and the score ranges within each layer are correspondingly wide, reflecting genuine technological heterogeneity rather than uniform sector maturity.

The most significant opportunity and gap across the E-commerce Platform sector is the Customization & Adaptation layer, where Domain Specialization peaks at just 2 (Adidas, Shopify, American Eagle Outfitters) and Data Pipelines max at 13 (Nike). Despite Amazon’s near-perfect Cloud score and Shopify’s AI leadership (57), the industry’s investment in proprietary model fine-tuning, multimodal AI infrastructure, and domain-specialized e-commerce intelligence is at an early stage across the board. Leading companies including Shopify, TJX Companies, Nike, and Lego show consistent cross-layer investment and are positioned as the sector’s technology investment compounders, while companies like IKEA, Macys, and Bloomingdales show persistent investment gaps that will constrain their competitive ability to deploy AI-native commerce experiences.


Layer 1: Foundational Layer

Foundational Layer captures how E-commerce Platform organizations invest in core capabilities across cloud infrastructure, artificial intelligence, open-source adoption, programming languages, and code practices.

Artificial Intelligence — Top Company: Shopify (57)

Shopify leads the E-commerce Platform sector in Artificial Intelligence with a score of 57, followed by Lego (49), TJX Companies (44), Amazon (44), Target (40), H&M (39), Nike (36), Adidas (35), and American Eagle Outfitters (33). The diversity of AI investment leadership — with a platform provider (Shopify), a toy brand (Lego), a discount retailer (TJX Companies), and a marketplace (Amazon) all in the top tier — signals that AI investment in e-commerce is not concentrated in a single type of company but is being pursued opportunistically across different business models. Service adoption across 24 companies includes LinkedIn, Adobe Photoshop, Adobe Illustrator, Adobe Campaign, Adobe Creative Cloud, Google Optimize, Google Analytics, Instagram, SharePoint, ServiceNow, and GitLab, suggesting a marketing and content technology emphasis to AI investment. Tooling across 24 companies includes PowerShell, ClickHouse, Angular, R, Elasticsearch, TypeScript, Terraform, and TensorFlow — a strong signal of both data engineering and front-end engineering AI integration.

Cloud — Top Company: Amazon (97)

Amazon leads Cloud with a score of 97, reflecting its dual identity as both an e-commerce operator and the world’s largest cloud provider. Nike (96), TJX Companies (92), Shopify (91), H&M (89), and Lego (82) form a leading cluster, with Lowe’s (66), Target (64), Adidas (61), American Eagle Outfitters (59), and Costco (57) following in the second tier. The service footprint at 24-company coverage includes Azure Functions, Google Analytics, and ServiceNow alongside the marketing technology stack, indicating that cloud investment spans operational infrastructure and commerce-enabling services. The gap between Amazon/Nike (96–97) and mid-range companies like Inditex (39), Walmart (36), and Mattel (36) is striking — it reflects that even among e-commerce operators, cloud architecture maturity varies substantially based on digital transformation history and investment pace.

Open-Source — Top Company: Shopify (37)

Shopify leads Open-Source with 37, followed by Nike (36), Lego (31), Adidas (30), Amazon (28), H&M (28), TJX Companies (27), and American Eagle Outfitters (27). Shopify’s leadership in Open-Source is consistent with its identity as a developer-platform company that has historically invested in open-source developer tools and contributed to the Ruby and Go ecosystems. Nike’s Open-Source score of 36 — nearly matching Shopify — reflects Nike’s significant investment in data engineering and technology infrastructure that has positioned it as one of the most technically sophisticated traditional consumer brands in the global market. The 24-company tooling stack (TypeScript, Terraform, React Native, TensorFlow) confirms that open-source infrastructure is pervasive across the sector.

Languages — Top Company: Amazon (39)

Amazon leads Languages with 39, followed by Shopify (37), H&M (36), Target (34), Lego (33), Nike (33), and TJX Companies (33). The tight clustering among the top seven companies (33–39) reflects that language diversity investment is broadly consistent across technology-forward e-commerce operators. Amazon’s leadership is expected given its position as a technology company that happens to operate retail; the more notable data point is H&M’s score of 36, which positions a fast-fashion retailer among the most technically proficient language-stack investors in the sector. The service footprint includes PeopleSoft and SharePoint at 24-company coverage, indicating that enterprise IT systems remain part of the language investment landscape even as modern stack adoption accelerates.

Code — Top Company: Shopify (30)

Shopify leads Code practices with 30, followed by Adidas (29), Amazon (29), TJX Companies (28), American Eagle Outfitters (26), Lego (25), and H&M (25). Shopify’s Code leadership reinforces its platform engineering identity — code quality, engineering practices, and developer tooling are foundational to a company whose product is a commerce development platform. Adidas’ score of 29 is noteworthy for a consumer brand and reflects its significant technology investment thesis, which has included building proprietary e-commerce and data platform capabilities rather than relying purely on third-party commerce infrastructure. GitLab appears in the service footprint at 24-company coverage, confirming broad adoption of CI/CD and code management platforms across the sector.


Layer 2: Retrieval & Grounding

Retrieval & Grounding captures how E-commerce Platform organizations invest in data infrastructure, vector databases, retrieval-augmented generation approaches, and context management for AI systems.

Data — Top Company: Amazon (96)

Amazon leads Data with 96, followed by Shopify (86), TJX Companies (84), Adidas (78), Nike (70), H&M (67), Target (65), Lego (63), and Under Armour (63). Amazon’s score of 96 reflects one of the most sophisticated retail data architectures in the world — integrating purchase history, browsing behavior, search queries, supply chain data, and third-party seller analytics at a scale unmatched by any peer. Shopify’s score of 86 is remarkable for a platform company and reflects its investment in Shopify Analytics, Shopify Balance, and the broader merchant data infrastructure. The service footprint at 24-company coverage mirrors the Foundational Layer, with Adobe Campaign and Google Analytics particularly relevant to data-driven commerce. The tooling stack includes Elasticsearch, ClickHouse, and R, reflecting a combination of search-optimized data infrastructure and statistical analytics investment.

Databases — Top Company: TJX Companies (32)

TJX Companies leads Databases with 32, followed by Amazon (30), Shopify (25), Lego (24), Nike (24), Under Armour (20), and Lowe’s (20). TJX Companies’ leadership in this dimension — ahead of Amazon — is a significant finding that reflects the company’s deep investment in transactional database infrastructure to support its off-price retail model, which processes millions of daily merchandise price changes, inventory updates, and store-level transactions. The tooling stack includes ClickHouse and Elasticsearch as leading database tools, reflecting a preference for analytical databases capable of handling large-scale commerce analytics workloads over purely transactional database investment.

Virtualization — Top Company: Amazon (20)

Amazon leads Virtualization with 20, followed by Nike (17), Shopify (17), Lego (15), H&M (15), and Target (15). The relatively low maximum score of 20 reflects the sector’s shift toward containerization (captured in Efficiency & Specialization) and serverless compute rather than traditional virtualization. Amazon’s leadership in Virtualization is consistent with its AWS infrastructure heritage, and Azure Functions appearing in the service footprint at 24-company coverage confirms that serverless and cloud-native virtualization approaches are displacing hypervisor-based infrastructure across the sector.

Specifications — Top Company: Nike (11)

Nike leads Specifications with 11, followed by Shopify (9), TJX Companies (9), H&M (9), American Eagle Outfitters (8), Target (8), and Under Armour (7). Nike’s leadership in Specifications is consistent with its technology-forward positioning and reflects investment in formal API contract standards and schema governance — capabilities that support Nike’s direct-to-consumer digital platform strategy where APIs are the interface between Nike’s data assets and its consumer-facing applications. The service footprint includes GitLab and ServiceNow at 24-company coverage, both of which have specification and configuration management capabilities.

Context Engineering — Top Company: (No ranked company)

Context Engineering has no ranked company score, reflecting its status as an emerging measurement category. The service and tool footprints show LinkedIn and PowerShell at the top positions across 24 companies, indicating broad ecosystem presence without yet crystallizing into a distinct, scored investment area. E-commerce Context Engineering — personalization context, shopping session state, recommendation context windows — represents a natural evolution of the sector’s personalization investment, and this dimension will likely become more measurable in future assessment cycles as RAG-based product recommendation systems enter production at scale.


Layer 3: Customization & Adaptation

Customization & Adaptation captures how E-commerce Platform organizations invest in fine-tuning AI models, building multimodal infrastructure, managing ML data pipelines, and establishing model version governance.

Data Pipelines — Top Company: Nike (13)

Nike leads Data Pipelines with 13, followed by Adidas (10), TJX Companies (10), Lego (8), Shopify (7), and Amazon (7). Nike’s leadership in Data Pipelines reflects its investment in real-time data infrastructure for demand forecasting, inventory optimization, and personalized marketing — use cases that require robust, always-on data pipelines rather than batch processing. The tight clustering of top scores (7–13) indicates that data pipeline infrastructure is at an early but broadly consistent development stage across the sector’s most sophisticated operators. Companies below the top six — including many traditional retailers — score below 4, signaling a significant capability gap for data pipeline-dependent AI applications.

Model Registry & Versioning — Top Company: Shopify (20)

Shopify leads Model Registry & Versioning with 20, followed by Lego (19), TJX Companies (14), Nike (13), Target (13), and H&M (12). Shopify’s leadership reflects its investment in formal ML model governance — a necessary capability for a company deploying AI across thousands of merchant accounts with different data profiles and performance requirements. The service footprint includes GitLab at 24-company coverage, which provides model versioning capabilities within CI/CD workflows. The moderate absolute scores across the sector indicate that formal model governance is in early adoption rather than mature deployment across e-commerce operators.

Multimodal Infrastructure — Top Company: Target (16)

Target leads Multimodal Infrastructure with 16, followed by Lego (15), Shopify (14), TJX Companies (14), H&M (14), and Amazon (12). Target’s leadership in this dimension is notable — it suggests Target has invested in infrastructure capable of processing multiple data modalities (product images, video, text descriptions, customer behavior signals) in support of AI-driven product discovery and visual search capabilities. Lego’s strong position at 15 reflects its investment in generative AI for product design and visualization. The tooling stack includes TensorFlow and React Native across 24 companies, indicating broad adoption of multimodal-capable frameworks even if the infrastructure scores remain modest.

Domain Specialization — Top Company: Adidas (2)

Domain Specialization peaks at just 2, with Adidas, Shopify, and American Eagle Outfitters sharing the sector-leading score. This near-universal floor score signals that the E-commerce Platform sector has not yet invested in building domain-specific AI models trained on proprietary retail data — customer purchase histories, product attribute taxonomies, category-specific demand signals, and brand-specific behavioral patterns. The absence of domain-specialized AI is the most significant strategic gap in the sector, as it means every e-commerce operator from Amazon to Barnes & Noble is using essentially the same general-purpose AI capabilities, rather than building proprietary intelligence layers that would create durable competitive advantages in specific product categories or customer segments.


Layer 4: Efficiency & Specialization

Efficiency & Specialization captures how E-commerce Platform organizations invest in automation, container orchestration, platform engineering, and operational efficiency.

Automation — Top Company: TJX Companies (51)

TJX Companies leads Automation with 51, followed by Adidas (45), American Eagle Outfitters (39), H&M (39), Nike (38), Shopify (38), and Lowe’s (37). TJX’s leadership in Automation is strategically significant — an off-price retailer whose business model depends on rapid, high-volume merchandise processing and dynamic pricing has built automation infrastructure that matches or exceeds digital-native competitors. Adidas’ score of 45 reflects its investment in supply chain automation and commerce workflow automation. The service footprint includes ServiceNow and GitLab at 24-company coverage, reflecting that IT service management automation and CI/CD pipeline automation are sector-wide standards. The 24-tool stack featuring PowerShell and Terraform confirms infrastructure-as-code automation is pervasive.

Containers — Top Company: Shopify (29)

Shopify leads Containers with 29, followed by H&M (27), Lego (26), Nike (23), Amazon (23), and TJX Companies (22). Shopify’s container leadership reflects its developer platform identity — containerization is fundamental to Shopify’s multi-tenant SaaS architecture and its developer extension platform. Amazon’s score of 23 may seem low for the world’s largest cloud company, but reflects that Amazon’s container infrastructure (ECS, EKS) is measured as platform investment by AWS rather than as e-commerce application containerization. The 24-company tooling stack includes TypeScript, Terraform, and React Native, indicating that containers are deployed primarily for front-end and data engineering applications across the sector.

Platform — Top Company: Nike (35)

Nike leads Platform investment with 35, tied with TJX Companies (35), followed by Lego (34), H&M (33), Shopify (32), and American Eagle Outfitters (31). Nike’s platform leadership reflects its investment in a direct-to-consumer digital platform — Nike.com, Nike Training Club, Nike Run Club — built on a proprietary technology stack that competes directly with third-party marketplace and commerce platforms. TJX’s equal score of 35 signals that the off-price retailer has invested in proprietary platform capabilities rather than purely relying on commodity commerce infrastructure. The tight score clustering (28–35) across the top ten companies indicates broad platform investment across the sector’s most sophisticated operators.

Operations — Top Company: TJX Companies (55)

TJX Companies leads Operations with 55, followed by Shopify (53), Adidas (51), Nike (51), H&M (51), and Amazon (50). The tight clustering of scores among the top six companies (50–55) and the breadth of companies scoring in the 35–55 range reflects that operational excellence is the most widely distributed capability in the E-commerce Platform sector — driven by the operational demands of fulfilling orders, managing inventory, and maintaining digital uptime at scale. The service footprint at 24-company coverage for ServiceNow and Datadog indicates that IT operations management and monitoring are sector-wide standards.


Layer 5: Productivity

Productivity captures how E-commerce Platform organizations invest in developer productivity, SaaS tooling, and the breadth of deployed service ecosystems.

Software As A Service (SaaS) — Top Company: Adidas (1)

The SaaS score of 1 is at the measurement floor across all companies, with Adidas as the sole scorer. This reflects the measurement framework’s narrow capture of SaaS productivity tool investment separate from operational and commerce platforms — the full e-commerce technology stack is dominated by SaaS tools, but this dimension captures a specific slice of that investment that is not yet fully calibrated for retail. The broad service footprint (PeopleSoft, SharePoint, Adobe Creative Cloud, Pluralsight) across 24 companies suggests SaaS adoption is extensive; the scoring dimension is still maturing.

Code — Top Company: Shopify (30)

Shopify leads Code in the Productivity layer with 30, mirroring its Foundational Layer Code score exactly. Adidas (29) and Amazon (29) follow, with TJX Companies (28), American Eagle Outfitters (26), and Lego (25) rounding out the top tier. GitLab and GitHub appearing at high company counts in the service footprint reinforces that code management and CI/CD are universal productivity investments. Shopify’s consistent code investment across both foundational and productivity layers signals that code quality and developer toolchain investment are deeply embedded in the company’s engineering culture.

Services — Top Company: Lego (226)

Lego achieves the highest Services score in this report at 226, followed by Shopify (211), Amazon (196), Nike (190), TJX Companies (186), Adidas (182), Target (174), H&M (173), Walmart (163), and Nordstrom (162). The scale of these scores — with 10 companies posting triple-digit Services scores — reflects an industry with extraordinarily rich service ecosystem portfolios. Lego’s leadership is notable: the toy company has built a service integration ecosystem that rivals digital-native operators, driven by its investment in omnichannel commerce, digital experience platforms, and content partnerships. The service footprint at 24-company coverage spans LinkedIn, Adobe Photoshop, Adobe Illustrator, Pluralsight, Azure Functions, Adobe Campaign, Adobe Creative Cloud, Google Analytics, Instagram, SharePoint, ServiceNow, and GitLab — a comprehensive technology stack confirming that e-commerce operators are among the most service-integrated companies in any industry.


Layer 6: Integration & Interoperability

Integration & Interoperability captures how E-commerce Platform organizations invest in API strategies, integration platforms, event-driven architectures, and cloud-native interoperability standards.

API — Top Company: H&M (20)

H&M leads API investment with 20, followed by Shopify (18), Amazon (17), Lego (17), Nike (15), and TJX Companies (14). H&M’s API leadership is a particularly significant finding — a fast-fashion retailer leading digital-native companies in API investment reflects H&M’s substantial investment in its omnichannel integration architecture, connecting physical retail, digital commerce, supply chain systems, and partner APIs through a mature API platform strategy. Shopify’s score of 18 is expected given its API-first architecture as a commerce platform. The service footprint includes Azure Functions and ServiceNow at 24-company coverage, both relevant to API integration infrastructure.

Integrations — Top Company: TJX Companies (31)

TJX Companies leads Integrations with 31, followed by Shopify (28), Lego (27), Nike (24), H&M (23), Amazon (22), and Adidas (21). TJX’s Integrations leadership, combined with its Automation (51) and Operations (55) leadership, paints a picture of a company that has invested heavily in systems integration as a core operational capability — connecting inventory management, point-of-sale, e-commerce, and supply chain systems across its TJ Maxx, Marshalls, and HomeGoods brands. The service footprint includes ServiceNow and GitLab at 24-company coverage, both of which provide integration platform capabilities.

Event-Driven — Top Company: Shopify (22)

Shopify leads Event-Driven architecture with 22, followed by Lego (19), TJX Companies (18), Nike (17), Amazon (17), and H&M (16). Shopify’s leadership in Event-Driven reflects its webhook-driven commerce platform architecture, where merchant and buyer events (order placed, inventory updated, cart abandoned) drive automated workflows across the entire Shopify ecosystem. The moderate scores across the sector — with the top ten companies all scoring between 10 and 22 — indicate that event-driven architecture is broadly adopted for commerce automation without yet being pushed to its full potential for real-time personalization and AI event-triggered experiences.

Patterns — Top Company: Nike (16)

Nike leads Patterns with 16, followed by Shopify (14), TJX Companies (13), Lego (13), H&M (13), and American Eagle Outfitters (12). Nike’s patterns leadership is consistent across multiple integration-related scoring areas (API, Patterns, Data Pipelines), reinforcing that Nike has made systematic architecture investment — not just tool adoption — a defining characteristic of its technology posture. The 24-company tooling stack includes TypeScript and Angular, both of which encourage opinionated architectural patterns, providing indirect evidence of pattern standardization across the sector.

Specifications — Top Company: Nike (11)

Nike leads Specifications with 11 in the Integration & Interoperability layer, identical to its score in Retrieval & Grounding, confirming consistent investment in formal interface standards across both data and integration dimensions. This repeated leadership in Specifications positions Nike as the sector’s most deliberate investor in API contracts and schema governance among traditional consumer brands. The service footprint includes GitLab and ServiceNow at 24-company coverage, both of which support specifications management within DevOps and ITSM workflows.

Apache — Top Company: American Eagle Outfitters (9)

American Eagle Outfitters leads Apache ecosystem investment with 9, followed by Shopify (8), Lego (8), Nike (7), TJX Companies (7), and Amazon (7). American Eagle’s Apache leadership is unexpected and may reflect specific investment in Apache data engineering tools (Kafka, Spark, Airflow) for real-time inventory and demand sensing use cases. The tooling stack across 24 companies includes Angular (Apache License), confirming broad but often implicit Apache ecosystem engagement across the sector.

CNCF — Top Company: Lego (31)

Lego leads CNCF investment with 31, followed by Shopify (30), TJX Companies (27), Nike (27), H&M (26), Amazon (25), and Adidas (24). Lego’s CNCF leadership alongside its Services score of 226 and its strong positions in Retrieval & Grounding and Customization & Adaptation paint a picture of one of the most technically mature traditional consumer brands in the global technology landscape. The tooling stack confirms that Kubernetes, Prometheus, Grafana, and Terraform are universally adopted across the sector’s top operators, with 24-company coverage indicating CNCF tooling has become a sector standard.


Layer 7: Statefulness

Statefulness captures how E-commerce Platform organizations invest in observability, governance, security, and data consistency for stateful digital commerce systems.

Observability — Top Company: Shopify (35)

Shopify leads Observability with 35, followed by TJX Companies (33), Nike (31), Lego (30), H&M (29), Amazon (27), and Adidas (27). Shopify’s observability leadership reflects the operational requirements of a multi-tenant SaaS platform serving millions of merchants — comprehensive observability across tenant performance, API latency, payment processing, and checkout conversion is a product requirement rather than purely an internal operations discipline. The 24-company tooling stack includes Elasticsearch for log analysis and Terraform for infrastructure-as-code state management, both relevant to observability infrastructure.

Governance — Top Company: TJX Companies (25)

TJX Companies leads Governance with 25, followed by Shopify (23), Amazon (22), Lego (21), Nike (20), H&M (20), and Adidas (19). TJX’s consistent governance investment leadership across multiple layers (Governance, Operations, Automation, Integrations) reflects a company that has built technology governance as a core operational competency — appropriate for a retailer that processes millions of high-velocity merchandise transactions daily under tight margin constraints where data accuracy and system consistency are financially material. The service footprint includes ServiceNow at 24-company coverage, which provides IT governance capabilities alongside service management.

Security — Top Company: Lowe’s (51)

Lowe’s leads Security with 51, ahead of TJX Companies (48), H&M (47), Nike (45), Shopify (45), Amazon (43), and Adidas (42). Lowe’s security leadership — for a home improvement retailer — is a striking finding that likely reflects its investment in securing complex omnichannel commerce systems, pro customer data, and contractor relationship management infrastructure. The fact that Lowe’s outscores Amazon (43) in Security, despite Amazon’s cloud infrastructure identity, suggests that security investment in the e-commerce sector is not monotonically correlated with cloud maturity and may reflect company-specific data sensitivity profiles and breach history-driven investment.

Data — Top Company: Amazon (96)

Amazon’s Data score of 96 reappears identically in Statefulness, confirming that data infrastructure is both a grounding asset and a stateful systems investment for the sector’s most sophisticated operators. The full sector ranking maintains the same order as Retrieval & Grounding, with Shopify (86), TJX Companies (84), Adidas (78), Nike (70), and H&M (67) following Amazon’s lead.


Layer 8: Measurement & Accountability

Measurement & Accountability captures how E-commerce Platform organizations invest in testing, observability, developer experience, and ROI measurement for technology systems.

Testing & Quality — Top Company: TJX Companies (13)

TJX Companies leads Testing & Quality with 13, followed by Nike (11), Lego (10), Shopify (9), H&M (9), and Adidas (8). TJX’s testing leadership is consistent with its broad operational technology investment profile and reflects investment in automated testing infrastructure for its e-commerce, inventory, and point-of-sale systems. The service footprint at 24-company coverage includes GitLab, which provides integrated testing pipeline capabilities. The moderate absolute scores across the sector indicate that formal test engineering investment is in mid-maturity — present and growing but not yet at the level of automated testing coverage rates that characterize fully mature engineering organizations.

Observability — Top Company: Shopify (35)

Observability scores in Measurement & Accountability mirror Statefulness scores exactly, with Shopify (35), TJX Companies (33), Nike (31), Lego (30), H&M (29), Amazon (27), and Adidas (27) maintaining the same rankings. This consistency confirms that observability is a well-established and consistently measured investment across both operational and accountability dimensions, with the sector’s top operators having built comprehensive observability infrastructure as a production requirement.

Developer Experience — Top Company: Shopify (19)

Shopify leads Developer Experience with 19, followed by Lego (17), TJX Companies (16), Nike (16), Amazon (15), and H&M (14). Shopify’s developer experience leadership is expected — the company’s entire business model depends on attracting and retaining developers who build on the Shopify platform, making developer experience investment a direct revenue driver rather than an internal engineering benefit. The service footprint includes GitHub and GitLab at high company counts, confirming universal investment in developer collaboration and CI/CD platforms. The 24-company tool stack includes TypeScript, which is consistently ranked as a developer experience improvement over plain JavaScript, reflecting sector-wide adoption of developer experience-improving practices.

ROI & Business Metrics — Top Company: TJX Companies (47)

TJX Companies leads ROI & Business Metrics with 47, followed by Shopify (44), Nike (43), H&M (42), Adidas (41), Amazon (40), and Target (38). TJX’s consistent leadership across ROI & Business Metrics, Operations, and Automation reflects a company culture that rigorously measures technology investment outcomes — a characteristic of off-price retail organizations where margin management requires precise quantification of operational technology benefits. The service footprint includes Google Analytics and Google Optimize at 24-company coverage, confirming universal investment in commerce analytics and A/B testing infrastructure.


Layer 9: Governance & Risk

Governance & Risk captures how E-commerce Platform organizations invest in regulatory compliance, AI governance, security controls, data governance, and privacy infrastructure.

Regulatory Posture — Top Company: Shopify (10)

Shopify leads Regulatory Posture with 10, followed by Nike (9), H&M (8), TJX Companies (7), Amazon (7), and Adidas (6). Shopify’s regulatory leadership reflects its investment in compliance infrastructure across multiple regulatory jurisdictions — the company must satisfy payment card industry (PCI DSS), GDPR, CCPA, and e-commerce consumer protection regulations across its global merchant base. Nike and H&M’s strong positions reflect the global regulatory complexity facing large direct-to-consumer brands operating in dozens of jurisdictions with different data, advertising, and consumer protection requirements.

AI Review & Approval — Top Company: Target (15)

Target leads AI Review & Approval with 15, followed by Amazon (13), Shopify (12), Lego (12), TJX Companies (11), Nike (11), and H&M (10). Target’s leadership in AI governance processes reflects its investment in responsible AI practices for personalization, demand forecasting, and pricing algorithms — use cases that interact directly with millions of consumers and carry significant regulatory and reputational risk. The moderate score range (6–15) indicates that AI review and approval infrastructure is in early institutionalization across the sector, with most companies building governance processes rather than having fully mature AI governance programs.

Security — Top Company: Lowe’s (51)

Lowe’s Security score of 51 reappears in Governance & Risk identically to Statefulness, confirming that security is the dimension where Lowe’s most consistently differentiates its investment profile. TJX Companies (48), H&M (47), Nike (45), and Shopify (45) follow, with the sector’s top five security investors all posting scores between 45 and 51. Security in e-commerce has high-profile implications — major retailers including Target and Home Depot have suffered high-cost security breaches — and the elevated security scores across multiple companies reflect breach-driven investment that has created a culture of security investment as a baseline operational requirement.

Governance — Top Company: TJX Companies (25)

Governance in Governance & Risk mirrors Statefulness scores, with TJX Companies (25), Shopify (23), Amazon (22), Lego (21), and Nike (20) maintaining the same rankings. The consistency across layers confirms that governance investment is a genuinely cross-functional capability for the sector’s leading operators rather than a point solution deployed for specific compliance requirements.

Privacy & Data Rights — Top Company: Lego (5)

Lego leads Privacy & Data Rights with 5, followed by Nike (4), Shopify (4), Target (4), TJX Companies (4), and H&M (4). The low absolute scores reflect the e-commerce sector’s early-stage investment in technical privacy infrastructure beyond compliance programs. Given that e-commerce operators collectively hold among the richest individual-level behavioral and purchasing data of any industry, the gap between operational data sophistication (Amazon Data: 96) and privacy-preserving technology investment (maximum 5) represents a significant regulatory risk surface. As enforcement of data subject rights under GDPR and CCPA matures — and as new US federal privacy legislation advances — technical privacy infrastructure will shift from a compliance cost center to an operational requirement.


Layer 10: Economics & Sustainability

Economics & Sustainability captures how E-commerce Platform organizations invest in AI cost optimization, cloud provider strategy, ecosystem partnerships, talent development, and infrastructure sustainability.

AI FinOps — Top Company: Shopify (9)

Shopify leads AI FinOps with 9, followed by Lego (8), TJX Companies (8), Nike (7), Amazon (7), and H&M (7). The moderate absolute scores reflect the sector’s early engagement with AI cost optimization as a formal discipline. E-commerce companies are among the highest-volume consumers of AI inference at scale — personalization, search ranking, and demand forecasting run continuously across millions of user sessions — making AI FinOps a financially material discipline. The low scores relative to the operational scale suggest that cost optimization is occurring informally through platform-level infrastructure choices rather than through dedicated AI FinOps programs.

Provider Strategy — Top Company: TJX Companies (17)

TJX Companies leads Provider Strategy with 17, followed by Shopify (16), Nike (15), Lego (14), H&M (13), Amazon (12), and Adidas (12). TJX’s provider strategy leadership is consistent with its broader pattern of deliberate, multi-dimensional technology investment. The service footprint includes Azure Functions and Google Analytics alongside AWS-aligned tools, confirming that multi-cloud provider strategy is standard practice across the sector’s most sophisticated operators. Amazon’s score of 12 in Provider Strategy is notably lower than expected for the world’s largest cloud company, reflecting that Amazon’s provider strategy is AWS-dominated rather than genuinely multi-cloud.

Partnerships & Ecosystem — Top Company: Lego (20)

Lego leads Partnerships & Ecosystem with 20, followed by Shopify (18), TJX Companies (16), Nike (15), H&M (15), and Adidas (14). Lego’s ecosystem leadership — in addition to its CNCF (31) and Services (226) leadership — reinforces the company as one of the most technology-sophisticated consumer brands globally. Lego’s partnership ecosystem spans digital commerce platforms, gaming and entertainment technology partners, educational technology providers, and content licensing relationships, creating a uniquely broad and deep ecosystem footprint for a toy company. Shopify’s score of 18 reflects its position as an ecosystem builder — the AppExchange equivalent for commerce, with thousands of app partners integrated into the Shopify ecosystem.

Talent & Organizational Design — Top Company: Amazon (18)

Amazon leads Talent & Organizational Design with 18, followed by Shopify (17), TJX Companies (16), H&M (15), Nike (14), and Lego (13). Amazon’s talent leadership reflects its position as the largest technology employer with the most sophisticated talent acquisition and development infrastructure in the e-commerce sector. The service footprint includes LinkedIn and Pluralsight at 24-company coverage, confirming universal investment in talent acquisition and learning platform infrastructure. The sector-wide investment in Pluralsight — a technology skills development platform — signals a sector-wide commitment to technical talent development that extends beyond hiring to continuous skills upgrading.

Data Centers — Top Company: (No ranked company)

Data Centers has no ranked company score across the E-commerce Platform sector, indicating this dimension is in early measurement stages. The sector’s data center investment is dominated by cloud provider relationships (Amazon, Google, Microsoft), and direct data center ownership is concentrated in Amazon (AWS) and to a lesser extent Walmart and Target, which operate proprietary infrastructure. This measurement gap reflects the broader shift of e-commerce infrastructure investment from CapEx (owned data centers) to OpEx (cloud provider consumption).


Layer 11: Storytelling & Entertainment & Theater

Storytelling & Entertainment & Theater captures how E-commerce Platform organizations invest in strategic narrative alignment, technology standardization, M&A activity, and experimentation culture.

Alignment — Top Company: Adidas (25)

Adidas leads Alignment with 25, followed by Shopify (24), TJX Companies (23), Nike (22), Amazon (21), and Lego (20). Adidas’ alignment leadership reflects its coherent and highly communicated technology investment narrative — the brand has publicly positioned digital commerce, data-driven personalization, and sustainability technology as its core strategic differentiators, creating an alignment between stated strategy and measured technology investment signals. Shopify’s score of 24 reflects consistent alignment between its developer-platform strategy and its technology investment across all 11 layers.

Standardization — Top Company: TJX Companies (12)

TJX Companies leads Standardization with 12, followed by Nike (11), Shopify (10), H&M (9), Amazon (9), and Lego (8). TJX’s standardization leadership is consistent with its operational discipline profile — a company managing multiple retail brands (TJ Maxx, Marshalls, HomeGoods, Sierra) across thousands of stores requires standardized technology platforms to achieve the operational efficiency that underlies its low-cost retail model. The service footprint at 24-company coverage for ServiceNow and GitLab reflects that IT service management and CI/CD standardization are sector-wide baseline investments.

Mergers & Acquisitions — Top Company: Under Armour (20)

Under Armour leads M&A with 20, followed by TJX Companies (17), Amazon (17), Nike (16), Adidas (15), and Shopify (14). Under Armour’s M&A leadership is unexpected and may reflect technology acquisition activity in the fitness and digital health space — including its acquisitions of MapMyFitness and MyFitnessPal — that positioned it as an early mover in consumer health data assets. Amazon’s score of 17 reflects its ongoing acquisition of e-commerce-enabling companies including MGM, iRobot (pending), and One Medical, all of which have direct or indirect e-commerce relevance.

Experimentation & Prototyping — Top Company: (No ranked company)

Experimentation & Prototyping has no ranked company score, consistent with the other industries in this report. E-commerce is arguably the industry with the most mature A/B testing and experimentation culture — companies like Amazon run thousands of experiments simultaneously — but the measurement framework does not yet surface this investment in a scored form. This represents a gap between the actual experimentation intensity of e-commerce operators and the current measurement coverage of this dimension.


Industry Strategic Assessment

The E-commerce Platform sector’s technology investment profile reveals an industry in the middle of a decisive AI-capability transition — with world-class cloud infrastructure and service ecosystem investment among leading operators, but with a critical gap in the proprietary AI customization layer that will determine which companies emerge as AI-native commerce leaders versus those who become increasingly dependent on third-party AI capabilities. Amazon (Cloud: 97, Data: 96, Services: 196) and Shopify (AI: 57, Data: 86, Code: 30, CNCF: 30) represent the sector’s most consistent, multi-dimensional technology leaders — companies that have invested across foundational, operational, and integration layers to create defensible, compound technical advantages. Lego (Services: 226, CNCF: 31, Data: 63, Partnerships: 20) is the report’s most surprising finding: a toy company that has built technology investment depth rivaling digital-native e-commerce operators, positioning itself for AI-native commerce experiences across its global brand footprint. TJX Companies (Automation: 51, Operations: 55, Governance: 25, ROI: 47, Standardization: 12) emerges as the off-price retail sector’s most sophisticated technology investor, with consistent leadership across operational efficiency, governance, and measurement dimensions that reflect an investment philosophy oriented toward quantified business outcomes rather than technology experimentation.

The lagging investment areas that represent the most significant strategic risk for the sector are concentrated in the Customization & Adaptation layer (Domain Specialization: maximum 2; Data Pipelines: maximum 13) and the Privacy & Data Rights dimension (maximum 5). The Domain Specialization gap means that all 26 e-commerce operators — from Amazon to IKEA to Barnes & Noble — are building AI capabilities on top of the same general-purpose foundation models, without yet differentiating through proprietary, category-specific AI training. The operator that first builds a product catalog understanding model trained on decades of purchase data, a size-and-fit recommendation model trained on proprietary return and review data, or a demand forecasting model trained on category-specific weather, trend, and promotional interaction data will achieve a model intelligence advantage that cannot be matched by competitors who remain general-purpose AI consumers. The privacy investment gap (maximum 5 across 26 companies) creates both a regulatory risk surface and a missed strategic opportunity — privacy-preserving personalization, which allows companies to deliver personalized experiences under tightening consent regimes, will become a competitive differentiator as third-party data signal deprecation continues. Organizations benchmarking e-commerce technology investment, evaluating technology partnerships, or assessing competitive risk from digital-native disruption will find Naftiko’s 11-layer signal framework the most precise available instrument for identifying which companies are building toward AI-native commerce leadership and which are at risk of being outcompeted by operators who have closed the capability gap before it becomes insurmountable.

Companies — Total:35

  • Academy Sports and Outdoors
    Academy Sports + Outdoors is a Fortune 500 sporting goods and outdoor recreation retailer headquartered...
  • Adidas
    A German multinational corporation designing and manufacturing athletic shoes, apparel, and accessories. One of the...
  • Advance Auto Parts
    Advance Auto Parts is a leading automotive aftermarket parts retailer offering a comprehensive catalog of...
  • Amazon
    The world's largest e-commerce and cloud computing company operating a vast online marketplace, Amazon Web...
  • American Eagle Outfitters
    An American retail company operating the American Eagle and Aerie lifestyle brands targeting young adults....
  • Barnes & Noble
    The largest retail bookseller in the United States operating hundreds of stores nationwide. Also sells...
  • Best Buy
    Best Buy is a multinational consumer electronics retailer offering technology products, services, and solutions through...
  • Bloomingdales
    An American luxury department store chain owned by Macy's Inc. Known for its upscale fashion,...
  • Carvana
    Carvana is an e-commerce platform for buying, selling, and financing used cars online, featuring home...
  • Chewy
    The largest online retailer of pet food and products in the United States. Offers auto-ship...
  • Costco
    A membership-based warehouse club offering bulk goods, groceries, and services at discount prices. One of...
  • Coupang
    Coupang is a South Korean e-commerce company offering rapid delivery of a wide range of...
  • eBay
    eBay is a multinational e-commerce corporation that operates a website facilitating consumer-to-consumer and business-to-consumer sales...
  • ETSY
    Fortune 1000 company ETSY. Public API documentation has not yet been catalogued in the API...
  • Gap
    An American retail company operating clothing and accessories brands including Gap, Old Navy, Banana Republic,...
  • H&M
    A Swedish multinational fast-fashion retailer offering affordable clothing, accessories, and home goods. Operates thousands of...
  • Home Depot
    The world's largest home improvement retailer operating over 2,300 stores across North America. Serves do-it-yourself...
  • IKEA
    A Swedish multinational furniture and home goods retailer known for its affordable, ready-to-assemble products. Operates...
  • Inditex
    A Spanish multinational fashion group and the world's largest apparel retailer operating brands including Zara,...
  • Lego
    A Danish toy company and the world's largest manufacturer of interlocking plastic building bricks. Extends...
  • Lowe's
    The second-largest home improvement retailer in the world operating approximately 1,700 stores across North America....
  • Macys
    An iconic American department store chain offering fashion, home goods, and beauty products. Operates hundreds...
  • Mattel
    A global toy and entertainment company behind iconic brands including Barbie, Hot Wheels, Fisher-Price, and...
  • Nike
    The world's largest athletic footwear and apparel company designing products for sports, fitness, and lifestyle....
  • Nordstrom
    An American luxury department store chain known for its high-end fashion, footwear, and customer service....
  • Qurate Retail
    Profile for Qurate Retail in the API Evangelist network. Fortune F500 (rank 342).
  • Sephora
    A French multinational chain of personal care and beauty stores and a subsidiary of LVMH....
  • Shopify
    A Canadian multinational e-commerce platform enabling businesses of all sizes to create online stores and...
  • Target
    One of the largest general merchandise retailers in the United States operating nearly 2,000 stores...
  • TJX Companies
    The leading off-price retailer in the United States and worldwide operating TJ Maxx, Marshalls, HomeGoods,...
  • Under Armour
    An American sportswear company manufacturing performance athletic apparel, footwear, and accessories. Founded on moisture-wicking fabric...
  • Urban Outfitters
    An American lifestyle retail company operating the Urban Outfitters, Anthropologie, and Free People brands. Targets...
  • Walmart
    The world's largest retailer by revenue operating thousands of supercenters, discount stores, and neighborhood markets....
  • Wayfair
    An American e-commerce company specializing in home goods, furniture, and décor. Operates one of the...
  • Williams-Sonoma
    Williams-Sonoma, Inc. is a Fortune 500 American publicly traded retail company specializing in kitchenware and...

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

Sort
Expand
2051 capabilities

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
Open in Framework → View in Fleet → infrastructure-scaling-automation.yml

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
Open in Framework → View in Fleet → omnichannel-inventory-reconciliation.yml

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
Open in Framework → View in Fleet → jira-issue-status.yml

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
Open in Framework → View in Fleet → confluence-page-retrieval.yml

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
Open in Framework → View in Fleet → personalization-engine-data-sync.yml

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
Open in Framework → View in Fleet → servicenow-incident-status-check.yml

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
Open in Framework → View in Fleet → knowledge-base-article-publisher.yml

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
Open in Framework → View in Fleet → supply-chain-disruption-alert.yml

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
Open in Framework → View in Fleet → seasonal-markdown-optimization.yml

Fetches the current health status and error rate for a specified Adidas microservice from Datadog. Used by platform engineering and SRE teams.

naftiko: '0.5'
info:
  label: Datadog Service Health Check
  description: Fetches the current health status and error rate for a specified Adidas microservice from Datadog. Used by platform engineering and SRE teams.
  tags:
  - observability
  - datadog
  - sre
capability:
  exposes:
  - type: mcp
    namespace: observability
    port: 8080
    tools:
    - name: get-service-health
      description: Query Datadog for the current health status, error rate, and latency of a given service.
      inputParameters:
      - name: service_name
        in: body
        type: string
        description: The Datadog service name to query.
      call: datadog.get-service-summary
      with:
        service_name: '{{service_name}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.data.attributes.status
      - name: error_rate
        type: string
        mapping: $.data.attributes.error_rate
      - name: avg_latency_ms
        type: string
        mapping: $.data.attributes.avg_latency
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    inputParameters:
    - name: DD-APPLICATION-KEY
      in: header
      value: $secrets.datadog_app_key
    resources:
    - name: services
      path: /services/{{service_name}}
      inputParameters:
      - name: service_name
        in: path
      operations:
      - name: get-service-summary
        method: GET
Open in Framework → View in Fleet → datadog-service-health-check.yml

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
Open in Framework → View in Fleet → datadog-monitor-status.yml

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
Open in Framework → View in Fleet → e-commerce-a-b-test-result-collector.yml

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
Open in Framework → View in Fleet → product-quality-inspection-pipeline.yml

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
Open in Framework → View in Fleet → grafana-dashboard-query.yml

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
Open in Framework → View in Fleet → product-launch-readiness-orchestrator.yml

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
Open in Framework → View in Fleet → seasonal-markdown-execution.yml

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
Open in Framework → View in Fleet → e-commerce-order-fulfillment-tracker.yml

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
Open in Framework → View in Fleet → product-inventory-lookup.yml

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
Open in Framework → View in Fleet → collection-planning-pipeline.yml

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
Open in Framework → View in Fleet → prometheus-metric-query.yml

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
Open in Framework → View in Fleet → social-media-campaign-tracker.yml

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
Open in Framework → View in Fleet → personalization-engine-sync-pipeline.yml

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
Open in Framework → View in Fleet → cross-border-trade-compliance.yml

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
Open in Framework → View in Fleet → ml-model-deployment-pipeline.yml

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
Open in Framework → View in Fleet → data-pipeline-failure-handler.yml

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
Open in Framework → View in Fleet → order-fulfillment-sla-monitor.yml

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
Open in Framework → View in Fleet → product-recall-management-pipeline.yml

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
Open in Framework → View in Fleet → terraform-drift-detection-and-remediation.yml

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
Open in Framework → View in Fleet → wholesale-order-processing-pipeline.yml

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
Open in Framework → View in Fleet → e-commerce-fraud-detection-pipeline.yml

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
Open in Framework → View in Fleet → elasticsearch-product-search.yml

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
Open in Framework → View in Fleet → security-vulnerability-response.yml

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
Open in Framework → View in Fleet → pagerduty-incident-details.yml

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
Open in Framework → View in Fleet → customer-loyalty-rewards-processor.yml

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
Open in Framework → View in Fleet → athlete-sponsorship-contract-pipeline.yml

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
Open in Framework → View in Fleet → network-incident-auto-remediation.yml

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
Open in Framework → View in Fleet → retail-theft-prevention-pipeline.yml

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
Open in Framework → View in Fleet → gitlab-to-azure-devops-migration-tracker.yml

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
Open in Framework → View in Fleet → social-media-engagement-aggregator.yml

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
Open in Framework → View in Fleet → compliance-labeling-verification.yml

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
Open in Framework → View in Fleet → dynatrace-problem-query.yml

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
Open in Framework → View in Fleet → sap-hana-sales-cube-query.yml

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
Open in Framework → View in Fleet → okta-user-profile-lookup.yml

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
Open in Framework → View in Fleet → sustainability-metrics-collection-pipeline.yml

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
Open in Framework → View in Fleet → salesforce-lead-qualification.yml

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
Open in Framework → View in Fleet → product-return-analysis-pipeline.yml

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
Open in Framework → View in Fleet → bigcommerce-order-lookup.yml

Retrieves employee profile from Workday at Adidas.

naftiko: '0.5'
info:
  label: Workday Employee Lookup
  description: Retrieves employee profile from Workday at Adidas.
  tags:
  - hr
  - workday
  - employee-data
capability:
  exposes:
  - type: mcp
    namespace: hr
    port: 8080
    tools:
    - name: get-employee
      description: Look up Workday employee at Adidas.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The employee_id to look up.
      call: workday.get-employee_id
      with:
        employee_id: '{{employee_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_employee_lookup
        method: GET
Open in Framework → View in Fleet → workday-employee-lookup.yml

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
Open in Framework → View in Fleet → opentelemetry-trace-to-incident.yml

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
Open in Framework → View in Fleet → product-lifecycle-management-pipeline.yml

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
Open in Framework → View in Fleet → vendor-compliance-audit.yml

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
Open in Framework → View in Fleet → employee-wellness-program-pipeline.yml

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
Open in Framework → View in Fleet → slack-channel-post.yml

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
Open in Framework → View in Fleet → servicenow-incident-status.yml

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
Open in Framework → View in Fleet → power-bi-refresh-trigger.yml

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
Open in Framework → View in Fleet → sap-purchase-order-approval-pipeline.yml

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
Open in Framework → View in Fleet → hubspot-contact-lookup.yml

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
Open in Framework → View in Fleet → warehouse-labor-scheduling-pipeline.yml

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
Open in Framework → View in Fleet → new-market-entry-assessment.yml

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
Open in Framework → View in Fleet → content-asset-production-pipeline.yml

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
Open in Framework → View in Fleet → power-automate-workflow-status-reporter.yml

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
Open in Framework → View in Fleet → vendor-performance-scorecard-pipeline.yml

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
Open in Framework → View in Fleet → zendesk-ticket-lookup.yml

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
Open in Framework → View in Fleet → stripe-payment-lookup.yml

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
Open in Framework → View in Fleet → influencer-campaign-roi-calculator.yml

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
Open in Framework → View in Fleet → salesforce-account-info.yml

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
Open in Framework → View in Fleet → marketing-budget-tracker-sync.yml

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
Open in Framework → View in Fleet → adobe-analytics-page-performance.yml

On new hire creation in PeopleSoft, provisions a SharePoint folder, sends a Microsoft Teams welcome message, and creates an onboarding ticket in ServiceNow.

naftiko: '0.5'
info:
  label: Employee Onboarding Orchestrator
  description: On new hire creation in PeopleSoft, provisions a SharePoint folder, sends a Microsoft Teams welcome message, and creates an onboarding ticket in ServiceNow.
  tags:
  - hr
  - onboarding
  - peoplesoft
  - sharepoint
  - microsoft-teams
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: hr-onboarding
    port: 8080
    tools:
    - name: trigger-onboarding
      description: Given a PeopleSoft employee ID and start date, orchestrate the full onboarding sequence.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The PeopleSoft employee ID.
      - name: start_date
        in: body
        type: string
        description: The start date in YYYY-MM-DD format.
      - name: department
        in: body
        type: string
        description: The department the new hire is joining.
      steps:
      - name: get-employee
        type: call
        call: peoplesoft.get-employee
        with:
          employee_id: '{{employee_id}}'
      - name: provision-folder
        type: call
        call: sharepoint.create-folder
        with:
          site_id: hr_onboarding
          folder_path: OnboardingDocs/{{get-employee.full_name}}_{{start_date}}
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Onboarding: {{get-employee.full_name}} — {{department}}'
          category: hr_onboarding
          assigned_group: IT_Onboarding
          description: New hire {{get-employee.full_name}} starting {{start_date}} in {{department}}.
      - name: send-welcome
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-employee.work_email}}'
          text: 'Welcome to Adidas, {{get-employee.first_name}}! IT ticket: {{create-ticket.number}}. Your docs folder: {{provision-folder.url}}.'
  consumes:
  - 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}}
      inputParameters:
      - name: employee_id
        in: path
      operations:
      - name: get-employee
        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: create-folder
        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: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → employee-onboarding-orchestrator.yml

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
Open in Framework → View in Fleet → ci-cd-pipeline-failure-handler.yml

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
Open in Framework → View in Fleet → warehouse-replenishment-orchestrator.yml

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
Open in Framework → View in Fleet → promotional-pricing-orchestrator.yml

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
Open in Framework → View in Fleet → e-commerce-checkout-optimization.yml

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
Open in Framework → View in Fleet → warehouse-operations-optimization.yml

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
Open in Framework → View in Fleet → splunk-log-search.yml

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
Open in Framework → View in Fleet → new-product-launch-campaign-orchestrator.yml

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
Open in Framework → View in Fleet → store-opening-orchestrator.yml

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
Open in Framework → View in Fleet → elasticsearch-log-query.yml

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
Open in Framework → View in Fleet → customer-service-escalation-pipeline.yml

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
Open in Framework → View in Fleet → sustainability-reporting-pipeline.yml

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
Open in Framework → View in Fleet → salesforce-to-sap-order-sync.yml

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
Open in Framework → View in Fleet → retail-store-performance-pipeline.yml

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
Open in Framework → View in Fleet → snowflake-query-executor.yml

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
Open in Framework → View in Fleet → pluralsight-learning-path-assignment.yml

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
Open in Framework → View in Fleet → event-sponsorship-tracker.yml

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
Open in Framework → View in Fleet → customer-journey-analytics-pipeline.yml

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
Open in Framework → View in Fleet → omnichannel-inventory-sync-pipeline.yml

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
Open in Framework → View in Fleet → brand-sentiment-analyzer.yml

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
Open in Framework → View in Fleet → supply-chain-demand-forecasting.yml

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
Open in Framework → View in Fleet → whatsapp-customer-order-status-bot.yml

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
Open in Framework → View in Fleet → github-repository-lookup.yml

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
Open in Framework → View in Fleet → retail-store-performance-dashboard-sync.yml

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
Open in Framework → View in Fleet → athlete-endorsement-deal-tracker.yml

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
Open in Framework → View in Fleet → customer-return-processing.yml

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
Open in Framework → View in Fleet → customer-feedback-loop.yml

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
Open in Framework → View in Fleet → warehouse-equipment-maintenance-pipeline.yml

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
Open in Framework → View in Fleet → influencer-collaboration-workflow.yml

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
Open in Framework → View in Fleet → google-analytics-campaign-report.yml

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
Open in Framework → View in Fleet → digital-shelf-monitoring-pipeline.yml

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
Open in Framework → View in Fleet → teradata-retail-analytics-query.yml

Lists all Lambda functions in a given AWS region and returns their names, runtimes, and memory configurations.

naftiko: '0.5'
info:
  label: Lambda Function List
  description: Lists all Lambda functions in a given AWS region and returns their names, runtimes, and memory configurations.
  tags:
  - cloud
  - serverless
  - aws
  - lambda
capability:
  exposes:
  - type: mcp
    namespace: lambda-list
    port: 8080
    tools:
    - name: list-functions
      description: List all Lambda functions in the specified AWS region. Returns function names, runtimes, and memory sizes.
      inputParameters:
      - name: region
        in: body
        type: string
        description: The AWS region to list Lambda functions for, e.g. us-west-2.
      call: lambda-api.list-functions
      with:
        region: '{{region}}'
      outputParameters:
      - name: functions
        type: array
        mapping: $.Functions
  consumes:
  - namespace: lambda-api
    type: http
    baseUri: https://lambda.us-east-1.amazonaws.com/2015-03-31
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_lambda_token
      placement: header
    resources:
    - name: functions
      path: /functions
      inputParameters:
      - name: region
        in: query
      operations:
      - name: list-functions
        method: GET
Open in Framework → View in Fleet → lambda-function-list.yml

Aggregates GitHub PR merge rates, Jira issue cycle times, and Datadog error rates for the past week, then publishes a consolidated engineering health digest to the leadership Slack channel.

naftiko: '0.5'
info:
  label: Weekly Engineering Metrics Digest
  description: Aggregates GitHub PR merge rates, Jira issue cycle times, and Datadog error rates for the past week, then publishes a consolidated engineering health digest to the leadership Slack channel.
  tags:
  - devops
  - reporting
  - github
  - jira
  - datadog
  - slack
  - metrics
capability:
  exposes:
  - type: mcp
    namespace: eng-reporting
    port: 8080
    tools:
    - name: publish-eng-metrics-digest
      description: Given a GitHub org, Jira project key, and Datadog service tag, fetch the weekly PR merge count, Jira throughput, and service error rate, then post a combined engineering digest to Slack.
      inputParameters:
      - name: github_org
        in: body
        type: string
        description: The GitHub organization to query PR merge stats for, e.g. amzn.
      - name: jira_project_key
        in: body
        type: string
        description: The Jira project key to query issue throughput for.
      - name: datadog_service
        in: body
        type: string
        description: The Datadog service tag to query error rate metrics for.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel ID where the weekly digest will be posted.
      steps:
      - name: get-pr-stats
        type: call
        call: github-metrics.search-issues
        with:
          q: org:{{github_org}} is:pr is:merged merged:>-7d
      - name: get-dd-error-rate
        type: call
        call: datadog-metrics.query-metrics
        with:
          query: avg:trace.web.request.errors{service:{{datadog_service}}}.rollup(avg, 604800)
      - name: post-digest
        type: call
        call: slack-metrics.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Weekly Engineering Digest | PRs merged: {{get-pr-stats.total_count}} | Datadog error rate (7d avg): {{get-dd-error-rate.value}} | Project: {{jira_project_key}}'
  consumes:
  - namespace: github-metrics
    type: http
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: search-issues
      path: /search/issues
      inputParameters:
      - name: q
        in: query
      operations:
      - name: search-issues
        method: GET
  - namespace: datadog-metrics
    type: http
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: metrics
      path: /query
      inputParameters:
      - name: query
        in: query
      operations:
      - name: query-metrics
        method: GET
  - namespace: slack-metrics
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → weekly-engineering-metrics-digest.yml

When a Salesforce support case is escalated to priority 1, creates a linked ServiceNow incident and pages the on-call support engineer via PagerDuty.

naftiko: '0.5'
info:
  label: Salesforce Case Escalation to ServiceNow
  description: When a Salesforce support case is escalated to priority 1, creates a linked ServiceNow incident and pages the on-call support engineer via PagerDuty.
  tags:
  - customer-support
  - crm
  - salesforce
  - servicenow
  - pagerduty
  - escalation
capability:
  exposes:
  - type: mcp
    namespace: support-escalation
    port: 8080
    tools:
    - name: escalate-case-to-p1
      description: Given a Salesforce case ID and PagerDuty service key, fetch the case details, open a linked ServiceNow incident, and page the on-call support engineer.
      inputParameters:
      - name: case_id
        in: body
        type: string
        description: The Salesforce case ID to escalate, e.g. 5005g00000ABC.
      - name: pagerduty_service_key
        in: body
        type: string
        description: The PagerDuty service integration key for routing the escalation page.
      steps:
      - name: get-case
        type: call
        call: salesforce-esc.get-case
        with:
          case_id: '{{case_id}}'
      - name: create-incident
        type: call
        call: servicenow-esc.create-incident
        with:
          short_description: 'P1 Escalation: {{get-case.subject}}'
          description: 'Salesforce Case: {{case_id}}

            Account: {{get-case.account_name}}

            Description: {{get-case.description}}'
          urgency: '1'
          impact: '1'
      - name: page-oncall
        type: call
        call: pagerduty-esc.create-incident
        with:
          service_key: '{{pagerduty_service_key}}'
          description: 'P1 support escalation: {{get-case.subject}}'
          incident_key: sf-{{case_id}}
  consumes:
  - namespace: salesforce-esc
    type: http
    baseUri: https://amazon.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: case
      path: /sobjects/Case/{case_id}
      inputParameters:
      - name: case_id
        in: path
      operations:
      - name: get-case
        method: GET
  - namespace: servicenow-esc
    type: http
    baseUri: https://amazon.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: incident
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: pagerduty-esc
    type: http
    baseUri: https://events.pagerduty.com/v2
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.pagerduty_token
      placement: header
    resources:
    - name: incident
      path: /enqueue
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → salesforce-case-escalation-to-servicenow.yml

Retrieves a single item from a DynamoDB table by primary key and returns the full item attributes.

naftiko: '0.5'
info:
  label: DynamoDB Item Lookup
  description: Retrieves a single item from a DynamoDB table by primary key and returns the full item attributes.
  tags:
  - cloud
  - database
  - aws
  - dynamodb
capability:
  exposes:
  - type: mcp
    namespace: dynamo-lookup
    port: 8080
    tools:
    - name: get-item
      description: Fetch a single item from a DynamoDB table by its primary key. Returns all item attributes.
      inputParameters:
      - name: table_name
        in: body
        type: string
        description: The DynamoDB table name to query.
      - name: key_value
        in: body
        type: string
        description: The primary key value for the item to retrieve.
      call: dynamodb-api.get-item
      with:
        table_name: '{{table_name}}'
        key_value: '{{key_value}}'
      outputParameters:
      - name: item
        type: object
        mapping: $.Item
  consumes:
  - namespace: dynamodb-api
    type: http
    baseUri: https://dynamodb.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_dynamodb_token
      placement: header
    resources:
    - name: item
      path: /
      inputParameters:
      - name: table_name
        in: body
      - name: key_value
        in: body
      operations:
      - name: get-item
        method: POST
Open in Framework → View in Fleet → dynamodb-item-lookup.yml

Fetches an open Workday job requisition and publishes it as a LinkedIn job posting, then creates a Jira recruiting task to track the open role.

naftiko: '0.5'
info:
  label: LinkedIn Job Posting Publisher
  description: Fetches an open Workday job requisition and publishes it as a LinkedIn job posting, then creates a Jira recruiting task to track the open role.
  tags:
  - hr
  - recruiting
  - workday
  - linkedin
  - jira
capability:
  exposes:
  - type: mcp
    namespace: recruiting-ops
    port: 8080
    tools:
    - name: publish-job-to-linkedin
      description: Given a Workday job requisition ID, fetch role details from Workday, publish the posting to LinkedIn, and create a Jira recruiting task to track candidate pipeline.
      inputParameters:
      - name: requisition_id
        in: body
        type: string
        description: The Workday job requisition ID to publish, e.g. JR-00542.
      - name: linkedin_organization_id
        in: body
        type: string
        description: The LinkedIn organization URN ID to post the job under.
      steps:
      - name: get-requisition
        type: call
        call: workday-rec.get-requisition
        with:
          requisition_id: '{{requisition_id}}'
      - name: create-linkedin-post
        type: call
        call: linkedin.create-job-posting
        with:
          organization_id: '{{linkedin_organization_id}}'
          title: '{{get-requisition.job_title}}'
          description: '{{get-requisition.job_description}}'
          location: '{{get-requisition.location}}'
      - name: create-recruiting-task
        type: call
        call: jira-rec.create-issue
        with:
          project_key: RECRUIT
          issuetype: Task
          summary: 'Open Role: {{get-requisition.job_title}} ({{requisition_id}})'
          description: 'LinkedIn posting ID: {{create-linkedin-post.posting_id}}'
  consumes:
  - namespace: workday-rec
    type: http
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: requisition
      path: /jobRequisitions/{requisition_id}
      inputParameters:
      - name: requisition_id
        in: path
      operations:
      - name: get-requisition
        method: GET
  - namespace: linkedin
    type: http
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: job-posting
      path: /jobs
      operations:
      - name: create-job-posting
        method: POST
  - namespace: jira-rec
    type: http
    baseUri: https://amazon.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_token
    resources:
    - name: issue
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → linkedin-job-posting-publisher.yml

Fetches current headcount data from Workday by department and publishes a summary report to a Slack channel for people-ops review.

naftiko: '0.5'
info:
  label: Workday Headcount Snapshot
  description: Fetches current headcount data from Workday by department and publishes a summary report to a Slack channel for people-ops review.
  tags:
  - hr
  - reporting
  - workday
  - slack
  - headcount
capability:
  exposes:
  - type: mcp
    namespace: hr-reporting
    port: 8080
    tools:
    - name: digest-headcount
      description: Given a Workday organization ID, fetch a headcount summary by department and post the digest to a designated Slack channel. Invoke when a people-ops or finance team member requests a headcount report.
      inputParameters:
      - name: org_id
        in: body
        type: string
        description: The Workday organization ID to query headcount for.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel ID where the headcount digest will be posted.
      steps:
      - name: get-headcount
        type: call
        call: workday-hc.get-headcount
        with:
          org_id: '{{org_id}}'
      - name: post-digest
        type: call
        call: slack-hc.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Headcount for org {{org_id}}: {{get-headcount.total}} total employees across {{get-headcount.department_count}} departments.'
  consumes:
  - namespace: workday-hc
    type: http
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: headcount
      path: /orgs/{org_id}/headcount
      inputParameters:
      - name: org_id
        in: path
      operations:
      - name: get-headcount
        method: GET
  - namespace: slack-hc
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → workday-headcount-snapshot.yml

Pulls usage metrics for an Alexa skill, generates a weekly digest, and posts the summary to a Slack channel.

naftiko: '0.5'
info:
  label: Alexa Skill Usage Analytics Digest
  description: Pulls usage metrics for an Alexa skill, generates a weekly digest, and posts the summary to a Slack channel.
  tags:
  - voice
  - alexa
  - analytics
  - slack
capability:
  exposes:
  - type: mcp
    namespace: alexa-analytics
    port: 8080
    tools:
    - name: generate-usage-digest
      description: Generate a weekly usage analytics digest for an Alexa skill and post it to Slack.
      inputParameters:
      - name: skill_id
        in: body
        type: string
        description: The Alexa skill ID to pull usage metrics for.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel ID to post the digest to.
      steps:
      - name: get-usage-metrics
        type: call
        call: alexa-metrics.get-skill-metrics
        with:
          skill_id: '{{skill_id}}'
          metric: uniqueCustomers,totalSessions
      - name: post-digest
        type: call
        call: slack-alexa.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Alexa Skill Weekly Digest ({{skill_id}}): Unique customers: {{get-usage-metrics.unique_customers}}, Total sessions: {{get-usage-metrics.total_sessions}}'
  consumes:
  - namespace: alexa-metrics
    type: http
    baseUri: https://api.amazonalexa.com/v1
    authentication:
      type: bearer
      token: $secrets.alexa_developer_token
    resources:
    - name: metrics
      path: /skills/{skill_id}/metrics
      inputParameters:
      - name: skill_id
        in: path
      - name: metric
        in: query
      operations:
      - name: get-skill-metrics
        method: GET
  - namespace: slack-alexa
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → alexa-skill-usage-analytics-digest.yml

Describes a CloudFormation stack and returns its current status, outputs, and last updated timestamp.

naftiko: '0.5'
info:
  label: CloudFormation Stack Status
  description: Describes a CloudFormation stack and returns its current status, outputs, and last updated timestamp.
  tags:
  - cloud
  - infrastructure
  - aws
  - cloudformation
capability:
  exposes:
  - type: mcp
    namespace: cfn-status
    port: 8080
    tools:
    - name: describe-stack
      description: Get the status, outputs, and last update time for a CloudFormation stack.
      inputParameters:
      - name: stack_name
        in: body
        type: string
        description: The CloudFormation stack name or ARN to describe.
      call: cfn-api.describe-stack
      with:
        stack_name: '{{stack_name}}'
      outputParameters:
      - name: stack_status
        type: string
        mapping: $.Stacks[0].StackStatus
      - name: outputs
        type: array
        mapping: $.Stacks[0].Outputs
  consumes:
  - namespace: cfn-api
    type: http
    baseUri: https://cloudformation.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_cfn_token
      placement: header
    resources:
    - name: stack
      path: /
      inputParameters:
      - name: stack_name
        in: query
      operations:
      - name: describe-stack
        method: GET
Open in Framework → View in Fleet → cloudformation-stack-status.yml

Analyzes EC2 instance CPU and memory utilization via CloudWatch, generates rightsizing recommendations, and posts the findings to a Slack channel.

naftiko: '0.5'
info:
  label: EC2 Instance Rightsizing Advisor
  description: Analyzes EC2 instance CPU and memory utilization via CloudWatch, generates rightsizing recommendations, and posts the findings to a Slack channel.
  tags:
  - cloud
  - finops
  - cost-optimization
  - aws
  - ec2
  - cloudwatch
  - slack
capability:
  exposes:
  - type: mcp
    namespace: ec2-rightsize
    port: 8080
    tools:
    - name: analyze-rightsizing
      description: Given an EC2 instance ID, analyze its CPU and memory utilization over the last 14 days, generate a rightsizing recommendation, and post results to Slack.
      inputParameters:
      - name: instance_id
        in: body
        type: string
        description: The EC2 instance ID to analyze for rightsizing.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel ID to post the recommendation to.
      steps:
      - name: get-cpu-metrics
        type: call
        call: cloudwatch-rs.get-metric-statistics
        with:
          instance_id: '{{instance_id}}'
          metric_name: CPUUtilization
      - name: get-instance-type
        type: call
        call: ec2-rs.describe-instance
        with:
          instance_id: '{{instance_id}}'
      - name: post-recommendation
        type: call
        call: slack-rs.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Rightsizing Report for {{instance_id}} ({{get-instance-type.instance_type}}): Avg CPU {{get-cpu-metrics.average}}%. Consider downsizing if consistently under 20%.'
  consumes:
  - namespace: cloudwatch-rs
    type: http
    baseUri: https://monitoring.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_cloudwatch_token
      placement: header
    resources:
    - name: metrics
      path: /
      inputParameters:
      - name: instance_id
        in: query
      - name: metric_name
        in: query
      operations:
      - name: get-metric-statistics
        method: GET
  - namespace: ec2-rs
    type: http
    baseUri: https://ec2.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_ec2_token
      placement: header
    resources:
    - name: instance
      path: /
      inputParameters:
      - name: instance_id
        in: query
      operations:
      - name: describe-instance
        method: GET
  - namespace: slack-rs
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → ec2-instance-rightsizing-advisor.yml

When an employee departure is recorded in Workday, revokes GitHub org access, deactivates the Okta account, resolves open Jira tickets assigned to the departing user, and posts a ServiceNow offboarding task.

naftiko: '0.5'
info:
  label: Employee Offboarding Sequence
  description: When an employee departure is recorded in Workday, revokes GitHub org access, deactivates the Okta account, resolves open Jira tickets assigned to the departing user, and posts a ServiceNow offboarding task.
  tags:
  - hr
  - offboarding
  - workday
  - okta
  - github
  - jira
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: hr-offboarding
    port: 8080
    tools:
    - name: trigger-offboarding
      description: Given a Workday employee ID and last working date, revoke GitHub org membership, deactivate Okta account, reassign open Jira issues, and create a ServiceNow offboarding task.
      inputParameters:
      - name: workday_employee_id
        in: body
        type: string
        description: The Workday worker ID of the departing employee.
      - name: jira_project_key
        in: body
        type: string
        description: The Jira project key to query for open issues assigned to the departing user.
      steps:
      - name: get-employee
        type: call
        call: workday-off.get-worker
        with:
          worker_id: '{{workday_employee_id}}'
      - name: remove-github
        type: call
        call: github-off.remove-org-member
        with:
          org: amzn
          username: '{{get-employee.github_username}}'
      - name: deactivate-okta
        type: call
        call: okta.deactivate-user
        with:
          user_id: '{{get-employee.okta_user_id}}'
      - name: create-offboarding-task
        type: call
        call: servicenow-off.create-incident
        with:
          short_description: 'Offboarding: {{get-employee.full_name}}'
          assignment_group: IT_Offboarding
          category: hr_offboarding
  consumes:
  - namespace: workday-off
    type: http
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: worker
      path: /workers/{worker_id}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - namespace: github-off
    type: http
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: org-member
      path: /orgs/{org}/members/{username}
      inputParameters:
      - name: org
        in: path
      - name: username
        in: path
      operations:
      - name: remove-org-member
        method: DELETE
  - namespace: okta
    type: http
    baseUri: https://amazon.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_api_token
      placement: header
    resources:
    - name: user
      path: /users/{user_id}/lifecycle/deactivate
      inputParameters:
      - name: user_id
        in: path
      operations:
      - name: deactivate-user
        method: POST
  - namespace: servicenow-off
    type: http
    baseUri: https://amazon.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: incident
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → employee-offboarding-sequence.yml

Optimizes last-mile delivery routes for Amazon logistics drivers by fetching pending deliveries, calculating optimal routes via Amazon Location Service, and updating driver assignments.

naftiko: '0.5'
info:
  label: Last Mile Delivery Route Optimizer
  description: Optimizes last-mile delivery routes for Amazon logistics drivers by fetching pending deliveries, calculating optimal routes via Amazon Location Service, and updating driver assignments.
  tags:
  - logistics
  - delivery
  - routing
  - aws
  - location-service
capability:
  exposes:
  - type: mcp
    namespace: route-optimizer
    port: 8080
    tools:
    - name: optimize-route
      description: Fetch pending deliveries for a driver, calculate the optimal route, and update driver assignments.
      inputParameters:
      - name: driver_id
        in: body
        type: string
        description: The delivery driver ID.
      - name: warehouse_id
        in: body
        type: string
        description: The origin warehouse ID.
      steps:
      - name: get-pending-deliveries
        type: call
        call: logistics-route.get-driver-deliveries
        with:
          driver_id: '{{driver_id}}'
          warehouse_id: '{{warehouse_id}}'
      - name: calculate-route
        type: call
        call: location-api.calculate-route-matrix
        with:
          departure_position: '{{get-pending-deliveries.warehouse_coords}}'
          destination_positions: '{{get-pending-deliveries.delivery_coords}}'
      - name: update-assignments
        type: call
        call: logistics-route.update-route-plan
        with:
          driver_id: '{{driver_id}}'
          optimized_order: '{{calculate-route.optimized_sequence}}'
          estimated_duration: '{{calculate-route.total_duration}}'
  consumes:
  - namespace: logistics-route
    type: http
    baseUri: https://api.amazon.com/logistics/v1
    authentication:
      type: bearer
      token: $secrets.amazon_logistics_token
    resources:
    - name: driver-deliveries
      path: /drivers/{driver_id}/deliveries
      inputParameters:
      - name: driver_id
        in: path
      - name: warehouse_id
        in: query
      operations:
      - name: get-driver-deliveries
        method: GET
    - name: route-plan
      path: /drivers/{driver_id}/route-plan
      inputParameters:
      - name: driver_id
        in: path
      operations:
      - name: update-route-plan
        method: PUT
  - namespace: location-api
    type: http
    baseUri: https://routes.geo.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_location_token
      placement: header
    resources:
    - name: route-matrix
      path: /routes/v0/calculators/AmazonLogistics/calculate/route-matrix
      operations:
      - name: calculate-route-matrix
        method: POST
Open in Framework → View in Fleet → last-mile-delivery-route-optimizer.yml

Queries CloudTrail for suspicious API activity patterns, creates a finding in Security Hub, and alerts the SOC team via PagerDuty.

naftiko: '0.5'
info:
  label: CloudTrail Suspicious Activity Alerter
  description: Queries CloudTrail for suspicious API activity patterns, creates a finding in Security Hub, and alerts the SOC team via PagerDuty.
  tags:
  - cloud
  - security
  - monitoring
  - aws
  - cloudtrail
  - security-hub
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: cloudtrail-alert
    port: 8080
    tools:
    - name: detect-suspicious-activity
      description: Query CloudTrail for suspicious patterns, create a Security Hub finding, and page the SOC team.
      inputParameters:
      - name: event_name
        in: body
        type: string
        description: The CloudTrail event name to search for, e.g. ConsoleLogin.
      - name: time_range_hours
        in: body
        type: number
        description: Number of hours to look back for events.
      steps:
      - name: lookup-events
        type: call
        call: cloudtrail-api.lookup-events
        with:
          event_name: '{{event_name}}'
          time_range_hours: '{{time_range_hours}}'
      - name: create-finding
        type: call
        call: securityhub-api.batch-import-findings
        with:
          title: 'Suspicious Activity: {{event_name}}'
          description: '{{lookup-events.event_count}} occurrences of {{event_name}} in the last {{time_range_hours}} hours.'
          severity: HIGH
      - name: page-soc
        type: call
        call: pagerduty-ct.create-incident
        with:
          service_id: SOC_SERVICE
          title: 'CloudTrail Alert: {{lookup-events.event_count}} suspicious {{event_name}} events detected.'
  consumes:
  - namespace: cloudtrail-api
    type: http
    baseUri: https://cloudtrail.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_cloudtrail_token
      placement: header
    resources:
    - name: events
      path: /
      operations:
      - name: lookup-events
        method: POST
  - namespace: securityhub-api
    type: http
    baseUri: https://securityhub.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_securityhub_token
      placement: header
    resources:
    - name: findings
      path: /findings/import
      operations:
      - name: batch-import-findings
        method: POST
  - namespace: pagerduty-ct
    type: http
    baseUri: https://api.pagerduty.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.pagerduty_token
      placement: header
    resources:
    - name: incident
      path: /incidents
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → cloudtrail-suspicious-activity-alerter.yml

Retrieves the current value of a secret stored in AWS Secrets Manager by secret name or ARN.

naftiko: '0.5'
info:
  label: Secrets Manager Secret Retrieve
  description: Retrieves the current value of a secret stored in AWS Secrets Manager by secret name or ARN.
  tags:
  - cloud
  - security
  - aws
  - secrets-manager
capability:
  exposes:
  - type: mcp
    namespace: secrets-mgr
    port: 8080
    tools:
    - name: get-secret-value
      description: Retrieve the current value of a secret from AWS Secrets Manager. Returns the secret string or binary.
      inputParameters:
      - name: secret_id
        in: body
        type: string
        description: The secret name or ARN to retrieve.
      call: secrets-api.get-secret-value
      with:
        secret_id: '{{secret_id}}'
      outputParameters:
      - name: secret_string
        type: string
        mapping: $.SecretString
  consumes:
  - namespace: secrets-api
    type: http
    baseUri: https://secretsmanager.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_secrets_token
      placement: header
    resources:
    - name: secret
      path: /
      inputParameters:
      - name: secret_id
        in: body
      operations:
      - name: get-secret-value
        method: POST
Open in Framework → View in Fleet → secrets-manager-secret-retrieve.yml

Checks ElastiCache Redis cluster node health and memory utilization via CloudWatch, then posts a health summary to Slack.

naftiko: '0.5'
info:
  label: ElastiCache Cluster Health Reporter
  description: Checks ElastiCache Redis cluster node health and memory utilization via CloudWatch, then posts a health summary to Slack.
  tags:
  - cloud
  - caching
  - monitoring
  - aws
  - elasticache
  - cloudwatch
  - slack
capability:
  exposes:
  - type: mcp
    namespace: elasticache-health
    port: 8080
    tools:
    - name: report-cluster-health
      description: Check ElastiCache cluster health metrics and post a summary to Slack.
      inputParameters:
      - name: cluster_id
        in: body
        type: string
        description: The ElastiCache cluster ID to check.
      - name: slack_channel
        in: body
        type: string
        description: Slack channel for health reports.
      steps:
      - name: describe-cluster
        type: call
        call: elasticache-api.describe-cache-cluster
        with:
          cluster_id: '{{cluster_id}}'
      - name: get-memory-metric
        type: call
        call: cw-cache.get-metric-data
        with:
          cluster_id: '{{cluster_id}}'
          metric_name: DatabaseMemoryUsagePercentage
      - name: post-health
        type: call
        call: slack-cache.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'ElastiCache Health: Cluster {{cluster_id}} status: {{describe-cluster.status}}. Memory usage: {{get-memory-metric.average}}%. Nodes: {{describe-cluster.num_cache_nodes}}.'
  consumes:
  - namespace: elasticache-api
    type: http
    baseUri: https://elasticache.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_elasticache_token
      placement: header
    resources:
    - name: cluster
      path: /
      inputParameters:
      - name: cluster_id
        in: query
      operations:
      - name: describe-cache-cluster
        method: GET
  - namespace: cw-cache
    type: http
    baseUri: https://monitoring.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_cloudwatch_token
      placement: header
    resources:
    - name: metric
      path: /
      operations:
      - name: get-metric-data
        method: POST
  - namespace: slack-cache
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → elasticache-cluster-health-reporter.yml

Checks the publication status of an Alexa skill by skill ID and returns its current certification state.

naftiko: '0.5'
info:
  label: Alexa Skill Status Check
  description: Checks the publication status of an Alexa skill by skill ID and returns its current certification state.
  tags:
  - voice
  - alexa
  - smart-home
capability:
  exposes:
  - type: mcp
    namespace: alexa-status
    port: 8080
    tools:
    - name: get-skill-status
      description: Given an Alexa skill ID, return its current publication and certification status.
      inputParameters:
      - name: skill_id
        in: body
        type: string
        description: The Alexa skill ID to check status for.
      call: alexa-api.get-skill-status
      with:
        skill_id: '{{skill_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.manifest.lastUpdateRequest.status
  consumes:
  - namespace: alexa-api
    type: http
    baseUri: https://api.amazonalexa.com/v1
    authentication:
      type: bearer
      token: $secrets.alexa_developer_token
    resources:
    - name: skill
      path: /skills/{skill_id}/status
      inputParameters:
      - name: skill_id
        in: path
      operations:
      - name: get-skill-status
        method: GET
Open in Framework → View in Fleet → alexa-skill-status-check.yml

Monitors a Kinesis data stream for iterator age and throughput, logs health metrics to CloudWatch, and alerts via PagerDuty if thresholds are breached.

naftiko: '0.5'
info:
  label: Kinesis Data Pipeline Health Check
  description: Monitors a Kinesis data stream for iterator age and throughput, logs health metrics to CloudWatch, and alerts via PagerDuty if thresholds are breached.
  tags:
  - cloud
  - streaming
  - monitoring
  - aws
  - kinesis
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: kinesis-health
    port: 8080
    tools:
    - name: check-pipeline-health
      description: Monitor Kinesis stream health by checking iterator age and throughput. Log to CloudWatch and alert PagerDuty if unhealthy.
      inputParameters:
      - name: stream_name
        in: body
        type: string
        description: The Kinesis stream name to monitor.
      - name: max_iterator_age_ms
        in: body
        type: number
        description: Maximum acceptable iterator age in milliseconds.
      steps:
      - name: get-stream-metrics
        type: call
        call: cw-kinesis.get-metric-data
        with:
          stream_name: '{{stream_name}}'
          metric_name: GetRecords.IteratorAgeMilliseconds
      - name: log-health
        type: call
        call: cw-kinesis.put-metric-data
        with:
          namespace: Custom/KinesisHealth
          metric_name: PipelineHealthScore
          value: '{{get-stream-metrics.average}}'
      - name: trigger-alert
        type: call
        call: pagerduty-kinesis.create-incident
        with:
          service_id: KINESIS_SVC
          title: Kinesis stream {{stream_name}} iterator age {{get-stream-metrics.average}}ms exceeds {{max_iterator_age_ms}}ms
  consumes:
  - namespace: cw-kinesis
    type: http
    baseUri: https://monitoring.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_cloudwatch_token
      placement: header
    resources:
    - name: metric-data
      path: /
      inputParameters:
      - name: stream_name
        in: query
      - name: metric_name
        in: query
      operations:
      - name: get-metric-data
        method: POST
    - name: put-metric
      path: /
      operations:
      - name: put-metric-data
        method: POST
  - namespace: pagerduty-kinesis
    type: http
    baseUri: https://api.pagerduty.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.pagerduty_token
      placement: header
    resources:
    - name: incident
      path: /incidents
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → kinesis-data-pipeline-health-check.yml

When a Datadog monitor triggers a critical alert, automatically opens a ServiceNow incident, pages the on-call team via PagerDuty, and posts a war-room Slack message.

naftiko: '0.5'
info:
  label: Datadog Alert Incident Bridge
  description: When a Datadog monitor triggers a critical alert, automatically opens a ServiceNow incident, pages the on-call team via PagerDuty, and posts a war-room Slack message.
  tags:
  - observability
  - incident-response
  - datadog
  - servicenow
  - pagerduty
  - slack
capability:
  exposes:
  - type: mcp
    namespace: observability-ops
    port: 8080
    tools:
    - name: handle-critical-alert
      description: Given a Datadog monitor ID and alert details, open a ServiceNow incident, trigger a PagerDuty incident for the on-call engineer, and post a war-room message in Slack.
      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 human-readable name of the Datadog monitor.
      - name: alert_message
        in: body
        type: string
        description: The alert body text describing what threshold was breached.
      - name: pagerduty_service_key
        in: body
        type: string
        description: The PagerDuty integration service key for routing the incident.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel ID for the war-room notification.
      steps:
      - name: open-incident
        type: call
        call: servicenow-obs.create-incident
        with:
          short_description: 'Critical alert: {{monitor_name}}'
          description: '{{alert_message}}'
          urgency: '1'
          impact: '1'
      - name: page-oncall
        type: call
        call: pagerduty.create-incident
        with:
          service_key: '{{pagerduty_service_key}}'
          description: 'Critical Datadog alert: {{monitor_name}}'
          incident_key: dd-{{monitor_id}}
      - name: post-warroom
        type: call
        call: slack-obs.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'CRITICAL ALERT: {{monitor_name}} | ServiceNow: {{open-incident.number}} | PagerDuty: {{page-oncall.incident_id}} | {{alert_message}}'
  consumes:
  - namespace: servicenow-obs
    type: http
    baseUri: https://amazon.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: incident
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: pagerduty
    type: http
    baseUri: https://events.pagerduty.com/v2
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.pagerduty_token
      placement: header
    resources:
    - name: incident
      path: /enqueue
      operations:
      - name: create-incident
        method: POST
  - namespace: slack-obs
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → datadog-alert-incident-bridge.yml

Retrieves the current status and running task count for an Amazon ECS service in a cluster.

naftiko: '0.5'
info:
  label: ECS Service Status
  description: Retrieves the current status and running task count for an Amazon ECS service in a cluster.
  tags:
  - cloud
  - containers
  - aws
  - ecs
capability:
  exposes:
  - type: mcp
    namespace: ecs-status
    port: 8080
    tools:
    - name: describe-service
      description: Get the status, running count, and desired count for an ECS service. Use to verify deployment health.
      inputParameters:
      - name: cluster_name
        in: body
        type: string
        description: The ECS cluster name.
      - name: service_name
        in: body
        type: string
        description: The ECS service name to describe.
      call: ecs-api.describe-service
      with:
        cluster_name: '{{cluster_name}}'
        service_name: '{{service_name}}'
      outputParameters:
      - name: running_count
        type: number
        mapping: $.services[0].runningCount
      - name: status
        type: string
        mapping: $.services[0].status
  consumes:
  - namespace: ecs-api
    type: http
    baseUri: https://ecs.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_ecs_token
      placement: header
    resources:
    - name: service
      path: /
      inputParameters:
      - name: cluster_name
        in: body
      - name: service_name
        in: body
      operations:
      - name: describe-service
        method: POST
Open in Framework → View in Fleet → ecs-service-status.yml

Adds an IP to an AWS WAF IP set block list, logs the change to DynamoDB for audit, and notifies the security team via Slack.

naftiko: '0.5'
info:
  label: WAF Rule Update with Notification
  description: Adds an IP to an AWS WAF IP set block list, logs the change to DynamoDB for audit, and notifies the security team via Slack.
  tags:
  - cloud
  - security
  - aws
  - waf
  - dynamodb
  - slack
capability:
  exposes:
  - type: mcp
    namespace: waf-update
    port: 8080
    tools:
    - name: block-ip-and-notify
      description: Add an IP address to a WAF block list, record the action in DynamoDB, and alert the security team.
      inputParameters:
      - name: ip_set_id
        in: body
        type: string
        description: The WAF IP set ID to update.
      - name: ip_address
        in: body
        type: string
        description: The IP address to block in CIDR format.
      - name: slack_channel
        in: body
        type: string
        description: Slack channel for security notifications.
      steps:
      - name: update-ip-set
        type: call
        call: waf-api.update-ip-set
        with:
          ip_set_id: '{{ip_set_id}}'
          ip_address: '{{ip_address}}'
      - name: log-action
        type: call
        call: dynamo-waf.put-item
        with:
          table_name: waf-audit-log
          ip_address: '{{ip_address}}'
          action: BLOCK
          ip_set_id: '{{ip_set_id}}'
      - name: notify-security
        type: call
        call: slack-waf.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'WAF Update: IP {{ip_address}} added to block list {{ip_set_id}}. Audit record created.'
  consumes:
  - namespace: waf-api
    type: http
    baseUri: https://wafv2.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_waf_token
      placement: header
    resources:
    - name: ip-set
      path: /
      operations:
      - name: update-ip-set
        method: POST
  - namespace: dynamo-waf
    type: http
    baseUri: https://dynamodb.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_dynamodb_token
      placement: header
    resources:
    - name: item
      path: /
      operations:
      - name: put-item
        method: POST
  - namespace: slack-waf
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → waf-rule-update-with-notification.yml

Retrieves purchase orders from Amazon Vendor Central, confirms them, and logs the confirmation to DynamoDB for tracking.

naftiko: '0.5'
info:
  label: Vendor Central Purchase Order Processor
  description: Retrieves purchase orders from Amazon Vendor Central, confirms them, and logs the confirmation to DynamoDB for tracking.
  tags:
  - ecommerce
  - marketplace
  - vendor-central
  - supply-chain
  - dynamodb
capability:
  exposes:
  - type: mcp
    namespace: vendor-po
    port: 8080
    tools:
    - name: process-purchase-order
      description: Fetch a purchase order from Vendor Central, confirm it, and log the confirmation.
      inputParameters:
      - name: purchase_order_number
        in: body
        type: string
        description: The Vendor Central purchase order number.
      steps:
      - name: get-po
        type: call
        call: vendor-api.get-purchase-order
        with:
          purchase_order_number: '{{purchase_order_number}}'
      - name: confirm-po
        type: call
        call: vendor-api.confirm-purchase-order
        with:
          purchase_order_number: '{{purchase_order_number}}'
          items: '{{get-po.items}}'
      - name: log-confirmation
        type: call
        call: dynamo-vendor.put-item
        with:
          table_name: vendor-po-confirmations
          po_number: '{{purchase_order_number}}'
          status: confirmed
          item_count: '{{get-po.item_count}}'
  consumes:
  - namespace: vendor-api
    type: http
    baseUri: https://sellingpartnerapi-na.amazon.com/vendor
    authentication:
      type: bearer
      token: $secrets.sp_api_vendor_token
    resources:
    - name: purchase-order
      path: /orders/v1/purchaseOrders/{purchase_order_number}
      inputParameters:
      - name: purchase_order_number
        in: path
      operations:
      - name: get-purchase-order
        method: GET
    - name: confirmation
      path: /orders/v1/purchaseOrders/confirmation
      operations:
      - name: confirm-purchase-order
        method: POST
  - namespace: dynamo-vendor
    type: http
    baseUri: https://dynamodb.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_dynamodb_token
      placement: header
    resources:
    - name: item
      path: /
      operations:
      - name: put-item
        method: POST
Open in Framework → View in Fleet → vendor-central-purchase-order-processor.yml

Checks real-time inventory levels for a product at a specific Whole Foods Market store location.

naftiko: '0.5'
info:
  label: Whole Foods Store Inventory Check
  description: Checks real-time inventory levels for a product at a specific Whole Foods Market store location.
  tags:
  - grocery
  - whole-foods
  - inventory
  - retail
capability:
  exposes:
  - type: mcp
    namespace: wfm-inventory
    port: 8080
    tools:
    - name: check-inventory
      description: Check the current inventory level for a product at a Whole Foods Market store.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: The Whole Foods store ID to check inventory at.
      - name: product_sku
        in: body
        type: string
        description: The product SKU to check availability for.
      call: wfm-api.get-inventory
      with:
        store_id: '{{store_id}}'
        product_sku: '{{product_sku}}'
      outputParameters:
      - name: quantity_on_hand
        type: number
        mapping: $.inventory.quantityOnHand
      - name: in_stock
        type: boolean
        mapping: $.inventory.inStock
  consumes:
  - namespace: wfm-api
    type: http
    baseUri: https://api.wholefoodsmarket.com/v2
    authentication:
      type: bearer
      token: $secrets.wfm_api_token
    resources:
    - name: inventory
      path: /stores/{store_id}/inventory/{product_sku}
      inputParameters:
      - name: store_id
        in: path
      - name: product_sku
        in: path
      operations:
      - name: get-inventory
        method: GET
Open in Framework → View in Fleet → whole-foods-store-inventory-check.yml

Deploys a SageMaker model to an endpoint, runs a validation inference, and records the deployment in DynamoDB for tracking.

naftiko: '0.5'
info:
  label: SageMaker Model Deployment Pipeline
  description: Deploys a SageMaker model to an endpoint, runs a validation inference, and records the deployment in DynamoDB for tracking.
  tags:
  - cloud
  - machine-learning
  - deployment
  - aws
  - sagemaker
  - dynamodb
capability:
  exposes:
  - type: mcp
    namespace: sagemaker-deploy
    port: 8080
    tools:
    - name: deploy-model
      description: Deploy a SageMaker model to an endpoint, validate with a test inference, and log the deployment.
      inputParameters:
      - name: model_name
        in: body
        type: string
        description: The SageMaker model name to deploy.
      - name: endpoint_name
        in: body
        type: string
        description: The target SageMaker endpoint name.
      - name: instance_type
        in: body
        type: string
        description: The instance type for the endpoint, e.g. ml.m5.large.
      steps:
      - name: create-endpoint-config
        type: call
        call: sagemaker-api.create-endpoint-config
        with:
          model_name: '{{model_name}}'
          endpoint_name: '{{endpoint_name}}'
          instance_type: '{{instance_type}}'
      - name: update-endpoint
        type: call
        call: sagemaker-api.update-endpoint
        with:
          endpoint_name: '{{endpoint_name}}'
          config_name: '{{create-endpoint-config.config_name}}'
      - name: log-deployment
        type: call
        call: dynamo-ml.put-item
        with:
          table_name: ml-deployments
          model_name: '{{model_name}}'
          endpoint_name: '{{endpoint_name}}'
          status: '{{update-endpoint.status}}'
  consumes:
  - namespace: sagemaker-api
    type: http
    baseUri: https://api.sagemaker.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_sagemaker_token
      placement: header
    resources:
    - name: endpoint-config
      path: /
      operations:
      - name: create-endpoint-config
        method: POST
    - name: endpoint
      path: /
      operations:
      - name: update-endpoint
        method: POST
  - namespace: dynamo-ml
    type: http
    baseUri: https://dynamodb.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_dynamodb_token
      placement: header
    resources:
    - name: item
      path: /
      operations:
      - name: put-item
        method: POST
Open in Framework → View in Fleet → sagemaker-model-deployment-pipeline.yml

Queries Snowflake task history to detect failed or long-running data pipeline tasks, creates a Jira data-engineering ticket, and posts an alert to the data-platform Slack channel.

naftiko: '0.5'
info:
  label: Snowflake Data Pipeline Health Monitor
  description: Queries Snowflake task history to detect failed or long-running data pipeline tasks, creates a Jira data-engineering ticket, and posts an alert to the data-platform Slack channel.
  tags:
  - data
  - analytics
  - monitoring
  - snowflake
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: data-ops
    port: 8080
    tools:
    - name: monitor-pipeline-health
      description: Given a Snowflake database and schema, query task execution history for failures or SLA breaches, open a Jira ticket for investigation, and alert the data-platform Slack channel.
      inputParameters:
      - name: snowflake_database
        in: body
        type: string
        description: The Snowflake database name to check task history for, e.g. ANALYTICS_PROD.
      - name: snowflake_schema
        in: body
        type: string
        description: The Snowflake schema containing the monitored tasks.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel ID for the data-platform alert.
      steps:
      - name: check-tasks
        type: call
        call: snowflake.query-task-history
        with:
          database: '{{snowflake_database}}'
          schema: '{{snowflake_schema}}'
      - name: create-ticket
        type: call
        call: jira-data.create-issue
        with:
          project_key: DATA
          issuetype: Bug
          summary: Pipeline health issue detected in {{snowflake_database}}.{{snowflake_schema}}
          description: 'Failed tasks: {{check-tasks.failed_count}}. Last failure: {{check-tasks.last_failed_task}}'
      - name: post-alert
        type: call
        call: slack-data.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Data Pipeline Alert: {{check-tasks.failed_count}} failed tasks in {{snowflake_database}}. Jira: {{create-ticket.key}}'
  consumes:
  - namespace: snowflake
    type: http
    baseUri: https://amazon.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
  - namespace: jira-data
    type: http
    baseUri: https://amazon.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_token
    resources:
    - name: issue
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - namespace: slack-data
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → snowflake-data-pipeline-health-monitor.yml

Collects health telemetry from Amazon warehouse robotics systems, aggregates metrics in CloudWatch, and posts a fleet health summary to Slack.

naftiko: '0.5'
info:
  label: Warehouse Robotics Health Dashboard
  description: Collects health telemetry from Amazon warehouse robotics systems, aggregates metrics in CloudWatch, and posts a fleet health summary to Slack.
  tags:
  - logistics
  - robotics
  - monitoring
  - warehouse
  - cloudwatch
  - slack
capability:
  exposes:
  - type: mcp
    namespace: robotics-health
    port: 8080
    tools:
    - name: report-fleet-health
      description: Collect robotics fleet health data, log to CloudWatch, and post a summary to Slack.
      inputParameters:
      - name: warehouse_id
        in: body
        type: string
        description: The Amazon fulfillment center ID.
      - name: slack_channel
        in: body
        type: string
        description: Slack channel for robotics health reports.
      steps:
      - name: get-fleet-status
        type: call
        call: robotics-api.get-fleet-health
        with:
          warehouse_id: '{{warehouse_id}}'
      - name: log-metrics
        type: call
        call: cw-robotics.put-metric-data
        with:
          namespace: Custom/WarehouseRobotics
          metric_name: ActiveRobots
          value: '{{get-fleet-status.active_count}}'
      - name: post-summary
        type: call
        call: slack-robotics.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Warehouse {{warehouse_id}} Robotics: {{get-fleet-status.active_count}} active, {{get-fleet-status.idle_count}} idle, {{get-fleet-status.error_count}} in error state.'
  consumes:
  - namespace: robotics-api
    type: http
    baseUri: https://api.amazon.com/warehouse/robotics/v1
    authentication:
      type: bearer
      token: $secrets.amazon_robotics_token
    resources:
    - name: fleet
      path: /warehouses/{warehouse_id}/fleet/health
      inputParameters:
      - name: warehouse_id
        in: path
      operations:
      - name: get-fleet-health
        method: GET
  - namespace: cw-robotics
    type: http
    baseUri: https://monitoring.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_cloudwatch_token
      placement: header
    resources:
    - name: metric
      path: /
      operations:
      - name: put-metric-data
        method: POST
  - namespace: slack-robotics
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → warehouse-robotics-health-dashboard.yml

When a GitHub Actions pipeline fails on a protected branch, creates a Jira bug, posts a Datadog deployment event marker, and alerts the engineering team Slack channel.

naftiko: '0.5'
info:
  label: CI/CD Pipeline Failure Response
  description: When a GitHub Actions pipeline fails on a protected branch, creates a Jira bug, posts a Datadog deployment event marker, and alerts the engineering team Slack channel.
  tags:
  - devops
  - ci-cd
  - incident-response
  - github
  - jira
  - datadog
  - slack
capability:
  exposes:
  - type: mcp
    namespace: devops-ops
    port: 8080
    tools:
    - name: handle-pipeline-failure
      description: Given a GitHub Actions pipeline failure event with project, branch, commit SHA, and log URL, create a Jira bug, post a Datadog deployment marker, and alert the Slack engineering channel.
      inputParameters:
      - name: project
        in: body
        type: string
        description: The GitHub repository name where the pipeline failed, e.g. amazon/platform-core.
      - name: branch
        in: body
        type: string
        description: The branch name where the pipeline failure occurred.
      - name: commit_sha
        in: body
        type: string
        description: The git commit SHA that triggered the failed pipeline run.
      - name: failed_job
        in: body
        type: string
        description: The name of the specific job that failed in the workflow.
      - name: log_url
        in: body
        type: string
        description: The URL to the failed pipeline run logs in GitHub Actions.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel ID for engineering alerts.
      steps:
      - name: create-bug
        type: call
        call: jira-devops.create-issue
        with:
          project_key: ENG
          issuetype: Bug
          summary: '[CI Failure] {{project}} / {{branch}} — {{failed_job}}'
          description: 'Commit: {{commit_sha}}

            Log: {{log_url}}'
      - name: create-dd-event
        type: call
        call: datadog.create-event
        with:
          title: 'Pipeline failure: {{project}} on {{branch}}'
          text: 'Job {{failed_job}} failed. Commit: {{commit_sha}}'
          alert_type: error
      - name: post-alert
        type: call
        call: slack-devops.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Pipeline Failure: {{project}} | Branch: {{branch}} | Job: {{failed_job}} | Jira: {{create-bug.key}} | Log: {{log_url}}'
  consumes:
  - namespace: jira-devops
    type: http
    baseUri: https://amazon.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_token
    resources:
    - name: issue
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - namespace: datadog
    type: http
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: event
      path: /events
      operations:
      - name: create-event
        method: POST
  - namespace: slack-devops
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → ci-cd-pipeline-failure-response.yml

Fetches a Confluence page by ID, sends the content to the Anthropic Claude API for summarization, and posts the executive summary to a Slack channel.

naftiko: '0.5'
info:
  label: AI-Assisted Document Summarization
  description: Fetches a Confluence page by ID, sends the content to the Anthropic Claude API for summarization, and posts the executive summary to a Slack channel.
  tags:
  - ai
  - knowledge-management
  - confluence
  - anthropic
  - slack
capability:
  exposes:
  - type: mcp
    namespace: ai-summarize
    port: 8080
    tools:
    - name: summarize-confluence-page
      description: Given a Confluence page ID and a Slack channel, fetch the page content from Confluence, send it to the Anthropic Claude API for a concise executive summary, and post the result to Slack.
      inputParameters:
      - name: page_id
        in: body
        type: string
        description: The Confluence page ID to fetch and summarize.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel ID where the AI-generated summary will be posted.
      steps:
      - name: get-page
        type: call
        call: confluence-ai.get-page
        with:
          page_id: '{{page_id}}'
      - name: generate-summary
        type: call
        call: anthropic-ai.create-message
        with:
          model: claude-opus-4-5
          max_tokens: 300
          system: You are a technical writer. Produce a concise 3-sentence executive summary of the following document.
          user_message: '{{get-page.body}}'
      - name: post-summary
        type: call
        call: slack-ai.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'AI Summary of ''{{get-page.title}}'': {{generate-summary.content}}'
  consumes:
  - namespace: confluence-ai
    type: http
    baseUri: https://amazon.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_token
    resources:
    - name: page
      path: /content/{page_id}
      inputParameters:
      - name: page_id
        in: path
      operations:
      - name: get-page
        method: GET
  - namespace: anthropic-ai
    type: http
    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
  - namespace: slack-ai
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → ai-assisted-document-summarization.yml

Given a service name, searches the Confluence knowledge base for the relevant runbook page and returns the runbook URL and summary for use during incident response.

naftiko: '0.5'
info:
  label: Confluence Runbook Lookup
  description: Given a service name, searches the Confluence knowledge base for the relevant runbook page and returns the runbook URL and summary for use during incident response.
  tags:
  - itsm
  - knowledge-management
  - confluence
  - incident-response
capability:
  exposes:
  - type: mcp
    namespace: kb-lookup
    port: 8080
    tools:
    - name: get-runbook
      description: Given a service name, search Confluence for the relevant runbook page and return the page URL and excerpt. Use during incident triage to quickly surface operational runbooks.
      inputParameters:
      - name: service_name
        in: body
        type: string
        description: The service name to search for in Confluence runbooks, e.g. payment-gateway.
      call: confluence.search-content
      with:
        cql: type=page AND title~"{{service_name}} runbook"
      outputParameters:
      - name: runbook_url
        type: string
        mapping: $.results[0]._links.webui
      - name: runbook_title
        type: string
        mapping: $.results[0].title
  consumes:
  - namespace: confluence
    type: http
    baseUri: https://amazon.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_token
    resources:
    - name: content
      path: /content/search
      inputParameters:
      - name: cql
        in: query
      operations:
      - name: search-content
        method: GET
Open in Framework → View in Fleet → confluence-runbook-lookup.yml

Retrieves the approximate number of messages in an SQS queue to monitor backlog health.

naftiko: '0.5'
info:
  label: SQS Queue Depth Check
  description: Retrieves the approximate number of messages in an SQS queue to monitor backlog health.
  tags:
  - cloud
  - messaging
  - aws
  - sqs
capability:
  exposes:
  - type: mcp
    namespace: sqs-depth
    port: 8080
    tools:
    - name: get-queue-attributes
      description: Get the approximate message count and other attributes for an SQS queue. Use to monitor queue backlog.
      inputParameters:
      - name: queue_url
        in: body
        type: string
        description: The full SQS queue URL to check.
      call: sqs-api.get-queue-attributes
      with:
        queue_url: '{{queue_url}}'
      outputParameters:
      - name: message_count
        type: number
        mapping: $.Attributes.ApproximateNumberOfMessages
  consumes:
  - namespace: sqs-api
    type: http
    baseUri: https://sqs.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_sqs_token
      placement: header
    resources:
    - name: queue
      path: /
      inputParameters:
      - name: queue_url
        in: body
      operations:
      - name: get-queue-attributes
        method: POST
Open in Framework → View in Fleet → sqs-queue-depth-check.yml

Reconciles Fulfillment by Amazon inventory levels against seller records, identifies discrepancies, and creates a case in Seller Central support.

naftiko: '0.5'
info:
  label: FBA Inventory Reconciliation
  description: Reconciles Fulfillment by Amazon inventory levels against seller records, identifies discrepancies, and creates a case in Seller Central support.
  tags:
  - ecommerce
  - marketplace
  - fulfillment
  - fba
  - inventory
capability:
  exposes:
  - type: mcp
    namespace: fba-reconcile
    port: 8080
    tools:
    - name: reconcile-inventory
      description: Compare FBA inventory levels with seller records and create a support case for discrepancies.
      inputParameters:
      - name: seller_id
        in: body
        type: string
        description: The Amazon seller ID.
      - name: sku
        in: body
        type: string
        description: The product SKU to reconcile.
      - name: expected_quantity
        in: body
        type: number
        description: The expected inventory quantity per seller records.
      steps:
      - name: get-fba-inventory
        type: call
        call: sp-fba.get-inventory-summary
        with:
          seller_id: '{{seller_id}}'
          sku: '{{sku}}'
      - name: create-case
        type: call
        call: sp-fba.create-support-case
        with:
          subject: 'FBA Inventory Discrepancy: SKU {{sku}}'
          description: 'Expected: {{expected_quantity}}, FBA reports: {{get-fba-inventory.fulfillable_quantity}}. Difference: needs investigation.'
  consumes:
  - namespace: sp-fba
    type: http
    baseUri: https://sellingpartnerapi-na.amazon.com
    authentication:
      type: bearer
      token: $secrets.sp_api_token
    resources:
    - name: inventory
      path: /fba/inventory/v1/summaries
      inputParameters:
      - name: seller_id
        in: query
      - name: sku
        in: query
      operations:
      - name: get-inventory-summary
        method: GET
    - name: support
      path: /messaging/v1/cases
      operations:
      - name: create-support-case
        method: POST
Open in Framework → View in Fleet → fba-inventory-reconciliation.yml

Processes a customer return request from the Selling Partner API, initiates a refund, and notifies the seller via email through SES.

naftiko: '0.5'
info:
  label: Marketplace Return Processor
  description: Processes a customer return request from the Selling Partner API, initiates a refund, and notifies the seller via email through SES.
  tags:
  - ecommerce
  - marketplace
  - returns
  - seller-central
  - ses
capability:
  exposes:
  - type: mcp
    namespace: return-process
    port: 8080
    tools:
    - name: process-return
      description: Process a marketplace return request, initiate the refund, and notify the seller via email.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The order ID for the return request.
      - name: return_reason
        in: body
        type: string
        description: The customer-provided return reason.
      - name: seller_email
        in: body
        type: string
        description: The seller email address for return notifications.
      steps:
      - name: get-order-details
        type: call
        call: sp-returns.get-order
        with:
          order_id: '{{order_id}}'
      - name: create-refund
        type: call
        call: sp-returns.create-refund
        with:
          order_id: '{{order_id}}'
          amount: '{{get-order-details.order_total}}'
      - name: notify-seller
        type: call
        call: ses-returns.send-email
        with:
          to: '{{seller_email}}'
          subject: 'Return Processed: Order {{order_id}}'
          body: 'A return has been processed for order {{order_id}}. Reason: {{return_reason}}. Refund amount: ${{get-order-details.order_total}}. Refund ID: {{create-refund.refund_id}}.'
  consumes:
  - namespace: sp-returns
    type: http
    baseUri: https://sellingpartnerapi-na.amazon.com
    authentication:
      type: bearer
      token: $secrets.sp_api_token
    resources:
    - name: order
      path: /orders/v0/orders/{order_id}
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-order
        method: GET
    - name: refund
      path: /orders/v0/orders/{order_id}/refund
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: create-refund
        method: POST
  - namespace: ses-returns
    type: http
    baseUri: https://email.us-east-1.amazonaws.com/v2
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_ses_token
      placement: header
    resources:
    - name: email
      path: /email/outbound-emails
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → marketplace-return-processor.yml

Searches the Amazon product catalog by keyword and returns matching product listings with prices and ratings.

naftiko: '0.5'
info:
  label: Product Catalog Search
  description: Searches the Amazon product catalog by keyword and returns matching product listings with prices and ratings.
  tags:
  - ecommerce
  - catalog
  - search
capability:
  exposes:
  - type: mcp
    namespace: catalog-search
    port: 8080
    tools:
    - name: search-products
      description: Search the Amazon product catalog by keyword. Returns product titles, ASINs, prices, and ratings.
      inputParameters:
      - name: keywords
        in: body
        type: string
        description: The search keywords for product lookup.
      - name: category
        in: body
        type: string
        description: The product category to filter by, e.g. Electronics.
      call: catalog-api.search-items
      with:
        keywords: '{{keywords}}'
        category: '{{category}}'
      outputParameters:
      - name: items
        type: array
        mapping: $.SearchResult.Items
  consumes:
  - namespace: catalog-api
    type: http
    baseUri: https://webservices.amazon.com/paapi5
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.amazon_paapi_token
      placement: header
    resources:
    - name: items
      path: /searchitems
      inputParameters:
      - name: keywords
        in: body
      - name: category
        in: body
      operations:
      - name: search-items
        method: POST
Open in Framework → View in Fleet → product-catalog-search.yml

When an employee submits a time-off request in Workday, notifies the manager via Slack and creates a Jira task for the manager to approve or deny the request.

naftiko: '0.5'
info:
  label: Workday Absence Request Processor
  description: When an employee submits a time-off request in Workday, notifies the manager via Slack and creates a Jira task for the manager to approve or deny the request.
  tags:
  - hr
  - time-off
  - workday
  - slack
  - jira
capability:
  exposes:
  - type: mcp
    namespace: hr-absence
    port: 8080
    tools:
    - name: process-absence-request
      description: Given a Workday time-off request ID and manager Slack user ID, fetch request details, notify the manager in Slack, and create a Jira approval task.
      inputParameters:
      - name: time_off_request_id
        in: body
        type: string
        description: The Workday time-off request ID submitted by the employee.
      - name: manager_slack_id
        in: body
        type: string
        description: The Slack user ID of the employee's manager for the approval notification.
      steps:
      - name: get-request
        type: call
        call: workday-abs.get-time-off-request
        with:
          request_id: '{{time_off_request_id}}'
      - name: notify-manager
        type: call
        call: slack-abs.post-message
        with:
          channel: '{{manager_slack_id}}'
          text: 'Time-off request pending approval: {{get-request.employee_name}} has requested {{get-request.days}} days from {{get-request.start_date}} to {{get-request.end_date}}.'
      - name: create-approval-task
        type: call
        call: jira-abs.create-issue
        with:
          project_key: HR
          issuetype: Task
          summary: 'Approve time-off: {{get-request.employee_name}} ({{get-request.start_date}} – {{get-request.end_date}})'
          description: 'Workday request ID: {{time_off_request_id}}'
  consumes:
  - namespace: workday-abs
    type: http
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: time-off-request
      path: /timeOffRequests/{request_id}
      inputParameters:
      - name: request_id
        in: path
      operations:
      - name: get-time-off-request
        method: GET
  - namespace: slack-abs
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
  - namespace: jira-abs
    type: http
    baseUri: https://amazon.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_token
    resources:
    - name: issue
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → workday-absence-request-processor.yml

Queries Workday for employees with pending performance reviews, sends reminder messages to each employee and their manager via Slack, and creates tracking tasks in Jira.

naftiko: '0.5'
info:
  label: Workday Performance Review Reminder
  description: Queries Workday for employees with pending performance reviews, sends reminder messages to each employee and their manager via Slack, and creates tracking tasks in Jira.
  tags:
  - hr
  - performance-management
  - workday
  - slack
  - jira
capability:
  exposes:
  - type: mcp
    namespace: hr-perf
    port: 8080
    tools:
    - name: send-review-reminders
      description: Given a Workday performance review cycle ID, fetch all employees with pending self-evaluations, send Slack reminders to employees and their managers, and create Jira tracking tasks for HR.
      inputParameters:
      - name: review_cycle_id
        in: body
        type: string
        description: The Workday performance review cycle ID to query pending evaluations for.
      - name: hr_jira_project
        in: body
        type: string
        description: The Jira project key for HR tracking tasks, e.g. HROPS.
      - name: hr_slack_channel
        in: body
        type: string
        description: The Slack channel ID for HR operations notifications.
      steps:
      - name: get-pending-reviews
        type: call
        call: workday-perf.get-pending-reviews
        with:
          review_cycle_id: '{{review_cycle_id}}'
      - name: create-hr-task
        type: call
        call: jira-perf.create-issue
        with:
          project_key: '{{hr_jira_project}}'
          issuetype: Task
          summary: 'Performance review cycle {{review_cycle_id}}: {{get-pending-reviews.pending_count}} reviews pending'
          description: 'Review cycle: {{review_cycle_id}}

            Pending count: {{get-pending-reviews.pending_count}}'
      - name: post-hr-alert
        type: call
        call: slack-perf.post-message
        with:
          channel: '{{hr_slack_channel}}'
          text: 'Performance Review Reminder: {{get-pending-reviews.pending_count}} employees have pending self-evaluations in cycle {{review_cycle_id}}. Jira task: {{create-hr-task.key}}'
  consumes:
  - namespace: workday-perf
    type: http
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: pending-reviews
      path: /performanceManagement/{review_cycle_id}/pendingReviews
      inputParameters:
      - name: review_cycle_id
        in: path
      operations:
      - name: get-pending-reviews
        method: GET
  - namespace: jira-perf
    type: http
    baseUri: https://amazon.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_token
    resources:
    - name: issue
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - namespace: slack-perf
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → workday-performance-review-reminder.yml

Lists all SNS topics in the AWS account and returns their ARNs for notification management.

naftiko: '0.5'
info:
  label: SNS Topic List
  description: Lists all SNS topics in the AWS account and returns their ARNs for notification management.
  tags:
  - cloud
  - messaging
  - aws
  - sns
capability:
  exposes:
  - type: mcp
    namespace: sns-topics
    port: 8080
    tools:
    - name: list-topics
      description: List all SNS topics in the AWS account. Returns topic ARNs for use in notification workflows.
      inputParameters:
      - name: next_token
        in: body
        type: string
        description: Pagination token for listing topics. Pass empty string for first page.
      call: sns-api.list-topics
      with:
        next_token: '{{next_token}}'
      outputParameters:
      - name: topics
        type: array
        mapping: $.Topics
  consumes:
  - namespace: sns-api
    type: http
    baseUri: https://sns.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_sns_token
      placement: header
    resources:
    - name: topics
      path: /
      inputParameters:
      - name: next_token
        in: query
      operations:
      - name: list-topics
        method: GET
Open in Framework → View in Fleet → sns-topic-list.yml

Runs a data quality check query against a Snowflake table, and if null counts or row anomalies exceed acceptable thresholds, creates a Jira data-quality ticket and alerts the data-platform Slack channel.

naftiko: '0.5'
info:
  label: Snowflake Data Quality Gate
  description: Runs a data quality check query against a Snowflake table, and if null counts or row anomalies exceed acceptable thresholds, creates a Jira data-quality ticket and alerts the data-platform Slack channel.
  tags:
  - data
  - analytics
  - data-quality
  - snowflake
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: dq-ops
    port: 8080
    tools:
    - name: run-data-quality-check
      description: Given a Snowflake table fully qualified name and a null threshold percentage, run a data quality query. If null rate exceeds the threshold, create a Jira DQ ticket and post a Slack alert.
      inputParameters:
      - name: table_fqn
        in: body
        type: string
        description: The fully qualified Snowflake table name to check, e.g. ANALYTICS_PROD.SALES.ORDERS.
      - name: null_threshold_pct
        in: body
        type: number
        description: Maximum allowable null percentage in the critical columns (0–100).
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel ID to notify when a data quality issue is found.
      steps:
      - name: run-dq-query
        type: call
        call: snowflake-dq.run-statement
        with:
          statement: SELECT COUNT_IF(order_id IS NULL) / COUNT(*) * 100 AS null_pct FROM {{table_fqn}}
      - name: create-dq-ticket
        type: call
        call: jira-dq.create-issue
        with:
          project_key: DATA
          issuetype: Bug
          summary: 'Data quality issue: {{table_fqn}} null rate = {{run-dq-query.null_pct}}%'
          description: 'Table: {{table_fqn}}

            Null rate: {{run-dq-query.null_pct}}%

            Threshold: {{null_threshold_pct}}%'
      - name: post-dq-alert
        type: call
        call: slack-dq.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Data Quality Alert: {{table_fqn}} null rate = {{run-dq-query.null_pct}}% (max {{null_threshold_pct}}%). Jira: {{create-dq-ticket.key}}'
  consumes:
  - namespace: snowflake-dq
    type: http
    baseUri: https://amazon.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statement
      path: /statements
      operations:
      - name: run-statement
        method: POST
  - namespace: jira-dq
    type: http
    baseUri: https://amazon.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_token
    resources:
    - name: issue
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - namespace: slack-dq
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → snowflake-data-quality-gate.yml

Monitors Whole Foods inventory for low-stock items, creates a replenishment order in the supply chain system, and notifies the store manager via Slack.

naftiko: '0.5'
info:
  label: Whole Foods Low Stock Replenishment
  description: Monitors Whole Foods inventory for low-stock items, creates a replenishment order in the supply chain system, and notifies the store manager via Slack.
  tags:
  - grocery
  - whole-foods
  - inventory
  - supply-chain
  - slack
capability:
  exposes:
  - type: mcp
    namespace: wfm-replenish
    port: 8080
    tools:
    - name: replenish-low-stock
      description: Check inventory levels at a Whole Foods store, create replenishment orders for low-stock items, and notify the store manager.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: The Whole Foods store ID to check.
      - name: threshold
        in: body
        type: number
        description: The minimum stock level before triggering replenishment.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel for store manager notifications.
      steps:
      - name: check-inventory
        type: call
        call: wfm-inv.get-low-stock-items
        with:
          store_id: '{{store_id}}'
          threshold: '{{threshold}}'
      - name: create-replenishment
        type: call
        call: wfm-supply.create-order
        with:
          store_id: '{{store_id}}'
          items: '{{check-inventory.low_stock_items}}'
      - name: notify-manager
        type: call
        call: slack-wfm.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Low Stock Alert for Store {{store_id}}: {{check-inventory.item_count}} items below threshold. Replenishment order {{create-replenishment.order_id}} created.'
  consumes:
  - namespace: wfm-inv
    type: http
    baseUri: https://api.wholefoodsmarket.com/v2
    authentication:
      type: bearer
      token: $secrets.wfm_api_token
    resources:
    - name: low-stock
      path: /stores/{store_id}/inventory/low-stock
      inputParameters:
      - name: store_id
        in: path
      - name: threshold
        in: query
      operations:
      - name: get-low-stock-items
        method: GET
  - namespace: wfm-supply
    type: http
    baseUri: https://api.wholefoodsmarket.com/v2
    authentication:
      type: bearer
      token: $secrets.wfm_supply_token
    resources:
    - name: order
      path: /supply-chain/orders
      operations:
      - name: create-order
        method: POST
  - namespace: slack-wfm
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → whole-foods-low-stock-replenishment.yml

Generates an Amazon DSP programmatic advertising report, uploads it to S3, and shares the download link via Slack.

naftiko: '0.5'
info:
  label: DSP Advertising Report Generator
  description: Generates an Amazon DSP programmatic advertising report, uploads it to S3, and shares the download link via Slack.
  tags:
  - advertising
  - dsp
  - analytics
  - aws
  - s3
  - slack
capability:
  exposes:
  - type: mcp
    namespace: dsp-report
    port: 8080
    tools:
    - name: generate-dsp-report
      description: Generate a DSP advertising report, store it in S3, and share the link in Slack.
      inputParameters:
      - name: advertiser_id
        in: body
        type: string
        description: The Amazon DSP advertiser ID.
      - name: report_type
        in: body
        type: string
        description: The report type, e.g. campaign, audience, inventory.
      - name: s3_bucket
        in: body
        type: string
        description: The S3 bucket for report storage.
      - name: slack_channel
        in: body
        type: string
        description: Slack channel to share the report link.
      steps:
      - name: generate-report
        type: call
        call: dsp-api.create-report
        with:
          advertiser_id: '{{advertiser_id}}'
          report_type: '{{report_type}}'
      - name: upload-to-s3
        type: call
        call: s3-dsp.put-object
        with:
          bucket: '{{s3_bucket}}'
          key: dsp-reports/{{advertiser_id}}/{{generate-report.report_id}}.csv
          body: '{{generate-report.report_data}}'
      - name: share-link
        type: call
        call: slack-dsp.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'DSP Report Ready: s3://{{s3_bucket}}/dsp-reports/{{advertiser_id}}/{{generate-report.report_id}}.csv'
  consumes:
  - namespace: dsp-api
    type: http
    baseUri: https://advertising-api.amazon.com/dsp/reports/v3
    authentication:
      type: bearer
      token: $secrets.amazon_dsp_token
    resources:
    - name: report
      path: /
      operations:
      - name: create-report
        method: POST
  - namespace: s3-dsp
    type: http
    baseUri: https://s3.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_s3_token
      placement: header
    resources:
    - name: object
      path: /{bucket}/{key}
      inputParameters:
      - name: bucket
        in: path
      - name: key
        in: path
      operations:
      - name: put-object
        method: PUT
  - namespace: slack-dsp
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → dsp-advertising-report-generator.yml

Tracks Amazon Bedrock foundation model invocation metrics, logs usage patterns to DynamoDB, and posts a usage digest to Slack.

naftiko: '0.5'
info:
  label: Bedrock Model Invocation Monitor
  description: Tracks Amazon Bedrock foundation model invocation metrics, logs usage patterns to DynamoDB, and posts a usage digest to Slack.
  tags:
  - ai
  - generative-ai
  - monitoring
  - aws
  - bedrock
  - dynamodb
  - slack
capability:
  exposes:
  - type: mcp
    namespace: bedrock-monitor
    port: 8080
    tools:
    - name: monitor-model-usage
      description: Track Bedrock model invocations, log usage to DynamoDB, and post a digest to Slack.
      inputParameters:
      - name: model_id
        in: body
        type: string
        description: The Bedrock model ID to monitor, e.g. anthropic.claude-v2.
      - name: slack_channel
        in: body
        type: string
        description: Slack channel for usage digests.
      steps:
      - name: get-invocation-metrics
        type: call
        call: cw-bedrock.get-metric-data
        with:
          namespace: AWS/Bedrock
          metric_name: Invocations
          model_id: '{{model_id}}'
      - name: log-usage
        type: call
        call: dynamo-bedrock.put-item
        with:
          table_name: bedrock-usage-log
          model_id: '{{model_id}}'
          invocation_count: '{{get-invocation-metrics.sum}}'
      - name: post-digest
        type: call
        call: slack-bedrock.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Bedrock Usage Digest: Model {{model_id}} - {{get-invocation-metrics.sum}} invocations in the last 24 hours.'
  consumes:
  - namespace: cw-bedrock
    type: http
    baseUri: https://monitoring.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_cloudwatch_token
      placement: header
    resources:
    - name: metric
      path: /
      operations:
      - name: get-metric-data
        method: POST
  - namespace: dynamo-bedrock
    type: http
    baseUri: https://dynamodb.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_dynamodb_token
      placement: header
    resources:
    - name: item
      path: /
      operations:
      - name: put-item
        method: POST
  - namespace: slack-bedrock
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → bedrock-model-invocation-monitor.yml

When a critical Dependabot vulnerability alert is raised in a GitHub repository, creates a Jira security ticket, notifies the owning team in Slack, and opens a GitHub issue for tracking.

naftiko: '0.5'
info:
  label: GitHub Dependabot Alert Remediation
  description: When a critical Dependabot vulnerability alert is raised in a GitHub repository, creates a Jira security ticket, notifies the owning team in Slack, and opens a GitHub issue for tracking.
  tags:
  - security
  - devops
  - github
  - jira
  - slack
  - dependabot
capability:
  exposes:
  - type: mcp
    namespace: vuln-ops
    port: 8080
    tools:
    - name: handle-dependabot-alert
      description: Given a GitHub repo and Dependabot alert number, fetch alert details, create a Jira security remediation ticket, open a GitHub tracking issue, and notify the team Slack channel.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: The GitHub repository in owner/repo format where the Dependabot alert was raised.
      - name: alert_number
        in: body
        type: integer
        description: The Dependabot alert number to process.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel ID for the security alert notification.
      steps:
      - name: get-alert
        type: call
        call: github-dep.get-dependabot-alert
        with:
          repo: '{{repo}}'
          alert_number: '{{alert_number}}'
      - name: create-sec-ticket
        type: call
        call: jira-dep.create-issue
        with:
          project_key: SEC
          issuetype: Bug
          summary: 'Dependabot: {{get-alert.dependency_name}} {{get-alert.severity}} in {{repo}}'
          description: 'CVE: {{get-alert.cve_id}}

            Severity: {{get-alert.severity}}

            Fixed in: {{get-alert.fixed_in}}'
      - name: notify-team
        type: call
        call: slack-dep.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Dependabot Alert: {{get-alert.severity}} vulnerability in {{get-alert.dependency_name}} ({{repo}}). CVE: {{get-alert.cve_id}}. Jira: {{create-sec-ticket.key}}'
  consumes:
  - namespace: github-dep
    type: http
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: dependabot-alert
      path: /repos/{repo}/dependabot/alerts/{alert_number}
      inputParameters:
      - name: repo
        in: path
      - name: alert_number
        in: path
      operations:
      - name: get-dependabot-alert
        method: GET
  - namespace: jira-dep
    type: http
    baseUri: https://amazon.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_token
    resources:
    - name: issue
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - namespace: slack-dep
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → github-dependabot-alert-remediation.yml

Fetches all users in a specified Okta group, checks each user's last login date against a stale-access threshold, and posts an access review report to the security Slack channel.

naftiko: '0.5'
info:
  label: Okta Access Review Report
  description: Fetches all users in a specified Okta group, checks each user's last login date against a stale-access threshold, and posts an access review report to the security Slack channel.
  tags:
  - identity
  - security
  - okta
  - slack
  - access-review
capability:
  exposes:
  - type: mcp
    namespace: identity-review
    port: 8080
    tools:
    - name: run-access-review
      description: Given an Okta group ID and a stale-threshold in days, list group members, filter for users whose last login exceeds the threshold, and post the stale-access list to Slack.
      inputParameters:
      - name: okta_group_id
        in: body
        type: string
        description: The Okta group ID to review member access for.
      - name: stale_threshold_days
        in: body
        type: integer
        description: Number of days without login after which an account is considered stale.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel ID for the access review report.
      steps:
      - name: get-group-members
        type: call
        call: okta-review.get-group-users
        with:
          group_id: '{{okta_group_id}}'
      - name: post-review-report
        type: call
        call: slack-review.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Access Review for Okta group {{okta_group_id}}: {{get-group-members.total}} members, {{get-group-members.stale_count}} accounts inactive for more than {{stale_threshold_days}} days.'
  consumes:
  - namespace: okta-review
    type: http
    baseUri: https://amazon.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_api_token
      placement: header
    resources:
    - name: group-users
      path: /groups/{group_id}/users
      inputParameters:
      - name: group_id
        in: path
      operations:
      - name: get-group-users
        method: GET
  - namespace: slack-review
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → okta-access-review-report.yml

When a Salesforce subscription account is within 90 days of renewal, automatically creates a renewal opportunity, sets the close date, and assigns it to the account owner.

naftiko: '0.5'
info:
  label: Salesforce Renewal Opportunity Creator
  description: When a Salesforce subscription account is within 90 days of renewal, automatically creates a renewal opportunity, sets the close date, and assigns it to the account owner.
  tags:
  - sales
  - crm
  - salesforce
  - renewal
capability:
  exposes:
  - type: mcp
    namespace: sales-renewal
    port: 8080
    tools:
    - name: create-renewal-opportunity
      description: Given a Salesforce account ID and contract end date, create a renewal opportunity record on the account with a 90-day close target and assign it to the account owner.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: The Salesforce account ID of the customer approaching renewal.
      - name: contract_end_date
        in: body
        type: string
        description: The contract end date in YYYY-MM-DD format used to set the renewal opportunity close date.
      - name: renewal_amount
        in: body
        type: number
        description: The expected renewal contract value in USD.
      steps:
      - name: get-account
        type: call
        call: salesforce-renewal.get-account
        with:
          account_id: '{{account_id}}'
      - name: create-opportunity
        type: call
        call: salesforce-renewal.create-opportunity
        with:
          account_id: '{{account_id}}'
          name: 'Renewal: {{get-account.name}}'
          close_date: '{{contract_end_date}}'
          stage_name: Renewal
          amount: '{{renewal_amount}}'
          owner_id: '{{get-account.owner_id}}'
  consumes:
  - namespace: salesforce-renewal
    type: http
    baseUri: https://amazon.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
    - name: opportunity
      path: /sobjects/Opportunity
      operations:
      - name: create-opportunity
        method: POST
Open in Framework → View in Fleet → salesforce-renewal-opportunity-creator.yml

Queries Snowflake for long-running or expensive queries over the past 24 hours and publishes a performance digest to the data-platform Slack channel.

naftiko: '0.5'
info:
  label: Snowflake Query Performance Digest
  description: Queries Snowflake for long-running or expensive queries over the past 24 hours and publishes a performance digest to the data-platform Slack channel.
  tags:
  - data
  - analytics
  - reporting
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: data-reporting
    port: 8080
    tools:
    - name: digest-query-performance
      description: Query the Snowflake QUERY_HISTORY view for the top expensive queries in the last 24 hours and post a performance digest to Slack. Invoke for daily data-platform health review.
      inputParameters:
      - name: warehouse_name
        in: body
        type: string
        description: The Snowflake virtual warehouse name to analyze, e.g. COMPUTE_WH.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel ID where the performance digest will be posted.
      steps:
      - name: get-query-history
        type: call
        call: snowflake-perf.get-query-history
        with:
          warehouse_name: '{{warehouse_name}}'
      - name: post-digest
        type: call
        call: slack-perf.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Snowflake Query Digest (24h) for {{warehouse_name}}: {{get-query-history.total_queries}} queries, avg execution: {{get-query-history.avg_execution_ms}}ms, credits used: {{get-query-history.credits_used}}.'
  consumes:
  - namespace: snowflake-perf
    type: http
    baseUri: https://amazon.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: query-history
      path: /queries/history
      inputParameters:
      - name: warehouse_name
        in: query
      operations:
      - name: get-query-history
        method: GET
  - namespace: slack-perf
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → snowflake-query-performance-digest.yml

Monitors Athena query execution costs by tracking data scanned, logs expensive queries to DynamoDB, and alerts the data team via Slack.

naftiko: '0.5'
info:
  label: Athena Query Cost Tracker
  description: Monitors Athena query execution costs by tracking data scanned, logs expensive queries to DynamoDB, and alerts the data team via Slack.
  tags:
  - cloud
  - analytics
  - cost-management
  - aws
  - athena
  - dynamodb
  - slack
capability:
  exposes:
  - type: mcp
    namespace: athena-cost
    port: 8080
    tools:
    - name: track-query-cost
      description: Check an Athena query execution for data scanned, log expensive queries, and alert the data team.
      inputParameters:
      - name: query_execution_id
        in: body
        type: string
        description: The Athena query execution ID to track.
      - name: cost_threshold_gb
        in: body
        type: number
        description: Data scanned threshold in GB that triggers an alert.
      - name: slack_channel
        in: body
        type: string
        description: Slack channel for data cost alerts.
      steps:
      - name: get-query-execution
        type: call
        call: athena-api.get-query-execution
        with:
          query_execution_id: '{{query_execution_id}}'
      - name: log-expensive-query
        type: call
        call: dynamo-athena.put-item
        with:
          table_name: athena-cost-tracking
          query_id: '{{query_execution_id}}'
          data_scanned_bytes: '{{get-query-execution.data_scanned}}'
          status: '{{get-query-execution.status}}'
      - name: alert-team
        type: call
        call: slack-athena.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Athena Cost Alert: Query {{query_execution_id}} scanned {{get-query-execution.data_scanned}} bytes. Status: {{get-query-execution.status}}.'
  consumes:
  - namespace: athena-api
    type: http
    baseUri: https://athena.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_athena_token
      placement: header
    resources:
    - name: query
      path: /
      operations:
      - name: get-query-execution
        method: POST
  - namespace: dynamo-athena
    type: http
    baseUri: https://dynamodb.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_dynamodb_token
      placement: header
    resources:
    - name: item
      path: /
      operations:
      - name: put-item
        method: POST
  - namespace: slack-athena
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → athena-query-cost-tracker.yml

When a Salesforce opportunity moves to Closed Won, creates a Jira epic for the delivery team and posts a handoff notification to the sales Slack channel.

naftiko: '0.5'
info:
  label: Salesforce Opportunity Sync to Jira
  description: When a Salesforce opportunity moves to Closed Won, creates a Jira epic for the delivery team and posts a handoff notification to the sales Slack channel.
  tags:
  - sales
  - crm
  - salesforce
  - jira
  - slack
  - opportunity
capability:
  exposes:
  - type: mcp
    namespace: sales-ops
    port: 8080
    tools:
    - name: sync-opportunity-to-delivery
      description: Given a Salesforce opportunity ID, fetch opportunity details, create a Jira epic for the delivery team, and post a handoff message in Slack. Invoke when an opportunity is marked Closed Won.
      inputParameters:
      - name: opportunity_id
        in: body
        type: string
        description: The Salesforce opportunity ID for the closed-won deal, e.g. 0065g00000XYZ.
      - name: jira_project_key
        in: body
        type: string
        description: The Jira project key where the delivery epic should be created.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel ID to post the sales-to-delivery handoff message.
      steps:
      - name: get-opportunity
        type: call
        call: salesforce.get-opportunity
        with:
          opportunity_id: '{{opportunity_id}}'
      - name: create-epic
        type: call
        call: jira-sales.create-issue
        with:
          project_key: '{{jira_project_key}}'
          issuetype: Epic
          summary: 'Delivery: {{get-opportunity.name}}'
          description: 'Account: {{get-opportunity.account_name}}

            Value: {{get-opportunity.amount}}

            Close Date: {{get-opportunity.close_date}}'
      - name: post-handoff
        type: call
        call: slack-sales.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Closed Won: {{get-opportunity.name}} ({{get-opportunity.amount}}). Delivery epic created: {{create-epic.key}}'
  consumes:
  - namespace: salesforce
    type: http
    baseUri: https://amazon.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opportunity
      path: /sobjects/Opportunity/{opportunity_id}
      inputParameters:
      - name: opportunity_id
        in: path
      operations:
      - name: get-opportunity
        method: GET
  - namespace: jira-sales
    type: http
    baseUri: https://amazon.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_token
    resources:
    - name: issue
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - namespace: slack-sales
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → salesforce-opportunity-sync-to-jira.yml

Validates EventBridge rules are actively triggering by checking CloudWatch invocation metrics and posts a health report to Slack.

naftiko: '0.5'
info:
  label: EventBridge Rule Health Checker
  description: Validates EventBridge rules are actively triggering by checking CloudWatch invocation metrics and posts a health report to Slack.
  tags:
  - cloud
  - event-driven
  - monitoring
  - aws
  - eventbridge
  - cloudwatch
  - slack
capability:
  exposes:
  - type: mcp
    namespace: eb-health
    port: 8080
    tools:
    - name: check-rule-health
      description: Check EventBridge rule invocation metrics and report health status to Slack.
      inputParameters:
      - name: rule_name
        in: body
        type: string
        description: The EventBridge rule name to check.
      - name: slack_channel
        in: body
        type: string
        description: Slack channel for health reports.
      steps:
      - name: get-invocation-count
        type: call
        call: cw-eb.get-metric-data
        with:
          namespace: AWS/Events
          metric_name: Invocations
          rule_name: '{{rule_name}}'
      - name: get-failed-count
        type: call
        call: cw-eb.get-failed-metric
        with:
          namespace: AWS/Events
          metric_name: FailedInvocations
          rule_name: '{{rule_name}}'
      - name: post-report
        type: call
        call: slack-eb.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'EventBridge Rule Health: {{rule_name}} - Invocations: {{get-invocation-count.sum}}, Failed: {{get-failed-count.sum}}.'
  consumes:
  - namespace: cw-eb
    type: http
    baseUri: https://monitoring.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_cloudwatch_token
      placement: header
    resources:
    - name: metric
      path: /
      operations:
      - name: get-metric-data
        method: POST
      - name: get-failed-metric
        method: POST
  - namespace: slack-eb
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → eventbridge-rule-health-checker.yml

Syncs content from Confluence into an Amazon Q knowledge base index, triggers a re-index, and posts sync status to Slack.

naftiko: '0.5'
info:
  label: Amazon Q Knowledge Base Sync
  description: Syncs content from Confluence into an Amazon Q knowledge base index, triggers a re-index, and posts sync status to Slack.
  tags:
  - ai
  - knowledge-management
  - aws
  - amazon-q
  - confluence
  - slack
capability:
  exposes:
  - type: mcp
    namespace: q-kb-sync
    port: 8080
    tools:
    - name: sync-knowledge-base
      description: Pull content from Confluence, sync it to an Amazon Q knowledge base, and report status to Slack.
      inputParameters:
      - name: confluence_space
        in: body
        type: string
        description: The Confluence space key to sync from.
      - name: index_id
        in: body
        type: string
        description: The Amazon Q index ID to sync to.
      - name: slack_channel
        in: body
        type: string
        description: Slack channel for sync notifications.
      steps:
      - name: get-space-content
        type: call
        call: confluence-q.get-space-content
        with:
          space_key: '{{confluence_space}}'
      - name: start-sync
        type: call
        call: q-api.start-data-source-sync
        with:
          index_id: '{{index_id}}'
          data_source_id: confluence-{{confluence_space}}
      - name: notify-sync
        type: call
        call: slack-q.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Amazon Q KB Sync started for index {{index_id}} from Confluence space {{confluence_space}}. Sync execution: {{start-sync.execution_id}}.'
  consumes:
  - namespace: confluence-q
    type: http
    baseUri: https://amazon.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_token
    resources:
    - name: space
      path: /space/{space_key}/content
      inputParameters:
      - name: space_key
        in: path
      operations:
      - name: get-space-content
        method: GET
  - namespace: q-api
    type: http
    baseUri: https://qbusiness.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_q_token
      placement: header
    resources:
    - name: data-source-sync
      path: /applications/{index_id}/data-sources/{data_source_id}/sync
      inputParameters:
      - name: index_id
        in: path
      - name: data_source_id
        in: path
      operations:
      - name: start-data-source-sync
        method: POST
  - namespace: slack-q
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → amazon-q-knowledge-base-sync.yml

Orchestrates a production deployment by triggering a GitHub Actions workflow, creating a Datadog deployment marker, and posting a status notification to the Slack deployments channel.

naftiko: '0.5'
info:
  label: Production Deployment Rollout
  description: Orchestrates a production deployment by triggering a GitHub Actions workflow, creating a Datadog deployment marker, and posting a status notification to the Slack deployments channel.
  tags:
  - devops
  - deployment
  - github
  - datadog
  - slack
capability:
  exposes:
  - type: mcp
    namespace: devops-deploy
    port: 8080
    tools:
    - name: trigger-production-deploy
      description: Given a service name, version tag, and target environment, trigger a GitHub Actions deployment workflow, register a Datadog deployment marker, and notify the Slack deployments channel.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: The GitHub repository in owner/repo format to deploy from.
      - name: version_tag
        in: body
        type: string
        description: The git tag or commit SHA to deploy, e.g. v2.4.1.
      - name: environment
        in: body
        type: string
        description: 'The target deployment environment: production, staging, or canary.'
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel ID to post deployment status to.
      steps:
      - name: trigger-workflow
        type: call
        call: github-deploy.trigger-workflow
        with:
          repo: '{{repo}}'
          ref: '{{version_tag}}'
          workflow_id: deploy.yml
          inputs: '{"environment":"{{environment}}"}'
      - name: mark-deployment
        type: call
        call: datadog-deploy.create-event
        with:
          title: 'Deployment: {{repo}} {{version_tag}} to {{environment}}'
          text: Workflow run triggered via Naftiko.
          alert_type: info
      - name: notify-channel
        type: call
        call: slack-deploy.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Deployment started: {{repo}} @ {{version_tag}} to {{environment}}.'
  consumes:
  - namespace: github-deploy
    type: http
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: workflow-dispatch
      path: /repos/{repo}/actions/workflows/{workflow_id}/dispatches
      inputParameters:
      - name: repo
        in: path
      - name: workflow_id
        in: path
      operations:
      - name: trigger-workflow
        method: POST
  - namespace: datadog-deploy
    type: http
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: event
      path: /events
      operations:
      - name: create-event
        method: POST
  - namespace: slack-deploy
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → production-deployment-rollout.yml

Audits all Okta users in a specified group to identify those without MFA enrolled, posts a remediation report to the security Slack channel, and creates a Jira compliance task.

naftiko: '0.5'
info:
  label: Okta MFA Enforcement Audit
  description: Audits all Okta users in a specified group to identify those without MFA enrolled, posts a remediation report to the security Slack channel, and creates a Jira compliance task.
  tags:
  - security
  - identity
  - okta
  - compliance
  - slack
  - jira
capability:
  exposes:
  - type: mcp
    namespace: mfa-audit
    port: 8080
    tools:
    - name: audit-mfa-enrollment
      description: Given an Okta group ID, list all users and check MFA enrollment status. Post a list of non-compliant users to the security Slack channel and create a Jira compliance task.
      inputParameters:
      - name: okta_group_id
        in: body
        type: string
        description: The Okta group ID to audit for MFA enrollment compliance.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel ID for the MFA compliance report.
      - name: jira_project_key
        in: body
        type: string
        description: The Jira project key for the compliance tracking task.
      steps:
      - name: get-group-users
        type: call
        call: okta-mfa.get-group-users
        with:
          group_id: '{{okta_group_id}}'
      - name: create-compliance-task
        type: call
        call: jira-mfa.create-issue
        with:
          project_key: '{{jira_project_key}}'
          issuetype: Task
          summary: 'MFA audit: {{get-group-users.non_mfa_count}} users without MFA in group {{okta_group_id}}'
          description: 'Non-compliant users: {{get-group-users.non_mfa_count}} out of {{get-group-users.total}}'
      - name: post-mfa-report
        type: call
        call: slack-mfa.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'MFA Audit: {{get-group-users.non_mfa_count}} / {{get-group-users.total}} users in group {{okta_group_id}} lack MFA. Jira: {{create-compliance-task.key}}'
  consumes:
  - namespace: okta-mfa
    type: http
    baseUri: https://amazon.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_api_token
      placement: header
    resources:
    - name: group-users
      path: /groups/{group_id}/users
      inputParameters:
      - name: group_id
        in: path
      operations:
      - name: get-group-users
        method: GET
  - namespace: jira-mfa
    type: http
    baseUri: https://amazon.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_token
    resources:
    - name: issue
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - namespace: slack-mfa
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → okta-mfa-enforcement-audit.yml

Calculates estimated delivery time for an Amazon order using logistics data and warehouse location, then updates the order with the delivery estimate.

naftiko: '0.5'
info:
  label: Delivery ETA Estimator
  description: Calculates estimated delivery time for an Amazon order using logistics data and warehouse location, then updates the order with the delivery estimate.
  tags:
  - ecommerce
  - logistics
  - delivery
  - fulfillment
capability:
  exposes:
  - type: mcp
    namespace: delivery-eta
    port: 8080
    tools:
    - name: estimate-delivery
      description: Calculate delivery ETA for an order using warehouse location and destination, then update the order with the estimate.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The Amazon order ID to estimate delivery for.
      - name: destination_zip
        in: body
        type: string
        description: The destination ZIP code.
      steps:
      - name: get-order-warehouse
        type: call
        call: logistics-api.get-fulfillment-center
        with:
          order_id: '{{order_id}}'
      - name: calculate-eta
        type: call
        call: logistics-api.calculate-transit-time
        with:
          origin_zip: '{{get-order-warehouse.warehouse_zip}}'
          destination_zip: '{{destination_zip}}'
          shipping_method: '{{get-order-warehouse.shipping_method}}'
      - name: update-order-eta
        type: call
        call: logistics-api.update-delivery-estimate
        with:
          order_id: '{{order_id}}'
          estimated_delivery: '{{calculate-eta.estimated_date}}'
  consumes:
  - namespace: logistics-api
    type: http
    baseUri: https://api.amazon.com/logistics/v1
    authentication:
      type: bearer
      token: $secrets.amazon_logistics_token
    resources:
    - name: fulfillment-center
      path: /orders/{order_id}/fulfillment-center
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-fulfillment-center
        method: GET
    - name: transit-time
      path: /transit-time/calculate
      operations:
      - name: calculate-transit-time
        method: POST
    - name: delivery-estimate
      path: /orders/{order_id}/delivery-estimate
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: update-delivery-estimate
        method: PUT
Open in Framework → View in Fleet → delivery-eta-estimator.yml

Detects Prime delivery delays by checking shipment tracking, creates a support ticket in ServiceNow, and sends the customer a proactive notification via SES.

naftiko: '0.5'
info:
  label: Prime Delivery Delay Escalation
  description: Detects Prime delivery delays by checking shipment tracking, creates a support ticket in ServiceNow, and sends the customer a proactive notification via SES.
  tags:
  - ecommerce
  - prime
  - logistics
  - customer-service
  - servicenow
  - ses
capability:
  exposes:
  - type: mcp
    namespace: prime-delay
    port: 8080
    tools:
    - name: escalate-delay
      description: Detect a Prime delivery delay, create a ServiceNow ticket, and proactively notify the customer via email.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The order ID with a potential delivery delay.
      - name: customer_email
        in: body
        type: string
        description: The customer email for proactive notification.
      steps:
      - name: check-shipment
        type: call
        call: logistics-delay.get-shipment-tracking
        with:
          order_id: '{{order_id}}'
      - name: create-ticket
        type: call
        call: servicenow-delay.create-incident
        with:
          short_description: 'Prime Delivery Delay: Order {{order_id}}'
          description: 'Shipment {{check-shipment.tracking_id}} delayed. Current status: {{check-shipment.status}}. Expected: {{check-shipment.expected_date}}.'
      - name: notify-customer
        type: call
        call: ses-delay.send-email
        with:
          to: '{{customer_email}}'
          subject: Update on your Amazon order {{order_id}}
          body: 'We noticed a delay with your order. Current status: {{check-shipment.status}}. New estimated delivery: {{check-shipment.revised_date}}. We apologize for the inconvenience.'
  consumes:
  - namespace: logistics-delay
    type: http
    baseUri: https://api.amazon.com/logistics/v1
    authentication:
      type: bearer
      token: $secrets.amazon_logistics_token
    resources:
    - name: tracking
      path: /orders/{order_id}/tracking
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-shipment-tracking
        method: GET
  - namespace: servicenow-delay
    type: http
    baseUri: https://amazon.service-now.com/api/now/table
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incident
      path: /incident
      operations:
      - name: create-incident
        method: POST
  - namespace: ses-delay
    type: http
    baseUri: https://email.us-east-1.amazonaws.com/v2
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_ses_token
      placement: header
    resources:
    - name: email
      path: /email/outbound-emails
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → prime-delivery-delay-escalation.yml

Checks the current EKS cluster version, compares with available Kubernetes versions, and generates an upgrade plan posted to Confluence and Slack.

naftiko: '0.5'
info:
  label: EKS Cluster Upgrade Planner
  description: Checks the current EKS cluster version, compares with available Kubernetes versions, and generates an upgrade plan posted to Confluence and Slack.
  tags:
  - cloud
  - kubernetes
  - aws
  - eks
  - confluence
  - slack
capability:
  exposes:
  - type: mcp
    namespace: eks-upgrade
    port: 8080
    tools:
    - name: plan-upgrade
      description: Check EKS cluster version, identify available upgrades, and post an upgrade plan to Confluence and Slack.
      inputParameters:
      - name: cluster_name
        in: body
        type: string
        description: The EKS cluster name to check.
      - name: confluence_space
        in: body
        type: string
        description: Confluence space key for the upgrade plan.
      - name: slack_channel
        in: body
        type: string
        description: Slack channel for upgrade notifications.
      steps:
      - name: describe-cluster
        type: call
        call: eks-api.describe-cluster
        with:
          cluster_name: '{{cluster_name}}'
      - name: create-plan-page
        type: call
        call: confluence-eks.create-page
        with:
          space_key: '{{confluence_space}}'
          title: 'EKS Upgrade Plan: {{cluster_name}}'
          body: 'Current version: {{describe-cluster.version}}. Cluster status: {{describe-cluster.status}}. Review add-on compatibility before upgrading.'
      - name: notify-team
        type: call
        call: slack-eks.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'EKS Upgrade Plan created for {{cluster_name}} (current: v{{describe-cluster.version}}). Confluence: {{create-plan-page.url}}'
  consumes:
  - namespace: eks-api
    type: http
    baseUri: https://eks.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_eks_token
      placement: header
    resources:
    - name: cluster
      path: /clusters/{cluster_name}
      inputParameters:
      - name: cluster_name
        in: path
      operations:
      - name: describe-cluster
        method: GET
  - namespace: confluence-eks
    type: http
    baseUri: https://amazon.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_token
    resources:
    - name: page
      path: /content
      operations:
      - name: create-page
        method: POST
  - namespace: slack-eks
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → eks-cluster-upgrade-planner.yml

Retrieves performance metrics for an Amazon Advertising campaign including impressions, clicks, and spend.

naftiko: '0.5'
info:
  label: Advertising Campaign Metrics
  description: Retrieves performance metrics for an Amazon Advertising campaign including impressions, clicks, and spend.
  tags:
  - advertising
  - marketing
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: ads-metrics
    port: 8080
    tools:
    - name: get-campaign-metrics
      description: Fetch performance metrics for a given Amazon Advertising campaign. Returns impressions, clicks, CTR, and spend.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: The Amazon Advertising campaign ID to retrieve metrics for.
      - name: date_range
        in: body
        type: string
        description: The date range for metrics, e.g. last-7-days.
      call: ads-api.get-campaign-report
      with:
        campaign_id: '{{campaign_id}}'
        date_range: '{{date_range}}'
      outputParameters:
      - name: impressions
        type: number
        mapping: $.metrics.impressions
      - name: clicks
        type: number
        mapping: $.metrics.clicks
      - name: spend
        type: number
        mapping: $.metrics.cost
  consumes:
  - namespace: ads-api
    type: http
    baseUri: https://advertising-api.amazon.com/v3
    authentication:
      type: bearer
      token: $secrets.amazon_ads_token
    resources:
    - name: campaigns
      path: /campaigns/{campaign_id}/report
      inputParameters:
      - name: campaign_id
        in: path
      - name: date_range
        in: query
      operations:
      - name: get-campaign-report
        method: GET
Open in Framework → View in Fleet → advertising-campaign-metrics.yml

Audits a GitHub repository for branch protection rules, required status checks, and code owner file presence, then posts a compliance report to a Slack channel.

naftiko: '0.5'
info:
  label: GitHub Repository Compliance Audit
  description: Audits a GitHub repository for branch protection rules, required status checks, and code owner file presence, then posts a compliance report to a Slack channel.
  tags:
  - devops
  - compliance
  - github
  - slack
  - security
capability:
  exposes:
  - type: mcp
    namespace: devops-compliance
    port: 8080
    tools:
    - name: audit-repo-compliance
      description: Given a GitHub repository name, check branch protection rules on the default branch, verify required status checks are configured, and post a compliance status report to Slack.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: The GitHub repository in owner/repo format to audit, e.g. amzn/service-catalog.
      - name: branch
        in: body
        type: string
        description: The branch to check protection rules on, typically main or master.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel ID where the compliance report will be posted.
      steps:
      - name: get-branch-protection
        type: call
        call: github-compliance.get-branch-protection
        with:
          repo: '{{repo}}'
          branch: '{{branch}}'
      - name: post-compliance-report
        type: call
        call: slack-compliance.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Compliance Audit: {{repo}} / {{branch}} | Required reviews: {{get-branch-protection.required_approving_review_count}} | Status checks required: {{get-branch-protection.required_status_checks_count}} | Admin enforced: {{get-branch-protection.enforce_admins}}'
  consumes:
  - namespace: github-compliance
    type: http
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: branch-protection
      path: /repos/{repo}/branches/{branch}/protection
      inputParameters:
      - name: repo
        in: path
      - name: branch
        in: path
      operations:
      - name: get-branch-protection
        method: GET
  - namespace: slack-compliance
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → github-repository-compliance-audit.yml

Creates a CloudFront cache invalidation after a deployment, monitors its completion, and notifies the engineering team via Slack.

naftiko: '0.5'
info:
  label: CloudFront Cache Invalidation Workflow
  description: Creates a CloudFront cache invalidation after a deployment, monitors its completion, and notifies the engineering team via Slack.
  tags:
  - cloud
  - cdn
  - deployment
  - aws
  - cloudfront
  - slack
capability:
  exposes:
  - type: mcp
    namespace: cf-invalidation
    port: 8080
    tools:
    - name: invalidate-and-notify
      description: Create a CloudFront cache invalidation for specified paths, check completion status, and notify the team via Slack.
      inputParameters:
      - name: distribution_id
        in: body
        type: string
        description: The CloudFront distribution ID to invalidate.
      - name: paths
        in: body
        type: string
        description: Comma-separated list of paths to invalidate, e.g. /index.html,/assets/*.
      - name: slack_channel
        in: body
        type: string
        description: Slack channel for invalidation notifications.
      steps:
      - name: create-invalidation
        type: call
        call: cf-api.create-invalidation
        with:
          distribution_id: '{{distribution_id}}'
          paths: '{{paths}}'
      - name: check-status
        type: call
        call: cf-api.get-invalidation
        with:
          distribution_id: '{{distribution_id}}'
          invalidation_id: '{{create-invalidation.invalidation_id}}'
      - name: notify-team
        type: call
        call: slack-cf.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'CloudFront Invalidation {{create-invalidation.invalidation_id}} for distribution {{distribution_id}}: Status {{check-status.status}}. Paths: {{paths}}'
  consumes:
  - namespace: cf-api
    type: http
    baseUri: https://cloudfront.amazonaws.com/2020-05-31
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_cloudfront_token
      placement: header
    resources:
    - name: invalidation
      path: /distribution/{distribution_id}/invalidation
      inputParameters:
      - name: distribution_id
        in: path
      - name: paths
        in: body
      operations:
      - name: create-invalidation
        method: POST
    - name: invalidation-status
      path: /distribution/{distribution_id}/invalidation/{invalidation_id}
      inputParameters:
      - name: distribution_id
        in: path
      - name: invalidation_id
        in: path
      operations:
      - name: get-invalidation
        method: GET
  - namespace: slack-cf
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → cloudfront-cache-invalidation-workflow.yml

Checks the Prime membership status for a customer account and returns subscription tier and renewal date.

naftiko: '0.5'
info:
  label: Prime Membership Status Lookup
  description: Checks the Prime membership status for a customer account and returns subscription tier and renewal date.
  tags:
  - ecommerce
  - prime
  - customer
capability:
  exposes:
  - type: mcp
    namespace: prime-membership
    port: 8080
    tools:
    - name: get-membership-status
      description: Look up the Prime membership status for a given customer ID. Returns tier, renewal date, and benefit details.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The Amazon customer ID to look up Prime status for.
      call: prime-api.get-membership
      with:
        customer_id: '{{customer_id}}'
      outputParameters:
      - name: tier
        type: string
        mapping: $.membership.tier
      - name: renewal_date
        type: string
        mapping: $.membership.renewalDate
  consumes:
  - namespace: prime-api
    type: http
    baseUri: https://api.amazon.com/prime/v1
    authentication:
      type: bearer
      token: $secrets.amazon_prime_token
    resources:
    - name: membership
      path: /memberships/{customer_id}
      inputParameters:
      - name: customer_id
        in: path
      operations:
      - name: get-membership
        method: GET
Open in Framework → View in Fleet → prime-membership-status-lookup.yml

When a GitHub pull request is opened against a main branch, triggers a Snyk security scan and posts the results as a PR comment. Blocks merge if critical vulnerabilities are detected.

naftiko: '0.5'
info:
  label: GitHub PR Security Scan Gate
  description: When a GitHub pull request is opened against a main branch, triggers a Snyk security scan and posts the results as a PR comment. Blocks merge if critical vulnerabilities are detected.
  tags:
  - devops
  - security
  - github
  - snyk
  - code-quality
capability:
  exposes:
  - type: mcp
    namespace: devops-security
    port: 8080
    tools:
    - name: run-pr-security-scan
      description: Given a GitHub repo and PR number, trigger a Snyk security scan on the PR branch and post scan results as a GitHub PR review comment. Use when enforcing security gates on pull requests.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: The GitHub repository in owner/repo format, e.g. amzn/service-catalog.
      - name: pr_number
        in: body
        type: integer
        description: The pull request number to scan and comment on.
      - name: branch
        in: body
        type: string
        description: The branch name associated with the pull request.
      steps:
      - name: trigger-scan
        type: call
        call: snyk.test-project
        with:
          org: amazon
          target_reference: '{{branch}}'
      - name: post-review
        type: call
        call: github-sec.create-pr-review
        with:
          repo: '{{repo}}'
          pull_number: '{{pr_number}}'
          body: 'Snyk scan complete. Issues found: {{trigger-scan.issue_count}}. Critical: {{trigger-scan.critical_count}}. See full report: {{trigger-scan.report_url}}'
          event: COMMENT
  consumes:
  - namespace: snyk
    type: http
    baseUri: https://api.snyk.io/rest
    authentication:
      type: bearer
      token: $secrets.snyk_token
    resources:
    - name: project-test
      path: /orgs/{org}/test
      inputParameters:
      - name: org
        in: path
      operations:
      - name: test-project
        method: POST
  - namespace: github-sec
    type: http
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: pr-review
      path: /repos/{repo}/pulls/{pull_number}/reviews
      inputParameters:
      - name: repo
        in: path
      - name: pull_number
        in: path
      operations:
      - name: create-pr-review
        method: POST
Open in Framework → View in Fleet → github-pr-security-scan-gate.yml

Deploys a new Lambda function version, runs a smoke test, and rolls back to the previous version if the test fails, notifying the team via Slack.

naftiko: '0.5'
info:
  label: Lambda Deployment with Rollback
  description: Deploys a new Lambda function version, runs a smoke test, and rolls back to the previous version if the test fails, notifying the team via Slack.
  tags:
  - cloud
  - serverless
  - deployment
  - aws
  - lambda
  - slack
capability:
  exposes:
  - type: mcp
    namespace: lambda-deploy
    port: 8080
    tools:
    - name: deploy-with-rollback
      description: Deploy a new Lambda version from S3, invoke a smoke test, and roll back if it fails. Posts deployment status to Slack.
      inputParameters:
      - name: function_name
        in: body
        type: string
        description: The Lambda function name to deploy.
      - name: s3_bucket
        in: body
        type: string
        description: The S3 bucket containing the deployment package.
      - name: s3_key
        in: body
        type: string
        description: The S3 key for the deployment package zip.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel for deployment notifications.
      steps:
      - name: update-function
        type: call
        call: lambda-dep.update-function-code
        with:
          function_name: '{{function_name}}'
          s3_bucket: '{{s3_bucket}}'
          s3_key: '{{s3_key}}'
      - name: invoke-smoke-test
        type: call
        call: lambda-dep.invoke-function
        with:
          function_name: '{{function_name}}'
          payload: '{"test": true}'
      - name: notify-team
        type: call
        call: slack-dep.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Lambda deployment for {{function_name}}: version {{update-function.version}} deployed. Smoke test status: {{invoke-smoke-test.status_code}}.'
  consumes:
  - namespace: lambda-dep
    type: http
    baseUri: https://lambda.us-east-1.amazonaws.com/2015-03-31
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_lambda_token
      placement: header
    resources:
    - name: function-code
      path: /functions/{function_name}/code
      inputParameters:
      - name: function_name
        in: path
      operations:
      - name: update-function-code
        method: PUT
    - name: invocation
      path: /functions/{function_name}/invocations
      inputParameters:
      - name: function_name
        in: path
      - name: payload
        in: body
      operations:
      - name: invoke-function
        method: POST
  - namespace: slack-dep
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → lambda-deployment-with-rollback.yml

Queries Datadog for SLO burn rate on a target service, and if the burn rate exceeds the threshold, pages PagerDuty and posts a remediation link in Slack.

naftiko: '0.5'
info:
  label: Datadog SLO Burn Rate Alert
  description: Queries Datadog for SLO burn rate on a target service, and if the burn rate exceeds the threshold, pages PagerDuty and posts a remediation link in Slack.
  tags:
  - observability
  - slo
  - datadog
  - pagerduty
  - slack
capability:
  exposes:
  - type: mcp
    namespace: slo-ops
    port: 8080
    tools:
    - name: handle-slo-burn-alert
      description: Given a Datadog SLO ID and burn rate threshold, check the current SLO burn rate and if it exceeds the threshold, page PagerDuty and alert the Slack ops channel with the SLO status and a remediation link.
      inputParameters:
      - name: slo_id
        in: body
        type: string
        description: The Datadog SLO ID to check the burn rate for.
      - name: burn_rate_threshold
        in: body
        type: number
        description: The burn rate multiplier above which an alert is triggered, e.g. 14.4 for a 1-hour burn window.
      - name: pagerduty_service_key
        in: body
        type: string
        description: The PagerDuty integration service key for routing the SLO burn alert.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel ID for the SLO burn notification.
      steps:
      - name: get-slo
        type: call
        call: datadog-slo.get-slo
        with:
          slo_id: '{{slo_id}}'
      - name: page-oncall
        type: call
        call: pagerduty-slo.create-incident
        with:
          service_key: '{{pagerduty_service_key}}'
          description: 'SLO burn rate alert: {{get-slo.name}} burn rate = {{get-slo.burn_rate}}'
          incident_key: slo-{{slo_id}}
      - name: post-slo-alert
        type: call
        call: slack-slo.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'SLO BURN ALERT: {{get-slo.name}} | Burn rate: {{get-slo.burn_rate}} (threshold: {{burn_rate_threshold}}) | Remaining error budget: {{get-slo.error_budget_remaining}}%'
  consumes:
  - namespace: datadog-slo
    type: http
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: slo
      path: /slo/{slo_id}
      inputParameters:
      - name: slo_id
        in: path
      operations:
      - name: get-slo
        method: GET
  - namespace: pagerduty-slo
    type: http
    baseUri: https://events.pagerduty.com/v2
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.pagerduty_token
      placement: header
    resources:
    - name: incident
      path: /enqueue
      operations:
      - name: create-incident
        method: POST
  - namespace: slack-slo
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → datadog-slo-burn-rate-alert.yml

Translates Amazon product listing content using Amazon Translate, updates the listing for the target marketplace, and logs the translation to DynamoDB.

naftiko: '0.5'
info:
  label: Translate Product Listing Localizer
  description: Translates Amazon product listing content using Amazon Translate, updates the listing for the target marketplace, and logs the translation to DynamoDB.
  tags:
  - ecommerce
  - localization
  - aws
  - translate
  - marketplace
  - dynamodb
capability:
  exposes:
  - type: mcp
    namespace: listing-translate
    port: 8080
    tools:
    - name: localize-listing
      description: Translate a product listing to a target language, update the marketplace listing, and log the translation.
      inputParameters:
      - name: asin
        in: body
        type: string
        description: The ASIN of the product to translate.
      - name: source_language
        in: body
        type: string
        description: Source language code, e.g. en.
      - name: target_language
        in: body
        type: string
        description: Target language code, e.g. de.
      steps:
      - name: get-listing
        type: call
        call: sp-translate.get-listing
        with:
          asin: '{{asin}}'
      - name: translate-content
        type: call
        call: translate-api.translate-text
        with:
          text: '{{get-listing.title}} | {{get-listing.description}}'
          source_language: '{{source_language}}'
          target_language: '{{target_language}}'
      - name: log-translation
        type: call
        call: dynamo-translate.put-item
        with:
          table_name: listing-translations
          asin: '{{asin}}'
          target_language: '{{target_language}}'
          translated_text: '{{translate-content.translated_text}}'
  consumes:
  - namespace: sp-translate
    type: http
    baseUri: https://sellingpartnerapi-na.amazon.com
    authentication:
      type: bearer
      token: $secrets.sp_api_token
    resources:
    - name: listing
      path: /listings/2021-08-01/items/ATVPDKIKX0DER/{asin}
      inputParameters:
      - name: asin
        in: path
      operations:
      - name: get-listing
        method: GET
  - namespace: translate-api
    type: http
    baseUri: https://translate.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_translate_token
      placement: header
    resources:
    - name: translate
      path: /
      operations:
      - name: translate-text
        method: POST
  - namespace: dynamo-translate
    type: http
    baseUri: https://dynamodb.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_dynamodb_token
      placement: header
    resources:
    - name: item
      path: /
      operations:
      - name: put-item
        method: POST
Open in Framework → View in Fleet → translate-product-listing-localizer.yml

Monitors Amazon Advertising campaign spend against budget thresholds, pauses overspending campaigns, and notifies the marketing team via Slack.

naftiko: '0.5'
info:
  label: Advertising Spend Anomaly Detector
  description: Monitors Amazon Advertising campaign spend against budget thresholds, pauses overspending campaigns, and notifies the marketing team via Slack.
  tags:
  - advertising
  - finops
  - cost-management
  - marketing
  - slack
capability:
  exposes:
  - type: mcp
    namespace: ads-anomaly
    port: 8080
    tools:
    - name: detect-spend-anomaly
      description: Check advertising campaign spend against budget, pause campaigns exceeding threshold, and alert the marketing team.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: The Amazon Advertising campaign ID to monitor.
      - name: budget_threshold
        in: body
        type: number
        description: The daily budget threshold in USD.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel for marketing alerts.
      steps:
      - name: get-spend
        type: call
        call: ads-spend.get-campaign-spend
        with:
          campaign_id: '{{campaign_id}}'
      - name: pause-campaign
        type: call
        call: ads-spend.update-campaign-status
        with:
          campaign_id: '{{campaign_id}}'
          status: PAUSED
      - name: alert-team
        type: call
        call: slack-ads.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Spend Alert: Campaign {{campaign_id}} spend ${{get-spend.daily_spend}} exceeded budget ${{budget_threshold}}. Campaign paused.'
  consumes:
  - namespace: ads-spend
    type: http
    baseUri: https://advertising-api.amazon.com/v3
    authentication:
      type: bearer
      token: $secrets.amazon_ads_token
    resources:
    - name: campaign-spend
      path: /campaigns/{campaign_id}/spend
      inputParameters:
      - name: campaign_id
        in: path
      operations:
      - name: get-campaign-spend
        method: GET
    - name: campaign-status
      path: /campaigns/{campaign_id}
      inputParameters:
      - name: campaign_id
        in: path
      - name: status
        in: body
      operations:
      - name: update-campaign-status
        method: PUT
  - namespace: slack-ads
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → advertising-spend-anomaly-detector.yml

Analyzes a product listing on Amazon Marketplace for SEO quality, fetches competitor pricing, and suggests optimized title and keywords to a Slack channel.

naftiko: '0.5'
info:
  label: Seller Product Listing Optimizer
  description: Analyzes a product listing on Amazon Marketplace for SEO quality, fetches competitor pricing, and suggests optimized title and keywords to a Slack channel.
  tags:
  - ecommerce
  - marketplace
  - seo
  - seller-central
  - slack
capability:
  exposes:
  - type: mcp
    namespace: listing-optimizer
    port: 8080
    tools:
    - name: optimize-listing
      description: Analyze a marketplace product listing, compare with competitor pricing, and post optimization suggestions to Slack.
      inputParameters:
      - name: asin
        in: body
        type: string
        description: The ASIN of the product listing to optimize.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel to post optimization suggestions.
      steps:
      - name: get-listing
        type: call
        call: sp-listing.get-listing
        with:
          asin: '{{asin}}'
      - name: get-competitive-pricing
        type: call
        call: sp-listing.get-competitive-pricing
        with:
          asin: '{{asin}}'
      - name: post-suggestions
        type: call
        call: slack-listing.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Listing Optimization for ASIN {{asin}}:

            Current title: {{get-listing.title}}

            Your price: {{get-listing.price}}

            Lowest competitor: {{get-competitive-pricing.lowest_price}}

            Suggestion: Review keywords and consider competitive repricing.'
  consumes:
  - namespace: sp-listing
    type: http
    baseUri: https://sellingpartnerapi-na.amazon.com
    authentication:
      type: bearer
      token: $secrets.sp_api_token
    resources:
    - name: listing
      path: /listings/2021-08-01/items/ATVPDKIKX0DER/{asin}
      inputParameters:
      - name: asin
        in: path
      operations:
      - name: get-listing
        method: GET
    - name: competitive-pricing
      path: /products/pricing/v0/competitivePrice
      inputParameters:
      - name: asin
        in: query
      operations:
      - name: get-competitive-pricing
        method: GET
  - namespace: slack-listing
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → seller-product-listing-optimizer.yml

Triggers a Terraform Cloud plan run on a workspace to detect infrastructure drift, posts the plan summary to a Slack channel, and creates a Jira task if drift is found.

naftiko: '0.5'
info:
  label: Terraform Infrastructure Drift Detector
  description: Triggers a Terraform Cloud plan run on a workspace to detect infrastructure drift, posts the plan summary to a Slack channel, and creates a Jira task if drift is found.
  tags:
  - cloud
  - infrastructure
  - terraform
  - jira
  - slack
  - drift-detection
capability:
  exposes:
  - type: mcp
    namespace: infra-ops
    port: 8080
    tools:
    - name: detect-infra-drift
      description: Given a Terraform Cloud organization and workspace name, trigger a speculative plan run to detect infrastructure drift, and if drift is found, create a Jira task and alert Slack.
      inputParameters:
      - name: terraform_org
        in: body
        type: string
        description: The Terraform Cloud organization name, e.g. amazon-infra.
      - name: workspace_name
        in: body
        type: string
        description: The Terraform workspace name to run the drift-detection plan on.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel ID for the drift-detection alert.
      steps:
      - name: trigger-plan
        type: call
        call: terraform.create-run
        with:
          organization: '{{terraform_org}}'
          workspace_name: '{{workspace_name}}'
          plan_only: 'true'
      - name: create-drift-ticket
        type: call
        call: jira-infra.create-issue
        with:
          project_key: INFRA
          issuetype: Task
          summary: Infrastructure drift detected in {{workspace_name}}
          description: 'Terraform plan run ID: {{trigger-plan.run_id}}. Review and apply changes.'
      - name: notify-infra-team
        type: call
        call: slack-infra.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Infra Drift Detected: workspace {{workspace_name}} | Terraform run: {{trigger-plan.run_id}} | Jira: {{create-drift-ticket.key}}'
  consumes:
  - namespace: terraform
    type: http
    baseUri: https://app.terraform.io/api/v2
    authentication:
      type: bearer
      token: $secrets.terraform_token
    resources:
    - name: run
      path: /runs
      operations:
      - name: create-run
        method: POST
  - namespace: jira-infra
    type: http
    baseUri: https://amazon.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_token
    resources:
    - name: issue
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - namespace: slack-infra
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → terraform-infrastructure-drift-detector.yml

Creates an on-demand RDS database snapshot, checks its completion status, and notifies the DBA team via Slack when ready.

naftiko: '0.5'
info:
  label: RDS Snapshot and Notify
  description: Creates an on-demand RDS database snapshot, checks its completion status, and notifies the DBA team via Slack when ready.
  tags:
  - cloud
  - database
  - backup
  - aws
  - rds
  - slack
capability:
  exposes:
  - type: mcp
    namespace: rds-backup
    port: 8080
    tools:
    - name: snapshot-and-notify
      description: Create an RDS snapshot, verify its status, and notify the DBA team when complete.
      inputParameters:
      - name: db_instance_id
        in: body
        type: string
        description: The RDS database instance identifier.
      - name: snapshot_id
        in: body
        type: string
        description: The desired snapshot identifier.
      - name: slack_channel
        in: body
        type: string
        description: Slack channel for DBA notifications.
      steps:
      - name: create-snapshot
        type: call
        call: rds-api.create-db-snapshot
        with:
          db_instance_id: '{{db_instance_id}}'
          snapshot_id: '{{snapshot_id}}'
      - name: check-status
        type: call
        call: rds-api.describe-db-snapshot
        with:
          snapshot_id: '{{snapshot_id}}'
      - name: notify-team
        type: call
        call: slack-rds.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'RDS Snapshot {{snapshot_id}} for {{db_instance_id}}: Status {{check-status.status}}. Created at {{check-status.created_at}}.'
  consumes:
  - namespace: rds-api
    type: http
    baseUri: https://rds.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_rds_token
      placement: header
    resources:
    - name: snapshot
      path: /
      operations:
      - name: create-db-snapshot
        method: POST
      - name: describe-db-snapshot
        method: GET
  - namespace: slack-rds
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → rds-snapshot-and-notify.yml

Describes a Kinesis data stream and returns its shard count, retention period, and status.

naftiko: '0.5'
info:
  label: Kinesis Stream Description
  description: Describes a Kinesis data stream and returns its shard count, retention period, and status.
  tags:
  - cloud
  - streaming
  - aws
  - kinesis
capability:
  exposes:
  - type: mcp
    namespace: kinesis-desc
    port: 8080
    tools:
    - name: describe-stream
      description: Describe a Kinesis data stream to get shard count, retention period, and current status.
      inputParameters:
      - name: stream_name
        in: body
        type: string
        description: The name of the Kinesis stream to describe.
      call: kinesis-api.describe-stream
      with:
        stream_name: '{{stream_name}}'
      outputParameters:
      - name: shard_count
        type: number
        mapping: $.StreamDescription.Shards.length
      - name: status
        type: string
        mapping: $.StreamDescription.StreamStatus
  consumes:
  - namespace: kinesis-api
    type: http
    baseUri: https://kinesis.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_kinesis_token
      placement: header
    resources:
    - name: stream
      path: /
      inputParameters:
      - name: stream_name
        in: body
      operations:
      - name: describe-stream
        method: POST
Open in Framework → View in Fleet → kinesis-stream-description.yml

Monitors ECS service CPU utilization via CloudWatch, adjusts the desired task count based on load, and logs the scaling event to DynamoDB.

naftiko: '0.5'
info:
  label: ECS Auto-Scaling Adjuster
  description: Monitors ECS service CPU utilization via CloudWatch, adjusts the desired task count based on load, and logs the scaling event to DynamoDB.
  tags:
  - cloud
  - containers
  - auto-scaling
  - aws
  - ecs
  - cloudwatch
  - dynamodb
capability:
  exposes:
  - type: mcp
    namespace: ecs-scaling
    port: 8080
    tools:
    - name: adjust-scaling
      description: Monitor ECS service CPU, adjust desired task count if needed, and log the scaling event.
      inputParameters:
      - name: cluster_name
        in: body
        type: string
        description: The ECS cluster name.
      - name: service_name
        in: body
        type: string
        description: The ECS service name to scale.
      - name: cpu_threshold
        in: body
        type: number
        description: CPU percentage threshold that triggers scaling.
      - name: desired_count
        in: body
        type: number
        description: The new desired task count to set.
      steps:
      - name: get-cpu-metric
        type: call
        call: cw-ecs.get-metric-data
        with:
          cluster_name: '{{cluster_name}}'
          service_name: '{{service_name}}'
          metric_name: CPUUtilization
      - name: update-service
        type: call
        call: ecs-scale.update-service
        with:
          cluster_name: '{{cluster_name}}'
          service_name: '{{service_name}}'
          desired_count: '{{desired_count}}'
      - name: log-event
        type: call
        call: dynamo-ecs.put-item
        with:
          table_name: ecs-scaling-events
          service_name: '{{service_name}}'
          cpu_avg: '{{get-cpu-metric.average}}'
          new_count: '{{desired_count}}'
  consumes:
  - namespace: cw-ecs
    type: http
    baseUri: https://monitoring.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_cloudwatch_token
      placement: header
    resources:
    - name: metric
      path: /
      inputParameters:
      - name: cluster_name
        in: query
      - name: service_name
        in: query
      - name: metric_name
        in: query
      operations:
      - name: get-metric-data
        method: POST
  - namespace: ecs-scale
    type: http
    baseUri: https://ecs.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_ecs_token
      placement: header
    resources:
    - name: service
      path: /
      operations:
      - name: update-service
        method: POST
  - namespace: dynamo-ecs
    type: http
    baseUri: https://dynamodb.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_dynamodb_token
      placement: header
    resources:
    - name: item
      path: /
      operations:
      - name: put-item
        method: POST
Open in Framework → View in Fleet → ecs-auto-scaling-adjuster.yml

Fetches the execution history of an AWS Step Functions workflow, summarizes success and failure states, and posts the report to Slack.

naftiko: '0.5'
info:
  label: Step Functions Workflow Status Reporter
  description: Fetches the execution history of an AWS Step Functions workflow, summarizes success and failure states, and posts the report to Slack.
  tags:
  - cloud
  - orchestration
  - aws
  - step-functions
  - slack
capability:
  exposes:
  - type: mcp
    namespace: sfn-reporter
    port: 8080
    tools:
    - name: report-execution-status
      description: Get the execution history for a Step Functions workflow and post a status summary to Slack.
      inputParameters:
      - name: execution_arn
        in: body
        type: string
        description: The Step Functions execution ARN to report on.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel for the status report.
      steps:
      - name: get-execution
        type: call
        call: sfn-api.describe-execution
        with:
          execution_arn: '{{execution_arn}}'
      - name: get-history
        type: call
        call: sfn-api.get-execution-history
        with:
          execution_arn: '{{execution_arn}}'
      - name: post-report
        type: call
        call: slack-sfn.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Step Functions Report: Execution {{execution_arn}} status: {{get-execution.status}}. Total events: {{get-history.event_count}}.'
  consumes:
  - namespace: sfn-api
    type: http
    baseUri: https://states.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_stepfunctions_token
      placement: header
    resources:
    - name: execution
      path: /
      inputParameters:
      - name: execution_arn
        in: body
      operations:
      - name: describe-execution
        method: POST
      - name: get-execution-history
        method: POST
  - namespace: slack-sfn
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → step-functions-workflow-status-reporter.yml

Fetches non-compliant AWS Config rule evaluations, triggers SSM Automation remediation, and posts the remediation status to Slack.

naftiko: '0.5'
info:
  label: Config Compliance Remediator
  description: Fetches non-compliant AWS Config rule evaluations, triggers SSM Automation remediation, and posts the remediation status to Slack.
  tags:
  - cloud
  - compliance
  - security
  - aws
  - config
  - ssm
  - slack
capability:
  exposes:
  - type: mcp
    namespace: config-remediate
    port: 8080
    tools:
    - name: remediate-non-compliant
      description: Fetch non-compliant Config evaluations, trigger SSM remediation, and report status to Slack.
      inputParameters:
      - name: config_rule_name
        in: body
        type: string
        description: The AWS Config rule name to check.
      - name: ssm_document_name
        in: body
        type: string
        description: The SSM Automation document for remediation.
      - name: slack_channel
        in: body
        type: string
        description: Slack channel for compliance notifications.
      steps:
      - name: get-compliance
        type: call
        call: config-api.get-compliance-details
        with:
          config_rule_name: '{{config_rule_name}}'
      - name: start-remediation
        type: call
        call: ssm-api.start-automation-execution
        with:
          document_name: '{{ssm_document_name}}'
          resource_id: '{{get-compliance.non_compliant_resource}}'
      - name: notify-team
        type: call
        call: slack-config.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Config Remediation: Rule {{config_rule_name}} - Resource {{get-compliance.non_compliant_resource}} remediation started. SSM execution: {{start-remediation.execution_id}}.'
  consumes:
  - namespace: config-api
    type: http
    baseUri: https://config.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_config_token
      placement: header
    resources:
    - name: compliance
      path: /
      operations:
      - name: get-compliance-details
        method: POST
  - namespace: ssm-api
    type: http
    baseUri: https://ssm.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_ssm_token
      placement: header
    resources:
    - name: automation
      path: /
      operations:
      - name: start-automation-execution
        method: POST
  - namespace: slack-config
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → config-compliance-remediator.yml

Detects failed AWS Glue ETL jobs, collects error logs from CloudWatch, and creates a Jira ticket for the data engineering team.

naftiko: '0.5'
info:
  label: Glue Job Failure Handler
  description: Detects failed AWS Glue ETL jobs, collects error logs from CloudWatch, and creates a Jira ticket for the data engineering team.
  tags:
  - cloud
  - etl
  - data-engineering
  - aws
  - glue
  - cloudwatch
  - jira
capability:
  exposes:
  - type: mcp
    namespace: glue-failure
    port: 8080
    tools:
    - name: handle-glue-failure
      description: Process a Glue job failure by fetching error logs and creating a Jira ticket for investigation.
      inputParameters:
      - name: job_name
        in: body
        type: string
        description: The AWS Glue job name that failed.
      - name: job_run_id
        in: body
        type: string
        description: The Glue job run ID.
      - name: jira_project_key
        in: body
        type: string
        description: Jira project key for data engineering tickets.
      steps:
      - name: get-job-run
        type: call
        call: glue-api.get-job-run
        with:
          job_name: '{{job_name}}'
          job_run_id: '{{job_run_id}}'
      - name: get-error-logs
        type: call
        call: cw-glue.get-log-events
        with:
          log_group: /aws-glue/jobs/error
          log_stream: '{{job_run_id}}'
      - name: create-ticket
        type: call
        call: jira-glue.create-issue
        with:
          project_key: '{{jira_project_key}}'
          issuetype: Bug
          summary: 'Glue Job Failure: {{job_name}} (Run: {{job_run_id}})'
          description: 'Error: {{get-job-run.error_message}}. Logs: {{get-error-logs.events}}'
  consumes:
  - namespace: glue-api
    type: http
    baseUri: https://glue.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_glue_token
      placement: header
    resources:
    - name: job-run
      path: /
      operations:
      - name: get-job-run
        method: POST
  - namespace: cw-glue
    type: http
    baseUri: https://logs.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_cloudwatch_token
      placement: header
    resources:
    - name: log-events
      path: /
      operations:
      - name: get-log-events
        method: POST
  - namespace: jira-glue
    type: http
    baseUri: https://amazon.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_token
    resources:
    - name: issue
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → glue-job-failure-handler.yml

When a new hire record is created in Workday, opens a ServiceNow onboarding ticket, provisions a GitHub org membership, and sends a Slack welcome message to the team channel.

naftiko: '0.5'
info:
  label: New Hire Onboarding Orchestrator
  description: When a new hire record is created in Workday, opens a ServiceNow onboarding ticket, provisions a GitHub org membership, and sends a Slack welcome message to the team channel.
  tags:
  - hr
  - onboarding
  - workday
  - servicenow
  - github
  - slack
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: fetch worker details from Workday, open a ServiceNow onboarding ticket, add the employee to the GitHub org, and send a Slack welcome message.'
      inputParameters:
      - name: workday_employee_id
        in: body
        type: string
        description: The Workday worker ID for the new hire, e.g. WD-100234.
      - name: start_date
        in: body
        type: string
        description: The hire's start date in YYYY-MM-DD format.
      - name: github_team_slug
        in: body
        type: string
        description: The GitHub team slug to add the new hire to, e.g. platform-eng.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel ID where the welcome message will be posted.
      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}}'
          assignment_group: IT_Onboarding
          category: hr_onboarding
      - name: add-github-member
        type: call
        call: github.add-org-member
        with:
          org: amzn
          username: '{{get-employee.github_username}}'
          team_slug: '{{github_team_slug}}'
      - name: send-welcome
        type: call
        call: slack.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Welcome to Amazon, {{get-employee.first_name}}! Onboarding ticket: {{open-ticket.number}}'
  consumes:
  - namespace: workday
    type: http
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: worker
      path: /workers/{worker_id}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - namespace: servicenow
    type: http
    baseUri: https://amazon.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: incident
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: github
    type: http
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: org-member
      path: /orgs/{org}/teams/{team_slug}/memberships/{username}
      inputParameters:
      - name: org
        in: path
      - name: team_slug
        in: path
      - name: username
        in: path
      operations:
      - name: add-org-member
        method: PUT
  - namespace: slack
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → new-hire-onboarding-orchestrator.yml

Queries Datadog for cloud cost anomalies exceeding a threshold, creates a Jira cost-investigation ticket, and posts a summary to the FinOps Slack channel.

naftiko: '0.5'
info:
  label: Cloud Cost Anomaly Responder
  description: Queries Datadog for cloud cost anomalies exceeding a threshold, creates a Jira cost-investigation ticket, and posts a summary to the FinOps Slack channel.
  tags:
  - cloud
  - finops
  - cost-management
  - datadog
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: finops-ops
    port: 8080
    tools:
    - name: handle-cost-anomaly
      description: Given a cost anomaly metric query and threshold, fetch Datadog metrics to confirm the anomaly, open a Jira cost-investigation ticket, and post a FinOps Slack alert.
      inputParameters:
      - name: metric_query
        in: body
        type: string
        description: The Datadog metrics query string identifying the cost metric, e.g. aws.ec2.estimated_charges.
      - name: threshold
        in: body
        type: number
        description: The cost threshold in USD above which an anomaly is declared.
      - name: jira_project_key
        in: body
        type: string
        description: The Jira project key for the cost-investigation ticket, e.g. FINOPS.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel ID for the FinOps alert notification.
      steps:
      - name: query-metrics
        type: call
        call: datadog-cost.query-metrics
        with:
          query: '{{metric_query}}'
      - name: create-ticket
        type: call
        call: jira-cost.create-issue
        with:
          project_key: '{{jira_project_key}}'
          issuetype: Task
          summary: 'Cost anomaly detected: {{metric_query}} exceeded ${{threshold}}'
          description: 'Datadog query result: {{query-metrics.value}}'
      - name: post-finops-alert
        type: call
        call: slack-cost.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Cost Anomaly: {{metric_query}} = {{query-metrics.value}} (threshold: ${{threshold}}). Jira: {{create-ticket.key}}'
  consumes:
  - namespace: datadog-cost
    type: http
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: metrics
      path: /query
      inputParameters:
      - name: query
        in: query
      operations:
      - name: query-metrics
        method: GET
  - namespace: jira-cost
    type: http
    baseUri: https://amazon.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_token
    resources:
    - name: issue
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - namespace: slack-cost
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → cloud-cost-anomaly-responder.yml

Fetches the completed sprint data from Jira, calculates story point velocity, and publishes the sprint review digest to the engineering Slack channel.

naftiko: '0.5'
info:
  label: Jira Sprint Velocity Report
  description: Fetches the completed sprint data from Jira, calculates story point velocity, and publishes the sprint review digest to the engineering Slack channel.
  tags:
  - devops
  - reporting
  - jira
  - slack
  - agile
capability:
  exposes:
  - type: mcp
    namespace: agile-reporting
    port: 8080
    tools:
    - name: publish-sprint-velocity
      description: Given a Jira board ID and sprint ID, fetch completed issue story points, calculate velocity, and post the sprint velocity digest to the engineering Slack channel.
      inputParameters:
      - name: board_id
        in: body
        type: integer
        description: The Jira Agile board ID to query sprint data from.
      - name: sprint_id
        in: body
        type: integer
        description: The sprint ID to report velocity for.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel ID for the sprint velocity digest.
      steps:
      - name: get-sprint-issues
        type: call
        call: jira-agile.get-sprint-issues
        with:
          board_id: '{{board_id}}'
          sprint_id: '{{sprint_id}}'
      - name: post-velocity
        type: call
        call: slack-agile.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Sprint {{sprint_id}} Velocity: {{get-sprint-issues.completed_points}} story points completed out of {{get-sprint-issues.committed_points}} committed ({{get-sprint-issues.completion_pct}}%).'
  consumes:
  - namespace: jira-agile
    type: http
    baseUri: https://amazon.atlassian.net/rest/agile/1.0
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_token
    resources:
    - name: sprint-issues
      path: /board/{board_id}/sprint/{sprint_id}/issue
      inputParameters:
      - name: board_id
        in: path
      - name: sprint_id
        in: path
      operations:
      - name: get-sprint-issues
        method: GET
  - namespace: slack-agile
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → jira-sprint-velocity-report.yml

When GitHub Advanced Security detects a secret in a repository, creates a Jira security ticket, notifies the security Slack channel, and revokes the exposed credential via Okta.

naftiko: '0.5'
info:
  label: GitHub Secret Scanning Alert Handler
  description: When GitHub Advanced Security detects a secret in a repository, creates a Jira security ticket, notifies the security Slack channel, and revokes the exposed credential via Okta.
  tags:
  - security
  - devops
  - github
  - jira
  - slack
  - okta
  - secret-scanning
capability:
  exposes:
  - type: mcp
    namespace: security-ops
    port: 8080
    tools:
    - name: handle-secret-alert
      description: Given a GitHub secret scanning alert ID and repository, fetch alert details, create a Jira security ticket, revoke the associated credential in Okta, and notify the security Slack channel.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: The GitHub repository in owner/repo format where the secret was detected.
      - name: alert_number
        in: body
        type: integer
        description: The GitHub secret scanning alert number.
      - name: okta_token_id
        in: body
        type: string
        description: The Okta API token ID to revoke if it matches the exposed credential.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel ID for the security team notification.
      steps:
      - name: get-alert
        type: call
        call: github-ss.get-secret-alert
        with:
          repo: '{{repo}}'
          alert_number: '{{alert_number}}'
      - name: create-security-ticket
        type: call
        call: jira-ss.create-issue
        with:
          project_key: SEC
          issuetype: Bug
          summary: 'Secret exposed in {{repo}}: {{get-alert.secret_type}}'
          description: 'Alert: {{alert_number}}

            Secret type: {{get-alert.secret_type}}

            State: {{get-alert.state}}'
      - name: revoke-token
        type: call
        call: okta-ss.revoke-token
        with:
          token_id: '{{okta_token_id}}'
      - name: notify-security
        type: call
        call: slack-ss.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'SECRET ALERT: {{get-alert.secret_type}} exposed in {{repo}}. Token revoked in Okta. Jira: {{create-security-ticket.key}}'
  consumes:
  - namespace: github-ss
    type: http
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: secret-alert
      path: /repos/{repo}/secret-scanning/alerts/{alert_number}
      inputParameters:
      - name: repo
        in: path
      - name: alert_number
        in: path
      operations:
      - name: get-secret-alert
        method: GET
  - namespace: jira-ss
    type: http
    baseUri: https://amazon.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_token
    resources:
    - name: issue
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - namespace: okta-ss
    type: http
    baseUri: https://amazon.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_api_token
      placement: header
    resources:
    - name: token
      path: /users/me/tokens/{token_id}
      inputParameters:
      - name: token_id
        in: path
      operations:
      - name: revoke-token
        method: DELETE
  - namespace: slack-ss
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → github-secret-scanning-alert-handler.yml

Generates personalized music playlist recommendations using Amazon Personalize, stores recommendations in DynamoDB, and notifies users via SNS push notification.

naftiko: '0.5'
info:
  label: Music Playlist Recommendation Notifier
  description: Generates personalized music playlist recommendations using Amazon Personalize, stores recommendations in DynamoDB, and notifies users via SNS push notification.
  tags:
  - media
  - music
  - personalization
  - aws
  - personalize
  - dynamodb
  - sns
capability:
  exposes:
  - type: mcp
    namespace: music-recommend
    port: 8080
    tools:
    - name: recommend-and-notify
      description: Generate music recommendations with Personalize, store them, and push-notify the user.
      inputParameters:
      - name: user_id
        in: body
        type: string
        description: The Amazon Music user ID.
      - name: campaign_arn
        in: body
        type: string
        description: The Personalize campaign ARN for recommendations.
      - name: sns_topic_arn
        in: body
        type: string
        description: SNS topic ARN for push notifications.
      steps:
      - name: get-recommendations
        type: call
        call: personalize-api.get-recommendations
        with:
          campaign_arn: '{{campaign_arn}}'
          user_id: '{{user_id}}'
      - name: store-recommendations
        type: call
        call: dynamo-music.put-item
        with:
          table_name: music-recommendations
          user_id: '{{user_id}}'
          items: '{{get-recommendations.item_list}}'
      - name: notify-user
        type: call
        call: sns-music.publish
        with:
          topic_arn: '{{sns_topic_arn}}'
          message: New playlist recommendations are ready for you! Check your Amazon Music app.
  consumes:
  - namespace: personalize-api
    type: http
    baseUri: https://personalize-runtime.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_personalize_token
      placement: header
    resources:
    - name: recommendations
      path: /recommendations
      operations:
      - name: get-recommendations
        method: POST
  - namespace: dynamo-music
    type: http
    baseUri: https://dynamodb.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_dynamodb_token
      placement: header
    resources:
    - name: item
      path: /
      operations:
      - name: put-item
        method: POST
  - namespace: sns-music
    type: http
    baseUri: https://sns.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_sns_token
      placement: header
    resources:
    - name: publish
      path: /
      operations:
      - name: publish
        method: POST
Open in Framework → View in Fleet → music-playlist-recommendation-notifier.yml

Queries a specific CloudWatch metric for a given namespace and returns the latest data points.

naftiko: '0.5'
info:
  label: CloudWatch Metric Query
  description: Queries a specific CloudWatch metric for a given namespace and returns the latest data points.
  tags:
  - cloud
  - monitoring
  - aws
  - cloudwatch
capability:
  exposes:
  - type: mcp
    namespace: cw-metrics
    port: 8080
    tools:
    - name: get-metric-data
      description: Retrieve the latest data points for a specific CloudWatch metric. Use to check resource utilization or operational health.
      inputParameters:
      - name: namespace
        in: body
        type: string
        description: The CloudWatch metric namespace, e.g. AWS/EC2.
      - name: metric_name
        in: body
        type: string
        description: The name of the metric to query, e.g. CPUUtilization.
      - name: period
        in: body
        type: number
        description: The granularity in seconds for the metric data points.
      call: cloudwatch-api.get-metric-data
      with:
        namespace: '{{namespace}}'
        metric_name: '{{metric_name}}'
        period: '{{period}}'
      outputParameters:
      - name: datapoints
        type: array
        mapping: $.MetricDataResults[0].Values
  consumes:
  - namespace: cloudwatch-api
    type: http
    baseUri: https://monitoring.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_cloudwatch_token
      placement: header
    resources:
    - name: metric-data
      path: /
      inputParameters:
      - name: namespace
        in: query
      - name: metric_name
        in: query
      - name: period
        in: query
      operations:
      - name: get-metric-data
        method: POST
Open in Framework → View in Fleet → cloudwatch-metric-query.yml

Audits IAM user access keys for age, deactivates keys older than 90 days, and sends a compliance report via SES.

naftiko: '0.5'
info:
  label: IAM Access Key Rotation Enforcer
  description: Audits IAM user access keys for age, deactivates keys older than 90 days, and sends a compliance report via SES.
  tags:
  - cloud
  - security
  - compliance
  - aws
  - iam
  - ses
capability:
  exposes:
  - type: mcp
    namespace: iam-key-rotation
    port: 8080
    tools:
    - name: enforce-key-rotation
      description: Audit IAM access keys, deactivate stale keys older than the threshold, and email a compliance report.
      inputParameters:
      - name: username
        in: body
        type: string
        description: The IAM username to audit access keys for.
      - name: max_age_days
        in: body
        type: number
        description: Maximum allowed age in days before a key is deactivated.
      - name: report_email
        in: body
        type: string
        description: Email address to send the compliance report to.
      steps:
      - name: list-keys
        type: call
        call: iam-keys.list-access-keys
        with:
          username: '{{username}}'
      - name: deactivate-old-key
        type: call
        call: iam-keys.update-access-key
        with:
          username: '{{username}}'
          access_key_id: '{{list-keys.oldest_key_id}}'
          status: Inactive
      - name: send-report
        type: call
        call: ses-iam.send-email
        with:
          to: '{{report_email}}'
          subject: 'IAM Key Rotation Report: {{username}}'
          body: 'User {{username}}: Key {{list-keys.oldest_key_id}} (age: {{list-keys.oldest_key_age}} days) has been deactivated.'
  consumes:
  - namespace: iam-keys
    type: http
    baseUri: https://iam.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_iam_token
      placement: header
    resources:
    - name: access-keys
      path: /
      inputParameters:
      - name: username
        in: query
      operations:
      - name: list-access-keys
        method: GET
    - name: update-key
      path: /
      inputParameters:
      - name: username
        in: query
      - name: access_key_id
        in: query
      - name: status
        in: query
      operations:
      - name: update-access-key
        method: POST
  - namespace: ses-iam
    type: http
    baseUri: https://email.us-east-1.amazonaws.com/v2
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_ses_token
      placement: header
    resources:
    - name: email
      path: /email/outbound-emails
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → iam-access-key-rotation-enforcer.yml

Creates a new user in Amazon Cognito, assigns them to appropriate groups, and sends a welcome email via SES with temporary credentials.

naftiko: '0.5'
info:
  label: Cognito User Provisioning Workflow
  description: Creates a new user in Amazon Cognito, assigns them to appropriate groups, and sends a welcome email via SES with temporary credentials.
  tags:
  - cloud
  - identity
  - aws
  - cognito
  - ses
capability:
  exposes:
  - type: mcp
    namespace: cognito-provision
    port: 8080
    tools:
    - name: provision-user
      description: Create a Cognito user, assign to groups, and send a welcome email with temporary credentials.
      inputParameters:
      - name: user_pool_id
        in: body
        type: string
        description: The Cognito user pool ID.
      - name: username
        in: body
        type: string
        description: The username to create.
      - name: email
        in: body
        type: string
        description: The user email address.
      - name: group_name
        in: body
        type: string
        description: The Cognito group to assign the user to.
      steps:
      - name: create-user
        type: call
        call: cognito-api.admin-create-user
        with:
          user_pool_id: '{{user_pool_id}}'
          username: '{{username}}'
          email: '{{email}}'
      - name: add-to-group
        type: call
        call: cognito-api.admin-add-user-to-group
        with:
          user_pool_id: '{{user_pool_id}}'
          username: '{{username}}'
          group_name: '{{group_name}}'
      - name: send-welcome
        type: call
        call: ses-cognito.send-email
        with:
          to: '{{email}}'
          subject: Welcome to Amazon - Your Account is Ready
          body: 'Hello {{username}}, your account has been created. Temporary password: {{create-user.temporary_password}}. You will be prompted to change it on first login.'
  consumes:
  - namespace: cognito-api
    type: http
    baseUri: https://cognito-idp.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_cognito_token
      placement: header
    resources:
    - name: user
      path: /
      operations:
      - name: admin-create-user
        method: POST
      - name: admin-add-user-to-group
        method: POST
  - namespace: ses-cognito
    type: http
    baseUri: https://email.us-east-1.amazonaws.com/v2
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_ses_token
      placement: header
    resources:
    - name: email
      path: /email/outbound-emails
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → cognito-user-provisioning-workflow.yml

When an employee's role changes in Workday, updates their Okta group memberships to reflect the new role's permissions and notifies the manager via Slack.

naftiko: '0.5'
info:
  label: Role Change Provisioning
  description: When an employee's role changes in Workday, updates their Okta group memberships to reflect the new role's permissions and notifies the manager via Slack.
  tags:
  - hr
  - role-change
  - workday
  - okta
  - slack
  - identity
capability:
  exposes:
  - type: mcp
    namespace: hr-role-change
    port: 8080
    tools:
    - name: sync-role-permissions
      description: Given a Workday employee ID and new role ID, update the employee's Okta group memberships to match the new role and notify their manager in Slack.
      inputParameters:
      - name: workday_employee_id
        in: body
        type: string
        description: The Workday worker ID of the employee whose role has changed.
      - name: new_okta_group_id
        in: body
        type: string
        description: The Okta group ID corresponding to the new role's permission set.
      - name: manager_slack_id
        in: body
        type: string
        description: The Slack user ID of the employee's manager for notification.
      steps:
      - name: get-employee
        type: call
        call: workday-rc.get-worker
        with:
          worker_id: '{{workday_employee_id}}'
      - name: add-okta-group
        type: call
        call: okta-rc.add-user-to-group
        with:
          group_id: '{{new_okta_group_id}}'
          user_id: '{{get-employee.okta_user_id}}'
      - name: notify-manager
        type: call
        call: slack-rc.post-message
        with:
          channel: '{{manager_slack_id}}'
          text: Role update complete for {{get-employee.full_name}}. Okta permissions updated for group {{new_okta_group_id}}.
  consumes:
  - namespace: workday-rc
    type: http
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: worker
      path: /workers/{worker_id}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - namespace: okta-rc
    type: http
    baseUri: https://amazon.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_api_token
      placement: header
    resources:
    - name: group-member
      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
  - namespace: slack-rc
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → role-change-provisioning.yml

Queries AWS Cost Explorer for current month spend by service, compares against budgets, and posts an overspend alert to Slack with a Jira ticket.

naftiko: '0.5'
info:
  label: Cost Explorer Budget Alert
  description: Queries AWS Cost Explorer for current month spend by service, compares against budgets, and posts an overspend alert to Slack with a Jira ticket.
  tags:
  - cloud
  - finops
  - cost-management
  - aws
  - cost-explorer
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: cost-budget
    port: 8080
    tools:
    - name: check-budget-compliance
      description: Query Cost Explorer for current spend, compare against budget, create a Jira ticket if over budget, and post to Slack.
      inputParameters:
      - name: budget_amount
        in: body
        type: number
        description: The monthly budget amount in USD.
      - name: jira_project_key
        in: body
        type: string
        description: Jira project key for budget tickets.
      - name: slack_channel
        in: body
        type: string
        description: Slack channel for budget alerts.
      steps:
      - name: get-cost-data
        type: call
        call: ce-api.get-cost-and-usage
        with:
          granularity: MONTHLY
          metrics: UnblendedCost
      - name: create-ticket
        type: call
        call: jira-budget.create-issue
        with:
          project_key: '{{jira_project_key}}'
          issuetype: Task
          summary: 'Budget Alert: Current spend ${{get-cost-data.total_cost}} vs budget ${{budget_amount}}'
      - name: post-alert
        type: call
        call: slack-budget.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Budget Alert: Current month spend ${{get-cost-data.total_cost}} against budget ${{budget_amount}}. Jira: {{create-ticket.key}}'
  consumes:
  - namespace: ce-api
    type: http
    baseUri: https://ce.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_cost_explorer_token
      placement: header
    resources:
    - name: cost
      path: /
      operations:
      - name: get-cost-and-usage
        method: POST
  - namespace: jira-budget
    type: http
    baseUri: https://amazon.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_token
    resources:
    - name: issue
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - namespace: slack-budget
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → cost-explorer-budget-alert.yml

Lists DNS resource record sets for a given Route 53 hosted zone and returns matching records.

naftiko: '0.5'
info:
  label: Route 53 DNS Record Lookup
  description: Lists DNS resource record sets for a given Route 53 hosted zone and returns matching records.
  tags:
  - cloud
  - networking
  - aws
  - dns
capability:
  exposes:
  - type: mcp
    namespace: route53-dns
    port: 8080
    tools:
    - name: list-records
      description: List all DNS records in a Route 53 hosted zone. Use to audit or verify DNS configurations.
      inputParameters:
      - name: hosted_zone_id
        in: body
        type: string
        description: The Route 53 hosted zone ID to list records for.
      call: route53-api.list-record-sets
      with:
        hosted_zone_id: '{{hosted_zone_id}}'
      outputParameters:
      - name: records
        type: array
        mapping: $.ResourceRecordSets
  consumes:
  - namespace: route53-api
    type: http
    baseUri: https://route53.amazonaws.com/2013-04-01
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_route53_token
      placement: header
    resources:
    - name: record-sets
      path: /hostedzone/{hosted_zone_id}/rrset
      inputParameters:
      - name: hosted_zone_id
        in: path
      operations:
      - name: list-record-sets
        method: GET
Open in Framework → View in Fleet → route-53-dns-record-lookup.yml

Schedules Amazon Fresh grocery deliveries by checking available delivery windows, reserving a slot, and sending a confirmation to the customer via SNS.

naftiko: '0.5'
info:
  label: Fresh Grocery Delivery Scheduler
  description: Schedules Amazon Fresh grocery deliveries by checking available delivery windows, reserving a slot, and sending a confirmation to the customer via SNS.
  tags:
  - grocery
  - amazon-fresh
  - delivery
  - logistics
  - sns
capability:
  exposes:
  - type: mcp
    namespace: fresh-delivery
    port: 8080
    tools:
    - name: schedule-delivery
      description: Check available delivery windows for Amazon Fresh, reserve a slot, and confirm with the customer.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The Amazon Fresh order ID.
      - name: zip_code
        in: body
        type: string
        description: The delivery ZIP code.
      - name: customer_phone
        in: body
        type: string
        description: The customer phone number for SMS confirmation.
      steps:
      - name: get-windows
        type: call
        call: fresh-api.get-delivery-windows
        with:
          zip_code: '{{zip_code}}'
      - name: reserve-slot
        type: call
        call: fresh-api.reserve-delivery-slot
        with:
          order_id: '{{order_id}}'
          slot_id: '{{get-windows.first_available_slot_id}}'
      - name: confirm-customer
        type: call
        call: sns-fresh.publish
        with:
          phone_number: '{{customer_phone}}'
          message: Your Amazon Fresh delivery for order {{order_id}} is scheduled for {{reserve-slot.delivery_time}}. Track at amazon.com/orders.
  consumes:
  - namespace: fresh-api
    type: http
    baseUri: https://api.amazon.com/fresh/v1
    authentication:
      type: bearer
      token: $secrets.amazon_fresh_token
    resources:
    - name: delivery-windows
      path: /delivery-windows
      inputParameters:
      - name: zip_code
        in: query
      operations:
      - name: get-delivery-windows
        method: GET
    - name: delivery-slot
      path: /orders/{order_id}/delivery-slot
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: reserve-delivery-slot
        method: POST
  - namespace: sns-fresh
    type: http
    baseUri: https://sns.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_sns_token
      placement: header
    resources:
    - name: sms
      path: /
      operations:
      - name: publish
        method: POST
Open in Framework → View in Fleet → fresh-grocery-delivery-scheduler.yml

Retrieves order details from Amazon Seller Central by order ID for marketplace seller operations.

naftiko: '0.5'
info:
  label: Seller Central Order Lookup
  description: Retrieves order details from Amazon Seller Central by order ID for marketplace seller operations.
  tags:
  - ecommerce
  - marketplace
  - seller-central
capability:
  exposes:
  - type: mcp
    namespace: seller-orders
    port: 8080
    tools:
    - name: get-order
      description: Look up a specific order from Amazon Seller Central by order ID. Returns buyer info, items, and status.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The Amazon Marketplace order ID to retrieve.
      call: sp-api.get-order
      with:
        order_id: '{{order_id}}'
      outputParameters:
      - name: order_status
        type: string
        mapping: $.payload.OrderStatus
      - name: order_total
        type: number
        mapping: $.payload.OrderTotal.Amount
  consumes:
  - namespace: sp-api
    type: http
    baseUri: https://sellingpartnerapi-na.amazon.com
    authentication:
      type: bearer
      token: $secrets.sp_api_token
    resources:
    - name: order
      path: /orders/v0/orders/{order_id}
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-order
        method: GET
Open in Framework → View in Fleet → seller-central-order-lookup.yml

Retrieves order details from the Selling Partner API, checks shipment status, and updates a DynamoDB tracking table with the latest fulfillment state.

naftiko: '0.5'
info:
  label: Order Fulfillment Tracker
  description: Retrieves order details from the Selling Partner API, checks shipment status, and updates a DynamoDB tracking table with the latest fulfillment state.
  tags:
  - ecommerce
  - logistics
  - fulfillment
  - marketplace
  - dynamodb
capability:
  exposes:
  - type: mcp
    namespace: fulfillment-track
    port: 8080
    tools:
    - name: track-order-fulfillment
      description: Track the fulfillment status of an Amazon marketplace order. Fetches order and shipment data, then updates the tracking database.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The Amazon marketplace order ID to track.
      steps:
      - name: get-order
        type: call
        call: sp-fulfill.get-order
        with:
          order_id: '{{order_id}}'
      - name: get-shipment
        type: call
        call: sp-fulfill.get-shipment
        with:
          order_id: '{{order_id}}'
      - name: update-tracking
        type: call
        call: dynamo-fulfill.put-item
        with:
          table_name: order-fulfillment-tracking
          order_id: '{{order_id}}'
          order_status: '{{get-order.status}}'
          shipment_status: '{{get-shipment.tracking_status}}'
  consumes:
  - namespace: sp-fulfill
    type: http
    baseUri: https://sellingpartnerapi-na.amazon.com
    authentication:
      type: bearer
      token: $secrets.sp_api_token
    resources:
    - name: order
      path: /orders/v0/orders/{order_id}
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-order
        method: GET
    - name: shipment
      path: /orders/v0/orders/{order_id}/shipment
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-shipment
        method: GET
  - namespace: dynamo-fulfill
    type: http
    baseUri: https://dynamodb.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_dynamodb_token
      placement: header
    resources:
    - name: item
      path: /
      operations:
      - name: put-item
        method: POST
Open in Framework → View in Fleet → order-fulfillment-tracker.yml

Queries Datadog for a customer's service usage metrics, calculates a health score, and updates the corresponding Salesforce account record with the latest health indicator.

naftiko: '0.5'
info:
  label: Salesforce Customer Health Score Update
  description: Queries Datadog for a customer's service usage metrics, calculates a health score, and updates the corresponding Salesforce account record with the latest health indicator.
  tags:
  - crm
  - customer-success
  - salesforce
  - datadog
  - health-score
capability:
  exposes:
  - type: mcp
    namespace: cs-ops
    port: 8080
    tools:
    - name: update-customer-health-score
      description: Given a Salesforce account ID and the customer's Datadog service tag, fetch usage and error metrics from Datadog and update the Salesforce account's health score field.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: The Salesforce account ID for the customer to update, e.g. 0015g00001XYZ.
      - name: datadog_service_tag
        in: body
        type: string
        description: The Datadog service tag used to identify the customer's usage metrics.
      steps:
      - name: get-metrics
        type: call
        call: datadog-cs.query-metrics
        with:
          query: avg:trace.web.request.hits{service:{{datadog_service_tag}}}.rollup(sum, 86400)
      - name: update-account
        type: call
        call: salesforce-cs.update-account
        with:
          account_id: '{{account_id}}'
          health_score: '{{get-metrics.value}}'
  consumes:
  - namespace: datadog-cs
    type: http
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: metrics
      path: /query
      inputParameters:
      - name: query
        in: query
      operations:
      - name: query-metrics
        method: GET
  - namespace: salesforce-cs
    type: http
    baseUri: https://amazon.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: update-account
        method: PATCH
Open in Framework → View in Fleet → salesforce-customer-health-score-update.yml

Looks up who is currently on-call in PagerDuty for a given escalation policy and returns the on-call engineer's name and contact details.

naftiko: '0.5'
info:
  label: PagerDuty On-Call Schedule Lookup
  description: Looks up who is currently on-call in PagerDuty for a given escalation policy and returns the on-call engineer's name and contact details.
  tags:
  - itsm
  - on-call
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: oncall-lookup
    port: 8080
    tools:
    - name: get-oncall-engineer
      description: Given a PagerDuty escalation policy ID, return the name and contact details of the currently on-call engineer. Use when routing incidents or determining who to notify for a given service.
      inputParameters:
      - name: escalation_policy_id
        in: body
        type: string
        description: The PagerDuty escalation policy ID to look up the current on-call user for.
      call: pagerduty-lookup.get-oncall
      with:
        escalation_policy_id: '{{escalation_policy_id}}'
      outputParameters:
      - name: oncall_name
        type: string
        mapping: $.oncalls[0].user.summary
      - name: oncall_email
        type: string
        mapping: $.oncalls[0].user.email
  consumes:
  - namespace: pagerduty-lookup
    type: http
    baseUri: https://api.pagerduty.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.pagerduty_token
      placement: header
    resources:
    - name: oncall
      path: /oncalls
      inputParameters:
      - name: escalation_policy_id
        in: query
      operations:
      - name: get-oncall
        method: GET
Open in Framework → View in Fleet → pagerduty-on-call-schedule-lookup.yml

Fetches Amazon Inspector vulnerability findings for EC2 instances, generates a risk summary, and creates a Jira security ticket.

naftiko: '0.5'
info:
  label: Inspector Vulnerability Report
  description: Fetches Amazon Inspector vulnerability findings for EC2 instances, generates a risk summary, and creates a Jira security ticket.
  tags:
  - cloud
  - security
  - vulnerability-management
  - aws
  - inspector
  - jira
capability:
  exposes:
  - type: mcp
    namespace: inspector-report
    port: 8080
    tools:
    - name: generate-vuln-report
      description: Fetch Inspector findings, summarize vulnerabilities by severity, and create a Jira ticket for remediation.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: The AWS account ID to scan findings for.
      - name: jira_project_key
        in: body
        type: string
        description: Jira project key for security tickets.
      steps:
      - name: list-findings
        type: call
        call: inspector-api.list-findings
        with:
          account_id: '{{account_id}}'
      - name: create-ticket
        type: call
        call: jira-inspector.create-issue
        with:
          project_key: '{{jira_project_key}}'
          issuetype: Bug
          summary: 'Inspector Findings: {{list-findings.critical_count}} critical, {{list-findings.high_count}} high vulnerabilities'
          description: 'Account {{account_id}} has {{list-findings.total_count}} findings. Critical: {{list-findings.critical_count}}, High: {{list-findings.high_count}}. Remediation required.'
  consumes:
  - namespace: inspector-api
    type: http
    baseUri: https://inspector2.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_inspector_token
      placement: header
    resources:
    - name: findings
      path: /findings/list
      operations:
      - name: list-findings
        method: POST
  - namespace: jira-inspector
    type: http
    baseUri: https://amazon.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_token
    resources:
    - name: issue
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → inspector-vulnerability-report.yml

Monitors API Gateway 429 error rates via CloudWatch, adjusts throttling limits, and logs the changes to DynamoDB.

naftiko: '0.5'
info:
  label: API Gateway Throttling Adjuster
  description: Monitors API Gateway 429 error rates via CloudWatch, adjusts throttling limits, and logs the changes to DynamoDB.
  tags:
  - cloud
  - api-management
  - aws
  - api-gateway
  - cloudwatch
  - dynamodb
capability:
  exposes:
  - type: mcp
    namespace: apigw-throttle
    port: 8080
    tools:
    - name: adjust-throttling
      description: Monitor API Gateway 429 rates, adjust throttling limits if needed, and log the change.
      inputParameters:
      - name: api_id
        in: body
        type: string
        description: The API Gateway API ID.
      - name: stage_name
        in: body
        type: string
        description: The API Gateway stage name.
      - name: new_rate_limit
        in: body
        type: number
        description: The new requests-per-second rate limit.
      steps:
      - name: get-429-rate
        type: call
        call: cw-apigw.get-metric-data
        with:
          namespace: AWS/ApiGateway
          metric_name: 4XXError
          api_id: '{{api_id}}'
      - name: update-throttle
        type: call
        call: apigw-api.update-stage
        with:
          api_id: '{{api_id}}'
          stage_name: '{{stage_name}}'
          rate_limit: '{{new_rate_limit}}'
      - name: log-change
        type: call
        call: dynamo-apigw.put-item
        with:
          table_name: apigw-throttle-changes
          api_id: '{{api_id}}'
          previous_429_rate: '{{get-429-rate.sum}}'
          new_rate_limit: '{{new_rate_limit}}'
  consumes:
  - namespace: cw-apigw
    type: http
    baseUri: https://monitoring.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_cloudwatch_token
      placement: header
    resources:
    - name: metric
      path: /
      operations:
      - name: get-metric-data
        method: POST
  - namespace: apigw-api
    type: http
    baseUri: https://apigateway.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_apigw_token
      placement: header
    resources:
    - name: stage
      path: /restapis/{api_id}/stages/{stage_name}
      inputParameters:
      - name: api_id
        in: path
      - name: stage_name
        in: path
      operations:
      - name: update-stage
        method: PATCH
  - namespace: dynamo-apigw
    type: http
    baseUri: https://dynamodb.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_dynamodb_token
      placement: header
    resources:
    - name: item
      path: /
      operations:
      - name: put-item
        method: POST
Open in Framework → View in Fleet → api-gateway-throttling-adjuster.yml

Lists all S3 buckets in the AWS account and returns their names, creation dates, and regions.

naftiko: '0.5'
info:
  label: S3 Bucket Listing
  description: Lists all S3 buckets in the AWS account and returns their names, creation dates, and regions.
  tags:
  - cloud
  - storage
  - aws
  - s3
capability:
  exposes:
  - type: mcp
    namespace: s3-listing
    port: 8080
    tools:
    - name: list-buckets
      description: List all S3 buckets in the AWS account. Returns bucket names, creation dates, and region information.
      inputParameters:
      - name: region
        in: body
        type: string
        description: The AWS region to filter buckets by, e.g. us-east-1.
      call: s3-api.list-buckets
      with:
        region: '{{region}}'
      outputParameters:
      - name: bucket_count
        type: number
        mapping: $.Buckets.length
      - name: buckets
        type: array
        mapping: $.Buckets
  consumes:
  - namespace: s3-api
    type: http
    baseUri: https://s3.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_s3_token
      placement: header
    resources:
    - name: buckets
      path: /
      inputParameters:
      - name: region
        in: query
      operations:
      - name: list-buckets
        method: GET
Open in Framework → View in Fleet → s3-bucket-listing.yml

Enriches an inbound Salesforce lead with ZoomInfo company and contact data, updates the lead record, and assigns it to the appropriate Salesforce queue.

naftiko: '0.5'
info:
  label: Salesforce Lead Enrichment
  description: Enriches an inbound Salesforce lead with ZoomInfo company and contact data, updates the lead record, and assigns it to the appropriate Salesforce queue.
  tags:
  - sales
  - crm
  - lead-enrichment
  - salesforce
  - zoominfo
capability:
  exposes:
  - type: mcp
    namespace: sales-enrichment
    port: 8080
    tools:
    - name: enrich-lead
      description: Given a Salesforce lead ID, look up the contact in ZoomInfo, update the Salesforce lead record with enriched firmographic data, and assign it to the correct sales queue.
      inputParameters:
      - name: lead_id
        in: body
        type: string
        description: The Salesforce lead ID to enrich, e.g. 00Q5g00001ABC.
      - name: queue_id
        in: body
        type: string
        description: The Salesforce queue ID to assign the enriched lead to.
      steps:
      - name: get-lead
        type: call
        call: salesforce-enrich.get-lead
        with:
          lead_id: '{{lead_id}}'
      - name: lookup-zoominfo
        type: call
        call: zoominfo.search-contact
        with:
          email: '{{get-lead.email}}'
          company_name: '{{get-lead.company}}'
      - name: update-lead
        type: call
        call: salesforce-enrich.update-lead
        with:
          lead_id: '{{lead_id}}'
          annual_revenue: '{{lookup-zoominfo.revenue}}'
          employee_count: '{{lookup-zoominfo.employee_count}}'
          industry: '{{lookup-zoominfo.industry}}'
          owner_id: '{{queue_id}}'
  consumes:
  - namespace: salesforce-enrich
    type: http
    baseUri: https://amazon.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
      - name: update-lead
        method: PATCH
  - namespace: zoominfo
    type: http
    baseUri: https://api.zoominfo.com/search
    authentication:
      type: bearer
      token: $secrets.zoominfo_token
    resources:
    - name: contact
      path: /contact
      operations:
      - name: search-contact
        method: POST
Open in Framework → View in Fleet → salesforce-lead-enrichment.yml

Fetches a pending ServiceNow change request, checks Datadog service health for the affected service, and automatically approves or escalates the change based on current system stability.

naftiko: '0.5'
info:
  label: ServiceNow Change Request Approval Gate
  description: Fetches a pending ServiceNow change request, checks Datadog service health for the affected service, and automatically approves or escalates the change based on current system stability.
  tags:
  - itsm
  - change-management
  - servicenow
  - datadog
  - approval
capability:
  exposes:
  - type: mcp
    namespace: itsm-change
    port: 8080
    tools:
    - name: evaluate-change-request
      description: Given a ServiceNow change request number and Datadog service name, check current service health metrics and either approve the change or escalate it with a health report attached.
      inputParameters:
      - name: change_number
        in: body
        type: string
        description: The ServiceNow change request number, e.g. CHG0012345.
      - name: service_name
        in: body
        type: string
        description: The Datadog service name to check health for before approving the change.
      steps:
      - name: get-change
        type: call
        call: servicenow-chg.get-change
        with:
          number: '{{change_number}}'
      - name: check-health
        type: call
        call: datadog-chg.query-metrics
        with:
          query: avg:trace.web.request.errors{service:{{service_name}}}.rollup(avg, 300)
      - name: update-change
        type: call
        call: servicenow-chg.update-change
        with:
          sys_id: '{{get-change.sys_id}}'
          work_notes: 'Automated health check: error rate = {{check-health.value}}. Change proceed status updated.'
  consumes:
  - namespace: servicenow-chg
    type: http
    baseUri: https://amazon.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: change
      path: /table/change_request
      inputParameters:
      - name: number
        in: query
      operations:
      - name: get-change
        method: GET
      - name: update-change
        method: PATCH
  - namespace: datadog-chg
    type: http
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: metrics
      path: /query
      inputParameters:
      - name: query
        in: query
      operations:
      - name: query-metrics
        method: GET
Open in Framework → View in Fleet → servicenow-change-request-approval-gate.yml

Generates a Twitch creator payout report by aggregating subscription and bits revenue, stores it in S3, and emails the report via SES.

naftiko: '0.5'
info:
  label: Twitch Creator Payout Report
  description: Generates a Twitch creator payout report by aggregating subscription and bits revenue, stores it in S3, and emails the report via SES.
  tags:
  - media
  - twitch
  - payments
  - analytics
  - aws
  - s3
  - ses
capability:
  exposes:
  - type: mcp
    namespace: twitch-payout
    port: 8080
    tools:
    - name: generate-payout-report
      description: Aggregate Twitch creator revenue, store the report in S3, and email it to the creator.
      inputParameters:
      - name: broadcaster_id
        in: body
        type: string
        description: The Twitch broadcaster ID.
      - name: period
        in: body
        type: string
        description: The reporting period, e.g. 2026-03.
      - name: creator_email
        in: body
        type: string
        description: The creator email for the report.
      steps:
      - name: get-sub-revenue
        type: call
        call: twitch-revenue.get-subscriptions
        with:
          broadcaster_id: '{{broadcaster_id}}'
      - name: upload-report
        type: call
        call: s3-twitch.put-object
        with:
          bucket: twitch-payout-reports
          key: '{{broadcaster_id}}/{{period}}-payout.json'
          body: '{"broadcaster": "{{broadcaster_id}}", "period": "{{period}}", "sub_revenue": {{get-sub-revenue.total}}}'
      - name: email-report
        type: call
        call: ses-twitch.send-email
        with:
          to: '{{creator_email}}'
          subject: Twitch Payout Report - {{period}}
          body: 'Your payout report for {{period}} is ready. Subscription revenue: ${{get-sub-revenue.total}}. Full report: s3://twitch-payout-reports/{{broadcaster_id}}/{{period}}-payout.json'
  consumes:
  - namespace: twitch-revenue
    type: http
    baseUri: https://api.twitch.tv/helix
    authentication:
      type: bearer
      token: $secrets.twitch_api_token
    resources:
    - name: subscriptions
      path: /subscriptions
      inputParameters:
      - name: broadcaster_id
        in: query
      operations:
      - name: get-subscriptions
        method: GET
  - namespace: s3-twitch
    type: http
    baseUri: https://s3.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_s3_token
      placement: header
    resources:
    - name: object
      path: /{bucket}/{key}
      inputParameters:
      - name: bucket
        in: path
      - name: key
        in: path
      operations:
      - name: put-object
        method: PUT
  - namespace: ses-twitch
    type: http
    baseUri: https://email.us-east-1.amazonaws.com/v2
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_ses_token
      placement: header
    resources:
    - name: email
      path: /email/outbound-emails
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → twitch-creator-payout-report.yml

Returns the current status, node count, and storage utilization for an Amazon Redshift cluster.

naftiko: '0.5'
info:
  label: Redshift Cluster Status
  description: Returns the current status, node count, and storage utilization for an Amazon Redshift cluster.
  tags:
  - cloud
  - data-warehouse
  - aws
  - redshift
capability:
  exposes:
  - type: mcp
    namespace: redshift-status
    port: 8080
    tools:
    - name: describe-cluster
      description: Get the status, node count, and configuration for a Redshift cluster.
      inputParameters:
      - name: cluster_identifier
        in: body
        type: string
        description: The Redshift cluster identifier to describe.
      call: redshift-api.describe-cluster
      with:
        cluster_identifier: '{{cluster_identifier}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.Clusters[0].ClusterStatus
      - name: node_count
        type: number
        mapping: $.Clusters[0].NumberOfNodes
  consumes:
  - namespace: redshift-api
    type: http
    baseUri: https://redshift.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_redshift_token
      placement: header
    resources:
    - name: cluster
      path: /
      inputParameters:
      - name: cluster_identifier
        in: query
      operations:
      - name: describe-cluster
        method: GET
Open in Framework → View in Fleet → redshift-cluster-status.yml

Checks Redshift query execution status, validates row counts against expected thresholds, and posts ETL health reports to a Slack channel.

naftiko: '0.5'
info:
  label: Redshift ETL Pipeline Monitor
  description: Checks Redshift query execution status, validates row counts against expected thresholds, and posts ETL health reports to a Slack channel.
  tags:
  - cloud
  - data-warehouse
  - etl
  - aws
  - redshift
  - slack
capability:
  exposes:
  - type: mcp
    namespace: redshift-etl
    port: 8080
    tools:
    - name: monitor-etl-pipeline
      description: Check the status of a Redshift ETL query, validate output row counts, and report pipeline health to Slack.
      inputParameters:
      - name: query_id
        in: body
        type: string
        description: The Redshift query execution ID to monitor.
      - name: expected_row_count
        in: body
        type: number
        description: The minimum expected row count for validation.
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel for ETL health reports.
      steps:
      - name: get-query-status
        type: call
        call: redshift-etl-api.describe-statement
        with:
          query_id: '{{query_id}}'
      - name: get-row-count
        type: call
        call: redshift-etl-api.get-statement-result
        with:
          query_id: '{{query_id}}'
      - name: post-report
        type: call
        call: slack-etl.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'ETL Pipeline Report: Query {{query_id}} status: {{get-query-status.status}}. Rows loaded: {{get-row-count.total_rows}} (expected: {{expected_row_count}}).'
  consumes:
  - namespace: redshift-etl-api
    type: http
    baseUri: https://redshift-data.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_redshift_data_token
      placement: header
    resources:
    - name: statement
      path: /
      inputParameters:
      - name: query_id
        in: body
      operations:
      - name: describe-statement
        method: POST
      - name: get-statement-result
        method: POST
  - namespace: slack-etl
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → redshift-etl-pipeline-monitor.yml

Retrieves GuardDuty security findings, creates an incident in ServiceNow, and notifies the security operations team via Slack.

naftiko: '0.5'
info:
  label: GuardDuty Finding Incident Creator
  description: Retrieves GuardDuty security findings, creates an incident in ServiceNow, and notifies the security operations team via Slack.
  tags:
  - cloud
  - security
  - incident-response
  - aws
  - guardduty
  - servicenow
  - slack
capability:
  exposes:
  - type: mcp
    namespace: guardduty-incident
    port: 8080
    tools:
    - name: process-finding
      description: Fetch a GuardDuty finding, create a ServiceNow incident for it, and alert the security team on Slack.
      inputParameters:
      - name: detector_id
        in: body
        type: string
        description: The GuardDuty detector ID.
      - name: finding_id
        in: body
        type: string
        description: The GuardDuty finding ID to process.
      - name: slack_channel
        in: body
        type: string
        description: Slack channel for security operations alerts.
      steps:
      - name: get-finding
        type: call
        call: guardduty-api.get-findings
        with:
          detector_id: '{{detector_id}}'
          finding_id: '{{finding_id}}'
      - name: create-incident
        type: call
        call: servicenow-gd.create-incident
        with:
          short_description: 'GuardDuty: {{get-finding.type}} - Severity {{get-finding.severity}}'
          description: 'Finding: {{get-finding.description}}. Resource: {{get-finding.resource}}.'
          urgency: '2'
      - name: alert-security
        type: call
        call: slack-gd.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'GuardDuty Alert: {{get-finding.type}} (Severity: {{get-finding.severity}}). ServiceNow Incident: {{create-incident.number}}.'
  consumes:
  - namespace: guardduty-api
    type: http
    baseUri: https://guardduty.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_guardduty_token
      placement: header
    resources:
    - name: findings
      path: /detector/{detector_id}/findings/get
      inputParameters:
      - name: detector_id
        in: path
      operations:
      - name: get-findings
        method: POST
  - namespace: servicenow-gd
    type: http
    baseUri: https://amazon.service-now.com/api/now/table
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incident
      path: /incident
      operations:
      - name: create-incident
        method: POST
  - namespace: slack-gd
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → guardduty-finding-incident-creator.yml

Monitors an AWS CodePipeline execution, fetches stage results, and posts a deployment summary to Slack with pass/fail status.

naftiko: '0.5'
info:
  label: CodePipeline Deployment Tracker
  description: Monitors an AWS CodePipeline execution, fetches stage results, and posts a deployment summary to Slack with pass/fail status.
  tags:
  - cloud
  - cicd
  - deployment
  - aws
  - codepipeline
  - slack
capability:
  exposes:
  - type: mcp
    namespace: codepipeline-track
    port: 8080
    tools:
    - name: track-deployment
      description: Monitor a CodePipeline execution, gather stage results, and post a deployment summary to Slack.
      inputParameters:
      - name: pipeline_name
        in: body
        type: string
        description: The CodePipeline pipeline name.
      - name: execution_id
        in: body
        type: string
        description: The pipeline execution ID to track.
      - name: slack_channel
        in: body
        type: string
        description: Slack channel for deployment updates.
      steps:
      - name: get-execution
        type: call
        call: cp-api.get-pipeline-execution
        with:
          pipeline_name: '{{pipeline_name}}'
          execution_id: '{{execution_id}}'
      - name: get-stage-states
        type: call
        call: cp-api.get-pipeline-state
        with:
          pipeline_name: '{{pipeline_name}}'
      - name: post-summary
        type: call
        call: slack-cp.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Deployment {{execution_id}} for {{pipeline_name}}: Status {{get-execution.status}}. Stages: {{get-stage-states.stage_count}} total.'
  consumes:
  - namespace: cp-api
    type: http
    baseUri: https://codepipeline.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_codepipeline_token
      placement: header
    resources:
    - name: execution
      path: /
      operations:
      - name: get-pipeline-execution
        method: POST
    - name: state
      path: /
      operations:
      - name: get-pipeline-state
        method: POST
  - namespace: slack-cp
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: message
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → codepipeline-deployment-tracker.yml

Checks whether a Twitch channel is currently live and returns viewer count and stream title.

naftiko: '0.5'
info:
  label: Twitch Stream Status
  description: Checks whether a Twitch channel is currently live and returns viewer count and stream title.
  tags:
  - media
  - streaming
  - twitch
capability:
  exposes:
  - type: mcp
    namespace: twitch-status
    port: 8080
    tools:
    - name: get-stream-status
      description: Check if a Twitch channel is currently live. Returns stream title, viewer count, and game category.
      inputParameters:
      - name: user_login
        in: body
        type: string
        description: The Twitch channel login name to check.
      call: twitch-api.get-streams
      with:
        user_login: '{{user_login}}'
      outputParameters:
      - name: is_live
        type: boolean
        mapping: $.data.length > 0
      - name: viewer_count
        type: number
        mapping: $.data[0].viewer_count
  consumes:
  - namespace: twitch-api
    type: http
    baseUri: https://api.twitch.tv/helix
    authentication:
      type: bearer
      token: $secrets.twitch_api_token
    resources:
    - name: streams
      path: /streams
      inputParameters:
      - name: user_login
        in: query
      operations:
      - name: get-streams
        method: GET
Open in Framework → View in Fleet → twitch-stream-status.yml

Checks SES account sending statistics for bounce and complaint rates, logs metrics to CloudWatch, and alerts via SNS if rates exceed thresholds.

naftiko: '0.5'
info:
  label: SES Bounce Rate Monitor
  description: Checks SES account sending statistics for bounce and complaint rates, logs metrics to CloudWatch, and alerts via SNS if rates exceed thresholds.
  tags:
  - cloud
  - email
  - monitoring
  - aws
  - ses
  - cloudwatch
  - sns
capability:
  exposes:
  - type: mcp
    namespace: ses-monitor
    port: 8080
    tools:
    - name: monitor-bounce-rate
      description: Check SES bounce and complaint rates, log to CloudWatch, and alert via SNS if thresholds are exceeded.
      inputParameters:
      - name: bounce_threshold
        in: body
        type: number
        description: Maximum acceptable bounce rate percentage.
      - name: sns_topic_arn
        in: body
        type: string
        description: SNS topic ARN for email health alerts.
      steps:
      - name: get-send-stats
        type: call
        call: ses-stats.get-account-stats
        with: {}
      - name: log-metrics
        type: call
        call: cw-ses.put-metric-data
        with:
          namespace: Custom/SESHealth
          metric_name: BounceRate
          value: '{{get-send-stats.bounce_rate}}'
      - name: send-alert
        type: call
        call: sns-ses.publish
        with:
          topic_arn: '{{sns_topic_arn}}'
          message: 'SES Bounce Rate Alert: Current rate {{get-send-stats.bounce_rate}}% exceeds threshold {{bounce_threshold}}%.'
  consumes:
  - namespace: ses-stats
    type: http
    baseUri: https://email.us-east-1.amazonaws.com/v2
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_ses_token
      placement: header
    resources:
    - name: account
      path: /email/account
      operations:
      - name: get-account-stats
        method: GET
  - namespace: cw-ses
    type: http
    baseUri: https://monitoring.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_cloudwatch_token
      placement: header
    resources:
    - name: metric
      path: /
      operations:
      - name: put-metric-data
        method: POST
  - namespace: sns-ses
    type: http
    baseUri: https://sns.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_sns_token
      placement: header
    resources:
    - name: publish
      path: /
      operations:
      - name: publish
        method: POST
Open in Framework → View in Fleet → ses-bounce-rate-monitor.yml

Fetches a newly created Jira issue, sends the description to the Anthropic Claude API for priority triage and summarization, and updates the Jira issue with the AI-generated priority label and summary.

naftiko: '0.5'
info:
  label: Jira Issue Triage with AI Summarization
  description: Fetches a newly created Jira issue, sends the description to the Anthropic Claude API for priority triage and summarization, and updates the Jira issue with the AI-generated priority label and summary.
  tags:
  - itsm
  - ai
  - triage
  - jira
  - anthropic
capability:
  exposes:
  - type: mcp
    namespace: itsm-ai
    port: 8080
    tools:
    - name: triage-issue
      description: Given a Jira issue key, fetch its description, send it to the Anthropic Claude API for triage analysis, and update the Jira issue with the recommended priority and AI-generated summary.
      inputParameters:
      - name: issue_key
        in: body
        type: string
        description: The Jira issue key to triage, e.g. ENG-4201.
      steps:
      - name: get-issue
        type: call
        call: jira-triage.get-issue
        with:
          issue_key: '{{issue_key}}'
      - name: ai-triage
        type: call
        call: anthropic.create-message
        with:
          model: claude-opus-4-5
          max_tokens: 512
          system: You are a software engineering triage assistant. Respond with a JSON object containing 'priority' (P1/P2/P3/P4) and 'summary' (one sentence).
          user_message: 'Triage this issue: {{get-issue.summary}}


            {{get-issue.description}}'
      - name: update-issue
        type: call
        call: jira-triage.update-issue
        with:
          issue_key: '{{issue_key}}'
          priority: '{{ai-triage.priority}}'
          description: 'AI Triage Summary: {{ai-triage.summary}}


            Original: {{get-issue.description}}'
  consumes:
  - namespace: jira-triage
    type: http
    baseUri: https://amazon.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_token
    resources:
    - name: issue
      path: /issue/{issue_key}
      inputParameters:
      - name: issue_key
        in: path
      operations:
      - name: get-issue
        method: GET
      - name: update-issue
        method: PUT
  - namespace: anthropic
    type: http
    baseUri: https://api.anthropic.com/v1
    authentication:
      type: apikey
      key: x-api-key
      value: $secrets.anthropic_api_key
      placement: header
    resources:
    - name: message
      path: /messages
      operations:
      - name: create-message
        method: POST
Open in Framework → View in Fleet → jira-issue-triage-with-ai-summarization.yml

Scans S3 buckets for public access misconfigurations, logs findings to DynamoDB, and alerts the security team via SNS.

naftiko: '0.5'
info:
  label: S3 Bucket Compliance Scanner
  description: Scans S3 buckets for public access misconfigurations, logs findings to DynamoDB, and alerts the security team via SNS.
  tags:
  - cloud
  - security
  - compliance
  - aws
  - s3
  - dynamodb
  - sns
capability:
  exposes:
  - type: mcp
    namespace: s3-compliance
    port: 8080
    tools:
    - name: scan-bucket-access
      description: Scan an S3 bucket for public access settings, record findings in DynamoDB, and alert via SNS if misconfigured.
      inputParameters:
      - name: bucket_name
        in: body
        type: string
        description: The S3 bucket name to scan for public access.
      - name: sns_topic_arn
        in: body
        type: string
        description: The SNS topic ARN for security alerts.
      steps:
      - name: check-public-access
        type: call
        call: s3-scan.get-public-access-block
        with:
          bucket_name: '{{bucket_name}}'
      - name: log-finding
        type: call
        call: dynamo-scan.put-item
        with:
          table_name: s3-compliance-findings
          bucket_name: '{{bucket_name}}'
          public_access: '{{check-public-access.public_access_block}}'
      - name: send-alert
        type: call
        call: sns-scan.publish
        with:
          topic_arn: '{{sns_topic_arn}}'
          message: 'S3 Compliance Finding: {{bucket_name}} public access config: {{check-public-access.public_access_block}}'
  consumes:
  - namespace: s3-scan
    type: http
    baseUri: https://s3.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_s3_token
      placement: header
    resources:
    - name: public-access
      path: /{bucket_name}?publicAccessBlock
      inputParameters:
      - name: bucket_name
        in: path
      operations:
      - name: get-public-access-block
        method: GET
  - namespace: dynamo-scan
    type: http
    baseUri: https://dynamodb.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_dynamodb_token
      placement: header
    resources:
    - name: item
      path: /
      operations:
      - name: put-item
        method: POST
  - namespace: sns-scan
    type: http
    baseUri: https://sns.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_sns_token
      placement: header
    resources:
    - name: publish
      path: /
      operations:
      - name: publish
        method: POST
Open in Framework → View in Fleet → s3-bucket-compliance-scanner.yml

Lists container images in an Amazon ECR repository and returns image tags and push timestamps.

naftiko: '0.5'
info:
  label: ECR Image List
  description: Lists container images in an Amazon ECR repository and returns image tags and push timestamps.
  tags:
  - cloud
  - containers
  - aws
  - ecr
capability:
  exposes:
  - type: mcp
    namespace: ecr-images
    port: 8080
    tools:
    - name: list-images
      description: List all container images in a given ECR repository. Returns image tags and pushed-at dates.
      inputParameters:
      - name: repository_name
        in: body
        type: string
        description: The ECR repository name to list images for.
      call: ecr-api.list-images
      with:
        repository_name: '{{repository_name}}'
      outputParameters:
      - name: images
        type: array
        mapping: $.imageIds
  consumes:
  - namespace: ecr-api
    type: http
    baseUri: https://api.ecr.us-east-1.amazonaws.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_ecr_token
      placement: header
    resources:
    - name: images
      path: /
      inputParameters:
      - name: repository_name
        in: body
      operations:
      - name: list-images
        method: POST
Open in Framework → View in Fleet → ecr-image-list.yml

Fetches viewership analytics for Prime Video content, generates a performance summary, and distributes it to stakeholders via email through SES.

naftiko: '0.5'
info:
  label: Prime Video Content Performance Report
  description: Fetches viewership analytics for Prime Video content, generates a performance summary, and distributes it to stakeholders via email through SES.
  tags:
  - media
  - prime-video
  - analytics
  - studios
  - ses
capability:
  exposes:
  - type: mcp
    namespace: pv-performance
    port: 8080
    tools:
    - name: generate-content-report
      description: Generate a viewership performance report for Prime Video content and email it to stakeholders via SES.
      inputParameters:
      - name: content_id
        in: body
        type: string
        description: The Prime Video content ID (ASIN) to analyze.
      - name: recipient_email
        in: body
        type: string
        description: The email address to send the report to.
      steps:
      - name: get-viewership
        type: call
        call: pv-analytics.get-viewership
        with:
          content_id: '{{content_id}}'
      - name: get-content-metadata
        type: call
        call: pv-analytics.get-content-info
        with:
          content_id: '{{content_id}}'
      - name: send-report
        type: call
        call: ses-report.send-email
        with:
          to: '{{recipient_email}}'
          subject: 'Performance Report: {{get-content-metadata.title}}'
          body: 'Title: {{get-content-metadata.title}}

            Total Views: {{get-viewership.total_views}}

            Completion Rate: {{get-viewership.completion_rate}}%

            Avg Watch Time: {{get-viewership.avg_watch_minutes}} min'
  consumes:
  - namespace: pv-analytics
    type: http
    baseUri: https://api.amazonvideo.com/analytics/v1
    authentication:
      type: bearer
      token: $secrets.prime_video_analytics_token
    resources:
    - name: viewership
      path: /content/{content_id}/viewership
      inputParameters:
      - name: content_id
        in: path
      operations:
      - name: get-viewership
        method: GET
    - name: content-info
      path: /content/{content_id}
      inputParameters:
      - name: content_id
        in: path
      operations:
      - name: get-content-info
        method: GET
  - namespace: ses-report
    type: http
    baseUri: https://email.us-east-1.amazonaws.com/v2
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.aws_ses_token
      placement: header
    resources:
    - name: email
      path: /email/outbound-emails
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → prime-video-content-performance-report.yml

When an online order is placed, evaluates inventory at the DC and nearby stores, selects the optimal fulfillment source, and routes the order through the OMS for either ship-from-store or DC shipment.

naftiko: '0.5'
info:
  label: Omnichannel Fulfillment Router
  description: When an online order is placed, evaluates inventory at the DC and nearby stores, selects the optimal fulfillment source, and routes the order through the OMS for either ship-from-store or DC shipment.
  tags:
  - retail
  - fulfillment
  - omnichannel
  - oms
  - wms
capability:
  exposes:
  - type: mcp
    namespace: fulfillment
    port: 8080
    tools:
    - name: route-order-fulfillment
      description: Determine the best fulfillment location for an order and route it.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: BigCommerce order ID.
      - name: customer_zip
        in: body
        type: string
        description: Customer ZIP code.
      steps:
      - name: get-order
        type: call
        call: bigcommerce.get-order
        with:
          order_id: '{{order_id}}'
      - name: check-dc
        type: call
        call: wms.check-availability
        with:
          skus: '{{get-order.product_skus}}'
          location: main_dc
      - name: check-stores
        type: call
        call: wms.find-nearest-stock
        with:
          skus: '{{get-order.product_skus}}'
          zip: '{{customer_zip}}'
      - name: assign-fulfillment
        type: call
        call: oms.assign-fulfillment
        with:
          order_id: '{{order_id}}'
          dc_available: '{{check-dc.available}}'
          store_id: '{{check-stores.store_id}}'
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/ae-outfitters/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: wms
    baseUri: https://wms.ae.com/api/v1
    authentication:
      type: bearer
      token: $secrets.wms_token
    resources:
    - name: availability
      path: /inventory/availability
      operations:
      - name: check-availability
        method: POST
      - name: find-nearest-stock
        method: POST
  - type: http
    namespace: oms
    baseUri: https://oms.ae.com/api/v2
    authentication:
      type: bearer
      token: $secrets.oms_token
    resources:
    - name: fulfillment
      path: /orders/{{order_id}}/fulfillment
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: assign-fulfillment
        method: POST
Open in Framework → View in Fleet → omnichannel-fulfillment-router.yml

Retrieves user account details from the directory. Used by American Eagle Outfitters teams.

naftiko: '0.5'
info:
  label: American Eagle Outfitters User Account Lookup
  description: Retrieves user account details from the directory. Used by American Eagle Outfitters teams.
  tags:
  - retail
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: snowflake
    port: 8080
    tools:
    - name: get-user_account_lookup
      description: Retrieves user account details from the directory. Used by American Eagle Outfitters teams.
      inputParameters:
      - name: user_id
        in: body
        type: string
        description: The user_id to look up.
      call: snowflake.get-user_id
      with:
        user_id: '{{user_id}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://american-eagle-outfitters.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: resources
      path: /resources/{{resource_id}}
      operations:
      - name: american_user_account_lookup
        method: GET
Open in Framework → View in Fleet → american-eagle-outfitters-user-account-lookup.yml

Retrieves vulnerability scan results. Used by American Eagle Outfitters teams.

naftiko: '0.5'
info:
  label: American Eagle Outfitters Security Scan Results
  description: Retrieves vulnerability scan results. Used by American Eagle Outfitters teams.
  tags:
  - retail
  - github
capability:
  exposes:
  - type: mcp
    namespace: github
    port: 8080
    tools:
    - name: get-security_scan_results
      description: Retrieves vulnerability scan results. Used by American Eagle Outfitters teams.
      inputParameters:
      - name: scan_id
        in: body
        type: string
        description: The scan_id to look up.
      call: github.get-scan_id
      with:
        scan_id: '{{scan_id}}'
  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: american_security_scan_results
        method: GET
Open in Framework → View in Fleet → american-eagle-outfitters-security-scan-results.yml

Detects security incidents, enriches with context, creates response tickets, and notifies the SOC.

naftiko: '0.5'
info:
  label: Security Incident Response Pipeline
  description: Detects security incidents, enriches with context, creates response tickets, and notifies the SOC.
  tags:
  - security
  - splunk
  - servicenow
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: security
    port: 8080
    tools:
    - name: american_security_incident_response_pipe
      description: Orchestrate security incident response 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-servicenow
        type: call
        call: servicenow.process-resource
        with:
          data: '{{get-salesforce.result}}'
      - name: create-jira
        type: call
        call: jira.create-resource
        with:
          channel: '{{notification_channel}}'
          text: Security Incident Response Pipeline step 3 complete.
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://american-eagle-outfitters.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://american-eagle-outfitters.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://american-eagle-outfitters.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
Open in Framework → View in Fleet → security-incident-response-pipeline.yml

Executes a read-only analytics query. Used by American Eagle Outfitters teams.

naftiko: '0.5'
info:
  label: American Eagle Outfitters Database Query Runner
  description: Executes a read-only analytics query. Used by American Eagle Outfitters teams.
  tags:
  - retail
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: confluence
    port: 8080
    tools:
    - name: get-database_query_runner
      description: Executes a read-only analytics query. Used by American Eagle Outfitters teams.
      inputParameters:
      - name: sql_query
        in: body
        type: string
        description: The sql_query to look up.
      call: confluence.get-sql_query
      with:
        sql_query: '{{sql_query}}'
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://american-eagle-outfitters.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: american_database_query_runner
        method: GET
Open in Framework → View in Fleet → american-eagle-outfitters-database-query-runner.yml

Retrieves a training document from the AEO SharePoint knowledge base by file path.

naftiko: '0.5'
info:
  label: SharePoint Training Document Retrieval
  description: Retrieves a training document from the AEO SharePoint knowledge base by file path.
  tags:
  - collaboration
  - sharepoint
  - training
capability:
  exposes:
  - type: mcp
    namespace: knowledge-base
    port: 8080
    tools:
    - name: get-training-doc
      description: Retrieve a training document from SharePoint.
      inputParameters:
      - name: file_path
        in: body
        type: string
        description: Path to the document.
      call: sharepoint.get-file
      with:
        site_id: training_site
        file_path: '{{file_path}}'
      outputParameters:
      - name: download_url
        type: string
        mapping: $.@microsoft.graph.downloadUrl
      - name: last_modified
        type: string
        mapping: $.lastModifiedDateTime
  consumes:
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: files
      path: /{{site_id}}/drive/root:/{{file_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: file_path
        in: path
      operations:
      - name: get-file
        method: GET
Open in Framework → View in Fleet → sharepoint-training-document-retrieval.yml

Finds the nearest AEO store locations based on a customer ZIP code using the Google Maps API.

naftiko: '0.5'
info:
  label: Google Maps Store Locator
  description: Finds the nearest AEO store locations based on a customer ZIP code using the Google Maps API.
  tags:
  - retail
  - google-maps
  - store-locator
capability:
  exposes:
  - type: mcp
    namespace: store-locator
    port: 8080
    tools:
    - name: find-nearest-stores
      description: Find the nearest American Eagle stores by ZIP code.
      inputParameters:
      - name: zip_code
        in: body
        type: string
        description: Customer ZIP code.
      - name: radius_miles
        in: body
        type: number
        description: Search radius.
      call: gmaps.search-places
      with:
        query: American Eagle Outfitters
        location: '{{zip_code}}'
        radius: '{{radius_miles}}'
      outputParameters:
      - name: stores
        type: array
        mapping: $.results
  consumes:
  - type: http
    namespace: gmaps
    baseUri: https://maps.googleapis.com/maps/api
    authentication:
      type: apikey
      key: $secrets.google_maps_key
    resources:
    - name: places
      path: /place/textsearch/json
      operations:
      - name: search-places
        method: GET
Open in Framework → View in Fleet → google-maps-store-locator.yml

Sends an email through Microsoft Outlook. Reusable email component.

naftiko: '0.5'
info:
  label: Microsoft Outlook Email Sender
  description: Sends an email through Microsoft Outlook. Reusable email component.
  tags:
  - collaboration
  - microsoft-outlook
  - email
capability:
  exposes:
  - type: mcp
    namespace: email
    port: 8080
    tools:
    - name: send-email
      description: Send an email via Microsoft Outlook.
      inputParameters:
      - name: to
        in: body
        type: string
        description: Recipient email.
      - name: subject
        in: body
        type: string
        description: Subject line.
      - name: body
        in: body
        type: string
        description: Email body.
      call: outlook.send-mail
      with:
        to: '{{to}}'
        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: send-mail
      path: /me/sendMail
      operations:
      - name: send-mail
        method: POST
Open in Framework → View in Fleet → microsoft-outlook-email-sender.yml

Tracks asset lifecycle stages, schedules replacements, manages disposal, and updates CMDB.

naftiko: '0.5'
info:
  label: IT Asset Lifecycle Pipeline
  description: Tracks asset lifecycle stages, schedules replacements, manages disposal, and updates CMDB.
  tags:
  - operations
  - servicenow
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: operations
    port: 8080
    tools:
    - name: it_asset_lifecycle_pipeline
      description: Orchestrate it asset lifecycle pipeline workflow.
      inputParameters:
      - name: resource_id
        in: body
        type: string
        description: Primary resource identifier.
      steps:
      - name: get-servicenow
        type: call
        call: servicenow.get-resource
        with:
          resource_id: '{{resource_id}}'
      - name: process-snowflake
        type: call
        call: snowflake.process-resource
        with:
          data: '{{get-servicenow.result}}'
      - name: create-slack
        type: call
        call: slack.create-resource
        with:
          channel: '{{notification_channel}}'
          text: IT Asset Lifecycle Pipeline step 3 complete.
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://american-eagle-outfitters.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: snowflake
    baseUri: https://american-eagle-outfitters.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
Open in Framework → View in Fleet → it-asset-lifecycle-pipeline.yml

Searches the AEO BigCommerce product catalog by keyword and returns matching products with pricing and availability.

naftiko: '0.5'
info:
  label: BigCommerce Product Search
  description: Searches the AEO BigCommerce product catalog by keyword and returns matching products with pricing and availability.
  tags:
  - retail
  - e-commerce
  - bigcommerce
capability:
  exposes:
  - type: mcp
    namespace: catalog
    port: 8080
    tools:
    - name: search-products
      description: Search the AEO product catalog by keyword.
      inputParameters:
      - name: query
        in: body
        type: string
        description: Search keyword.
      call: bigcommerce.search-products
      with:
        keyword: '{{query}}'
      outputParameters:
      - name: products
        type: array
        mapping: $.data
      - name: total
        type: number
        mapping: $.meta.pagination.total
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/ae-outfitters/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: products
      path: /catalog/products?keyword={{keyword}}
      inputParameters:
      - name: keyword
        in: path
      operations:
      - name: search-products
        method: GET
Open in Framework → View in Fleet → bigcommerce-product-search.yml

Reconciles vendor invoices with POs, flags discrepancies, processes payments, and sends remittances.

naftiko: '0.5'
info:
  label: Vendor Payment Reconciliation Pipeline
  description: Reconciles vendor invoices with POs, flags discrepancies, processes payments, and sends remittances.
  tags:
  - finance
  - servicenow
  - salesforce
  - slack
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: american_vendor_payment_reconciliation_p
      description: Orchestrate vendor payment reconciliation pipeline workflow.
      inputParameters:
      - name: resource_id
        in: body
        type: string
        description: Primary resource identifier.
      steps:
      - name: get-servicenow
        type: call
        call: servicenow.get-resource
        with:
          resource_id: '{{resource_id}}'
      - name: process-salesforce
        type: call
        call: salesforce.process-resource
        with:
          data: '{{get-servicenow.result}}'
      - name: create-slack
        type: call
        call: slack.create-resource
        with:
          channel: '{{notification_channel}}'
          text: Vendor Payment Reconciliation Pipeline step 3 complete.
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://american-eagle-outfitters.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: salesforce
    baseUri: https://american-eagle-outfitters.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
Open in Framework → View in Fleet → vendor-payment-reconciliation-pipeline.yml

Provisions new employee accounts, assigns training, creates IT tickets, and notifies managers.

naftiko: '0.5'
info:
  label: Employee Onboarding Automation Pipeline
  description: Provisions new employee accounts, assigns training, creates IT tickets, and notifies managers.
  tags:
  - hr
  - workday
  - servicenow
  - slack
capability:
  exposes:
  - type: mcp
    namespace: hr
    port: 8080
    tools:
    - name: employee_onboarding_automation
      description: Orchestrate employee onboarding automation 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-servicenow
        type: call
        call: servicenow.process-resource
        with:
          data: '{{get-salesforce.result}}'
      - name: create-slack
        type: call
        call: slack.create-resource
        with:
          channel: '{{notification_channel}}'
          text: Employee Onboarding Automation Pipeline step 3 complete.
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://american-eagle-outfitters.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://american-eagle-outfitters.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
Open in Framework → View in Fleet → employee-onboarding-automation-pipeline.yml

Validates change requests, routes for approval, schedules implementation, and notifies stakeholders.

naftiko: '0.5'
info:
  label: Change Management Approval Pipeline
  description: Validates change requests, routes for approval, schedules implementation, and notifies stakeholders.
  tags:
  - itsm
  - servicenow
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: itsm
    port: 8080
    tools:
    - name: change_management_approval_pipeline
      description: Orchestrate change management approval pipeline workflow.
      inputParameters:
      - name: resource_id
        in: body
        type: string
        description: Primary resource identifier.
      steps:
      - name: get-servicenow
        type: call
        call: servicenow.get-resource
        with:
          resource_id: '{{resource_id}}'
      - name: process-jira
        type: call
        call: jira.process-resource
        with:
          data: '{{get-servicenow.result}}'
      - name: create-slack
        type: call
        call: slack.create-resource
        with:
          channel: '{{notification_channel}}'
          text: Change Management Approval Pipeline step 3 complete.
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://american-eagle-outfitters.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://american-eagle-outfitters.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
Open in Framework → View in Fleet → change-management-approval-pipeline.yml

Publishes a new version of the Google Tag Manager container for the AEO web property after review approval and notifies the web team.

naftiko: '0.5'
info:
  label: Google Tag Manager Container Version Publisher
  description: Publishes a new version of the Google Tag Manager container for the AEO web property after review approval and notifies the web team.
  tags:
  - analytics
  - google-tag-manager
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: tag-management
    port: 8080
    tools:
    - name: publish-gtm-version
      description: Publish a GTM container version and notify the web team.
      inputParameters:
      - name: container_id
        in: body
        type: string
        description: GTM container ID.
      - name: version_id
        in: body
        type: string
        description: GTM version ID to publish.
      steps:
      - name: publish-version
        type: call
        call: gtm.publish-version
        with:
          container_id: '{{container_id}}'
          version_id: '{{version_id}}'
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          channel_id: web_team
          text: GTM container {{container_id}} version {{version_id}} has been published to production.
  consumes:
  - type: http
    namespace: gtm
    baseUri: https://www.googleapis.com/tagmanager/v2
    authentication:
      type: bearer
      token: $secrets.google_tagmanager_token
    resources:
    - name: versions
      path: /accounts/{{account_id}}/containers/{{container_id}}/versions/{{version_id}}:publish
      inputParameters:
      - name: container_id
        in: path
      - name: version_id
        in: path
      operations:
      - name: publish-version
        method: POST
  - 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
Open in Framework → View in Fleet → google-tag-manager-container-version-publisher.yml

Creates a ServiceNow incident for a customer complaint, attaches the order context from BigCommerce, and notifies the support team in Microsoft Teams.

naftiko: '0.5'
info:
  label: Customer Support Ticket Pipeline
  description: Creates a ServiceNow incident for a customer complaint, attaches the order context from BigCommerce, and notifies the support team in Microsoft Teams.
  tags:
  - customer-service
  - servicenow
  - bigcommerce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: customer-support
    port: 8080
    tools:
    - name: create-support-ticket
      description: Open a support incident with order context and notify the team.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: BigCommerce order ID.
      - name: customer_email
        in: body
        type: string
        description: Customer email.
      - name: issue
        in: body
        type: string
        description: Issue description.
      steps:
      - name: get-order
        type: call
        call: bigcommerce.get-order
        with:
          order_id: '{{order_id}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Customer issue: order {{order_id}}'
          description: '{{issue}} | Total: {{get-order.total_inc_tax}} | Customer: {{customer_email}}'
          category: customer_service
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          channel_id: cs_team
          text: New ticket {{create-incident.number}} for order {{order_id}}.
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/ae-outfitters/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: servicenow
    baseUri: https://ae.service-now.com/api/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
Open in Framework → View in Fleet → customer-support-ticket-pipeline.yml

When a store inventory falls below minimum threshold, creates a transfer order in the OMS from the nearest distribution center, updates the WMS, and notifies the store manager via Microsoft Teams.

naftiko: '0.5'
info:
  label: Store Inventory Replenishment Pipeline
  description: When a store inventory falls below minimum threshold, creates a transfer order in the OMS from the nearest distribution center, updates the WMS, and notifies the store manager via Microsoft Teams.
  tags:
  - retail
  - inventory
  - oms
  - wms
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: replenishment
    port: 8080
    tools:
    - name: trigger-replenishment
      description: Create a transfer order from DC to store for low-stock items and notify the store manager.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: Store location ID.
      - name: sku
        in: body
        type: string
        description: Product SKU needing replenishment.
      - name: quantity
        in: body
        type: number
        description: Quantity to transfer.
      steps:
      - name: create-transfer
        type: call
        call: oms.create-transfer-order
        with:
          from_location: main_dc
          to_location: '{{store_id}}'
          sku: '{{sku}}'
          quantity: '{{quantity}}'
      - name: update-wms
        type: call
        call: wms.reserve-transfer
        with:
          transfer_id: '{{create-transfer.transfer_id}}'
          sku: '{{sku}}'
          quantity: '{{quantity}}'
      - name: notify-manager
        type: call
        call: msteams.send-message
        with:
          channel_id: store_{{store_id}}
          text: 'Replenishment transfer {{create-transfer.transfer_id}} created: {{quantity}} units of {{sku}} shipping from DC. ETA: {{create-transfer.eta}}.'
  consumes:
  - type: http
    namespace: oms
    baseUri: https://oms.ae.com/api/v2
    authentication:
      type: bearer
      token: $secrets.oms_token
    resources:
    - name: transfers
      path: /transfer-orders
      operations:
      - name: create-transfer-order
        method: POST
  - type: http
    namespace: wms
    baseUri: https://wms.ae.com/api/v1
    authentication:
      type: bearer
      token: $secrets.wms_token
    resources:
    - name: reservations
      path: /transfers/{{transfer_id}}/reserve
      inputParameters:
      - name: transfer_id
        in: path
      operations:
      - name: reserve-transfer
        method: POST
  - 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
Open in Framework → View in Fleet → store-inventory-replenishment-pipeline.yml

Checks availability of an API endpoint. Used by American Eagle Outfitters teams.

naftiko: '0.5'
info:
  label: American Eagle Outfitters API Endpoint Status
  description: Checks availability of an API endpoint. Used by American Eagle Outfitters teams.
  tags:
  - retail
  - slack
capability:
  exposes:
  - type: mcp
    namespace: slack
    port: 8080
    tools:
    - name: get-api_endpoint_status
      description: Checks availability of an API endpoint. Used by American Eagle Outfitters teams.
      inputParameters:
      - name: endpoint_url
        in: body
        type: string
        description: The endpoint_url to look up.
      call: slack.get-endpoint_url
      with:
        endpoint_url: '{{endpoint_url}}'
  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: american_api_endpoint_status
        method: GET
Open in Framework → View in Fleet → american-eagle-outfitters-api-endpoint-status.yml

Checks status of a recent deployment. Used by American Eagle Outfitters teams.

naftiko: '0.5'
info:
  label: American Eagle Outfitters Deployment Status Check
  description: Checks status of a recent deployment. Used by American Eagle Outfitters teams.
  tags:
  - retail
  - elasticsearch
capability:
  exposes:
  - type: mcp
    namespace: elasticsearc
    port: 8080
    tools:
    - name: get-deployment_status_check
      description: Checks status of a recent deployment. Used by American Eagle Outfitters teams.
      inputParameters:
      - name: deployment_id
        in: body
        type: string
        description: The deployment_id to look up.
      call: elasticsearch.get-deployment_id
      with:
        deployment_id: '{{deployment_id}}'
  consumes:
  - type: http
    namespace: elasticsearch
    baseUri: https://american-eagle-outfitters-es.com:9200
    authentication:
      type: bearer
      token: $secrets.elasticsearch_token
    resources:
    - name: resources
      path: /resources/{{resource_id}}
      operations:
      - name: american_deployment_status_che
        method: GET
Open in Framework → View in Fleet → american-eagle-outfitters-deployment-status-check.yml

Pulls engagement metrics for the Aerie sub-brand Instagram account and compares them against the main AEO account, posting a weekly comparison to the brand team Teams channel.

naftiko: '0.5'
info:
  label: Aerie Brand Instagram Performance Tracker
  description: Pulls engagement metrics for the Aerie sub-brand Instagram account and compares them against the main AEO account, posting a weekly comparison to the brand team Teams channel.
  tags:
  - marketing
  - social-media
  - instagram
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: brand-social
    port: 8080
    tools:
    - name: compare-brand-engagement
      description: Compare Instagram engagement between the AEO and Aerie accounts and report to the brand team.
      inputParameters:
      - name: period
        in: body
        type: string
        description: Reporting period.
      steps:
      - name: get-aeo-metrics
        type: call
        call: instagram.get-account-insights
        with:
          account_id: aeo_main
          period: '{{period}}'
      - name: get-aerie-metrics
        type: call
        call: instagram.get-account-insights
        with:
          account_id: aerie_official
          period: '{{period}}'
      - name: post-comparison
        type: call
        call: msteams.send-message
        with:
          channel_id: brand_team
          text: 'Weekly IG comparison: AEO reach {{get-aeo-metrics.reach}}, engagement {{get-aeo-metrics.engagement}}. Aerie reach {{get-aerie-metrics.reach}}, engagement {{get-aerie-metrics.engagement}}.'
  consumes:
  - type: http
    namespace: instagram
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.instagram_token
    resources:
    - name: insights
      path: /{{account_id}}/insights
      inputParameters:
      - name: account_id
        in: path
      operations:
      - name: get-account-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/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → aerie-brand-instagram-performance-tracker.yml

Activates a flash sale by reserving inventory, applying temporary pricing in BigCommerce, scheduling push notifications, and alerting the e-commerce team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Flash Sale Activation Pipeline
  description: Activates a flash sale by reserving inventory, applying temporary pricing in BigCommerce, scheduling push notifications, and alerting the e-commerce team via Microsoft Teams.
  tags:
  - retail
  - flash-sale
  - bigcommerce
  - wms
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: flash-sales
    port: 8080
    tools:
    - name: activate-flash-sale
      description: Reserve inventory, set sale prices, and notify all stakeholders for a flash sale.
      inputParameters:
      - name: sale_id
        in: body
        type: string
        description: Flash sale identifier.
      - name: product_ids
        in: body
        type: array
        description: Product IDs in the sale.
      - name: discount_pct
        in: body
        type: number
        description: Discount percentage.
      steps:
      - name: reserve-stock
        type: call
        call: wms.reserve-inventory
        with:
          sale_id: '{{sale_id}}'
          product_ids: '{{product_ids}}'
      - name: apply-pricing
        type: call
        call: bigcommerce.apply-sale-pricing
        with:
          product_ids: '{{product_ids}}'
          discount_pct: '{{discount_pct}}'
      - name: notify-ecom
        type: call
        call: msteams.send-message
        with:
          channel_id: ecommerce
          text: 'Flash sale {{sale_id}} LIVE: {{reserve-stock.reserved_count}} products at {{discount_pct}}% off.'
  consumes:
  - type: http
    namespace: wms
    baseUri: https://wms.ae.com/api/v1
    authentication:
      type: bearer
      token: $secrets.wms_token
    resources:
    - name: reservations
      path: /reservations
      operations:
      - name: reserve-inventory
        method: POST
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/ae-outfitters/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: pricing
      path: /pricelists
      operations:
      - name: apply-sale-pricing
        method: POST
  - 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
Open in Framework → View in Fleet → flash-sale-activation-pipeline.yml

Tests DR procedures, validates backup integrity, generates readiness reports, and notifies leadership.

naftiko: '0.5'
info:
  label: Disaster Recovery Readiness Pipeline
  description: Tests DR procedures, validates backup integrity, generates readiness reports, and notifies leadership.
  tags:
  - disaster-recovery
  - servicenow
  - confluence
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: disaster-recovery
    port: 8080
    tools:
    - name: disaster_recovery_readiness_pipeline
      description: Orchestrate disaster recovery readiness pipeline workflow.
      inputParameters:
      - name: resource_id
        in: body
        type: string
        description: Primary resource identifier.
      steps:
      - name: get-servicenow
        type: call
        call: servicenow.get-resource
        with:
          resource_id: '{{resource_id}}'
      - name: process-confluence
        type: call
        call: confluence.process-resource
        with:
          data: '{{get-servicenow.result}}'
      - name: create-jira
        type: call
        call: jira.create-resource
        with:
          channel: '{{notification_channel}}'
          text: Disaster Recovery Readiness Pipeline step 3 complete.
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://american-eagle-outfitters.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: confluence
    baseUri: https://american-eagle-outfitters.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-op
        method: POST
  - type: http
    namespace: jira
    baseUri: https://american-eagle-outfitters.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
Open in Framework → View in Fleet → disaster-recovery-readiness-pipeline.yml

Looks up the payment status and due date of a vendor invoice in SAP.

naftiko: '0.5'
info:
  label: SAP Vendor Invoice Status
  description: Looks up the payment status and due date of a vendor invoice in SAP.
  tags:
  - finance
  - erp
  - sap
capability:
  exposes:
  - type: mcp
    namespace: vendor-finance
    port: 8080
    tools:
    - name: get-invoice-status
      description: Look up a vendor invoice status in SAP by invoice number.
      inputParameters:
      - name: invoice_number
        in: body
        type: string
        description: SAP vendor invoice number.
      call: sap.get-invoice
      with:
        invoice_number: '{{invoice_number}}'
      outputParameters:
      - name: payment_status
        type: string
        mapping: $.d.PaymentStatus
      - name: amount
        type: number
        mapping: $.d.GrossAmount
      - name: due_date
        type: string
        mapping: $.d.DueDate
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ae-sap.s4hana.cloud/sap/opu/odata/sap/API_SUPPLIER_INVOICE_PROCESS_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: invoices
      path: /A_SuplrInvcItemPurOrdRef('{{invoice_number}}')
      inputParameters:
      - name: invoice_number
        in: path
      operations:
      - name: get-invoice
        method: GET
Open in Framework → View in Fleet → sap-vendor-invoice-status.yml

Monitors service levels, detects SLA breaches, creates escalation tickets, and reports to management.

naftiko: '0.5'
info:
  label: SLA Compliance Monitoring Pipeline
  description: Monitors service levels, detects SLA breaches, creates escalation tickets, and reports to management.
  tags:
  - operations
  - datadog
  - servicenow
  - powerbi
capability:
  exposes:
  - type: mcp
    namespace: operations
    port: 8080
    tools:
    - name: sla_compliance_monitoring_pipeline
      description: Orchestrate sla compliance 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-servicenow
        type: call
        call: servicenow.process-resource
        with:
          data: '{{get-datadog.result}}'
      - name: create-powerbi
        type: call
        call: powerbi.create-resource
        with:
          channel: '{{notification_channel}}'
          text: SLA Compliance Monitoring Pipeline step 3 complete.
  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: servicenow
    baseUri: https://american-eagle-outfitters.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: 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: powerbi-op
        method: POST
Open in Framework → View in Fleet → sla-compliance-monitoring-pipeline.yml

Retrieves the current state, priority, and assignment details for a ServiceNow incident by number.

naftiko: '0.5'
info:
  label: ServiceNow Incident Lookup
  description: Retrieves the current state, priority, and assignment details for a ServiceNow incident by number.
  tags:
  - it-support
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: it-support
    port: 8080
    tools:
    - name: get-incident
      description: Look up a ServiceNow incident by number.
      inputParameters:
      - name: incident_number
        in: body
        type: string
        description: ServiceNow incident number.
      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: assigned_to
        type: string
        mapping: $.result.assigned_to.display_value
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://ae.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
Open in Framework → View in Fleet → servicenow-incident-lookup.yml

Fetches website traffic metrics from Google Analytics for the AEO digital storefront including sessions, page views, and bounce rate.

naftiko: '0.5'
info:
  label: Google Analytics Traffic Dashboard
  description: Fetches website traffic metrics from Google Analytics for the AEO digital storefront including sessions, page views, and bounce rate.
  tags:
  - analytics
  - e-commerce
  - google-analytics
capability:
  exposes:
  - type: mcp
    namespace: ga-traffic
    port: 8080
    tools:
    - name: get-site-traffic
      description: Retrieve key traffic metrics for the AEO website from Google Analytics.
      inputParameters:
      - name: start_date
        in: body
        type: string
        description: Start date in YYYY-MM-DD.
      - name: end_date
        in: body
        type: string
        description: End date in YYYY-MM-DD.
      call: ga.get-report
      with:
        view_id: aeo_web
        start_date: '{{start_date}}'
        end_date: '{{end_date}}'
        metrics: ga:sessions,ga:pageviews,ga:bounceRate
      outputParameters:
      - name: sessions
        type: number
        mapping: $.reports[0].data.totals[0].values[0]
      - name: page_views
        type: number
        mapping: $.reports[0].data.totals[0].values[1]
      - name: bounce_rate
        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-report
        method: POST
Open in Framework → View in Fleet → google-analytics-traffic-dashboard.yml

Retrieves details of a Square payment transaction including amount, card brand, and status for in-store transactions.

naftiko: '0.5'
info:
  label: Square Payment Transaction Lookup
  description: Retrieves details of a Square payment transaction including amount, card brand, and status for in-store transactions.
  tags:
  - retail
  - payments
  - square
capability:
  exposes:
  - type: mcp
    namespace: payments
    port: 8080
    tools:
    - name: get-payment-details
      description: Look up a Square payment transaction by transaction ID.
      inputParameters:
      - name: payment_id
        in: body
        type: string
        description: Square payment ID.
      call: square.get-payment
      with:
        payment_id: '{{payment_id}}'
      outputParameters:
      - name: amount
        type: number
        mapping: $.payment.amount_money.amount
      - name: card_brand
        type: string
        mapping: $.payment.card_details.card.card_brand
      - name: status
        type: string
        mapping: $.payment.status
  consumes:
  - type: http
    namespace: square
    baseUri: https://connect.squareup.com/v2
    authentication:
      type: bearer
      token: $secrets.square_token
    resources:
    - name: payments
      path: /payments/{{payment_id}}
      inputParameters:
      - name: payment_id
        in: path
      operations:
      - name: get-payment
        method: GET
Open in Framework → View in Fleet → square-payment-transaction-lookup.yml

Creates a Jira issue in a specified project. Reusable building block for task creation workflows.

naftiko: '0.5'
info:
  label: Jira Issue Creator
  description: Creates a Jira issue in a specified project. Reusable building block for task creation workflows.
  tags:
  - project-management
  - jira
capability:
  exposes:
  - type: mcp
    namespace: task-management
    port: 8080
    tools:
    - name: create-jira-issue
      description: Create a new Jira issue.
      inputParameters:
      - name: project
        in: body
        type: string
        description: Jira project key.
      - name: issue_type
        in: body
        type: string
        description: Issue type such as Task, Bug, or Story.
      - name: summary
        in: body
        type: string
        description: Issue summary.
      - name: description
        in: body
        type: string
        description: Issue description.
      call: jira.create-issue
      with:
        project: '{{project}}'
        issue_type: '{{issue_type}}'
        summary: '{{summary}}'
        description: '{{description}}'
      outputParameters:
      - name: issue_key
        type: string
        mapping: $.key
      - name: issue_url
        type: string
        mapping: $.self
  consumes:
  - type: http
    namespace: jira
    baseUri: https://ae-outfitters.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → jira-issue-creator.yml

Collects audit events, validates against policies, generates compliance reports, and notifies auditors.

naftiko: '0.5'
info:
  label: Compliance Audit Trail Pipeline
  description: Collects audit events, validates against policies, generates compliance reports, and notifies auditors.
  tags:
  - compliance
  - elasticsearch
  - confluence
  - slack
capability:
  exposes:
  - type: mcp
    namespace: compliance
    port: 8080
    tools:
    - name: compliance_audit_trail_pipeline
      description: Orchestrate compliance audit trail pipeline workflow.
      inputParameters:
      - name: resource_id
        in: body
        type: string
        description: Primary resource identifier.
      steps:
      - name: get-elasticsearch
        type: call
        call: elasticsearch.get-resource
        with:
          resource_id: '{{resource_id}}'
      - name: process-confluence
        type: call
        call: confluence.process-resource
        with:
          data: '{{get-elasticsearch.result}}'
      - name: create-slack
        type: call
        call: slack.create-resource
        with:
          channel: '{{notification_channel}}'
          text: Compliance Audit Trail Pipeline step 3 complete.
  consumes:
  - type: http
    namespace: elasticsearch
    baseUri: https://american-eagle-outfitters-es.com:9200
    authentication:
      type: bearer
      token: $secrets.elasticsearch_token
    resources:
    - name: resources
      path: /resources/{{resource_id}}
      operations:
      - name: elasticsearch-op
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://american-eagle-outfitters.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-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
Open in Framework → View in Fleet → compliance-audit-trail-pipeline.yml

Retrieves supplier compliance documents from the vendor portal, uploads them to SharePoint for archival, and creates a Jira review task for the compliance team.

naftiko: '0.5'
info:
  label: Vendor Compliance Check Pipeline
  description: Retrieves supplier compliance documents from the vendor portal, uploads them to SharePoint for archival, and creates a Jira review task for the compliance team.
  tags:
  - procurement
  - compliance
  - sharepoint
  - jira
capability:
  exposes:
  - type: mcp
    namespace: vendor-compliance
    port: 8080
    tools:
    - name: check-vendor-compliance
      description: Collect vendor compliance documents and route for review.
      inputParameters:
      - name: vendor_id
        in: body
        type: string
        description: Vendor identifier.
      - name: doc_type
        in: body
        type: string
        description: Compliance document type.
      steps:
      - name: get-doc
        type: call
        call: vendor-portal.get-document
        with:
          vendor_id: '{{vendor_id}}'
          doc_type: '{{doc_type}}'
      - name: upload-doc
        type: call
        call: sharepoint.upload-file
        with:
          site_id: vendor_compliance
          folder_path: Vendors/{{vendor_id}}
          file_name: '{{get-doc.file_name}}'
          file_content: '{{get-doc.content}}'
      - name: create-review
        type: call
        call: jira.create-issue
        with:
          project: COMPLIANCE
          issue_type: Task
          summary: Review {{doc_type}} from vendor {{vendor_id}}
          description: 'Document: {{upload-doc.url}}'
  consumes:
  - type: http
    namespace: vendor-portal
    baseUri: https://vendors.ae.com/api/v1
    authentication:
      type: bearer
      token: $secrets.vendor_portal_token
    resources:
    - name: documents
      path: /vendors/{{vendor_id}}/documents/{{doc_type}}
      inputParameters:
      - name: vendor_id
        in: path
      - name: doc_type
        in: path
      operations:
      - name: get-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: jira
    baseUri: https://ae-outfitters.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → vendor-compliance-check-pipeline.yml

Audits license usage, identifies underutilized licenses, recommends optimization, and notifies IT.

naftiko: '0.5'
info:
  label: Software License Optimization Pipeline
  description: Audits license usage, identifies underutilized licenses, recommends optimization, and notifies IT.
  tags:
  - operations
  - servicenow
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: operations
    port: 8080
    tools:
    - name: software_license_optimization
      description: Orchestrate software license optimization pipeline workflow.
      inputParameters:
      - name: resource_id
        in: body
        type: string
        description: Primary resource identifier.
      steps:
      - name: get-servicenow
        type: call
        call: servicenow.get-resource
        with:
          resource_id: '{{resource_id}}'
      - name: process-snowflake
        type: call
        call: snowflake.process-resource
        with:
          data: '{{get-servicenow.result}}'
      - name: create-slack
        type: call
        call: slack.create-resource
        with:
          channel: '{{notification_channel}}'
          text: Software License Optimization Pipeline step 3 complete.
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://american-eagle-outfitters.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: snowflake
    baseUri: https://american-eagle-outfitters.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
Open in Framework → View in Fleet → software-license-optimization-pipeline.yml

Runs demand forecast models, generates buy recommendations, and distributes to merchandising teams.

naftiko: '0.5'
info:
  label: Seasonal Demand Forecasting Pipeline
  description: Runs demand forecast models, generates buy recommendations, and distributes to merchandising teams.
  tags:
  - planning
  - snowflake
  - powerbi
  - slack
capability:
  exposes:
  - type: mcp
    namespace: planning
    port: 8080
    tools:
    - name: american_seasonal_demand_forecasting_pip
      description: Orchestrate seasonal demand forecasting 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-powerbi
        type: call
        call: powerbi.process-resource
        with:
          data: '{{get-snowflake.result}}'
      - name: create-slack
        type: call
        call: slack.create-resource
        with:
          channel: '{{notification_channel}}'
          text: Seasonal Demand Forecasting Pipeline step 3 complete.
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://american-eagle-outfitters.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: 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: powerbi-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
Open in Framework → View in Fleet → seasonal-demand-forecasting-pipeline.yml

Retrieves the Real Rewards loyalty points balance and tier status for a customer from the Salesforce loyalty module.

naftiko: '0.5'
info:
  label: Aerie Loyalty Points Balance
  description: Retrieves the Real Rewards loyalty points balance and tier status for a customer from the Salesforce loyalty module.
  tags:
  - retail
  - loyalty
  - salesforce
  - customer-service
capability:
  exposes:
  - type: mcp
    namespace: loyalty
    port: 8080
    tools:
    - name: get-rewards-balance
      description: Look up a Real Rewards member loyalty balance and tier by contact ID.
      inputParameters:
      - name: contact_id
        in: body
        type: string
        description: Salesforce contact ID.
      call: salesforce.get-loyalty
      with:
        contact_id: '{{contact_id}}'
      outputParameters:
      - name: points_balance
        type: number
        mapping: $.Loyalty_Points__c
      - name: tier
        type: string
        mapping: $.Loyalty_Tier__c
      - name: rewards_available
        type: number
        mapping: $.Available_Rewards__c
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://ae.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: loyalty
      path: /sobjects/Contact/{{contact_id}}?fields=Loyalty_Points__c,Loyalty_Tier__c,Available_Rewards__c
      inputParameters:
      - name: contact_id
        in: path
      operations:
      - name: get-loyalty
        method: GET
Open in Framework → View in Fleet → aerie-loyalty-points-balance.yml

When a new lead is captured via HubSpot forms, enriches the lead with ZoomInfo company data, creates a Salesforce contact, and notifies the sales team in Microsoft Teams.

naftiko: '0.5'
info:
  label: HubSpot Lead Capture Processor
  description: When a new lead is captured via HubSpot forms, enriches the lead with ZoomInfo company data, creates a Salesforce contact, and notifies the sales team in Microsoft Teams.
  tags:
  - sales
  - hubspot
  - zoominfo
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: lead-processing
    port: 8080
    tools:
    - name: process-new-lead
      description: Enrich a HubSpot lead with ZoomInfo data, sync to Salesforce, and notify the sales team.
      inputParameters:
      - name: hubspot_contact_id
        in: body
        type: string
        description: HubSpot contact ID.
      steps:
      - name: get-lead
        type: call
        call: hubspot.get-contact
        with:
          contact_id: '{{hubspot_contact_id}}'
      - name: enrich-company
        type: call
        call: zoominfo.enrich-company
        with:
          company_name: '{{get-lead.company}}'
      - name: create-sf-contact
        type: call
        call: salesforce.create-contact
        with:
          first_name: '{{get-lead.firstname}}'
          last_name: '{{get-lead.lastname}}'
          email: '{{get-lead.email}}'
          company: '{{get-lead.company}}'
          industry: '{{enrich-company.industry}}'
      - name: notify-sales
        type: call
        call: msteams.send-message
        with:
          channel_id: sales_leads
          text: 'New lead: {{get-lead.firstname}} {{get-lead.lastname}} from {{get-lead.company}} ({{enrich-company.industry}}). Salesforce ID: {{create-sf-contact.id}}.'
  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: zoominfo
    baseUri: https://api.zoominfo.com/v2
    authentication:
      type: bearer
      token: $secrets.zoominfo_token
    resources:
    - name: companies
      path: /company/enrich
      operations:
      - name: enrich-company
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://ae.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: contacts
      path: /sobjects/Contact
      operations:
      - name: create-contact
        method: POST
  - 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
Open in Framework → View in Fleet → hubspot-lead-capture-processor.yml

Triggers a dataset refresh in Power BI for the AEO daily sales dashboard and posts a notification to the analytics team in Microsoft Teams.

naftiko: '0.5'
info:
  label: Power BI Sales Dashboard Refresh
  description: Triggers a dataset refresh in Power BI for the AEO daily sales dashboard and posts a notification to the analytics team in Microsoft Teams.
  tags:
  - analytics
  - power-bi
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: bi-refresh
    port: 8080
    tools:
    - name: refresh-sales-dashboard
      description: Trigger a Power BI dataset refresh and notify the analytics team.
      inputParameters:
      - name: dataset_id
        in: body
        type: string
        description: Power BI dataset ID.
      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: analytics_team
          text: Power BI sales dashboard refresh triggered for dataset {{dataset_id}}. Data will be updated within 15 minutes.
  consumes:
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: datasets
      path: /datasets/{{dataset_id}}/refreshes
      inputParameters:
      - name: dataset_id
        in: path
      operations:
      - name: refresh-dataset
        method: POST
  - type: http
    namespace: 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
Open in Framework → View in Fleet → power-bi-sales-dashboard-refresh.yml

Aggregates weekly POS sales data across all stores, generates a performance summary, and emails the weekly report to district managers via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Weekly Store Performance Email
  description: Aggregates weekly POS sales data across all stores, generates a performance summary, and emails the weekly report to district managers via Microsoft Outlook.
  tags:
  - retail
  - analytics
  - pos
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: weekly-reporting
    port: 8080
    tools:
    - name: send-weekly-performance
      description: Generate and email the weekly store performance summary to district managers.
      inputParameters:
      - name: district_id
        in: body
        type: string
        description: District identifier.
      - name: week_ending
        in: body
        type: string
        description: Week ending date.
      - name: manager_email
        in: body
        type: string
        description: District manager email.
      steps:
      - name: get-sales
        type: call
        call: pos.get-district-sales
        with:
          district_id: '{{district_id}}'
          week_ending: '{{week_ending}}'
      - name: send-report
        type: call
        call: outlook.send-mail
        with:
          to: '{{manager_email}}'
          subject: Weekly Performance - District {{district_id}} ending {{week_ending}}
          body: 'Total revenue: ${{get-sales.total_revenue}}. Top store: {{get-sales.top_store}}. YoY comp: {{get-sales.comp_pct}}%.'
  consumes:
  - type: http
    namespace: pos
    baseUri: https://pos.ae.com/api/v1
    authentication:
      type: bearer
      token: $secrets.pos_token
    resources:
    - name: district-sales
      path: /districts/{{district_id}}/sales/weekly
      inputParameters:
      - name: district_id
        in: path
      operations:
      - name: get-district-sales
        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-mail
        method: POST
Open in Framework → View in Fleet → weekly-store-performance-email.yml

Retrieves a document from knowledge management. Used by American Eagle Outfitters teams.

naftiko: '0.5'
info:
  label: American Eagle Outfitters Document Retrieval
  description: Retrieves a document from knowledge management. Used by American Eagle Outfitters teams.
  tags:
  - retail
  - hubspot
capability:
  exposes:
  - type: mcp
    namespace: hubspot
    port: 8080
    tools:
    - name: get-document_retrieval
      description: Retrieves a document from knowledge management. Used by American Eagle Outfitters teams.
      inputParameters:
      - name: document_id
        in: body
        type: string
        description: The document_id to look up.
      call: hubspot.get-document_id
      with:
        document_id: '{{document_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: american_document_retrieval
        method: GET
Open in Framework → View in Fleet → american-eagle-outfitters-document-retrieval.yml

Compares store metrics against benchmarks, identifies top and bottom performers, and distributes reports.

naftiko: '0.5'
info:
  label: Store Performance Benchmark Pipeline
  description: Compares store metrics against benchmarks, identifies top and bottom performers, and distributes reports.
  tags:
  - analytics
  - snowflake
  - powerbi
  - slack
capability:
  exposes:
  - type: mcp
    namespace: analytics
    port: 8080
    tools:
    - name: store_performance_benchmark_pipeline
      description: Orchestrate store performance benchmark 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-powerbi
        type: call
        call: powerbi.process-resource
        with:
          data: '{{get-snowflake.result}}'
      - name: create-slack
        type: call
        call: slack.create-resource
        with:
          channel: '{{notification_channel}}'
          text: Store Performance Benchmark Pipeline step 3 complete.
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://american-eagle-outfitters.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: 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: powerbi-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
Open in Framework → View in Fleet → store-performance-benchmark-pipeline.yml

Analyzes customer behavior, predicts churn risk, triggers retention campaigns, and tracks results.

naftiko: '0.5'
info:
  label: Customer Churn Prediction Pipeline
  description: Analyzes customer behavior, predicts churn risk, triggers retention campaigns, and tracks results.
  tags:
  - analytics
  - snowflake
  - hubspot
  - slack
capability:
  exposes:
  - type: mcp
    namespace: analytics
    port: 8080
    tools:
    - name: american_customer_churn_prediction_pipel
      description: Orchestrate customer churn prediction 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-hubspot
        type: call
        call: hubspot.process-resource
        with:
          data: '{{get-snowflake.result}}'
      - name: create-slack
        type: call
        call: slack.create-resource
        with:
          channel: '{{notification_channel}}'
          text: Customer Churn Prediction Pipeline step 3 complete.
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://american-eagle-outfitters.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
Open in Framework → View in Fleet → customer-churn-prediction-pipeline.yml

Retrieves the latest build status for an Azure DevOps pipeline used by the AEO digital team.

naftiko: '0.5'
info:
  label: Azure DevOps Build Status Checker
  description: Retrieves the latest build status for an Azure DevOps pipeline used by the AEO digital team.
  tags:
  - devops
  - ci-cd
  - azure-devops
capability:
  exposes:
  - type: mcp
    namespace: cicd
    port: 8080
    tools:
    - name: get-build-status
      description: Check the latest build status for an Azure DevOps pipeline.
      inputParameters:
      - name: pipeline_id
        in: body
        type: string
        description: Azure DevOps pipeline 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: finish_time
        type: string
        mapping: $.value[0].finishTime
  consumes:
  - type: http
    namespace: azdo
    baseUri: https://dev.azure.com/ae-outfitters/DigitalCommerce/_apis/build
    authentication:
      type: basic
      username: ''
      password: $secrets.azdo_pat
    resources:
    - name: builds
      path: /builds?definitions={{pipeline_id}}&$top=1&api-version=7.0
      inputParameters:
      - name: pipeline_id
        in: path
      operations:
      - name: get-latest-build
        method: GET
Open in Framework → View in Fleet → azure-devops-build-status-checker.yml

Queries metric values from a monitoring dashboard. Used by American Eagle Outfitters teams.

naftiko: '0.5'
info:
  label: American Eagle Outfitters Metric Dashboard Query
  description: Queries metric values from a monitoring dashboard. Used by American Eagle Outfitters teams.
  tags:
  - retail
  - jira
capability:
  exposes:
  - type: mcp
    namespace: jira
    port: 8080
    tools:
    - name: get-metric_dashboard_query
      description: Queries metric values from a monitoring dashboard. Used by American Eagle Outfitters teams.
      inputParameters:
      - name: metric_name
        in: body
        type: string
        description: The metric_name to look up.
      call: jira.get-metric_name
      with:
        metric_name: '{{metric_name}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://american-eagle-outfitters.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: american_metric_dashboard_quer
        method: GET
Open in Framework → View in Fleet → american-eagle-outfitters-metric-dashboard-query.yml

Retrieves compliance check status. Used by American Eagle Outfitters teams.

naftiko: '0.5'
info:
  label: American Eagle Outfitters Compliance Check Status
  description: Retrieves compliance check status. Used by American Eagle Outfitters teams.
  tags:
  - retail
  - zendesk
capability:
  exposes:
  - type: mcp
    namespace: zendesk
    port: 8080
    tools:
    - name: get-compliance_check_status
      description: Retrieves compliance check status. Used by American Eagle Outfitters teams.
      inputParameters:
      - name: check_id
        in: body
        type: string
        description: The check_id to look up.
      call: zendesk.get-check_id
      with:
        check_id: '{{check_id}}'
  consumes:
  - type: http
    namespace: zendesk
    baseUri: https://american-eagle-outfitters.zendesk.com/api/v2
    authentication:
      type: bearer
      token: $secrets.zendesk_token
    resources:
    - name: resources
      path: /resources/{{resource_id}}
      operations:
      - name: american_compliance_check_stat
        method: GET
Open in Framework → View in Fleet → american-eagle-outfitters-compliance-check-status.yml

Sends a message to a specified Microsoft Teams channel. Reusable building block for notifications.

naftiko: '0.5'
info:
  label: Microsoft Teams Channel Notifier
  description: Sends a message to a specified Microsoft Teams channel. Reusable building block for notifications.
  tags:
  - collaboration
  - microsoft-teams
  - notifications
capability:
  exposes:
  - type: mcp
    namespace: teams-messaging
    port: 8080
    tools:
    - name: send-channel-message
      description: Post a message to a Microsoft Teams channel.
      inputParameters:
      - name: channel_id
        in: body
        type: string
        description: Teams channel ID.
      - name: text
        in: body
        type: string
        description: Message text.
      call: msteams.send-message
      with:
        channel_id: '{{channel_id}}'
        text: '{{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/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → microsoft-teams-channel-notifier.yml

When a return is requested, validates the order in BigCommerce, creates a return merchandise authorization, updates projected inventory, and sends the customer a return label via Adobe Campaign.

naftiko: '0.5'
info:
  label: Customer Return Authorization Processor
  description: When a return is requested, validates the order in BigCommerce, creates a return merchandise authorization, updates projected inventory, and sends the customer a return label via Adobe Campaign.
  tags:
  - retail
  - returns
  - bigcommerce
  - adobe-campaign
capability:
  exposes:
  - type: mcp
    namespace: returns
    port: 8080
    tools:
    - name: process-return
      description: Process a customer return request across order, inventory, and communications systems.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: BigCommerce order ID.
      - name: reason
        in: body
        type: string
        description: Return reason.
      - name: customer_email
        in: body
        type: string
        description: Customer email.
      steps:
      - name: get-order
        type: call
        call: bigcommerce.get-order
        with:
          order_id: '{{order_id}}'
      - name: create-rma
        type: call
        call: oms.create-rma
        with:
          order_id: '{{order_id}}'
          reason: '{{reason}}'
      - name: adjust-inventory
        type: call
        call: wms.adjust-projected
        with:
          sku: '{{get-order.products[0].sku}}'
          adjustment: 1
      - name: send-label
        type: call
        call: adobe-campaign.send-transactional
        with:
          template: return_label
          recipient_email: '{{customer_email}}'
          rma_number: '{{create-rma.rma_number}}'
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/ae-outfitters/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: oms
    baseUri: https://oms.ae.com/api/v2
    authentication:
      type: bearer
      token: $secrets.oms_token
    resources:
    - name: returns
      path: /returns
      operations:
      - name: create-rma
        method: POST
  - type: http
    namespace: wms
    baseUri: https://wms.ae.com/api/v1
    authentication:
      type: bearer
      token: $secrets.wms_token
    resources:
    - name: inventory
      path: /inventory/adjust
      operations:
      - name: adjust-projected
        method: POST
  - type: http
    namespace: adobe-campaign
    baseUri: https://mc.adobe.io/ae-outfitters/campaign
    authentication:
      type: bearer
      token: $secrets.adobe_campaign_token
    resources:
    - name: transactional
      path: /profileAndServicesExt/transactionalEmail
      operations:
      - name: send-transactional
        method: POST
Open in Framework → View in Fleet → customer-return-authorization-processor.yml

Evaluates vendor security posture, scores risk, creates assessment records, and notifies procurement.

naftiko: '0.5'
info:
  label: Vendor Risk Assessment Pipeline
  description: Evaluates vendor security posture, scores risk, creates assessment records, and notifies procurement.
  tags:
  - procurement
  - servicenow
  - confluence
  - slack
capability:
  exposes:
  - type: mcp
    namespace: procurement
    port: 8080
    tools:
    - name: vendor_risk_assessment_pipeline
      description: Orchestrate vendor risk assessment pipeline workflow.
      inputParameters:
      - name: resource_id
        in: body
        type: string
        description: Primary resource identifier.
      steps:
      - name: get-servicenow
        type: call
        call: servicenow.get-resource
        with:
          resource_id: '{{resource_id}}'
      - name: process-confluence
        type: call
        call: confluence.process-resource
        with:
          data: '{{get-servicenow.result}}'
      - name: create-slack
        type: call
        call: slack.create-resource
        with:
          channel: '{{notification_channel}}'
          text: Vendor Risk Assessment Pipeline step 3 complete.
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://american-eagle-outfitters.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: confluence
    baseUri: https://american-eagle-outfitters.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-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
Open in Framework → View in Fleet → vendor-risk-assessment-pipeline.yml

When the POS flags a suspicious transaction, creates a ServiceNow incident, logs the alert in Google Sheets, and urgently notifies the loss prevention team in Microsoft Teams.

naftiko: '0.5'
info:
  label: Loss Prevention Alert Processor
  description: When the POS flags a suspicious transaction, creates a ServiceNow incident, logs the alert in Google Sheets, and urgently notifies the loss prevention team in Microsoft Teams.
  tags:
  - retail
  - loss-prevention
  - servicenow
  - google-sheets
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: loss-prevention
    port: 8080
    tools:
    - name: process-lp-alert
      description: Handle a loss prevention alert across incident management, logging, and notifications.
      inputParameters:
      - name: transaction_id
        in: body
        type: string
        description: Flagged transaction ID.
      - name: store_id
        in: body
        type: string
        description: Store ID.
      - name: alert_type
        in: body
        type: string
        description: Alert type.
      steps:
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'LP Alert: {{alert_type}} at store {{store_id}}'
          category: loss_prevention
          urgency: '1'
      - name: log-alert
        type: call
        call: gsheets.append-row
        with:
          spreadsheet_id: aeo_lp_log
          range: Alerts!A:D
          values:
          - '{{transaction_id}}'
          - '{{store_id}}'
          - '{{alert_type}}'
          - '{{create-incident.number}}'
      - name: alert-team
        type: call
        call: msteams.send-message
        with:
          channel_id: loss_prevention
          text: 'URGENT: {{alert_type}} at store {{store_id}}, txn {{transaction_id}}. Incident: {{create-incident.number}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://ae.service-now.com/api/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
  - 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
Open in Framework → View in Fleet → loss-prevention-alert-processor.yml

When a new associate is hired in PeopleSoft, provisions a SharePoint folder for training documents, creates a ServiceNow onboarding ticket, and sends a welcome message via Microsoft Teams.

naftiko: '0.5'
info:
  label: Employee Onboarding Pipeline
  description: When a new associate is hired in PeopleSoft, provisions a SharePoint folder for training documents, creates a ServiceNow onboarding ticket, and sends a welcome message via Microsoft Teams.
  tags:
  - hr
  - onboarding
  - peoplesoft
  - sharepoint
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-onboarding
    port: 8080
    tools:
    - name: onboard-employee
      description: Run the full onboarding workflow for a new AEO employee across HR, IT, and collaboration systems.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: PeopleSoft employee ID.
      - name: start_date
        in: body
        type: string
        description: Start date in YYYY-MM-DD format.
      - name: department
        in: body
        type: string
        description: Department name.
      steps:
      - name: get-employee
        type: call
        call: peoplesoft.get-employee
        with:
          employee_id: '{{employee_id}}'
      - name: create-folder
        type: call
        call: sharepoint.create-folder
        with:
          site_id: hr_onboarding
          folder_path: Onboarding/{{get-employee.full_name}}_{{start_date}}
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Onboarding: {{get-employee.full_name}}'
          category: hr_onboarding
          description: New hire {{get-employee.full_name}} starting {{start_date}} in {{department}}.
      - name: send-welcome
        type: call
        call: msteams.send-message
        with:
          channel_id: new_hires
          text: 'Welcome {{get-employee.first_name}} to AEO! Starting {{start_date}} in {{department}}. Onboarding ticket: {{create-ticket.number}}.'
  consumes:
  - type: http
    namespace: peoplesoft
    baseUri: https://hr.ae.com/psftrest/v1
    authentication:
      type: basic
      username: $secrets.peoplesoft_user
      password: $secrets.peoplesoft_password
    resources:
    - name: employees
      path: /employees/{{employee_id}}
      inputParameters:
      - name: employee_id
        in: path
      operations:
      - name: get-employee
        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: create-folder
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://ae.service-now.com/api/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
Open in Framework → View in Fleet → employee-onboarding-pipeline.yml

Retrieves A/B test results from Google Optimize for the AEO website and returns variant performance data.

naftiko: '0.5'
info:
  label: Google Optimize Experiment Results
  description: Retrieves A/B test results from Google Optimize for the AEO website and returns variant performance data.
  tags:
  - analytics
  - e-commerce
  - google-optimize
capability:
  exposes:
  - type: mcp
    namespace: experimentation
    port: 8080
    tools:
    - name: get-experiment-results
      description: Fetch Google Optimize experiment variant performance.
      inputParameters:
      - name: experiment_id
        in: body
        type: string
        description: Google Optimize experiment ID.
      call: goptimize.get-experiment
      with:
        experiment_id: '{{experiment_id}}'
      outputParameters:
      - name: variants
        type: array
        mapping: $.experiment.variants
      - name: winning_variant
        type: string
        mapping: $.experiment.leading_variant
  consumes:
  - type: http
    namespace: goptimize
    baseUri: https://www.googleapis.com/analytics/v3/management
    authentication:
      type: bearer
      token: $secrets.google_optimize_token
    resources:
    - name: experiments
      path: /accounts/{{account_id}}/webproperties/{{property_id}}/experiments/{{experiment_id}}
      inputParameters:
      - name: experiment_id
        in: path
      operations:
      - name: get-experiment
        method: GET
Open in Framework → View in Fleet → google-optimize-experiment-results.yml

Queries Dynatrace for real-time performance metrics of the AEO e-commerce platform.

naftiko: '0.5'
info:
  label: Dynatrace Performance Monitor
  description: Queries Dynatrace for real-time performance metrics of the AEO e-commerce platform.
  tags:
  - monitoring
  - devops
  - dynatrace
capability:
  exposes:
  - type: mcp
    namespace: apm
    port: 8080
    tools:
    - name: get-app-performance
      description: Retrieve application performance metrics from Dynatrace.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: Dynatrace entity ID.
      call: dynatrace.get-entity-metrics
      with:
        entity_id: '{{entity_id}}'
      outputParameters:
      - name: response_time
        type: number
        mapping: $.dataPoints[0].values[0]
      - name: error_rate
        type: number
        mapping: $.dataPoints[1].values[0]
  consumes:
  - type: http
    namespace: dynatrace
    baseUri: https://aeo.live.dynatrace.com/api/v2
    authentication:
      type: bearer
      token: $secrets.dynatrace_token
    resources:
    - name: metrics
      path: /metrics/query?entitySelector=entityId({{entity_id}})
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-entity-metrics
        method: GET
Open in Framework → View in Fleet → dynatrace-performance-monitor.yml

Retrieves the full customer profile from Salesforce including contact info, order history summary, and loyalty tier.

naftiko: '0.5'
info:
  label: Salesforce Customer Profile Lookup
  description: Retrieves the full customer profile from Salesforce including contact info, order history summary, and loyalty tier.
  tags:
  - crm
  - salesforce
  - customer-service
capability:
  exposes:
  - type: mcp
    namespace: crm
    port: 8080
    tools:
    - name: get-customer-profile
      description: Look up an AEO customer profile in Salesforce by customer ID.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: Salesforce contact ID.
      call: salesforce.get-contact
      with:
        contact_id: '{{customer_id}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.Name
      - name: email
        type: string
        mapping: $.Email
      - name: loyalty_tier
        type: string
        mapping: $.Loyalty_Tier__c
      - name: lifetime_value
        type: number
        mapping: $.Lifetime_Value__c
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://ae.my.salesforce.com/services/data/v59.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
Open in Framework → View in Fleet → salesforce-customer-profile-lookup.yml

Checks the health status of a monitored service. Used by American Eagle Outfitters teams.

naftiko: '0.5'
info:
  label: American Eagle Outfitters Service Health Check
  description: Checks the health status of a monitored service. Used by American Eagle Outfitters teams.
  tags:
  - retail
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: salesforce
    port: 8080
    tools:
    - name: get-service_health_check
      description: Checks the health status of a monitored service. Used by American Eagle Outfitters teams.
      inputParameters:
      - name: health_target
        in: body
        type: string
        description: The health_target to look up.
      call: salesforce.get-health_target
      with:
        health_target: '{{health_target}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://american-eagle-outfitters.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: resources
      path: /resources/{{resource_id}}
      operations:
      - name: american_service_health_check
        method: GET
Open in Framework → View in Fleet → american-eagle-outfitters-service-health-check.yml

When a new AEO store location is approved, creates a Microsoft Planner plan for the build-out, provisions the store in the POS system, sets up a Teams channel, and creates a Jira epic for IT setup.

naftiko: '0.5'
info:
  label: Store Opening Coordinator
  description: When a new AEO store location is approved, creates a Microsoft Planner plan for the build-out, provisions the store in the POS system, sets up a Teams channel, and creates a Jira epic for IT setup.
  tags:
  - retail
  - operations
  - microsoft-planner
  - microsoft-teams
  - jira
capability:
  exposes:
  - type: mcp
    namespace: store-opening
    port: 8080
    tools:
    - name: initiate-store-opening
      description: Coordinate all systems for a new AEO store opening.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: New store location ID.
      - name: store_name
        in: body
        type: string
        description: Store name and location.
      - name: target_date
        in: body
        type: string
        description: Target opening date.
      steps:
      - name: create-plan
        type: call
        call: planner.create-plan
        with:
          title: 'Store Opening: {{store_name}}'
          group_id: store_openings
      - name: provision-pos
        type: call
        call: pos.create-store
        with:
          store_id: '{{store_id}}'
          name: '{{store_name}}'
      - name: create-channel
        type: call
        call: msteams.create-channel
        with:
          team_id: store_ops
          display_name: '{{store_name}} Opening'
      - name: create-epic
        type: call
        call: jira.create-issue
        with:
          project: STORES
          issue_type: Epic
          summary: 'IT setup: {{store_name}}'
          due_date: '{{target_date}}'
  consumes:
  - type: http
    namespace: planner
    baseUri: https://graph.microsoft.com/v1.0/planner
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: plans
      path: /plans
      operations:
      - name: create-plan
        method: POST
  - type: http
    namespace: pos
    baseUri: https://pos.ae.com/api/v1
    authentication:
      type: bearer
      token: $secrets.pos_token
    resources:
    - name: stores
      path: /stores
      operations:
      - name: create-store
        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/{{team_id}}/channels
      inputParameters:
      - name: team_id
        in: path
      operations:
      - name: create-channel
        method: POST
  - type: http
    namespace: jira
    baseUri: https://ae-outfitters.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → store-opening-coordinator.yml

Identifies deprecated API consumers, sends migration notices, tracks adoption, and reports progress.

naftiko: '0.5'
info:
  label: API Deprecation Notice Pipeline
  description: Identifies deprecated API consumers, sends migration notices, tracks adoption, and reports progress.
  tags:
  - engineering
  - datadog
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: engineering
    port: 8080
    tools:
    - name: api_deprecation_notice_pipeline
      description: Orchestrate api deprecation notice 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-jira
        type: call
        call: jira.process-resource
        with:
          data: '{{get-datadog.result}}'
      - name: create-slack
        type: call
        call: slack.create-resource
        with:
          channel: '{{notification_channel}}'
          text: API Deprecation Notice Pipeline step 3 complete.
  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: jira
    baseUri: https://american-eagle-outfitters.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
Open in Framework → View in Fleet → api-deprecation-notice-pipeline.yml

Retrieves the current status, shipping details, and payment status for a BigCommerce order by order ID.

naftiko: '0.5'
info:
  label: BigCommerce Order Status Lookup
  description: Retrieves the current status, shipping details, and payment status for a BigCommerce order by order ID.
  tags:
  - retail
  - e-commerce
  - bigcommerce
  - order-status
capability:
  exposes:
  - type: mcp
    namespace: order-tracking
    port: 8080
    tools:
    - name: get-order-status
      description: Look up a BigCommerce order and return its fulfillment and payment status.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: BigCommerce order ID.
      call: bigcommerce.get-order
      with:
        order_id: '{{order_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.status
      - name: shipping_method
        type: string
        mapping: $.shipping_addresses[0].shipping_method
      - name: payment_status
        type: string
        mapping: $.payment_status
      - name: total
        type: number
        mapping: $.total_inc_tax
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/ae-outfitters/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
Open in Framework → View in Fleet → bigcommerce-order-status-lookup.yml

Collects access entitlements, routes for review, revokes expired access, and creates audit records.

naftiko: '0.5'
info:
  label: Access Review Certification Pipeline
  description: Collects access entitlements, routes for review, revokes expired access, and creates audit records.
  tags:
  - security
  - okta
  - servicenow
  - slack
capability:
  exposes:
  - type: mcp
    namespace: security
    port: 8080
    tools:
    - name: access_review_certification_pipeline
      description: Orchestrate access review certification pipeline workflow.
      inputParameters:
      - name: resource_id
        in: body
        type: string
        description: Primary resource identifier.
      steps:
      - name: get-okta
        type: call
        call: okta.get-resource
        with:
          resource_id: '{{resource_id}}'
      - name: process-servicenow
        type: call
        call: servicenow.process-resource
        with:
          data: '{{get-okta.result}}'
      - name: create-slack
        type: call
        call: slack.create-resource
        with:
          channel: '{{notification_channel}}'
          text: Access Review Certification Pipeline step 3 complete.
  consumes:
  - type: http
    namespace: okta
    baseUri: https://american-eagle-outfitters.okta.com/api/v1
    authentication:
      type: apiKey
      key: $secrets.okta_api_token
      header: Authorization
    resources:
    - name: resources
      path: /resources/{{resource_id}}
      operations:
      - name: okta-op
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://american-eagle-outfitters.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
Open in Framework → View in Fleet → access-review-certification-pipeline.yml

Aggregates customer data from multiple sources, deduplicates, enriches profiles, and syncs to CRM.

naftiko: '0.5'
info:
  label: Customer 360 Data Sync Pipeline
  description: Aggregates customer data from multiple sources, deduplicates, enriches profiles, and syncs to CRM.
  tags:
  - data
  - snowflake
  - salesforce
  - slack
capability:
  exposes:
  - type: mcp
    namespace: data
    port: 8080
    tools:
    - name: customer_360_data_sync_pipeline
      description: Orchestrate customer 360 data 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:
          data: '{{get-snowflake.result}}'
      - name: create-slack
        type: call
        call: slack.create-resource
        with:
          channel: '{{notification_channel}}'
          text: Customer 360 Data Sync Pipeline step 3 complete.
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://american-eagle-outfitters.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://american-eagle-outfitters.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
Open in Framework → View in Fleet → customer-360-data-sync-pipeline.yml

When a BigCommerce cart is abandoned, triggers a recovery email via Adobe Campaign with a personalized offer and logs the attempt in Google Sheets.

naftiko: '0.5'
info:
  label: Abandoned Cart Recovery Pipeline
  description: When a BigCommerce cart is abandoned, triggers a recovery email via Adobe Campaign with a personalized offer and logs the attempt in Google Sheets.
  tags:
  - e-commerce
  - marketing
  - bigcommerce
  - adobe-campaign
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: cart-recovery
    port: 8080
    tools:
    - name: recover-abandoned-cart
      description: Send a personalized cart recovery email and track the outreach.
      inputParameters:
      - name: cart_id
        in: body
        type: string
        description: BigCommerce abandoned cart ID.
      - name: customer_email
        in: body
        type: string
        description: Customer email.
      - name: offer_code
        in: body
        type: string
        description: Offer code to include.
      steps:
      - name: get-cart
        type: call
        call: bigcommerce.get-abandoned-cart
        with:
          cart_id: '{{cart_id}}'
      - name: send-recovery
        type: call
        call: adobe-campaign.send-transactional
        with:
          template: cart_recovery
          recipient_email: '{{customer_email}}'
          offer_code: '{{offer_code}}'
          cart_total: '{{get-cart.cart_amount}}'
      - name: log-attempt
        type: call
        call: gsheets.append-row
        with:
          spreadsheet_id: aeo_cart_recovery
          range: Attempts!A:D
          values:
          - '{{cart_id}}'
          - '{{customer_email}}'
          - '{{offer_code}}'
          - sent
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/ae-outfitters/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: abandoned-carts
      path: /abandoned-carts/{{cart_id}}
      inputParameters:
      - name: cart_id
        in: path
      operations:
      - name: get-abandoned-cart
        method: GET
  - type: http
    namespace: adobe-campaign
    baseUri: https://mc.adobe.io/ae-outfitters/campaign
    authentication:
      type: bearer
      token: $secrets.adobe_campaign_token
    resources:
    - name: transactional
      path: /profileAndServicesExt/transactionalEmail
      operations:
      - name: send-transactional
        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
Open in Framework → View in Fleet → abandoned-cart-recovery-pipeline.yml

Retrieves the details of a support ticket. Used by American Eagle Outfitters teams.

naftiko: '0.5'
info:
  label: American Eagle Outfitters Ticket Details Lookup
  description: Retrieves the details of a support ticket. Used by American Eagle Outfitters teams.
  tags:
  - retail
  - powerbi
capability:
  exposes:
  - type: mcp
    namespace: powerbi
    port: 8080
    tools:
    - name: get-ticket_details_lookup
      description: Retrieves the details of a support ticket. Used by American Eagle Outfitters teams.
      inputParameters:
      - name: ticket_id
        in: body
        type: string
        description: The ticket_id to look up.
      call: powerbi.get-ticket_id
      with:
        ticket_id: '{{ticket_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: american_ticket_details_lookup
        method: GET
Open in Framework → View in Fleet → american-eagle-outfitters-ticket-details-lookup.yml

Checks the current status of a project. Used by American Eagle Outfitters teams.

naftiko: '0.5'
info:
  label: American Eagle Outfitters Project Status Check
  description: Checks the current status of a project. Used by American Eagle Outfitters teams.
  tags:
  - retail
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: datadog
    port: 8080
    tools:
    - name: get-project_status_check
      description: Checks the current status of a project. Used by American Eagle Outfitters teams.
      inputParameters:
      - name: project_key
        in: body
        type: string
        description: The project_key to look up.
      call: datadog.get-project_key
      with:
        project_key: '{{project_key}}'
  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: american_project_status_check
        method: GET
Open in Framework → View in Fleet → american-eagle-outfitters-project-status-check.yml

Pulls weekly shift schedules from the workforce management system and sends schedule reminders to associates via Microsoft Teams.

naftiko: '0.5'
info:
  label: Workforce Scheduling Reminder
  description: Pulls weekly shift schedules from the workforce management system and sends schedule reminders to associates via Microsoft Teams.
  tags:
  - hr
  - workforce-management
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: workforce
    port: 8080
    tools:
    - name: send-schedule-reminders
      description: Send weekly shift reminders to store associates.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: Store ID.
      - name: week_start
        in: body
        type: string
        description: Week start date.
      steps:
      - name: get-schedule
        type: call
        call: wfm.get-schedule
        with:
          store_id: '{{store_id}}'
          week_start: '{{week_start}}'
      - name: notify-store
        type: call
        call: msteams.send-message
        with:
          channel_id: store_{{store_id}}
          text: Weekly schedule for store {{store_id}} starting {{week_start}} is posted. {{get-schedule.summary}}
  consumes:
  - type: http
    namespace: wfm
    baseUri: https://wfm.ae.com/api/v1
    authentication:
      type: bearer
      token: $secrets.wfm_token
    resources:
    - name: schedules
      path: /stores/{{store_id}}/schedules
      inputParameters:
      - name: store_id
        in: path
      operations:
      - name: get-schedule
        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: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → workforce-scheduling-reminder.yml

Queries carrier APIs to get shipping rates for a package to a customer destination and returns the cheapest option.

naftiko: '0.5'
info:
  label: Shipping Rate Calculator
  description: Queries carrier APIs to get shipping rates for a package to a customer destination and returns the cheapest option.
  tags:
  - logistics
  - shipping
  - fulfillment
capability:
  exposes:
  - type: mcp
    namespace: shipping
    port: 8080
    tools:
    - name: get-best-rate
      description: Compare shipping rates across carriers and return the optimal option.
      inputParameters:
      - name: weight_lbs
        in: body
        type: number
        description: Package weight.
      - name: origin_zip
        in: body
        type: string
        description: Origin ZIP.
      - name: destination_zip
        in: body
        type: string
        description: Destination ZIP.
      steps:
      - name: ups-rate
        type: call
        call: ups.get-rate
        with:
          weight: '{{weight_lbs}}'
          origin: '{{origin_zip}}'
          destination: '{{destination_zip}}'
      - name: fedex-rate
        type: call
        call: fedex.get-rate
        with:
          weight: '{{weight_lbs}}'
          origin: '{{origin_zip}}'
          destination: '{{destination_zip}}'
  consumes:
  - type: http
    namespace: ups
    baseUri: https://onlinetools.ups.com/api
    authentication:
      type: bearer
      token: $secrets.ups_token
    resources:
    - name: rating
      path: /rating/v1/rate
      operations:
      - name: get-rate
        method: POST
  - type: http
    namespace: fedex
    baseUri: https://apis.fedex.com/rate/v1
    authentication:
      type: bearer
      token: $secrets.fedex_token
    resources:
    - name: rates
      path: /rates/quotes
      operations:
      - name: get-rate
        method: POST
Open in Framework → View in Fleet → shipping-rate-calculator.yml

Searches Confluence for knowledge base articles by keyword and returns matching results with page links.

naftiko: '0.5'
info:
  label: Confluence Knowledge Article Lookup
  description: Searches Confluence for knowledge base articles by keyword and returns matching results with page links.
  tags:
  - collaboration
  - confluence
  - knowledge-management
capability:
  exposes:
  - type: mcp
    namespace: knowledge-base
    port: 8080
    tools:
    - name: search-articles
      description: Search Confluence for knowledge base articles.
      inputParameters:
      - name: query
        in: body
        type: string
        description: Search query.
      call: confluence.search
      with:
        cql: text ~ "{{query}}" and space = KB
      outputParameters:
      - name: results
        type: array
        mapping: $.results
      - name: total
        type: number
        mapping: $.totalSize
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://ae-outfitters.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: search
      path: /search
      operations:
      - name: search
        method: GET
Open in Framework → View in Fleet → confluence-knowledge-article-lookup.yml

Runs data quality checks, scores datasets, creates remediation tickets, and publishes scorecards.

naftiko: '0.5'
info:
  label: Data Quality Monitoring Pipeline
  description: Runs data quality checks, scores datasets, creates remediation tickets, and publishes scorecards.
  tags:
  - data-quality
  - snowflake
  - jira
  - grafana
capability:
  exposes:
  - type: mcp
    namespace: data-quality
    port: 8080
    tools:
    - name: data_quality_monitoring_pipeline
      description: Orchestrate data quality monitoring 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:
          data: '{{get-snowflake.result}}'
      - name: create-grafana
        type: call
        call: grafana.create-resource
        with:
          channel: '{{notification_channel}}'
          text: Data Quality Monitoring Pipeline step 3 complete.
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://american-eagle-outfitters.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://american-eagle-outfitters.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://american-eagle-outfitters-grafana.com/api
    authentication:
      type: bearer
      token: $secrets.grafana_api_key
    resources:
    - name: resources
      path: /resources/{{resource_id}}
      operations:
      - name: grafana-op
        method: POST
Open in Framework → View in Fleet → data-quality-monitoring-pipeline.yml

Retrieves current monitoring alert status. Used by American Eagle Outfitters teams.

naftiko: '0.5'
info:
  label: American Eagle Outfitters Alert Status Check
  description: Retrieves current monitoring alert status. Used by American Eagle Outfitters teams.
  tags:
  - retail
  - grafana
capability:
  exposes:
  - type: mcp
    namespace: grafana
    port: 8080
    tools:
    - name: get-alert_status_check
      description: Retrieves current monitoring alert status. Used by American Eagle Outfitters teams.
      inputParameters:
      - name: alert_id
        in: body
        type: string
        description: The alert_id to look up.
      call: grafana.get-alert_id
      with:
        alert_id: '{{alert_id}}'
  consumes:
  - type: http
    namespace: grafana
    baseUri: https://american-eagle-outfitters-grafana.com/api
    authentication:
      type: bearer
      token: $secrets.grafana_api_key
    resources:
    - name: resources
      path: /resources/{{resource_id}}
      operations:
      - name: american_alert_status_check
        method: GET
Open in Framework → View in Fleet → american-eagle-outfitters-alert-status-check.yml

Pulls end-of-day register summaries from each POS terminal, compares against expected totals, and flags discrepancies in ServiceNow.

naftiko: '0.5'
info:
  label: Store POS Daily Reconciliation
  description: Pulls end-of-day register summaries from each POS terminal, compares against expected totals, and flags discrepancies in ServiceNow.
  tags:
  - retail
  - finance
  - pos
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: pos-reconciliation
    port: 8080
    tools:
    - name: reconcile-daily-pos
      description: Reconcile daily POS register totals and flag discrepancies.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: Store ID.
      - name: date
        in: body
        type: string
        description: Business date.
      steps:
      - name: get-totals
        type: call
        call: pos.get-register-summary
        with:
          store_id: '{{store_id}}'
          date: '{{date}}'
      - name: flag-variance
        type: call
        call: servicenow.create-incident
        with:
          short_description: POS variance at store {{store_id}} on {{date}}
          category: finance
          description: 'Variance: ${{get-totals.variance_amount}} at store {{store_id}}.'
  consumes:
  - type: http
    namespace: pos
    baseUri: https://pos.ae.com/api/v1
    authentication:
      type: bearer
      token: $secrets.pos_token
    resources:
    - name: register-summary
      path: /stores/{{store_id}}/registers/summary/{{date}}
      inputParameters:
      - name: store_id
        in: path
      - name: date
        in: path
      operations:
      - name: get-register-summary
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://ae.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → store-pos-daily-reconciliation.yml

Queries Datadog for the current health status of AEO critical services including the e-commerce platform, payment gateway, and inventory system.

naftiko: '0.5'
info:
  label: Datadog Application Health Monitor
  description: Queries Datadog for the current health status of AEO critical services including the e-commerce platform, payment gateway, and inventory system.
  tags:
  - monitoring
  - devops
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: app-health
    port: 8080
    tools:
    - name: get-service-health
      description: Retrieve health status for AEO critical services from Datadog.
      inputParameters:
      - name: service_name
        in: body
        type: string
        description: Service name to check.
      call: datadog.get-service-status
      with:
        service_name: '{{service_name}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.overall_state
      - name: uptime_pct
        type: number
        mapping: $.uptime_percentage
      - name: last_incident
        type: string
        mapping: $.last_incident_time
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: $secrets.datadog_api_key
    inputParameters:
    - name: DD-APPLICATION-KEY
      in: header
      value: $secrets.datadog_app_key
    resources:
    - name: monitors
      path: /monitor/search?query=service:{{service_name}}
      inputParameters:
      - name: service_name
        in: path
      operations:
      - name: get-service-status
        method: GET
Open in Framework → View in Fleet → datadog-application-health-monitor.yml

Triggers a Microsoft Power Automate flow for automated business process execution.

naftiko: '0.5'
info:
  label: Microsoft Power Automate Flow Trigger
  description: Triggers a Microsoft Power Automate flow for automated business process execution.
  tags:
  - automation
  - microsoft-power-automate
capability:
  exposes:
  - type: mcp
    namespace: workflow-automation
    port: 8080
    tools:
    - name: trigger-flow
      description: Trigger a Power Automate flow by ID.
      inputParameters:
      - name: flow_id
        in: body
        type: string
        description: Power Automate flow ID.
      - name: payload
        in: body
        type: object
        description: Flow input payload.
      call: power-automate.trigger-flow
      with:
        flow_id: '{{flow_id}}'
        body: '{{payload}}'
      outputParameters:
      - name: run_id
        type: string
        mapping: $.id
  consumes:
  - type: http
    namespace: power-automate
    baseUri: https://api.flow.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.power_automate_token
    resources:
    - name: flows
      path: /flows/{{flow_id}}/triggers/manual/run
      inputParameters:
      - name: flow_id
        in: path
      operations:
      - name: trigger-flow
        method: POST
Open in Framework → View in Fleet → microsoft-power-automate-flow-trigger.yml

Identifies stale articles, assigns review tasks, tracks updates, and publishes freshness reports.

naftiko: '0.5'
info:
  label: Knowledge Base Freshness Pipeline
  description: Identifies stale articles, assigns review tasks, tracks updates, and publishes freshness reports.
  tags:
  - knowledge
  - confluence
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: knowledge
    port: 8080
    tools:
    - name: knowledge_base_freshness_pipeline
      description: Orchestrate knowledge base freshness pipeline workflow.
      inputParameters:
      - name: resource_id
        in: body
        type: string
        description: Primary resource identifier.
      steps:
      - name: get-confluence
        type: call
        call: confluence.get-resource
        with:
          resource_id: '{{resource_id}}'
      - name: process-jira
        type: call
        call: jira.process-resource
        with:
          data: '{{get-confluence.result}}'
      - name: create-slack
        type: call
        call: slack.create-resource
        with:
          channel: '{{notification_channel}}'
          text: Knowledge Base Freshness Pipeline step 3 complete.
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://american-eagle-outfitters.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-op
        method: POST
  - type: http
    namespace: jira
    baseUri: https://american-eagle-outfitters.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
Open in Framework → View in Fleet → knowledge-base-freshness-pipeline.yml

Initiates review cycles, collects feedback, aggregates scores, and distributes to managers.

naftiko: '0.5'
info:
  label: Performance Review Cycle Pipeline
  description: Initiates review cycles, collects feedback, aggregates scores, and distributes to managers.
  tags:
  - hr
  - workday
  - confluence
  - slack
capability:
  exposes:
  - type: mcp
    namespace: hr
    port: 8080
    tools:
    - name: performance_review_cycle_pipeline
      description: Orchestrate performance review cycle 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-confluence
        type: call
        call: confluence.process-resource
        with:
          data: '{{get-salesforce.result}}'
      - name: create-slack
        type: call
        call: slack.create-resource
        with:
          channel: '{{notification_channel}}'
          text: Performance Review Cycle Pipeline step 3 complete.
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://american-eagle-outfitters.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: confluence
    baseUri: https://american-eagle-outfitters.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-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
Open in Framework → View in Fleet → performance-review-cycle-pipeline.yml

Pulls conversion funnel data from Adobe Analytics for the AEO e-commerce site including add-to-cart, checkout initiation, and purchase completion rates.

naftiko: '0.5'
info:
  label: Adobe Analytics Conversion Funnel
  description: Pulls conversion funnel data from Adobe Analytics for the AEO e-commerce site including add-to-cart, checkout initiation, and purchase completion rates.
  tags:
  - analytics
  - e-commerce
  - adobe-analytics
capability:
  exposes:
  - type: mcp
    namespace: web-analytics
    port: 8080
    tools:
    - name: get-conversion-funnel
      description: Retrieve e-commerce conversion funnel metrics 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 in YYYY-MM-DD/YYYY-MM-DD format.
      call: adobe-analytics.get-report
      with:
        rsid: '{{report_suite_id}}'
        date_range: '{{date_range}}'
        metrics: cartAdditions,checkoutInitiations,orders
      outputParameters:
      - name: cart_additions
        type: number
        mapping: $.report.data.totals[0]
      - name: checkout_initiations
        type: number
        mapping: $.report.data.totals[1]
      - name: orders
        type: number
        mapping: $.report.data.totals[2]
  consumes:
  - type: http
    namespace: adobe-analytics
    baseUri: https://analytics.adobe.io/api/ae-outfitters
    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
Open in Framework → View in Fleet → adobe-analytics-conversion-funnel.yml

Searches application logs for matching patterns. Used by American Eagle Outfitters teams.

naftiko: '0.5'
info:
  label: American Eagle Outfitters Log Search Query
  description: Searches application logs for matching patterns. Used by American Eagle Outfitters teams.
  tags:
  - retail
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: servicenow
    port: 8080
    tools:
    - name: get-log_search_query
      description: Searches application logs for matching patterns. Used by American Eagle Outfitters teams.
      inputParameters:
      - name: search_query
        in: body
        type: string
        description: The search_query to look up.
      call: servicenow.get-search_query
      with:
        search_query: '{{search_query}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://american-eagle-outfitters.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: american_log_search_query
        method: GET
Open in Framework → View in Fleet → american-eagle-outfitters-log-search-query.yml

When a new product line is approved, creates listings in BigCommerce, syncs inventory with the warehouse management system, schedules an Adobe Campaign email blast, and posts a teaser to Instagram.

naftiko: '0.5'
info:
  label: New Product Launch Orchestrator
  description: When a new product line is approved, creates listings in BigCommerce, syncs inventory with the warehouse management system, schedules an Adobe Campaign email blast, and posts a teaser to Instagram.
  tags:
  - retail
  - merchandising
  - bigcommerce
  - adobe-campaign
  - instagram
capability:
  exposes:
  - type: mcp
    namespace: product-launch
    port: 8080
    tools:
    - name: launch-product-line
      description: Orchestrate a new product line launch across e-commerce, email, and social channels.
      inputParameters:
      - name: product_line_id
        in: body
        type: string
        description: Internal product line identifier.
      - name: launch_date
        in: body
        type: string
        description: Target launch date in YYYY-MM-DD format.
      - name: collection_name
        in: body
        type: string
        description: Collection display name.
      steps:
      - name: create-listings
        type: call
        call: bigcommerce.create-products
        with:
          product_line_id: '{{product_line_id}}'
          is_visible: true
      - name: sync-inventory
        type: call
        call: wms.sync-product-line
        with:
          product_line_id: '{{product_line_id}}'
      - name: schedule-email
        type: call
        call: adobe-campaign.create-delivery
        with:
          template: new_launch
          label: 'New Drop: {{collection_name}}'
          scheduled_date: '{{launch_date}}'
      - name: post-teaser
        type: call
        call: instagram.create-post
        with:
          caption: 'Something new is coming. {{collection_name}} drops {{launch_date}}. #AEO #AmericanEagle'
          media_url: '{{create-listings.hero_image}}'
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/ae-outfitters/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: products
      path: /catalog/products
      operations:
      - name: create-products
        method: POST
  - type: http
    namespace: wms
    baseUri: https://wms.ae.com/api/v1
    authentication:
      type: bearer
      token: $secrets.wms_token
    resources:
    - name: sync
      path: /product-lines/{{product_line_id}}/sync
      inputParameters:
      - name: product_line_id
        in: path
      operations:
      - name: sync-product-line
        method: POST
  - type: http
    namespace: adobe-campaign
    baseUri: https://mc.adobe.io/ae-outfitters/campaign
    authentication:
      type: bearer
      token: $secrets.adobe_campaign_token
    resources:
    - name: deliveries
      path: /profileAndServicesExt/delivery
      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: /me/media
      operations:
      - name: create-post
        method: POST
Open in Framework → View in Fleet → new-product-launch-orchestrator.yml

Tracks mandatory training completion, sends reminders, escalates non-compliance, and reports status.

naftiko: '0.5'
info:
  label: Training Compliance Tracker Pipeline
  description: Tracks mandatory training completion, sends reminders, escalates non-compliance, and reports status.
  tags:
  - compliance
  - workday
  - servicenow
  - slack
capability:
  exposes:
  - type: mcp
    namespace: compliance
    port: 8080
    tools:
    - name: training_compliance_tracker_pipeline
      description: Orchestrate training compliance tracker 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-servicenow
        type: call
        call: servicenow.process-resource
        with:
          data: '{{get-salesforce.result}}'
      - name: create-slack
        type: call
        call: slack.create-resource
        with:
          channel: '{{notification_channel}}'
          text: Training Compliance Tracker Pipeline step 3 complete.
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://american-eagle-outfitters.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://american-eagle-outfitters.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
Open in Framework → View in Fleet → training-compliance-tracker-pipeline.yml

Creates an Adobe Campaign email delivery targeting a customer segment, schedules the send, and logs campaign details to Google Sheets for the marketing team.

naftiko: '0.5'
info:
  label: Promotional Email Campaign Manager
  description: Creates an Adobe Campaign email delivery targeting a customer segment, schedules the send, and logs campaign details to Google Sheets for the marketing team.
  tags:
  - marketing
  - email
  - adobe-campaign
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: email-campaigns
    port: 8080
    tools:
    - name: create-promo-campaign
      description: Create, schedule, and track a promotional email campaign.
      inputParameters:
      - name: campaign_label
        in: body
        type: string
        description: Campaign label.
      - name: segment_id
        in: body
        type: string
        description: Adobe Campaign audience segment ID.
      - name: template_name
        in: body
        type: string
        description: Email template name.
      - name: send_date
        in: body
        type: string
        description: Scheduled send date.
      steps:
      - name: create-delivery
        type: call
        call: adobe-campaign.create-delivery
        with:
          label: '{{campaign_label}}'
          template: '{{template_name}}'
          audience_segment: '{{segment_id}}'
          scheduled_date: '{{send_date}}'
      - name: log-campaign
        type: call
        call: gsheets.append-row
        with:
          spreadsheet_id: aeo_email_tracker
          range: Campaigns!A:D
          values:
          - '{{campaign_label}}'
          - '{{create-delivery.delivery_id}}'
          - '{{send_date}}'
          - scheduled
  consumes:
  - type: http
    namespace: adobe-campaign
    baseUri: https://mc.adobe.io/ae-outfitters/campaign
    authentication:
      type: bearer
      token: $secrets.adobe_campaign_token
    resources:
    - name: deliveries
      path: /profileAndServicesExt/delivery
      operations:
      - name: create-delivery
        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
Open in Framework → View in Fleet → promotional-email-campaign-manager.yml

Collects recent product reviews from BigCommerce, posts a weekly sentiment summary to the product team Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Product Review Sentiment Analyzer
  description: Collects recent product reviews from BigCommerce, posts a weekly sentiment summary to the product team Microsoft Teams channel.
  tags:
  - retail
  - customer-feedback
  - bigcommerce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: review-analytics
    port: 8080
    tools:
    - name: analyze-reviews
      description: Aggregate recent product reviews and deliver a sentiment summary.
      inputParameters:
      - name: product_id
        in: body
        type: string
        description: Product ID.
      - name: since_date
        in: body
        type: string
        description: Start date.
      steps:
      - name: get-reviews
        type: call
        call: bigcommerce.get-reviews
        with:
          product_id: '{{product_id}}'
          since: '{{since_date}}'
      - name: post-summary
        type: call
        call: msteams.send-message
        with:
          channel_id: product_team
          text: 'Product {{product_id}} reviews since {{since_date}}: {{get-reviews.count}} reviews, avg {{get-reviews.avg_rating}}/5.'
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/ae-outfitters/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: reviews
      path: /catalog/products/{{product_id}}/reviews
      inputParameters:
      - name: product_id
        in: path
      operations:
      - name: get-reviews
        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: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → product-review-sentiment-analyzer.yml

Monitors integration endpoints, detects failures, creates support tickets, and notifies integration team.

naftiko: '0.5'
info:
  label: Third-Party Integration Health Pipeline
  description: Monitors integration endpoints, detects failures, creates support tickets, and notifies integration team.
  tags:
  - integrations
  - datadog
  - servicenow
  - slack
capability:
  exposes:
  - type: mcp
    namespace: integrations
    port: 8080
    tools:
    - name: third_party_integration_health_pipeline
      description: Orchestrate third-party integration health 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-servicenow
        type: call
        call: servicenow.process-resource
        with:
          data: '{{get-datadog.result}}'
      - name: create-slack
        type: call
        call: slack.create-resource
        with:
          channel: '{{notification_channel}}'
          text: Third-Party Integration Health Pipeline step 3 complete.
  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: servicenow
    baseUri: https://american-eagle-outfitters.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
Open in Framework → View in Fleet → third-party-integration-health-pipeline.yml

Identifies slow-moving inventory from POS data, applies progressive markdowns in BigCommerce, and generates a clearance report in Google Sheets.

naftiko: '0.5'
info:
  label: Seasonal Clearance Automation
  description: Identifies slow-moving inventory from POS data, applies progressive markdowns in BigCommerce, and generates a clearance report in Google Sheets.
  tags:
  - retail
  - clearance
  - pos
  - bigcommerce
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: clearance
    port: 8080
    tools:
    - name: run-clearance
      description: Identify slow movers, apply markdowns, and generate reports.
      inputParameters:
      - name: season
        in: body
        type: string
        description: Season being cleared.
      - name: markdown_pct
        in: body
        type: number
        description: Markdown percentage.
      steps:
      - name: get-slow-movers
        type: call
        call: pos.get-low-sell-through
        with:
          season: '{{season}}'
      - name: apply-markdowns
        type: call
        call: bigcommerce.bulk-markdown
        with:
          product_ids: '{{get-slow-movers.product_ids}}'
          discount_pct: '{{markdown_pct}}'
      - name: log-report
        type: call
        call: gsheets.append-row
        with:
          spreadsheet_id: aeo_clearance
          range: Reports!A:C
          values:
          - '{{season}}'
          - '{{get-slow-movers.count}}'
          - '{{markdown_pct}}'
  consumes:
  - type: http
    namespace: pos
    baseUri: https://pos.ae.com/api/v1
    authentication:
      type: bearer
      token: $secrets.pos_token
    resources:
    - name: sell-through
      path: /analytics/sell-through
      operations:
      - name: get-low-sell-through
        method: GET
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/ae-outfitters/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: pricing
      path: /pricelists
      operations:
      - name: bulk-markdown
        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
Open in Framework → View in Fleet → seasonal-clearance-automation.yml

Retrieves code repository information. Used by American Eagle Outfitters teams.

naftiko: '0.5'
info:
  label: American Eagle Outfitters Repository Info Lookup
  description: Retrieves code repository information. Used by American Eagle Outfitters teams.
  tags:
  - retail
  - okta
capability:
  exposes:
  - type: mcp
    namespace: okta
    port: 8080
    tools:
    - name: get-repository_info_lookup
      description: Retrieves code repository information. Used by American Eagle Outfitters teams.
      inputParameters:
      - name: repo_name
        in: body
        type: string
        description: The repo_name to look up.
      call: okta.get-repo_name
      with:
        repo_name: '{{repo_name}}'
  consumes:
  - type: http
    namespace: okta
    baseUri: https://american-eagle-outfitters.okta.com/api/v1
    authentication:
      type: apiKey
      key: $secrets.okta_api_token
      header: Authorization
    resources:
    - name: resources
      path: /resources/{{resource_id}}
      operations:
      - name: american_repository_info_looku
        method: GET
Open in Framework → View in Fleet → american-eagle-outfitters-repository-info-lookup.yml

Tracks spending against budgets, forecasts overruns, creates alerts, and notifies finance leaders.

naftiko: '0.5'
info:
  label: Cost Center Budget Tracking Pipeline
  description: Tracks spending against budgets, forecasts overruns, creates alerts, and notifies finance leaders.
  tags:
  - finance
  - snowflake
  - powerbi
  - slack
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: cost_center_budget_tracking
      description: Orchestrate cost center budget tracking 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-powerbi
        type: call
        call: powerbi.process-resource
        with:
          data: '{{get-snowflake.result}}'
      - name: create-slack
        type: call
        call: slack.create-resource
        with:
          channel: '{{notification_channel}}'
          text: Cost Center Budget Tracking Pipeline step 3 complete.
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://american-eagle-outfitters.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: 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: powerbi-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
Open in Framework → View in Fleet → cost-center-budget-tracking-pipeline.yml

Retrieves the current sprint status from Jira including total story points, completed points, and remaining work for the AEO digital team.

naftiko: '0.5'
info:
  label: Jira Sprint Progress Tracker
  description: Retrieves the current sprint status from Jira including total story points, completed points, and remaining work for the AEO digital team.
  tags:
  - project-management
  - jira
  - agile
capability:
  exposes:
  - type: mcp
    namespace: sprint-tracking
    port: 8080
    tools:
    - name: get-sprint-progress
      description: Look up the current sprint progress for a Jira board.
      inputParameters:
      - name: board_id
        in: body
        type: string
        description: Jira board ID.
      call: jira.get-active-sprint
      with:
        board_id: '{{board_id}}'
      outputParameters:
      - name: sprint_name
        type: string
        mapping: $.values[0].name
      - name: start_date
        type: string
        mapping: $.values[0].startDate
      - name: end_date
        type: string
        mapping: $.values[0].endDate
  consumes:
  - type: http
    namespace: jira
    baseUri: https://ae-outfitters.atlassian.net/rest/agile/1.0
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: sprints
      path: /board/{{board_id}}/sprint?state=active
      inputParameters:
      - name: board_id
        in: path
      operations:
      - name: get-active-sprint
        method: GET
Open in Framework → View in Fleet → jira-sprint-progress-tracker.yml

When New Relic fires a performance degradation alert for the AEO website, creates a ServiceNow incident and notifies the SRE team in Microsoft Teams.

naftiko: '0.5'
info:
  label: New Relic Performance Alert Handler
  description: When New Relic fires a performance degradation alert for the AEO website, creates a ServiceNow incident and notifies the SRE team in Microsoft Teams.
  tags:
  - monitoring
  - devops
  - new-relic
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: perf-alerting
    port: 8080
    tools:
    - name: handle-perf-alert
      description: Process a New Relic performance alert and route to incident management.
      inputParameters:
      - name: alert_id
        in: body
        type: string
        description: New Relic alert policy ID.
      - name: condition_name
        in: body
        type: string
        description: Alert condition name.
      - name: severity
        in: body
        type: string
        description: Alert severity level.
      steps:
      - name: get-alert-details
        type: call
        call: newrelic.get-alert
        with:
          alert_id: '{{alert_id}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Performance alert: {{condition_name}}'
          category: infrastructure
          urgency: '{{severity}}'
          description: 'New Relic alert {{alert_id}}: {{get-alert-details.description}}'
      - name: notify-sre
        type: call
        call: msteams.send-message
        with:
          channel_id: sre_alerts
          text: 'ALERT: {{condition_name}} ({{severity}}). Incident {{create-incident.number}} opened.'
  consumes:
  - type: http
    namespace: newrelic
    baseUri: https://api.newrelic.com/v2
    authentication:
      type: apikey
      key: $secrets.newrelic_api_key
    resources:
    - name: alerts
      path: /alerts_violations/{{alert_id}}.json
      inputParameters:
      - name: alert_id
        in: path
      operations:
      - name: get-alert
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://ae.service-now.com/api/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
Open in Framework → View in Fleet → new-relic-performance-alert-handler.yml

Analyzes resource utilization trends, forecasts capacity needs, creates procurement requests, and reports.

naftiko: '0.5'
info:
  label: Capacity Planning Forecast Pipeline
  description: Analyzes resource utilization trends, forecasts capacity needs, creates procurement requests, and reports.
  tags:
  - infrastructure
  - grafana
  - snowflake
  - powerbi
capability:
  exposes:
  - type: mcp
    namespace: infrastructure
    port: 8080
    tools:
    - name: capacity_planning_forecast_pipeline
      description: Orchestrate capacity planning forecast pipeline workflow.
      inputParameters:
      - name: resource_id
        in: body
        type: string
        description: Primary resource identifier.
      steps:
      - name: get-grafana
        type: call
        call: grafana.get-resource
        with:
          resource_id: '{{resource_id}}'
      - name: process-snowflake
        type: call
        call: snowflake.process-resource
        with:
          data: '{{get-grafana.result}}'
      - name: create-powerbi
        type: call
        call: powerbi.create-resource
        with:
          channel: '{{notification_channel}}'
          text: Capacity Planning Forecast Pipeline step 3 complete.
  consumes:
  - type: http
    namespace: grafana
    baseUri: https://american-eagle-outfitters-grafana.com/api
    authentication:
      type: bearer
      token: $secrets.grafana_api_key
    resources:
    - name: resources
      path: /resources/{{resource_id}}
      operations:
      - name: grafana-op
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://american-eagle-outfitters.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: 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: powerbi-op
        method: POST
Open in Framework → View in Fleet → capacity-planning-forecast-pipeline.yml

Compares deployed state against desired config, identifies drift, creates remediation tickets, and alerts ops.

naftiko: '0.5'
info:
  label: Infrastructure Drift Detection Pipeline
  description: Compares deployed state against desired config, identifies drift, creates remediation tickets, and alerts ops.
  tags:
  - devops
  - github
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: devops
    port: 8080
    tools:
    - name: infrastructure_drift_detection
      description: Orchestrate infrastructure drift detection pipeline workflow.
      inputParameters:
      - name: resource_id
        in: body
        type: string
        description: Primary resource identifier.
      steps:
      - name: get-github
        type: call
        call: github.get-resource
        with:
          resource_id: '{{resource_id}}'
      - name: process-jira
        type: call
        call: jira.process-resource
        with:
          data: '{{get-github.result}}'
      - name: create-slack
        type: call
        call: slack.create-resource
        with:
          channel: '{{notification_channel}}'
          text: Infrastructure Drift Detection Pipeline step 3 complete.
  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-op
        method: POST
  - type: http
    namespace: jira
    baseUri: https://american-eagle-outfitters.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
Open in Framework → View in Fleet → infrastructure-drift-detection-pipeline.yml

Appends a row to a Google Sheets spreadsheet. Reusable logging building block.

naftiko: '0.5'
info:
  label: Google Sheets Row Logger
  description: Appends a row to a Google Sheets spreadsheet. Reusable logging building block.
  tags:
  - productivity
  - google-sheets
  - logging
capability:
  exposes:
  - type: mcp
    namespace: sheets-logger
    port: 8080
    tools:
    - name: log-to-sheet
      description: Append a row of data to a Google Sheets spreadsheet.
      inputParameters:
      - name: spreadsheet_id
        in: body
        type: string
        description: Spreadsheet ID.
      - name: range
        in: body
        type: string
        description: Sheet range.
      - name: values
        in: body
        type: array
        description: Row values.
      call: gsheets.append-row
      with:
        spreadsheet_id: '{{spreadsheet_id}}'
        range: '{{range}}'
        values: '{{values}}'
  consumes:
  - 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
Open in Framework → View in Fleet → google-sheets-row-logger.yml

Looks up a purchase order in Oracle E-Business Suite by PO number and returns the approval status, vendor name, and total amount.

naftiko: '0.5'
info:
  label: Oracle E-Business Suite Purchase Order Status
  description: Looks up a purchase order in Oracle E-Business Suite by PO number and returns the approval status, vendor name, and total amount.
  tags:
  - procurement
  - erp
  - oracle-e-business-suite
capability:
  exposes:
  - type: mcp
    namespace: procurement
    port: 8080
    tools:
    - name: get-po-status
      description: Look up an Oracle EBS purchase order by number.
      inputParameters:
      - name: po_number
        in: body
        type: string
        description: Oracle EBS purchase order number.
      call: oracle-ebs.get-po
      with:
        po_number: '{{po_number}}'
      outputParameters:
      - name: approval_status
        type: string
        mapping: $.AUTHORIZATION_STATUS
      - name: vendor_name
        type: string
        mapping: $.VENDOR_NAME
      - name: total_amount
        type: number
        mapping: $.TOTAL_AMOUNT
  consumes:
  - type: http
    namespace: oracle-ebs
    baseUri: https://erp.ae.com/webservices/rest/v1
    authentication:
      type: basic
      username: $secrets.oracle_ebs_user
      password: $secrets.oracle_ebs_password
    resources:
    - name: purchase-orders
      path: /purchaseOrders/{{po_number}}
      inputParameters:
      - name: po_number
        in: path
      operations:
      - name: get-po
        method: GET
Open in Framework → View in Fleet → oracle-e-business-suite-purchase-order-status.yml

Pulls market share and competitive data from Circana for the teen apparel category and returns AEO position and trend.

naftiko: '0.5'
info:
  label: Circana Market Share Report
  description: Pulls market share and competitive data from Circana for the teen apparel category and returns AEO position and trend.
  tags:
  - analytics
  - market-research
  - circana
capability:
  exposes:
  - type: mcp
    namespace: market-intelligence
    port: 8080
    tools:
    - name: get-market-share
      description: Retrieve market share data for AEO from Circana in the teen apparel category.
      inputParameters:
      - name: category
        in: body
        type: string
        description: Product category.
      - name: time_period
        in: body
        type: string
        description: Reporting time period.
      call: circana.get-market-report
      with:
        category: '{{category}}'
        time_period: '{{time_period}}'
        brand: American Eagle Outfitters
      outputParameters:
      - name: market_share_pct
        type: number
        mapping: $.brand_data.market_share
      - name: rank
        type: number
        mapping: $.brand_data.rank
      - name: trend
        type: string
        mapping: $.brand_data.trend_direction
  consumes:
  - type: http
    namespace: circana
    baseUri: https://api.circana.com/v2
    authentication:
      type: bearer
      token: $secrets.circana_token
    resources:
    - name: market-reports
      path: /reports/market-share
      operations:
      - name: get-market-report
        method: POST
Open in Framework → View in Fleet → circana-market-share-report.yml

Posts employer branding content to the AEO LinkedIn company page.

naftiko: '0.5'
info:
  label: LinkedIn Brand Content Publisher
  description: Posts employer branding content to the AEO LinkedIn company page.
  tags:
  - marketing
  - social-media
  - linkedin
capability:
  exposes:
  - type: mcp
    namespace: linkedin-publishing
    port: 8080
    tools:
    - name: post-linkedin-update
      description: Publish a company update to the AEO LinkedIn page.
      inputParameters:
      - name: text
        in: body
        type: string
        description: Post text content.
      call: linkedin.create-share
      with:
        owner: urn:li:organization:aeo
        text: '{{text}}'
      outputParameters:
      - name: post_id
        type: string
        mapping: $.id
  consumes:
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: shares
      path: /shares
      operations:
      - name: create-share
        method: POST
Open in Framework → View in Fleet → linkedin-brand-content-publisher.yml

Queries cost and spending data. Used by American Eagle Outfitters teams.

naftiko: '0.5'
info:
  label: American Eagle Outfitters Cost Report Query
  description: Queries cost and spending data. Used by American Eagle Outfitters teams.
  tags:
  - retail
  - stripe
capability:
  exposes:
  - type: mcp
    namespace: stripe
    port: 8080
    tools:
    - name: get-cost_report_query
      description: Queries cost and spending data. Used by American Eagle Outfitters teams.
      inputParameters:
      - name: cost_center
        in: body
        type: string
        description: The cost_center to look up.
      call: stripe.get-cost_center
      with:
        cost_center: '{{cost_center}}'
  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: american_cost_report_query
        method: GET
Open in Framework → View in Fleet → american-eagle-outfitters-cost-report-query.yml

Creates a ServiceNow incident for a customer issue, attaches order context from BigCommerce, and notifies the support team.

naftiko: '0.5'
info:
  label: Customer Support Ticket Creator
  description: Creates a ServiceNow incident for a customer issue, attaches order context from BigCommerce, and notifies the support team.
  tags:
  - customer-service
  - servicenow
  - bigcommerce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: customer-support
    port: 8080
    tools:
    - name: create-support-ticket
      description: Open a support ticket with order context and notify the team.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: Order ID.
      - name: customer_email
        in: body
        type: string
        description: Customer email.
      - name: issue
        in: body
        type: string
        description: Issue description.
      steps:
      - name: get-order
        type: call
        call: bigcommerce.get-order
        with:
          order_id: '{{order_id}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Customer issue: order {{order_id}}'
          description: '{{issue}} | Total: {{get-order.total_inc_tax}} | Customer: {{customer_email}}'
          category: customer_service
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          channel_id: cs_team
          text: New ticket {{create-incident.number}} for order {{order_id}}.
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/bn-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: servicenow
    baseUri: https://bn.service-now.com/api/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
Open in Framework → View in Fleet → customer-support-ticket-creator.yml

When a customer joins a B&N book club, creates the subscription in the CRM, schedules the first monthly pick email via Adobe Campaign, and logs the enrollment in Google Sheets.

naftiko: '0.5'
info:
  label: Book Club Subscription Manager
  description: When a customer joins a B&N book club, creates the subscription in the CRM, schedules the first monthly pick email via Adobe Campaign, and logs the enrollment in Google Sheets.
  tags:
  - retail
  - loyalty
  - crm
  - adobe-campaign
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: book-clubs
    port: 8080
    tools:
    - name: enroll-book-club
      description: Enroll a customer in a Barnes & Noble book club.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: Customer ID.
      - name: club_name
        in: body
        type: string
        description: Book club name.
      - name: customer_email
        in: body
        type: string
        description: Customer email.
      steps:
      - name: create-subscription
        type: call
        call: crm.create-subscription
        with:
          customer_id: '{{customer_id}}'
          club_name: '{{club_name}}'
      - name: schedule-welcome
        type: call
        call: adobe-campaign.create-delivery
        with:
          template: book_club_welcome
          label: Welcome to {{club_name}}
          recipient_email: '{{customer_email}}'
      - name: log-enrollment
        type: call
        call: gsheets.append-row
        with:
          spreadsheet_id: bn_book_clubs
          range: Enrollments!A:C
          values:
          - '{{customer_id}}'
          - '{{club_name}}'
          - active
  consumes:
  - type: http
    namespace: crm
    baseUri: https://crm.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.crm_token
    resources:
    - name: subscriptions
      path: /subscriptions
      operations:
      - name: create-subscription
        method: POST
  - type: http
    namespace: adobe-campaign
    baseUri: https://mc.adobe.io/bn/campaign
    authentication:
      type: bearer
      token: $secrets.adobe_campaign_token
    resources:
    - name: deliveries
      path: /profileAndServicesExt/delivery
      operations:
      - name: create-delivery
        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
Open in Framework → View in Fleet → book-club-subscription-manager.yml

Issues gift cards in bulk via BigCommerce for corporate promotions, logs issuance details in Google Sheets, and sends confirmation to the sales team via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Gift Card Bulk Issuance Pipeline
  description: Issues gift cards in bulk via BigCommerce for corporate promotions, logs issuance details in Google Sheets, and sends confirmation to the sales team via Microsoft Outlook.
  tags:
  - retail
  - bigcommerce
  - google-sheets
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: bulk-gc
    port: 8080
    tools:
    - name: issue-bulk-gift-cards
      description: Orchestrate bulk gift card issuance for corporate clients.
      inputParameters:
      - name: client_name
        in: body
        type: string
        description: Corporate client name.
      - name: quantity
        in: body
        type: number
        description: Number of gift cards.
      - name: amount
        in: body
        type: number
        description: Dollar amount per card.
      steps:
      - name: create-gift-cards
        type: call
        call: bigcommerce.bulk-create-gift-cards
        with:
          quantity: '{{quantity}}'
          amount: '{{amount}}'
      - name: log-issuance
        type: call
        call: gsheets.append-rows
        with:
          spreadsheet_id: bn_gift_card_log
          data: '{{client_name}},{{quantity}},{{amount}},{{create-gift-cards.batch_id}}'
      - name: confirm-sales
        type: call
        call: outlook.send-email
        with:
          to: corporate-sales@barnesandnoble.com
          subject: Bulk Gift Card Issuance - {{client_name}}
          body: '{{quantity}} gift cards of ${{amount}} each issued for {{client_name}}. Batch ID: {{create-gift-cards.batch_id}}.'
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/bn-store/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: gift-cards
      path: /marketing/gift-certificates/bulk
      operations:
      - name: bulk-create-gift-cards
        method: POST
  - type: http
    namespace: gsheets
    baseUri: https://sheets.googleapis.com/v4
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: spreadsheets
      path: /spreadsheets/{{spreadsheet_id}}/values:append
      inputParameters:
      - name: spreadsheet_id
        in: path
      operations:
      - name: append-rows
        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
Open in Framework → View in Fleet → gift-card-bulk-issuance-pipeline.yml

Processes book returns to vendor by creating an RMA in Oracle EBS, scheduling a pickup in the WMS, notifying the vendor via Microsoft Outlook, and logging in Google Sheets.

naftiko: '0.5'
info:
  label: Returns to Vendor Pipeline
  description: Processes book returns to vendor by creating an RMA in Oracle EBS, scheduling a pickup in the WMS, notifying the vendor via Microsoft Outlook, and logging in Google Sheets.
  tags:
  - retail
  - oracle-e-business-suite
  - google-sheets
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: vendor-return
    port: 8080
    tools:
    - name: process-vendor-return
      description: Orchestrate vendor return processing.
      inputParameters:
      - name: vendor_id
        in: body
        type: string
        description: Vendor ID.
      - name: isbn_list
        in: body
        type: array
        description: List of ISBNs to return.
      steps:
      - name: create-rma
        type: call
        call: oracle-ebs.create-rma
        with:
          vendor_id: '{{vendor_id}}'
          items: '{{isbn_list}}'
      - name: schedule-pickup
        type: call
        call: wms.schedule-pickup
        with:
          rma_number: '{{create-rma.rma_number}}'
          items: '{{isbn_list}}'
      - name: notify-vendor
        type: call
        call: outlook.send-email
        with:
          to: '{{create-rma.vendor_email}}'
          subject: 'Return Authorization: {{create-rma.rma_number}}'
          body: RMA {{create-rma.rma_number}} has been created. Pickup scheduled for {{schedule-pickup.pickup_date}}.
      - name: log-return
        type: call
        call: gsheets.append-rows
        with:
          spreadsheet_id: bn_vendor_returns
          data: '{{vendor_id}},{{create-rma.rma_number}},{{schedule-pickup.pickup_date}}'
  consumes:
  - type: http
    namespace: oracle-ebs
    baseUri: https://erp.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.oracle_ebs_token
    resources:
    - name: rma
      path: /return-authorizations
      operations:
      - name: create-rma
        method: POST
  - type: http
    namespace: wms
    baseUri: https://wms.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.wms_token
    resources:
    - name: pickups
      path: /pickups
      operations:
      - name: schedule-pickup
        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
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: spreadsheets
      path: /spreadsheets/{{spreadsheet_id}}/values:append
      inputParameters:
      - name: spreadsheet_id
        in: path
      operations:
      - name: append-rows
        method: POST
Open in Framework → View in Fleet → returns-to-vendor-pipeline.yml

Publishes a GTM container version for the B&N website and notifies the web team.

naftiko: '0.5'
info:
  label: Google Tag Manager Container Publisher
  description: Publishes a GTM container version for the B&N website and notifies the web team.
  tags:
  - analytics
  - google-tag-manager
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: tag-management
    port: 8080
    tools:
    - name: publish-gtm-version
      description: Publish a GTM container version and notify the team.
      inputParameters:
      - name: container_id
        in: body
        type: string
        description: GTM container ID.
      - name: version_id
        in: body
        type: string
        description: Version ID.
      steps:
      - name: publish
        type: call
        call: gtm.publish-version
        with:
          container_id: '{{container_id}}'
          version_id: '{{version_id}}'
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: web_team
          text: GTM container {{container_id}} version {{version_id}} published.
  consumes:
  - type: http
    namespace: gtm
    baseUri: https://www.googleapis.com/tagmanager/v2
    authentication:
      type: bearer
      token: $secrets.google_tagmanager_token
    resources:
    - name: versions
      path: /accounts/{{account_id}}/containers/{{container_id}}/versions/{{version_id}}:publish
      inputParameters:
      - name: container_id
        in: path
      - name: version_id
        in: path
      operations:
      - name: publish-version
        method: POST
  - 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
Open in Framework → View in Fleet → google-tag-manager-container-publisher.yml

Enriches corporate sales leads by looking up company data in ZoomInfo, updating the lead in Salesforce, and notifying the corporate sales team via Microsoft Teams.

naftiko: '0.5'
info:
  label: ZoomInfo Lead Enrichment Pipeline
  description: Enriches corporate sales leads by looking up company data in ZoomInfo, updating the lead in Salesforce, and notifying the corporate sales team via Microsoft Teams.
  tags:
  - retail
  - zoominfo
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: lead-enrich
    port: 8080
    tools:
    - name: enrich-lead
      description: Orchestrate corporate lead enrichment from ZoomInfo to Salesforce.
      inputParameters:
      - name: company_name
        in: body
        type: string
        description: Company name to enrich.
      - name: lead_id
        in: body
        type: string
        description: Salesforce lead ID.
      steps:
      - name: lookup-company
        type: call
        call: zoominfo.search-company
        with:
          company_name: '{{company_name}}'
      - name: update-lead
        type: call
        call: salesforce.update-lead
        with:
          lead_id: '{{lead_id}}'
          company_size: '{{lookup-company.employee_count}}'
          industry: '{{lookup-company.industry}}'
          revenue: '{{lookup-company.revenue}}'
      - name: notify-sales
        type: call
        call: msteams.send-message
        with:
          channel_id: corporate_sales
          text: 'Lead enriched: {{company_name}}. Employees: {{lookup-company.employee_count}}. Revenue: ${{lookup-company.revenue}}. Lead ID: {{lead_id}}.'
  consumes:
  - type: http
    namespace: zoominfo
    baseUri: https://api.zoominfo.com
    authentication:
      type: bearer
      token: $secrets.zoominfo_token
    resources:
    - name: companies
      path: /search/company
      operations:
      - name: search-company
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://barnesandnoble.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
  - 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
Open in Framework → View in Fleet → zoominfo-lead-enrichment-pipeline.yml

When a publisher shipment arrives, confirms receipt in the WMS, updates the PO in the OMS, and notifies the buying team.

naftiko: '0.5'
info:
  label: Warehouse Receiving Confirmation
  description: When a publisher shipment arrives, confirms receipt in the WMS, updates the PO in the OMS, and notifies the buying team.
  tags:
  - logistics
  - warehouse
  - wms
  - oms
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: warehouse-receiving
    port: 8080
    tools:
    - name: confirm-shipment
      description: Confirm receipt of a publisher shipment and update all systems.
      inputParameters:
      - name: shipment_id
        in: body
        type: string
        description: Shipment ID.
      - name: po_number
        in: body
        type: string
        description: PO number.
      - name: units_received
        in: body
        type: number
        description: Units received.
      steps:
      - name: confirm-wms
        type: call
        call: wms.confirm-receipt
        with:
          shipment_id: '{{shipment_id}}'
          units: '{{units_received}}'
      - name: update-po
        type: call
        call: oms.update-po-status
        with:
          po_number: '{{po_number}}'
          status: received
      - name: notify-buyers
        type: call
        call: msteams.send-message
        with:
          channel_id: buying_team
          text: 'Shipment {{shipment_id}} received: {{units_received}} units for PO {{po_number}}.'
  consumes:
  - type: http
    namespace: wms
    baseUri: https://wms.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.wms_token
    resources:
    - name: receiving
      path: /shipments/{{shipment_id}}/receive
      inputParameters:
      - name: shipment_id
        in: path
      operations:
      - name: confirm-receipt
        method: POST
  - type: http
    namespace: oms
    baseUri: https://oms.barnesandnoble.com/api/v2
    authentication:
      type: bearer
      token: $secrets.oms_token
    resources:
    - name: purchase-orders
      path: /purchase-orders/{{po_number}}/status
      inputParameters:
      - name: po_number
        in: path
      operations:
      - name: update-po-status
        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
Open in Framework → View in Fleet → warehouse-receiving-confirmation.yml

Processes a loyalty points redemption by verifying the member in Salesforce, deducting points, applying a discount in BigCommerce, and logging the transaction in Google Sheets.

naftiko: '0.5'
info:
  label: Loyalty Points Redemption Pipeline
  description: Processes a loyalty points redemption by verifying the member in Salesforce, deducting points, applying a discount in BigCommerce, and logging the transaction in Google Sheets.
  tags:
  - retail
  - salesforce
  - bigcommerce
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: loyalty-redeem
    port: 8080
    tools:
    - name: redeem-points
      description: Orchestrate loyalty points redemption across systems.
      inputParameters:
      - name: member_id
        in: body
        type: string
        description: Loyalty member ID.
      - name: points
        in: body
        type: number
        description: Points to redeem.
      - name: order_id
        in: body
        type: string
        description: Order ID to apply discount.
      steps:
      - name: verify-member
        type: call
        call: salesforce.get-member
        with:
          member_id: '{{member_id}}'
      - name: deduct-points
        type: call
        call: salesforce.update-points
        with:
          member_id: '{{member_id}}'
          deduction: '{{points}}'
      - name: apply-discount
        type: call
        call: bigcommerce.apply-coupon
        with:
          order_id: '{{order_id}}'
          discount_amount: '{{deduct-points.dollar_value}}'
      - name: log-redemption
        type: call
        call: gsheets.append-rows
        with:
          spreadsheet_id: bn_loyalty_log
          data: '{{member_id}},{{points}},{{order_id}},{{deduct-points.dollar_value}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://barnesandnoble.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: members
      path: /sobjects/Loyalty_Member__c/{{member_id}}
      inputParameters:
      - name: member_id
        in: path
      operations:
      - name: get-member
        method: GET
      - name: update-points
        method: PATCH
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/bn-store/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: orders
      path: /orders/{{order_id}}/coupons
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: apply-coupon
        method: POST
  - type: http
    namespace: gsheets
    baseUri: https://sheets.googleapis.com/v4
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: spreadsheets
      path: /spreadsheets/{{spreadsheet_id}}/values:append
      inputParameters:
      - name: spreadsheet_id
        in: path
      operations:
      - name: append-rows
        method: POST
Open in Framework → View in Fleet → loyalty-points-redemption-pipeline.yml

Pulls website traffic data from Google Analytics, loads it into a Google Sheet for archiving, refreshes the Power BI dashboard, and sends the report link via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Google Analytics to Power BI Report
  description: Pulls website traffic data from Google Analytics, loads it into a Google Sheet for archiving, refreshes the Power BI dashboard, and sends the report link via Microsoft Outlook.
  tags:
  - retail
  - google-analytics
  - google-sheets
  - power-bi
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: ga-report
    port: 8080
    tools:
    - name: generate-traffic-report
      description: Orchestrate website traffic report generation from Google Analytics to Power BI.
      inputParameters:
      - name: date_range
        in: body
        type: string
        description: Date range for the report.
      steps:
      - name: fetch-ga-data
        type: call
        call: ga.get-report
        with:
          date_range: '{{date_range}}'
          metrics: sessions,pageviews,bounceRate
      - name: archive-data
        type: call
        call: gsheets.append-rows
        with:
          spreadsheet_id: bn_ga_archive
          data: '{{fetch-ga-data.rows}}'
      - name: refresh-pbi
        type: call
        call: powerbi.refresh-dataset
        with:
          dataset_id: bn_web_traffic
      - name: email-report
        type: call
        call: outlook.send-email
        with:
          to: marketing@barnesandnoble.com
          subject: Website Traffic Report - {{date_range}}
          body: 'Sessions: {{fetch-ga-data.total_sessions}}. Pageviews: {{fetch-ga-data.total_pageviews}}. Power BI dashboard has been refreshed.'
  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
  - type: http
    namespace: gsheets
    baseUri: https://sheets.googleapis.com/v4
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: spreadsheets
      path: /spreadsheets/{{spreadsheet_id}}/values:append
      inputParameters:
      - name: spreadsheet_id
        in: path
      operations:
      - name: append-rows
        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: outlook
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: mail
      path: /me/sendMail
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → google-analytics-to-power-bi-report.yml

Retrieves a Barnes & Noble membership profile including member tier, expiration, and discount status.

naftiko: '0.5'
info:
  label: Salesforce Membership Lookup
  description: Retrieves a Barnes & Noble membership profile including member tier, expiration, and discount status.
  tags:
  - crm
  - salesforce
  - membership
capability:
  exposes:
  - type: mcp
    namespace: membership
    port: 8080
    tools:
    - name: get-membership
      description: Look up a B&N membership by contact ID.
      inputParameters:
      - name: contact_id
        in: body
        type: string
        description: Salesforce contact ID.
      call: salesforce.get-membership
      with:
        contact_id: '{{contact_id}}'
      outputParameters:
      - name: tier
        type: string
        mapping: $.Membership_Tier__c
      - name: expiration
        type: string
        mapping: $.Membership_Expiration__c
      - name: discount_pct
        type: number
        mapping: $.Member_Discount__c
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://bn.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: memberships
      path: /sobjects/Contact/{{contact_id}}?fields=Membership_Tier__c,Membership_Expiration__c,Member_Discount__c
      inputParameters:
      - name: contact_id
        in: path
      operations:
      - name: get-membership
        method: GET
Open in Framework → View in Fleet → salesforce-membership-lookup.yml

Executes a predefined sales data query against the Teradata data warehouse, returning aggregate sales figures for a given date range.

naftiko: '0.5'
info:
  label: Teradata Sales Query
  description: Executes a predefined sales data query against the Teradata data warehouse, returning aggregate sales figures for a given date range.
  tags:
  - retail
  - teradata
capability:
  exposes:
  - type: mcp
    namespace: teradata
    port: 8080
    tools:
    - name: query-sales
      description: Query Teradata for aggregate sales data by 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: teradata.run-sales-query
      with:
        start_date: '{{start_date}}'
        end_date: '{{end_date}}'
      outputParameters:
      - name: total_revenue
        type: number
        mapping: $.results.total_revenue
      - name: transaction_count
        type: number
        mapping: $.results.txn_count
  consumes:
  - type: http
    namespace: teradata
    baseUri: https://teradata.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.teradata_token
    resources:
    - name: queries
      path: /queries/sales
      operations:
      - name: run-sales-query
        method: POST
Open in Framework → View in Fleet → teradata-sales-query.yml

When an author event is confirmed, creates the event in the store calendar system, posts an announcement to Facebook and Instagram, sends an invitation email via Adobe Campaign, and creates a Jira task for the events team.

naftiko: '0.5'
info:
  label: Author Event Booking Orchestrator
  description: When an author event is confirmed, creates the event in the store calendar system, posts an announcement to Facebook and Instagram, sends an invitation email via Adobe Campaign, and creates a Jira task for the events team.
  tags:
  - retail
  - events
  - facebook
  - instagram
  - adobe-campaign
  - jira
capability:
  exposes:
  - type: mcp
    namespace: author-events
    port: 8080
    tools:
    - name: book-author-event
      description: Coordinate an author signing or reading event across all channels.
      inputParameters:
      - name: author_name
        in: body
        type: string
        description: Author name.
      - name: book_title
        in: body
        type: string
        description: Featured book title.
      - name: store_id
        in: body
        type: string
        description: Store hosting the event.
      - name: event_date
        in: body
        type: string
        description: Event date and time.
      steps:
      - name: create-event
        type: call
        call: events.create-store-event
        with:
          store_id: '{{store_id}}'
          title: 'Author Event: {{author_name}} - {{book_title}}'
          date: '{{event_date}}'
      - name: post-facebook
        type: call
        call: facebook.create-event-post
        with:
          text: 'Join us at Barnes & Noble for a signing with {{author_name}}, author of {{book_title}}! {{event_date}}. #BNEvents'
      - name: post-instagram
        type: call
        call: instagram.create-post
        with:
          caption: 'Meet {{author_name}} at Barnes & Noble! {{book_title}} signing on {{event_date}}. #BNEvents #AuthorSigning'
      - name: send-invites
        type: call
        call: adobe-campaign.create-delivery
        with:
          template: author_event
          label: 'You are invited: {{author_name}} at B&N'
          scheduled_date: '{{event_date}}'
      - name: create-task
        type: call
        call: jira.create-issue
        with:
          project: EVENTS
          issue_type: Task
          summary: Prepare for {{author_name}} event at store {{store_id}}
          due_date: '{{event_date}}'
  consumes:
  - type: http
    namespace: events
    baseUri: https://events.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.events_token
    resources:
    - name: store-events
      path: /stores/{{store_id}}/events
      inputParameters:
      - name: store_id
        in: path
      operations:
      - name: create-store-event
        method: POST
  - type: http
    namespace: facebook
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.facebook_token
    resources:
    - name: posts
      path: /me/feed
      operations:
      - name: create-event-post
        method: POST
  - type: http
    namespace: instagram
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.instagram_token
    resources:
    - name: media
      path: /me/media
      operations:
      - name: create-post
        method: POST
  - type: http
    namespace: adobe-campaign
    baseUri: https://mc.adobe.io/bn/campaign
    authentication:
      type: bearer
      token: $secrets.adobe_campaign_token
    resources:
    - name: deliveries
      path: /profileAndServicesExt/delivery
      operations:
      - name: create-delivery
        method: POST
  - type: http
    namespace: jira
    baseUri: https://barnesnoble.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → author-event-booking-orchestrator.yml

Processes book club membership renewals by checking member status in Salesforce, processing payment via BigCommerce, sending a renewal confirmation via Adobe Campaign, and logging the renewal in Google Sheets.

naftiko: '0.5'
info:
  label: Book Club Renewal Pipeline
  description: Processes book club membership renewals by checking member status in Salesforce, processing payment via BigCommerce, sending a renewal confirmation via Adobe Campaign, and logging the renewal in Google Sheets.
  tags:
  - retail
  - salesforce
  - bigcommerce
  - adobe-campaign
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: club-renewal
    port: 8080
    tools:
    - name: renew-book-club
      description: Orchestrate book club membership renewal.
      inputParameters:
      - name: member_id
        in: body
        type: string
        description: Member ID.
      steps:
      - name: check-membership
        type: call
        call: salesforce.get-member
        with:
          member_id: '{{member_id}}'
      - name: process-payment
        type: call
        call: bigcommerce.create-subscription-order
        with:
          customer_id: '{{check-membership.customer_id}}'
          plan: book_club_annual
      - name: send-confirmation
        type: call
        call: adobe-campaign.create-delivery
        with:
          template: club_renewal
          label: Book Club Renewal Confirmation
          recipient_id: '{{member_id}}'
      - name: log-renewal
        type: call
        call: gsheets.append-rows
        with:
          spreadsheet_id: bn_club_renewals
          data: '{{member_id}},{{process-payment.order_id}},renewed'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://barnesandnoble.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: members
      path: /sobjects/Loyalty_Member__c/{{member_id}}
      inputParameters:
      - name: member_id
        in: path
      operations:
      - name: get-member
        method: GET
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/bn-store/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: subscriptions
      path: /orders
      operations:
      - name: create-subscription-order
        method: POST
  - type: http
    namespace: adobe-campaign
    baseUri: https://mc.adobe.io/bn/campaign
    authentication:
      type: bearer
      token: $secrets.adobe_campaign_token
    resources:
    - name: deliveries
      path: /profileAndServicesExt/delivery
      operations:
      - name: create-delivery
        method: POST
  - type: http
    namespace: gsheets
    baseUri: https://sheets.googleapis.com/v4
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: spreadsheets
      path: /spreadsheets/{{spreadsheet_id}}/values:append
      inputParameters:
      - name: spreadsheet_id
        in: path
      operations:
      - name: append-rows
        method: POST
Open in Framework → View in Fleet → book-club-renewal-pipeline.yml

Pulls open invoices from Oracle E-Business Suite, matches them against purchase orders, flags discrepancies in a Google Sheet, and notifies the accounts payable team via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Supplier Invoice Reconciliation Pipeline
  description: Pulls open invoices from Oracle E-Business Suite, matches them against purchase orders, flags discrepancies in a Google Sheet, and notifies the accounts payable team via Microsoft Outlook.
  tags:
  - retail
  - oracle-e-business-suite
  - google-sheets
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: invoice-recon
    port: 8080
    tools:
    - name: reconcile-invoices
      description: Orchestrate supplier invoice reconciliation against purchase orders.
      inputParameters:
      - name: supplier_id
        in: body
        type: string
        description: Supplier ID to reconcile.
      - name: period
        in: body
        type: string
        description: Accounting period.
      steps:
      - name: get-invoices
        type: call
        call: oracle-ebs.list-invoices
        with:
          supplier_id: '{{supplier_id}}'
          period: '{{period}}'
      - name: get-purchase-orders
        type: call
        call: oracle-ebs.list-pos
        with:
          supplier_id: '{{supplier_id}}'
          period: '{{period}}'
      - name: log-discrepancies
        type: call
        call: gsheets.append-rows
        with:
          spreadsheet_id: bn_invoice_recon
          data: '{{get-invoices.discrepancies}}'
      - name: notify-ap
        type: call
        call: outlook.send-email
        with:
          to: ap-team@barnesandnoble.com
          subject: 'Invoice Reconciliation: {{supplier_id}} - {{period}}'
          body: Reconciliation complete. {{get-invoices.discrepancy_count}} discrepancies found. See Google Sheet for details.
  consumes:
  - type: http
    namespace: oracle-ebs
    baseUri: https://erp.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.oracle_ebs_token
    resources:
    - name: invoices
      path: /invoices
      operations:
      - name: list-invoices
        method: GET
    - name: purchase-orders
      path: /purchase-orders
      operations:
      - name: list-pos
        method: GET
  - type: http
    namespace: gsheets
    baseUri: https://sheets.googleapis.com/v4
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: spreadsheets
      path: /spreadsheets/{{spreadsheet_id}}/values:append
      inputParameters:
      - name: spreadsheet_id
        in: path
      operations:
      - name: append-rows
        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
Open in Framework → View in Fleet → supplier-invoice-reconciliation-pipeline.yml

Queries the current balance and expiration date for a Barnes & Noble gift card.

naftiko: '0.5'
info:
  label: Gift Card Balance Checker
  description: Queries the current balance and expiration date for a Barnes & Noble gift card.
  tags:
  - retail
  - payments
  - gift-cards
capability:
  exposes:
  - type: mcp
    namespace: gift-cards
    port: 8080
    tools:
    - name: check-balance
      description: Look up the balance for a B&N gift card.
      inputParameters:
      - name: card_number
        in: body
        type: string
        description: Gift card number.
      call: payments.get-gift-card
      with:
        card_number: '{{card_number}}'
      outputParameters:
      - name: balance
        type: number
        mapping: $.gift_card.balance
      - name: expires_at
        type: string
        mapping: $.gift_card.expires_at
  consumes:
  - type: http
    namespace: payments
    baseUri: https://payments.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.payments_token
    resources:
    - name: gift-cards
      path: /gift-cards/{{card_number}}
      inputParameters:
      - name: card_number
        in: path
      operations:
      - name: get-gift-card
        method: GET
Open in Framework → View in Fleet → gift-card-balance-checker.yml

Retrieves the status, assignee, and due date for a Jira issue.

naftiko: '0.5'
info:
  label: Jira Task Status Lookup
  description: Retrieves the status, assignee, and due date for a Jira issue.
  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.
      inputParameters:
      - name: issue_key
        in: body
        type: string
        description: Jira issue key.
      call: jira.get-issue
      with:
        issue_key: '{{issue_key}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.fields.status.name
      - name: assignee
        type: string
        mapping: $.fields.assignee.displayName
      - name: due_date
        type: string
        mapping: $.fields.duedate
  consumes:
  - type: http
    namespace: jira
    baseUri: https://barnesnoble.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
Open in Framework → View in Fleet → jira-task-status-lookup.yml

Processes magazine subscription fulfillment by checking subscriber status in Salesforce, creating a shipment in the WMS, sending tracking info via Adobe Campaign, and logging in Google Sheets.

naftiko: '0.5'
info:
  label: Magazine Subscription Fulfillment Pipeline
  description: Processes magazine subscription fulfillment by checking subscriber status in Salesforce, creating a shipment in the WMS, sending tracking info via Adobe Campaign, and logging in Google Sheets.
  tags:
  - retail
  - salesforce
  - adobe-campaign
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: mag-fulfill
    port: 8080
    tools:
    - name: fulfill-subscription
      description: Orchestrate magazine subscription fulfillment.
      inputParameters:
      - name: subscriber_id
        in: body
        type: string
        description: Subscriber ID.
      - name: issue_id
        in: body
        type: string
        description: Magazine issue ID.
      steps:
      - name: check-subscriber
        type: call
        call: salesforce.get-subscriber
        with:
          subscriber_id: '{{subscriber_id}}'
      - name: create-shipment
        type: call
        call: wms.create-shipment
        with:
          subscriber_id: '{{subscriber_id}}'
          item_id: '{{issue_id}}'
          address: '{{check-subscriber.shipping_address}}'
      - name: send-tracking
        type: call
        call: adobe-campaign.create-delivery
        with:
          template: subscription_tracking
          label: Your magazine is on its way
          recipient_id: '{{subscriber_id}}'
      - name: log-fulfillment
        type: call
        call: gsheets.append-rows
        with:
          spreadsheet_id: bn_sub_fulfillment
          data: '{{subscriber_id}},{{issue_id}},{{create-shipment.tracking_number}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://barnesandnoble.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: subscribers
      path: /sobjects/Subscriber__c/{{subscriber_id}}
      inputParameters:
      - name: subscriber_id
        in: path
      operations:
      - name: get-subscriber
        method: GET
  - type: http
    namespace: wms
    baseUri: https://wms.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.wms_token
    resources:
    - name: shipments
      path: /shipments
      operations:
      - name: create-shipment
        method: POST
  - type: http
    namespace: adobe-campaign
    baseUri: https://mc.adobe.io/bn/campaign
    authentication:
      type: bearer
      token: $secrets.adobe_campaign_token
    resources:
    - name: deliveries
      path: /profileAndServicesExt/delivery
      operations:
      - name: create-delivery
        method: POST
  - type: http
    namespace: gsheets
    baseUri: https://sheets.googleapis.com/v4
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: spreadsheets
      path: /spreadsheets/{{spreadsheet_id}}/values:append
      inputParameters:
      - name: spreadsheet_id
        in: path
      operations:
      - name: append-rows
        method: POST
Open in Framework → View in Fleet → magazine-subscription-fulfillment-pipeline.yml

Pulls website traffic metrics from Google Analytics for the BN.com digital storefront.

naftiko: '0.5'
info:
  label: Google Analytics Bookstore Traffic Report
  description: Pulls website traffic metrics from Google Analytics for the BN.com digital storefront.
  tags:
  - analytics
  - e-commerce
  - google-analytics
capability:
  exposes:
  - type: mcp
    namespace: web-analytics
    port: 8080
    tools:
    - name: get-traffic-report
      description: Retrieve traffic metrics for the Barnes & Noble website.
      inputParameters:
      - name: start_date
        in: body
        type: string
        description: Start date.
      - name: end_date
        in: body
        type: string
        description: End date.
      call: ga.get-report
      with:
        view_id: bn_web
        start_date: '{{start_date}}'
        end_date: '{{end_date}}'
        metrics: ga:sessions,ga:pageviews,ga:bounceRate
      outputParameters:
      - name: sessions
        type: number
        mapping: $.reports[0].data.totals[0].values[0]
      - name: page_views
        type: number
        mapping: $.reports[0].data.totals[0].values[1]
      - name: bounce_rate
        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-report
        method: POST
Open in Framework → View in Fleet → google-analytics-bookstore-traffic-report.yml

Processes employee termination by deactivating the account in Salesforce, creating an offboarding ticket in ServiceNow, revoking access via Azure DevOps, and notifying HR via Microsoft Teams.

naftiko: '0.5'
info:
  label: Employee Termination Pipeline
  description: Processes employee termination by deactivating the account in Salesforce, creating an offboarding ticket in ServiceNow, revoking access via Azure DevOps, and notifying HR via Microsoft Teams.
  tags:
  - retail
  - salesforce
  - servicenow
  - azure-devops
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: termination
    port: 8080
    tools:
    - name: process-termination
      description: Orchestrate employee termination workflow.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: Employee ID.
      - name: last_day
        in: body
        type: string
        description: Last working day.
      steps:
      - name: deactivate-crm
        type: call
        call: salesforce.deactivate-user
        with:
          employee_id: '{{employee_id}}'
      - name: create-offboarding
        type: call
        call: servicenow.create-request
        with:
          short_description: 'Offboarding: Employee {{employee_id}}'
          description: 'Process offboarding for employee {{employee_id}}. Last day: {{last_day}}.'
          category: hr_offboarding
      - name: revoke-access
        type: call
        call: azdo.remove-user
        with:
          user_id: '{{employee_id}}'
      - name: notify-hr
        type: call
        call: msteams.send-message
        with:
          channel_id: hr_ops
          text: 'Employee {{employee_id}} offboarding initiated. Last day: {{last_day}}. ServiceNow: {{create-offboarding.request_number}}.'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://barnesandnoble.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: users
      path: /sobjects/User/{{employee_id}}
      inputParameters:
      - name: employee_id
        in: path
      operations:
      - name: deactivate-user
        method: PATCH
  - type: http
    namespace: servicenow
    baseUri: https://barnesandnoble.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: azdo
    baseUri: https://dev.azure.com/barnesandnoble/_apis
    authentication:
      type: bearer
      token: $secrets.azdo_token
    resources:
    - name: users
      path: /graph/users/{{user_id}}?api-version=7.0
      inputParameters:
      - name: user_id
        in: path
      operations:
      - name: remove-user
        method: DELETE
  - 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
Open in Framework → View in Fleet → employee-termination-pipeline.yml

Collects recent book reviews from BigCommerce, computes average ratings, and posts a weekly summary to the product team Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Customer Review Aggregation Report
  description: Collects recent book reviews from BigCommerce, computes average ratings, and posts a weekly summary to the product team Microsoft Teams channel.
  tags:
  - retail
  - customer-feedback
  - bigcommerce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: review-analytics
    port: 8080
    tools:
    - name: aggregate-reviews
      description: Aggregate product reviews and summarize to the team.
      inputParameters:
      - name: product_id
        in: body
        type: string
        description: Product ID.
      - name: since_date
        in: body
        type: string
        description: Start date.
      steps:
      - name: get-reviews
        type: call
        call: bigcommerce.get-reviews
        with:
          product_id: '{{product_id}}'
          since: '{{since_date}}'
      - name: post-summary
        type: call
        call: msteams.send-message
        with:
          channel_id: merchandising
          text: 'Book {{product_id}} reviews since {{since_date}}: {{get-reviews.count}} reviews, avg {{get-reviews.avg_rating}}/5.'
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/bn-store/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: reviews
      path: /catalog/products/{{product_id}}/reviews
      inputParameters:
      - name: product_id
        in: path
      operations:
      - name: get-reviews
        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: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → customer-review-aggregation-report.yml

Triggers an Azure DevOps build, validates the deployment via Datadog health check, purges the Cloudflare CDN cache, and notifies the engineering team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Website Deployment Pipeline
  description: Triggers an Azure DevOps build, validates the deployment via Datadog health check, purges the Cloudflare CDN cache, and notifies the engineering team via Microsoft Teams.
  tags:
  - retail
  - azure-devops
  - datadog
  - cloudflare
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: deploy
    port: 8080
    tools:
    - name: deploy-website
      description: Orchestrate website deployment with validation and cache purge.
      inputParameters:
      - name: branch
        in: body
        type: string
        description: Git branch to deploy.
      - name: environment
        in: body
        type: string
        description: Target environment.
      steps:
      - name: trigger-build
        type: call
        call: azdo.queue-build
        with:
          branch: '{{branch}}'
          definition_id: bn-web-deploy
      - name: health-check
        type: call
        call: datadog.get-service-status
        with:
          service: bn-web-{{environment}}
      - name: purge-cache
        type: call
        call: cloudflare.purge-cache
        with:
          zone_id: bn_web_zone
          purge_everything: true
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          channel_id: engineering
          text: 'Website deployed from {{branch}} to {{environment}}. Build: {{trigger-build.build_id}}. Health: {{health-check.status}}. CDN cache purged.'
  consumes:
  - type: http
    namespace: azdo
    baseUri: https://dev.azure.com/barnesandnoble/web/_apis
    authentication:
      type: bearer
      token: $secrets.azdo_token
    resources:
    - name: builds
      path: /build/builds?api-version=7.0
      operations:
      - name: queue-build
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apiKey
      key: $secrets.datadog_api_key
    resources:
    - name: service-checks
      path: /check_run
      operations:
      - name: get-service-status
        method: GET
  - type: http
    namespace: cloudflare
    baseUri: https://api.cloudflare.com/client/v4
    authentication:
      type: bearer
      token: $secrets.cloudflare_token
    resources:
    - name: cache
      path: /zones/{{zone_id}}/purge_cache
      inputParameters:
      - name: zone_id
        in: path
      operations:
      - name: purge-cache
        method: POST
  - 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
Open in Framework → View in Fleet → website-deployment-pipeline.yml

Investigates inventory shrinkage by pulling variance data from the WMS, querying POS transactions in BigCommerce, creating a Jira investigation task, and alerting loss prevention via Microsoft Teams.

naftiko: '0.5'
info:
  label: Inventory Shrinkage Investigation Pipeline
  description: Investigates inventory shrinkage by pulling variance data from the WMS, querying POS transactions in BigCommerce, creating a Jira investigation task, and alerting loss prevention via Microsoft Teams.
  tags:
  - retail
  - bigcommerce
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: shrinkage
    port: 8080
    tools:
    - name: investigate-shrinkage
      description: Orchestrate inventory shrinkage investigation.
      inputParameters:
      - name: store_code
        in: body
        type: string
        description: Store code.
      - name: isbn
        in: body
        type: string
        description: ISBN of item with shrinkage.
      steps:
      - name: get-variance
        type: call
        call: wms.get-variance-report
        with:
          store_code: '{{store_code}}'
          isbn: '{{isbn}}'
      - name: get-transactions
        type: call
        call: bigcommerce.get-order-history
        with:
          sku: '{{isbn}}'
          store_code: '{{store_code}}'
      - name: create-investigation
        type: call
        call: jira.create-issue
        with:
          project: LP
          summary: 'Shrinkage Investigation: ISBN {{isbn}} at store {{store_code}}'
          issue_type: Task
          description: 'Variance: {{get-variance.variance_units}} units. POS transactions: {{get-transactions.transaction_count}}.'
      - name: alert-lp
        type: call
        call: msteams.send-message
        with:
          channel_id: loss_prevention
          text: 'Shrinkage alert: ISBN {{isbn}} at store {{store_code}}. Variance: {{get-variance.variance_units}} units. Investigation: {{create-investigation.issue_key}}.'
  consumes:
  - type: http
    namespace: wms
    baseUri: https://wms.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.wms_token
    resources:
    - name: variance
      path: /reports/variance
      operations:
      - name: get-variance-report
        method: GET
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/bn-store/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: orders
      path: /orders
      operations:
      - name: get-order-history
        method: GET
  - type: http
    namespace: jira
    baseUri: https://barnesandnoble.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → inventory-shrinkage-investigation-pipeline.yml

Handles a customer complaint by looking up the customer in Salesforce, creating a ServiceNow case, issuing a gift card via BigCommerce, and sending a resolution email via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Customer Complaint Resolution Pipeline
  description: Handles a customer complaint by looking up the customer in Salesforce, creating a ServiceNow case, issuing a gift card via BigCommerce, and sending a resolution email via Microsoft Outlook.
  tags:
  - retail
  - salesforce
  - servicenow
  - bigcommerce
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: complaint
    port: 8080
    tools:
    - name: resolve-complaint
      description: Orchestrate customer complaint resolution workflow.
      inputParameters:
      - name: customer_email
        in: body
        type: string
        description: Customer email.
      - name: complaint_text
        in: body
        type: string
        description: Complaint description.
      - name: gift_card_amount
        in: body
        type: number
        description: Gift card compensation amount.
      steps:
      - name: lookup-customer
        type: call
        call: salesforce.get-contact
        with:
          email: '{{customer_email}}'
      - name: create-case
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Customer complaint: {{customer_email}}'
          description: '{{complaint_text}}'
          caller_id: '{{lookup-customer.contact_id}}'
      - name: issue-gift-card
        type: call
        call: bigcommerce.create-gift-card
        with:
          amount: '{{gift_card_amount}}'
          recipient_email: '{{customer_email}}'
      - name: send-resolution
        type: call
        call: outlook.send-email
        with:
          to: '{{customer_email}}'
          subject: Your Barnes & Noble Complaint - Resolution
          body: 'We apologize for the inconvenience. A ${{gift_card_amount}} gift card has been sent to your email. Case ref: {{create-case.incident_number}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://barnesandnoble.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: contacts
      path: /sobjects/Contact
      operations:
      - name: get-contact
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://barnesandnoble.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: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/bn-store/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: gift-cards
      path: /marketing/gift-certificates
      operations:
      - name: create-gift-card
        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
Open in Framework → View in Fleet → customer-complaint-resolution-pipeline.yml

Publishes a new Google Tag Manager container version, validates tracking via Google Analytics, and notifies the analytics team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Google Tag Manager Deployment Pipeline
  description: Publishes a new Google Tag Manager container version, validates tracking via Google Analytics, and notifies the analytics team via Microsoft Teams.
  tags:
  - retail
  - google-tag-manager
  - google-analytics
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: gtm-deploy
    port: 8080
    tools:
    - name: deploy-gtm-container
      description: Orchestrate GTM container deployment with validation.
      inputParameters:
      - name: container_id
        in: body
        type: string
        description: GTM container ID.
      - name: version_id
        in: body
        type: string
        description: Version to publish.
      steps:
      - name: publish-container
        type: call
        call: gtm.publish-version
        with:
          container_id: '{{container_id}}'
          version_id: '{{version_id}}'
      - name: validate-tracking
        type: call
        call: ga.get-realtime
        with:
          property_id: bn_web
      - name: notify-analytics
        type: call
        call: msteams.send-message
        with:
          channel_id: analytics
          text: 'GTM container {{container_id}} version {{version_id}} published. Real-time active users: {{validate-tracking.active_users}}.'
  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/{{account_id}}/containers/{{container_id}}/versions/{{version_id}}:publish
      inputParameters:
      - name: container_id
        in: path
      - name: version_id
        in: path
      operations:
      - name: publish-version
        method: POST
  - type: http
    namespace: ga
    baseUri: https://analyticsdata.googleapis.com/v1beta
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: realtime
      path: /properties/{{property_id}}:runRealtimeReport
      operations:
      - name: get-realtime
        method: POST
  - 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
Open in Framework → View in Fleet → google-tag-manager-deployment-pipeline.yml

Triggers an Azure Data Factory pipeline run to refresh data warehouse tables with the latest transactional data.

naftiko: '0.5'
info:
  label: Azure Data Factory Pipeline Trigger
  description: Triggers an Azure Data Factory pipeline run to refresh data warehouse tables with the latest transactional data.
  tags:
  - retail
  - azure-data-factory
capability:
  exposes:
  - type: mcp
    namespace: adf
    port: 8080
    tools:
    - name: trigger-pipeline
      description: Trigger an Azure Data Factory pipeline run.
      inputParameters:
      - name: pipeline_name
        in: body
        type: string
        description: Name of the ADF pipeline.
      call: adf.create-pipeline-run
      with:
        pipeline_name: '{{pipeline_name}}'
      outputParameters:
      - name: run_id
        type: string
        mapping: $.runId
  consumes:
  - type: http
    namespace: adf
    baseUri: https://management.azure.com/subscriptions/{{sub_id}}/resourceGroups/bn-rg/providers/Microsoft.DataFactory/factories/bn-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
Open in Framework → View in Fleet → azure-data-factory-pipeline-trigger.yml

Queries Dynatrace for real-time performance metrics of the B&N e-commerce platform.

naftiko: '0.5'
info:
  label: Dynatrace Application Performance Monitor
  description: Queries Dynatrace for real-time performance metrics of the B&N e-commerce platform.
  tags:
  - monitoring
  - devops
  - dynatrace
capability:
  exposes:
  - type: mcp
    namespace: apm
    port: 8080
    tools:
    - name: get-app-performance
      description: Retrieve application performance metrics from Dynatrace.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: Dynatrace entity ID.
      call: dynatrace.get-metrics
      with:
        entity_id: '{{entity_id}}'
      outputParameters:
      - name: response_time
        type: number
        mapping: $.dataPoints[0].values[0]
      - name: error_rate
        type: number
        mapping: $.dataPoints[1].values[0]
  consumes:
  - type: http
    namespace: dynatrace
    baseUri: https://bn.live.dynatrace.com/api/v2
    authentication:
      type: bearer
      token: $secrets.dynatrace_token
    resources:
    - name: metrics
      path: /metrics/query?entitySelector=entityId({{entity_id}})
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-metrics
        method: GET
Open in Framework → View in Fleet → dynatrace-application-performance-monitor.yml

Compares shipping rates across carriers for a book order and returns the cheapest option.

naftiko: '0.5'
info:
  label: Shipping Rate Comparison
  description: Compares shipping rates across carriers for a book order and returns the cheapest option.
  tags:
  - logistics
  - shipping
capability:
  exposes:
  - type: mcp
    namespace: shipping
    port: 8080
    tools:
    - name: compare-rates
      description: Get shipping rates from multiple carriers for a package.
      inputParameters:
      - name: weight_lbs
        in: body
        type: number
        description: Package weight.
      - name: origin_zip
        in: body
        type: string
        description: Origin ZIP.
      - name: destination_zip
        in: body
        type: string
        description: Destination ZIP.
      steps:
      - name: ups-rate
        type: call
        call: ups.get-rate
        with:
          weight: '{{weight_lbs}}'
          origin: '{{origin_zip}}'
          destination: '{{destination_zip}}'
      - name: usps-rate
        type: call
        call: usps.get-rate
        with:
          weight: '{{weight_lbs}}'
          origin: '{{origin_zip}}'
          destination: '{{destination_zip}}'
  consumes:
  - type: http
    namespace: ups
    baseUri: https://onlinetools.ups.com/api
    authentication:
      type: bearer
      token: $secrets.ups_token
    resources:
    - name: rating
      path: /rating/v1/rate
      operations:
      - name: get-rate
        method: POST
  - type: http
    namespace: usps
    baseUri: https://secure.shippingapis.com/ShippingAPI.dll
    authentication:
      type: apikey
      key: $secrets.usps_user_id
    resources:
    - name: rate-calc
      path: ?API=RateV4
      operations:
      - name: get-rate
        method: GET
Open in Framework → View in Fleet → shipping-rate-comparison.yml

When a new e-book is published, syncs the digital catalog with the Nook platform, updates availability in BigCommerce, and notifies the digital content team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Nook E-Reader Content Sync
  description: When a new e-book is published, syncs the digital catalog with the Nook platform, updates availability in BigCommerce, and notifies the digital content team via Microsoft Teams.
  tags:
  - retail
  - publishing
  - e-books
  - bigcommerce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nook-content
    port: 8080
    tools:
    - name: sync-ebook
      description: Sync a new e-book to the Nook platform and update the online store.
      inputParameters:
      - name: isbn
        in: body
        type: string
        description: E-book ISBN.
      - name: title
        in: body
        type: string
        description: Book title.
      - name: format
        in: body
        type: string
        description: Digital format such as epub or pdf.
      steps:
      - name: publish-nook
        type: call
        call: nook.publish-ebook
        with:
          isbn: '{{isbn}}'
          format: '{{format}}'
      - name: update-bigcommerce
        type: call
        call: bigcommerce.update-product
        with:
          isbn: '{{isbn}}'
          nook_available: true
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          channel_id: digital_content
          text: E-book {{title}} ({{isbn}}) now available on Nook in {{format}} format.
  consumes:
  - type: http
    namespace: nook
    baseUri: https://nook-api.barnesandnoble.com/v1
    authentication:
      type: bearer
      token: $secrets.nook_token
    resources:
    - name: ebooks
      path: /ebooks
      operations:
      - name: publish-ebook
        method: POST
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/bn-store/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: products
      path: /catalog/products
      operations:
      - name: update-product
        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
Open in Framework → View in Fleet → nook-e-reader-content-sync.yml

Queries the warehouse management system for current stock levels of a book by ISBN across all store locations and the distribution center.

naftiko: '0.5'
info:
  label: Book Inventory Lookup by ISBN
  description: Queries the warehouse management system for current stock levels of a book by ISBN across all store locations and the distribution center.
  tags:
  - retail
  - inventory
  - books
  - wms
capability:
  exposes:
  - type: mcp
    namespace: inventory
    port: 8080
    tools:
    - name: get-book-inventory
      description: Look up current inventory for a book by ISBN across all locations.
      inputParameters:
      - name: isbn
        in: body
        type: string
        description: Book ISBN.
      call: wms.get-inventory
      with:
        isbn: '{{isbn}}'
      outputParameters:
      - name: total_units
        type: number
        mapping: $.data.total_available
      - name: store_breakdown
        type: array
        mapping: $.data.locations
      - name: dc_units
        type: number
        mapping: $.data.dc_available
  consumes:
  - type: http
    namespace: wms
    baseUri: https://wms.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.wms_token
    resources:
    - name: inventory
      path: /inventory/{{isbn}}
      inputParameters:
      - name: isbn
        in: path
      operations:
      - name: get-inventory
        method: GET
Open in Framework → View in Fleet → book-inventory-lookup-by-isbn.yml

Checks open positions in Jira HR project, reposts expiring job listings on LinkedIn, and notifies the recruiting team via Microsoft Teams.

naftiko: '0.5'
info:
  label: LinkedIn Job Reposting Pipeline
  description: Checks open positions in Jira HR project, reposts expiring job listings on LinkedIn, and notifies the recruiting team via Microsoft Teams.
  tags:
  - retail
  - jira
  - linkedin
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: job-repost
    port: 8080
    tools:
    - name: repost-expired-jobs
      description: Orchestrate LinkedIn job reposting for expiring listings.
      inputParameters:
      - name: days_until_expiry
        in: body
        type: number
        description: Repost jobs expiring within this many days.
      steps:
      - name: get-expiring-jobs
        type: call
        call: jira.search-issues
        with:
          jql: project = HR AND status = Open AND duedate <= {{days_until_expiry}}d
      - name: repost-linkedin
        type: call
        call: linkedin.create-job-post
        with:
          job_data: '{{get-expiring-jobs.issues}}'
      - name: notify-recruiting
        type: call
        call: msteams.send-message
        with:
          channel_id: recruiting
          text: '{{get-expiring-jobs.total}} job listings reposted on LinkedIn.'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://barnesandnoble.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: search
      path: /search
      operations:
      - name: search-issues
        method: POST
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: job-posts
      path: /simpleJobPostings
      operations:
      - name: create-job-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/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → linkedin-job-reposting-pipeline.yml

Queries Oracle E-Business Suite for supplier information by supplier name or ID, returning vendor details and payment terms.

naftiko: '0.5'
info:
  label: Oracle E-Business Suite Supplier Lookup
  description: Queries Oracle E-Business Suite for supplier information by supplier name or ID, returning vendor details and payment terms.
  tags:
  - retail
  - oracle-e-business-suite
capability:
  exposes:
  - type: mcp
    namespace: oracle-ebs
    port: 8080
    tools:
    - name: get-supplier
      description: Look up supplier details in Oracle EBS.
      inputParameters:
      - name: supplier_id
        in: body
        type: string
        description: Supplier ID.
      call: oracle-ebs.get-vendor
      with:
        supplier_id: '{{supplier_id}}'
      outputParameters:
      - name: vendor_name
        type: string
        mapping: $.data.vendor_name
      - name: payment_terms
        type: string
        mapping: $.data.payment_terms
      - name: status
        type: string
        mapping: $.data.vendor_status
  consumes:
  - type: http
    namespace: oracle-ebs
    baseUri: https://erp.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.oracle_ebs_token
    resources:
    - name: suppliers
      path: /suppliers/{{supplier_id}}
      inputParameters:
      - name: supplier_id
        in: path
      operations:
      - name: get-vendor
        method: GET
Open in Framework → View in Fleet → oracle-e-business-suite-supplier-lookup.yml

When a store WiFi outage is detected via SolarWinds, creates a ServiceNow incident, notifies the IT team via Microsoft Teams, and escalates to the network vendor via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Store WiFi Outage Response Pipeline
  description: When a store WiFi outage is detected via SolarWinds, creates a ServiceNow incident, notifies the IT team via Microsoft Teams, and escalates to the network vendor via Microsoft Outlook.
  tags:
  - retail
  - solarwinds
  - servicenow
  - microsoft-teams
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: wifi-outage
    port: 8080
    tools:
    - name: handle-wifi-outage
      description: Orchestrate store WiFi outage response.
      inputParameters:
      - name: store_code
        in: body
        type: string
        description: Affected store code.
      - name: device_id
        in: body
        type: string
        description: Network device ID.
      steps:
      - name: get-device-status
        type: call
        call: solarwinds.get-node-status
        with:
          node_id: '{{device_id}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: WiFi outage at store {{store_code}}
          description: 'Device {{device_id}} status: {{get-device-status.status}}. Last seen: {{get-device-status.last_seen}}.'
          urgency: '1'
      - name: notify-it
        type: call
        call: msteams.send-message
        with:
          channel_id: it_network
          text: 'WiFi outage at store {{store_code}}. Device: {{device_id}}. Incident: {{create-incident.incident_number}}.'
      - name: escalate-vendor
        type: call
        call: outlook.send-email
        with:
          to: support@network-vendor.com
          subject: 'Urgent: WiFi outage at B&N store {{store_code}}'
          body: 'Device {{device_id}} is down. Incident ref: {{create-incident.incident_number}}. Please investigate immediately.'
  consumes:
  - type: http
    namespace: solarwinds
    baseUri: https://solarwinds.barnesandnoble.com:17778/SolarWinds/InformationService/v3/Json
    authentication:
      type: basic
      username: $secrets.solarwinds_user
      password: $secrets.solarwinds_pass
    resources:
    - name: nodes
      path: /Query?query=SELECT+Status+FROM+Orion.Nodes+WHERE+NodeID={{node_id}}
      inputParameters:
      - name: node_id
        in: query
      operations:
      - name: get-node-status
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://barnesandnoble.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: 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
  - type: http
    namespace: outlook
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: mail
      path: /me/sendMail
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → store-wifi-outage-response-pipeline.yml

Triggers a refresh of a specified Tableau workbook, updating all data extracts with the latest data from source systems.

naftiko: '0.5'
info:
  label: Tableau Workbook Refresh
  description: Triggers a refresh of a specified Tableau workbook, updating all data extracts with the latest data from source systems.
  tags:
  - retail
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: tableau
    port: 8080
    tools:
    - name: refresh-workbook
      description: Trigger a Tableau workbook data extract refresh.
      inputParameters:
      - name: workbook_id
        in: body
        type: string
        description: Tableau workbook ID.
      call: tableau.refresh-workbook
      with:
        workbook_id: '{{workbook_id}}'
      outputParameters:
      - name: job_id
        type: string
        mapping: $.job.id
      - name: status
        type: string
        mapping: $.job.status
  consumes:
  - type: http
    namespace: tableau
    baseUri: https://tableau.barnesandnoble.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: workbooks
      path: /sites/{{site_id}}/workbooks/{{workbook_id}}/refresh
      inputParameters:
      - name: workbook_id
        in: path
      operations:
      - name: refresh-workbook
        method: POST
Open in Framework → View in Fleet → tableau-workbook-refresh.yml

Monitors bookstagram hashtag engagement and posts a weekly summary to the marketing team in Microsoft Teams.

naftiko: '0.5'
info:
  label: Instagram Bookstagram Engagement Tracker
  description: Monitors bookstagram hashtag engagement and posts a weekly summary to the marketing team in Microsoft Teams.
  tags:
  - marketing
  - social-media
  - instagram
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: bookstagram
    port: 8080
    tools:
    - name: track-bookstagram
      description: Monitor bookstagram engagement and report to the marketing team.
      inputParameters:
      - name: hashtags
        in: body
        type: array
        description: Hashtags to track.
      - name: period
        in: body
        type: string
        description: Reporting period.
      steps:
      - name: get-metrics
        type: call
        call: instagram.get-hashtag-metrics
        with:
          hashtags: '{{hashtags}}'
          period: '{{period}}'
      - name: post-summary
        type: call
        call: msteams.send-message
        with:
          channel_id: marketing_social
          text: 'Bookstagram weekly report: {{get-metrics.total_posts}} posts, {{get-metrics.total_engagement}} engagements across {{hashtags}}.'
  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: 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
Open in Framework → View in Fleet → instagram-bookstagram-engagement-tracker.yml

Retrieves sales performance by book category from Adobe Analytics including revenue, units sold, and average order value.

naftiko: '0.5'
info:
  label: Adobe Analytics Book Category Performance
  description: Retrieves sales performance by book category from Adobe Analytics including revenue, units sold, and average order value.
  tags:
  - analytics
  - publishing
  - adobe-analytics
capability:
  exposes:
  - type: mcp
    namespace: category-analytics
    port: 8080
    tools:
    - name: get-category-performance
      description: Fetch book category sales performance from Adobe Analytics.
      inputParameters:
      - name: category
        in: body
        type: string
        description: Book category such as Fiction, Non-Fiction, or Children.
      - name: date_range
        in: body
        type: string
        description: Reporting date range.
      call: adobe-analytics.get-category-report
      with:
        rsid: bn_ecommerce
        category: '{{category}}'
        date_range: '{{date_range}}'
      outputParameters:
      - name: revenue
        type: number
        mapping: $.report.data.revenue
      - name: units_sold
        type: number
        mapping: $.report.data.units
      - name: avg_order_value
        type: number
        mapping: $.report.data.avg_order_value
  consumes:
  - type: http
    namespace: adobe-analytics
    baseUri: https://analytics.adobe.io/api/bn
    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-category-report
        method: POST
Open in Framework → View in Fleet → adobe-analytics-book-category-performance.yml

Processes warehouse damage claims by logging the incident in ServiceNow, adjusting inventory in the WMS, notifying the vendor via Microsoft Outlook, and updating the claim tracker in Google Sheets.

naftiko: '0.5'
info:
  label: Warehouse Damage Claim Pipeline
  description: Processes warehouse damage claims by logging the incident in ServiceNow, adjusting inventory in the WMS, notifying the vendor via Microsoft Outlook, and updating the claim tracker in Google Sheets.
  tags:
  - retail
  - servicenow
  - google-sheets
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: damage-claim
    port: 8080
    tools:
    - name: process-damage-claim
      description: Orchestrate warehouse damage claim processing.
      inputParameters:
      - name: isbn
        in: body
        type: string
        description: Damaged book ISBN.
      - name: quantity
        in: body
        type: number
        description: Number of damaged units.
      - name: vendor_email
        in: body
        type: string
        description: Vendor email address.
      steps:
      - name: log-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Warehouse damage: ISBN {{isbn}} - {{quantity}} units'
          description: '{{quantity}} units of ISBN {{isbn}} found damaged during receiving.'
          category: warehouse
      - name: adjust-inventory
        type: call
        call: wms.adjust-quantity
        with:
          isbn: '{{isbn}}'
          adjustment: -{{quantity}}
          reason: damage
      - name: notify-vendor
        type: call
        call: outlook.send-email
        with:
          to: '{{vendor_email}}'
          subject: 'Damage Claim: ISBN {{isbn}} - {{quantity}} units'
          body: 'We have identified {{quantity}} damaged units of ISBN {{isbn}} during receiving. Incident ref: {{log-incident.incident_number}}. Please advise on replacement.'
      - name: update-tracker
        type: call
        call: gsheets.append-rows
        with:
          spreadsheet_id: bn_damage_claims
          data: '{{isbn}},{{quantity}},{{log-incident.incident_number}},pending'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://barnesandnoble.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: wms
    baseUri: https://wms.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.wms_token
    resources:
    - name: adjustments
      path: /inventory/adjustments
      operations:
      - name: adjust-quantity
        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
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: spreadsheets
      path: /spreadsheets/{{spreadsheet_id}}/values:append
      inputParameters:
      - name: spreadsheet_id
        in: path
      operations:
      - name: append-rows
        method: POST
Open in Framework → View in Fleet → warehouse-damage-claim-pipeline.yml

Retrieves a B&N customer contact record from Salesforce.

naftiko: '0.5'
info:
  label: Salesforce Contact Lookup
  description: Retrieves a B&N customer contact record from Salesforce.
  tags:
  - crm
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: crm
    port: 8080
    tools:
    - name: get-contact
      description: Look up a customer contact in Salesforce.
      inputParameters:
      - name: contact_id
        in: body
        type: string
        description: Salesforce contact ID.
      call: salesforce.get-contact
      with:
        contact_id: '{{contact_id}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.Name
      - name: email
        type: string
        mapping: $.Email
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://bn.my.salesforce.com/services/data/v59.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
Open in Framework → View in Fleet → salesforce-contact-lookup.yml

Publishes a tweet to the Barnes and Noble Twitter account with a given text message.

naftiko: '0.5'
info:
  label: Twitter Post Publisher
  description: Publishes a tweet to the Barnes and Noble Twitter account with a given text message.
  tags:
  - retail
  - twitter
capability:
  exposes:
  - type: mcp
    namespace: twitter
    port: 8080
    tools:
    - name: publish-tweet
      description: Publish a tweet to the company Twitter account.
      inputParameters:
      - name: text
        in: body
        type: string
        description: Tweet text content.
      call: twitter.create-tweet
      with:
        text: '{{text}}'
      outputParameters:
      - name: tweet_id
        type: string
        mapping: $.data.id
  consumes:
  - 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
Open in Framework → View in Fleet → twitter-post-publisher.yml

Aggregates weekly POS sales for a district and emails the report to the district manager.

naftiko: '0.5'
info:
  label: District Weekly Sales Email
  description: Aggregates weekly POS sales for a district and emails the report to the district manager.
  tags:
  - retail
  - analytics
  - pos
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: district-reporting
    port: 8080
    tools:
    - name: send-district-report
      description: Generate and email the weekly district sales report.
      inputParameters:
      - name: district_id
        in: body
        type: string
        description: District ID.
      - name: week_ending
        in: body
        type: string
        description: Week ending date.
      - name: manager_email
        in: body
        type: string
        description: Manager email.
      steps:
      - name: get-sales
        type: call
        call: pos.get-district-sales
        with:
          district_id: '{{district_id}}'
          week_ending: '{{week_ending}}'
      - name: send-report
        type: call
        call: outlook.send-email
        with:
          to: '{{manager_email}}'
          subject: Weekly Sales - District {{district_id}} ending {{week_ending}}
          body: 'Total revenue: ${{get-sales.total_revenue}}. Top store: {{get-sales.top_store}}. YoY comp: {{get-sales.comp_pct}}%.'
  consumes:
  - type: http
    namespace: pos
    baseUri: https://pos.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.pos_token
    resources:
    - name: district-sales
      path: /districts/{{district_id}}/sales/weekly
      inputParameters:
      - name: district_id
        in: path
      operations:
      - name: get-district-sales
        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
Open in Framework → View in Fleet → district-weekly-sales-email.yml

Creates a scheduled Zoom meeting for store manager check-ins or author event planning sessions.

naftiko: '0.5'
info:
  label: Zoom Meeting Scheduler
  description: Creates a scheduled Zoom meeting for store manager check-ins or author event planning sessions.
  tags:
  - retail
  - zoom
capability:
  exposes:
  - type: mcp
    namespace: zoom
    port: 8080
    tools:
    - name: create-meeting
      description: Schedule a Zoom meeting.
      inputParameters:
      - name: topic
        in: body
        type: string
        description: Meeting topic.
      - name: start_time
        in: body
        type: string
        description: Start time in ISO 8601 format.
      - name: duration
        in: body
        type: number
        description: Duration in minutes.
      call: zoom.create-meeting
      with:
        topic: '{{topic}}'
        start_time: '{{start_time}}'
        duration: '{{duration}}'
      outputParameters:
      - name: meeting_id
        type: string
        mapping: $.id
      - name: join_url
        type: string
        mapping: $.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
Open in Framework → View in Fleet → zoom-meeting-scheduler.yml

Aggregates engagement data from Instagram and Facebook, compiles metrics into a Google Sheet, refreshes the Tableau dashboard, and emails the marketing team via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Social Media Engagement Report Pipeline
  description: Aggregates engagement data from Instagram and Facebook, compiles metrics into a Google Sheet, refreshes the Tableau dashboard, and emails the marketing team via Microsoft Outlook.
  tags:
  - retail
  - instagram
  - facebook
  - google-sheets
  - tableau
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: social-report
    port: 8080
    tools:
    - name: generate-social-report
      description: Orchestrate social media engagement report across platforms.
      inputParameters:
      - name: date_range
        in: body
        type: string
        description: Date range for the report.
      steps:
      - name: get-instagram-metrics
        type: call
        call: instagram.get-insights
        with:
          date_range: '{{date_range}}'
      - name: get-facebook-metrics
        type: call
        call: facebook.get-page-insights
        with:
          date_range: '{{date_range}}'
      - name: log-metrics
        type: call
        call: gsheets.append-rows
        with:
          spreadsheet_id: bn_social_metrics
          data: '{{date_range}},{{get-instagram-metrics.engagement}},{{get-facebook-metrics.engagement}}'
      - name: refresh-tableau
        type: call
        call: tableau.refresh-workbook
        with:
          workbook_id: bn_social_dashboard
      - name: email-report
        type: call
        call: outlook.send-email
        with:
          to: marketing@barnesandnoble.com
          subject: Social Media Engagement Report - {{date_range}}
          body: 'Instagram engagement: {{get-instagram-metrics.engagement}}. Facebook engagement: {{get-facebook-metrics.engagement}}. Tableau dashboard refreshed.'
  consumes:
  - type: http
    namespace: instagram
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.instagram_token
    resources:
    - name: insights
      path: /me/insights
      operations:
      - name: get-insights
        method: GET
  - type: http
    namespace: facebook
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.facebook_page_token
    resources:
    - name: page-insights
      path: /me/insights
      operations:
      - name: get-page-insights
        method: GET
  - type: http
    namespace: gsheets
    baseUri: https://sheets.googleapis.com/v4
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: spreadsheets
      path: /spreadsheets/{{spreadsheet_id}}/values:append
      inputParameters:
      - name: spreadsheet_id
        in: path
      operations:
      - name: append-rows
        method: POST
  - type: http
    namespace: tableau
    baseUri: https://tableau.barnesandnoble.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: workbooks
      path: /sites/{{site_id}}/workbooks/{{workbook_id}}/refresh
      inputParameters:
      - name: workbook_id
        in: path
      operations:
      - name: refresh-workbook
        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
Open in Framework → View in Fleet → social-media-engagement-report-pipeline.yml

Handles store closure announcements by updating the store locator in BigCommerce, notifying customers via Adobe Campaign email, posting to social media via Instagram, and alerting employees via Microsoft Teams.

naftiko: '0.5'
info:
  label: Store Closure Notification Pipeline
  description: Handles store closure announcements by updating the store locator in BigCommerce, notifying customers via Adobe Campaign email, posting to social media via Instagram, and alerting employees via Microsoft Teams.
  tags:
  - retail
  - bigcommerce
  - adobe-campaign
  - instagram
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: store-closure
    port: 8080
    tools:
    - name: announce-store-closure
      description: Orchestrate store closure notification across channels.
      inputParameters:
      - name: store_name
        in: body
        type: string
        description: Store name.
      - name: closure_date
        in: body
        type: string
        description: Closure date.
      - name: reason
        in: body
        type: string
        description: Reason for closure.
      steps:
      - name: update-locator
        type: call
        call: bigcommerce.update-location
        with:
          store_name: '{{store_name}}'
          status: closing
          closure_date: '{{closure_date}}'
      - name: email-customers
        type: call
        call: adobe-campaign.create-delivery
        with:
          template: store_closure
          label: 'Store Closure: {{store_name}}'
          scheduled_date: '{{closure_date}}'
      - name: post-social
        type: call
        call: instagram.create-post
        with:
          caption: Our {{store_name}} location will be closing on {{closure_date}}. Thank you for your loyalty. Visit barnesandnoble.com for continued service.
      - name: notify-employees
        type: call
        call: msteams.send-message
        with:
          channel_id: store_ops
          text: 'Store closure announced: {{store_name}} closing {{closure_date}}. Reason: {{reason}}.'
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/bn-store/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: locations
      path: /store-locations
      operations:
      - name: update-location
        method: PATCH
  - type: http
    namespace: adobe-campaign
    baseUri: https://mc.adobe.io/bn/campaign
    authentication:
      type: bearer
      token: $secrets.adobe_campaign_token
    resources:
    - name: deliveries
      path: /profileAndServicesExt/delivery
      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: /me/media
      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/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → store-closure-notification-pipeline.yml

Processes a school bulk textbook order by creating the order in BigCommerce, generating a purchase order in Oracle EBS, sending confirmation to the school contact via Microsoft Outlook, and notifying fulfillment via Microsoft Teams.

naftiko: '0.5'
info:
  label: School Bulk Order Pipeline
  description: Processes a school bulk textbook order by creating the order in BigCommerce, generating a purchase order in Oracle EBS, sending confirmation to the school contact via Microsoft Outlook, and notifying fulfillment via Microsoft Teams.
  tags:
  - retail
  - bigcommerce
  - oracle-e-business-suite
  - microsoft-outlook
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: school-order
    port: 8080
    tools:
    - name: process-school-order
      description: Orchestrate school bulk textbook order processing.
      inputParameters:
      - name: school_name
        in: body
        type: string
        description: School name.
      - name: contact_email
        in: body
        type: string
        description: School contact email.
      - name: items
        in: body
        type: array
        description: List of ISBNs and quantities.
      steps:
      - name: create-order
        type: call
        call: bigcommerce.create-order
        with:
          customer_name: '{{school_name}}'
          items: '{{items}}'
          order_type: bulk
      - name: create-po
        type: call
        call: oracle-ebs.create-purchase-order
        with:
          vendor: '{{school_name}}'
          items: '{{items}}'
          reference: '{{create-order.order_id}}'
      - name: confirm-school
        type: call
        call: outlook.send-email
        with:
          to: '{{contact_email}}'
          subject: Barnes & Noble Bulk Order Confirmation - {{create-order.order_id}}
          body: 'Your bulk order has been confirmed. Order ID: {{create-order.order_id}}. We will notify you when it ships.'
      - name: notify-fulfillment
        type: call
        call: msteams.send-message
        with:
          channel_id: fulfillment
          text: 'School bulk order received: {{school_name}}. Order: {{create-order.order_id}}. PO: {{create-po.po_number}}.'
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/bn-store/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: orders
      path: /orders
      operations:
      - name: create-order
        method: POST
  - type: http
    namespace: oracle-ebs
    baseUri: https://erp.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.oracle_ebs_token
    resources:
    - name: purchase-orders
      path: /purchase-orders
      operations:
      - name: create-purchase-order
        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: 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
Open in Framework → View in Fleet → school-bulk-order-pipeline.yml

Retrieves the current state and assignment for a ServiceNow incident by number.

naftiko: '0.5'
info:
  label: ServiceNow Incident Status Lookup
  description: Retrieves the current state and assignment for a ServiceNow incident by number.
  tags:
  - it-support
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: it-support
    port: 8080
    tools:
    - name: get-incident-status
      description: Look up a ServiceNow incident.
      inputParameters:
      - name: incident_number
        in: body
        type: string
        description: Incident number.
      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: assigned_group
        type: string
        mapping: $.result.assignment_group.display_value
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://bn.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
Open in Framework → View in Fleet → servicenow-incident-status-lookup.yml

Before the holiday season, analyzes prior year sales data from the POS, generates recommended order quantities, creates bulk purchase orders in the OMS, and emails the plan to category managers via Outlook.

naftiko: '0.5'
info:
  label: Holiday Season Inventory Planner
  description: Before the holiday season, analyzes prior year sales data from the POS, generates recommended order quantities, creates bulk purchase orders in the OMS, and emails the plan to category managers via Outlook.
  tags:
  - retail
  - planning
  - pos
  - oms
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: holiday-planning
    port: 8080
    tools:
    - name: plan-holiday-inventory
      description: Analyze prior year data and generate holiday inventory replenishment orders.
      inputParameters:
      - name: category
        in: body
        type: string
        description: Book category.
      - name: season
        in: body
        type: string
        description: Holiday season such as Christmas or Back-to-School.
      - name: manager_email
        in: body
        type: string
        description: Category manager email.
      steps:
      - name: get-prior-sales
        type: call
        call: pos.get-seasonal-analysis
        with:
          category: '{{category}}'
          season: '{{season}}'
      - name: create-bulk-po
        type: call
        call: oms.create-bulk-po
        with:
          category: '{{category}}'
          recommendations: '{{get-prior-sales.recommended_orders}}'
      - name: email-plan
        type: call
        call: outlook.send-email
        with:
          to: '{{manager_email}}'
          subject: '{{season}} Inventory Plan - {{category}}'
          body: '{{category}} holiday plan: {{get-prior-sales.total_recommended_units}} units across {{get-prior-sales.title_count}} titles. PO batch: {{create-bulk-po.batch_id}}.'
  consumes:
  - type: http
    namespace: pos
    baseUri: https://pos.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.pos_token
    resources:
    - name: seasonal-analysis
      path: /analytics/seasonal
      operations:
      - name: get-seasonal-analysis
        method: POST
  - type: http
    namespace: oms
    baseUri: https://oms.barnesandnoble.com/api/v2
    authentication:
      type: bearer
      token: $secrets.oms_token
    resources:
    - name: bulk-po
      path: /purchase-orders/bulk
      operations:
      - name: create-bulk-po
        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
Open in Framework → View in Fleet → holiday-season-inventory-planner.yml

Pulls reading challenge progress from the CRM, computes leaderboard rankings, and posts weekly standings to the B&N Facebook community page.

naftiko: '0.5'
info:
  label: Reading Challenge Leaderboard Updater
  description: Pulls reading challenge progress from the CRM, computes leaderboard rankings, and posts weekly standings to the B&N Facebook community page.
  tags:
  - retail
  - community
  - crm
  - facebook
capability:
  exposes:
  - type: mcp
    namespace: reading-challenge
    port: 8080
    tools:
    - name: update-leaderboard
      description: Compute reading challenge standings and post to social.
      inputParameters:
      - name: challenge_id
        in: body
        type: string
        description: Reading challenge ID.
      - name: week_number
        in: body
        type: number
        description: Current week number.
      steps:
      - name: get-progress
        type: call
        call: crm.get-challenge-progress
        with:
          challenge_id: '{{challenge_id}}'
      - name: post-standings
        type: call
        call: facebook.create-post
        with:
          text: 'Week {{week_number}} Reading Challenge Update! {{get-progress.total_participants}} readers, {{get-progress.total_books_read}} books completed. Top reader: {{get-progress.leader_name}} with {{get-progress.leader_count}} books! #BNReadingChallenge'
  consumes:
  - type: http
    namespace: crm
    baseUri: https://crm.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.crm_token
    resources:
    - name: challenges
      path: /challenges/{{challenge_id}}/progress
      inputParameters:
      - name: challenge_id
        in: path
      operations:
      - name: get-challenge-progress
        method: GET
  - type: http
    namespace: facebook
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.facebook_token
    resources:
    - name: posts
      path: /me/feed
      operations:
      - name: create-post
        method: POST
Open in Framework → View in Fleet → reading-challenge-leaderboard-updater.yml

Finds the nearest Barnes & Noble stores by ZIP code using Google Maps.

naftiko: '0.5'
info:
  label: Store Locator
  description: Finds the nearest Barnes & Noble stores by ZIP code using Google Maps.
  tags:
  - retail
  - google-maps
  - store-locator
capability:
  exposes:
  - type: mcp
    namespace: store-locator
    port: 8080
    tools:
    - name: find-nearest-stores
      description: Find the nearest B&N stores.
      inputParameters:
      - name: zip_code
        in: body
        type: string
        description: Customer ZIP.
      - name: radius_miles
        in: body
        type: number
        description: Search radius.
      call: gmaps.search-places
      with:
        query: Barnes Noble
        location: '{{zip_code}}'
        radius: '{{radius_miles}}'
      outputParameters:
      - name: stores
        type: array
        mapping: $.results
  consumes:
  - type: http
    namespace: gmaps
    baseUri: https://maps.googleapis.com/maps/api
    authentication:
      type: apikey
      key: $secrets.google_maps_key
    resources:
    - name: places
      path: /place/textsearch/json
      operations:
      - name: search-places
        method: GET
Open in Framework → View in Fleet → store-locator.yml

Pulls end-of-day register totals, compares against expected values, and flags variances in ServiceNow.

naftiko: '0.5'
info:
  label: POS Daily Reconciliation
  description: Pulls end-of-day register totals, compares against expected values, and flags variances in ServiceNow.
  tags:
  - retail
  - finance
  - pos
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: pos-reconciliation
    port: 8080
    tools:
    - name: reconcile-pos
      description: Reconcile daily POS totals and flag discrepancies.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: Store ID.
      - name: date
        in: body
        type: string
        description: Business date.
      steps:
      - name: get-totals
        type: call
        call: pos.get-register-summary
        with:
          store_id: '{{store_id}}'
          date: '{{date}}'
      - name: flag-variance
        type: call
        call: servicenow.create-incident
        with:
          short_description: POS variance at store {{store_id}} on {{date}}
          category: finance
          description: 'Variance: ${{get-totals.variance}}.'
  consumes:
  - type: http
    namespace: pos
    baseUri: https://pos.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.pos_token
    resources:
    - name: register-summary
      path: /stores/{{store_id}}/registers/summary/{{date}}
      inputParameters:
      - name: store_id
        in: path
      - name: date
        in: path
      operations:
      - name: get-register-summary
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://bn.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → pos-daily-reconciliation.yml

Queries Cloudflare for DNS records associated with a given zone, returning A, CNAME, and MX record details.

naftiko: '0.5'
info:
  label: Cloudflare DNS Lookup
  description: Queries Cloudflare for DNS records associated with a given zone, returning A, CNAME, and MX record details.
  tags:
  - retail
  - cloudflare
capability:
  exposes:
  - type: mcp
    namespace: cloudflare
    port: 8080
    tools:
    - name: get-dns-records
      description: Look up DNS records for a Cloudflare zone.
      inputParameters:
      - name: zone_id
        in: body
        type: string
        description: Cloudflare zone ID.
      call: cloudflare.list-dns-records
      with:
        zone_id: '{{zone_id}}'
      outputParameters:
      - name: records
        type: array
        mapping: $.result
      - name: total_count
        type: number
        mapping: $.result_info.total_count
  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
      inputParameters:
      - name: zone_id
        in: path
      operations:
      - name: list-dns-records
        method: GET
Open in Framework → View in Fleet → cloudflare-dns-lookup.yml

When New Relic fires an error rate alert, creates a ServiceNow incident and notifies the SRE team in Microsoft Teams.

naftiko: '0.5'
info:
  label: New Relic Error Rate Alert Handler
  description: When New Relic fires an error rate alert, creates a ServiceNow incident and notifies the SRE team in Microsoft Teams.
  tags:
  - monitoring
  - new-relic
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: error-alerting
    port: 8080
    tools:
    - name: handle-error-alert
      description: Process a New Relic error rate alert through incident management.
      inputParameters:
      - name: alert_id
        in: body
        type: string
        description: Alert ID.
      - name: condition_name
        in: body
        type: string
        description: Alert condition.
      steps:
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Error rate alert: {{condition_name}}'
          category: application
          urgency: '2'
      - name: notify-sre
        type: call
        call: msteams.send-message
        with:
          channel_id: sre_alerts
          text: 'Error rate alert: {{condition_name}}. Incident: {{create-incident.number}}.'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://bn.service-now.com/api/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
Open in Framework → View in Fleet → new-relic-error-rate-alert-handler.yml

Onboards a new vendor catalog by creating the vendor in Oracle EBS, importing products into BigCommerce, logging the onboarding in Google Sheets, and notifying the merchandising team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Vendor Catalog Onboarding Pipeline
  description: Onboards a new vendor catalog by creating the vendor in Oracle EBS, importing products into BigCommerce, logging the onboarding in Google Sheets, and notifying the merchandising team via Microsoft Teams.
  tags:
  - retail
  - oracle-e-business-suite
  - bigcommerce
  - google-sheets
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: vendor-onboard
    port: 8080
    tools:
    - name: onboard-vendor-catalog
      description: Orchestrate vendor catalog onboarding across systems.
      inputParameters:
      - name: vendor_name
        in: body
        type: string
        description: Vendor name.
      - name: catalog_file_url
        in: body
        type: string
        description: URL to vendor catalog file.
      steps:
      - name: create-vendor
        type: call
        call: oracle-ebs.create-vendor
        with:
          vendor_name: '{{vendor_name}}'
      - name: import-products
        type: call
        call: bigcommerce.import-catalog
        with:
          source_url: '{{catalog_file_url}}'
          vendor_id: '{{create-vendor.vendor_id}}'
      - name: log-onboarding
        type: call
        call: gsheets.append-rows
        with:
          spreadsheet_id: bn_vendor_onboarding
          data: '{{vendor_name}},{{create-vendor.vendor_id}},{{import-products.product_count}}'
      - name: notify-merchandising
        type: call
        call: msteams.send-message
        with:
          channel_id: merchandising
          text: 'New vendor catalog onboarded: {{vendor_name}}. {{import-products.product_count}} products imported.'
  consumes:
  - type: http
    namespace: oracle-ebs
    baseUri: https://erp.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.oracle_ebs_token
    resources:
    - name: vendors
      path: /vendors
      operations:
      - name: create-vendor
        method: POST
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/bn-store/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: catalog-import
      path: /catalog/products/import
      operations:
      - name: import-catalog
        method: POST
  - type: http
    namespace: gsheets
    baseUri: https://sheets.googleapis.com/v4
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: spreadsheets
      path: /spreadsheets/{{spreadsheet_id}}/values:append
      inputParameters:
      - name: spreadsheet_id
        in: path
      operations:
      - name: append-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/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → vendor-catalog-onboarding-pipeline.yml

Validates a return order in BigCommerce, creates an RMA, updates inventory projections, and sends the customer a return label via Adobe Campaign.

naftiko: '0.5'
info:
  label: Customer Return Processor
  description: Validates a return order in BigCommerce, creates an RMA, updates inventory projections, and sends the customer a return label via Adobe Campaign.
  tags:
  - retail
  - returns
  - bigcommerce
  - adobe-campaign
capability:
  exposes:
  - type: mcp
    namespace: returns
    port: 8080
    tools:
    - name: process-return
      description: Process a book return across order, inventory, and communications.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: BigCommerce order ID.
      - name: reason
        in: body
        type: string
        description: Return reason.
      - name: customer_email
        in: body
        type: string
        description: Customer email.
      steps:
      - name: get-order
        type: call
        call: bigcommerce.get-order
        with:
          order_id: '{{order_id}}'
      - name: create-rma
        type: call
        call: oms.create-rma
        with:
          order_id: '{{order_id}}'
          reason: '{{reason}}'
      - name: adjust-inventory
        type: call
        call: wms.adjust-projected
        with:
          isbn: '{{get-order.products[0].isbn}}'
          adjustment: 1
      - name: send-label
        type: call
        call: adobe-campaign.send-transactional
        with:
          template: return_label
          recipient_email: '{{customer_email}}'
          rma_number: '{{create-rma.rma_number}}'
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/bn-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: oms
    baseUri: https://oms.barnesandnoble.com/api/v2
    authentication:
      type: bearer
      token: $secrets.oms_token
    resources:
    - name: returns
      path: /returns
      operations:
      - name: create-rma
        method: POST
  - type: http
    namespace: wms
    baseUri: https://wms.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.wms_token
    resources:
    - name: inventory
      path: /inventory/adjust
      operations:
      - name: adjust-projected
        method: POST
  - type: http
    namespace: adobe-campaign
    baseUri: https://mc.adobe.io/bn/campaign
    authentication:
      type: bearer
      token: $secrets.adobe_campaign_token
    resources:
    - name: transactional
      path: /profileAndServicesExt/transactionalEmail
      operations:
      - name: send-transactional
        method: POST
Open in Framework → View in Fleet → customer-return-processor.yml

Generates cross-sell recommendations by analyzing purchase history in Teradata, creating product bundles in BigCommerce, and launching a targeted email campaign via Adobe Campaign.

naftiko: '0.5'
info:
  label: Cross-Sell Recommendation Pipeline
  description: Generates cross-sell recommendations by analyzing purchase history in Teradata, creating product bundles in BigCommerce, and launching a targeted email campaign via Adobe Campaign.
  tags:
  - retail
  - teradata
  - bigcommerce
  - adobe-campaign
capability:
  exposes:
  - type: mcp
    namespace: cross-sell
    port: 8080
    tools:
    - name: generate-cross-sell
      description: Orchestrate cross-sell recommendation generation and campaign launch.
      inputParameters:
      - name: category
        in: body
        type: string
        description: Product category to analyze.
      steps:
      - name: analyze-purchases
        type: call
        call: teradata.run-affinity-analysis
        with:
          category: '{{category}}'
      - name: create-bundles
        type: call
        call: bigcommerce.create-product-bundles
        with:
          recommendations: '{{analyze-purchases.pairs}}'
      - name: launch-campaign
        type: call
        call: adobe-campaign.create-delivery
        with:
          template: cross_sell
          label: 'Recommended for You: {{category}}'
          segment: '{{category}}_buyers'
  consumes:
  - type: http
    namespace: teradata
    baseUri: https://teradata.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.teradata_token
    resources:
    - name: analytics
      path: /queries/affinity-analysis
      operations:
      - name: run-affinity-analysis
        method: POST
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/bn-store/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: bundles
      path: /catalog/products
      operations:
      - name: create-product-bundles
        method: POST
  - type: http
    namespace: adobe-campaign
    baseUri: https://mc.adobe.io/bn/campaign
    authentication:
      type: bearer
      token: $secrets.adobe_campaign_token
    resources:
    - name: deliveries
      path: /profileAndServicesExt/delivery
      operations:
      - name: create-delivery
        method: POST
Open in Framework → View in Fleet → cross-sell-recommendation-pipeline.yml

Retrieves a document from Google Drive by file ID, returning the file metadata and download link.

naftiko: '0.5'
info:
  label: Google Drive Document Retrieval
  description: Retrieves a document from Google Drive by file ID, returning the file metadata and download link.
  tags:
  - retail
  - google-drive
capability:
  exposes:
  - type: mcp
    namespace: gdrive
    port: 8080
    tools:
    - name: get-document
      description: Retrieve a Google Drive document by file ID.
      inputParameters:
      - name: file_id
        in: body
        type: string
        description: Google Drive file ID.
      call: gdrive.get-file
      with:
        file_id: '{{file_id}}'
      outputParameters:
      - name: file_name
        type: string
        mapping: $.name
      - name: mime_type
        type: string
        mapping: $.mimeType
      - name: download_url
        type: string
        mapping: $.webContentLink
  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/{{file_id}}
      inputParameters:
      - name: file_id
        in: path
      operations:
      - name: get-file
        method: GET
Open in Framework → View in Fleet → google-drive-document-retrieval.yml

Orchestrates an inventory transfer between stores by checking stock in the WMS, creating a transfer order in Oracle EBS, and notifying both store managers via Microsoft Teams.

naftiko: '0.5'
info:
  label: Store Inventory Transfer Orchestrator
  description: Orchestrates an inventory transfer between stores by checking stock in the WMS, creating a transfer order in Oracle EBS, and notifying both store managers via Microsoft Teams.
  tags:
  - retail
  - oracle-e-business-suite
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: store-transfer
    port: 8080
    tools:
    - name: transfer-inventory
      description: Orchestrate inventory transfer between two store locations.
      inputParameters:
      - name: isbn
        in: body
        type: string
        description: Book ISBN.
      - name: from_store
        in: body
        type: string
        description: Source store ID.
      - name: to_store
        in: body
        type: string
        description: Destination store ID.
      - name: quantity
        in: body
        type: number
        description: Number of units to transfer.
      steps:
      - name: check-stock
        type: call
        call: wms.get-inventory
        with:
          isbn: '{{isbn}}'
          location: '{{from_store}}'
      - name: create-transfer
        type: call
        call: oracle-ebs.create-transfer-order
        with:
          isbn: '{{isbn}}'
          from_store: '{{from_store}}'
          to_store: '{{to_store}}'
          quantity: '{{quantity}}'
      - name: notify-stores
        type: call
        call: msteams.send-message
        with:
          channel_id: store_ops
          text: 'Transfer order {{create-transfer.order_id}} created: {{quantity}} units of ISBN {{isbn}} from store {{from_store}} to store {{to_store}}.'
  consumes:
  - type: http
    namespace: wms
    baseUri: https://wms.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.wms_token
    resources:
    - name: inventory
      path: /inventory/{{isbn}}
      inputParameters:
      - name: isbn
        in: path
      operations:
      - name: get-inventory
        method: GET
  - type: http
    namespace: oracle-ebs
    baseUri: https://erp.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.oracle_ebs_token
    resources:
    - name: transfer-orders
      path: /transfer-orders
      operations:
      - name: create-transfer-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: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → store-inventory-transfer-orchestrator.yml

Creates a purchase order for a publisher in the OMS, logs it in Google Sheets, and notifies the buying team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Vendor Purchase Order Creator
  description: Creates a purchase order for a publisher in the OMS, logs it in Google Sheets, and notifies the buying team via Microsoft Teams.
  tags:
  - procurement
  - oms
  - google-sheets
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: vendor-procurement
    port: 8080
    tools:
    - name: create-publisher-po
      description: Generate a purchase order for a book publisher and notify the buying team.
      inputParameters:
      - name: publisher_id
        in: body
        type: string
        description: Publisher vendor ID.
      - name: isbn
        in: body
        type: string
        description: ISBN to order.
      - name: quantity
        in: body
        type: number
        description: Order quantity.
      steps:
      - name: create-po
        type: call
        call: oms.create-purchase-order
        with:
          vendor_id: '{{publisher_id}}'
          isbn: '{{isbn}}'
          quantity: '{{quantity}}'
      - name: log-po
        type: call
        call: gsheets.append-row
        with:
          spreadsheet_id: bn_po_tracker
          range: POs!A:D
          values:
          - '{{create-po.po_number}}'
          - '{{isbn}}'
          - '{{publisher_id}}'
          - '{{quantity}}'
      - name: notify-buyers
        type: call
        call: msteams.send-message
        with:
          channel_id: buying_team
          text: 'PO {{create-po.po_number}} created: {{quantity}} copies of ISBN {{isbn}} from publisher {{publisher_id}}.'
  consumes:
  - type: http
    namespace: oms
    baseUri: https://oms.barnesandnoble.com/api/v2
    authentication:
      type: bearer
      token: $secrets.oms_token
    resources:
    - name: purchase-orders
      path: /purchase-orders
      operations:
      - name: create-purchase-order
        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
  - 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
Open in Framework → View in Fleet → vendor-purchase-order-creator.yml

Coordinates a seasonal display changeover by generating planograms from the merchandising system, assigning tasks in Jira for each store, and sending instructions to store managers via Microsoft Teams.

naftiko: '0.5'
info:
  label: Seasonal Display Changeover Orchestrator
  description: Coordinates a seasonal display changeover by generating planograms from the merchandising system, assigning tasks in Jira for each store, and sending instructions to store managers via Microsoft Teams.
  tags:
  - retail
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: display-changeover
    port: 8080
    tools:
    - name: execute-changeover
      description: Orchestrate seasonal display changeover across stores.
      inputParameters:
      - name: season
        in: body
        type: string
        description: Season name.
      - name: effective_date
        in: body
        type: string
        description: Changeover effective date.
      steps:
      - name: create-tasks
        type: call
        call: jira.create-issue
        with:
          project: STORE
          summary: '{{season}} Display Changeover - Effective {{effective_date}}'
          issue_type: Task
          description: Execute seasonal display changeover for {{season}}. All displays must be updated by {{effective_date}}.
      - name: notify-managers
        type: call
        call: msteams.send-message
        with:
          channel_id: store_ops
          text: 'Seasonal display changeover initiated for {{season}}. Effective date: {{effective_date}}. Jira task: {{create-tasks.issue_key}}. Please update all displays per planogram.'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://barnesandnoble.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → seasonal-display-changeover-orchestrator.yml

Fetches new product reviews from BigCommerce, runs sentiment analysis, flags negative reviews in a Jira ticket, and updates the review status via the BigCommerce API.

naftiko: '0.5'
info:
  label: Product Review Moderation Pipeline
  description: Fetches new product reviews from BigCommerce, runs sentiment analysis, flags negative reviews in a Jira ticket, and updates the review status via the BigCommerce API.
  tags:
  - retail
  - bigcommerce
  - jira
capability:
  exposes:
  - type: mcp
    namespace: review-mod
    port: 8080
    tools:
    - name: moderate-reviews
      description: Orchestrate product review moderation and flagging.
      inputParameters:
      - name: since_date
        in: body
        type: string
        description: Date to fetch reviews from.
      steps:
      - name: fetch-reviews
        type: call
        call: bigcommerce.get-reviews
        with:
          since_date: '{{since_date}}'
      - name: flag-negative
        type: call
        call: jira.create-issue
        with:
          project: CS
          summary: Negative product reviews flagged since {{since_date}}
          issue_type: Task
          description: '{{fetch-reviews.negative_count}} negative reviews require attention.'
      - name: update-status
        type: call
        call: bigcommerce.batch-approve-reviews
        with:
          review_ids: '{{fetch-reviews.approved_ids}}'
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/bn-store/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: reviews
      path: /catalog/products/reviews
      operations:
      - name: get-reviews
        method: GET
      - name: batch-approve-reviews
        method: PUT
  - type: http
    namespace: jira
    baseUri: https://barnesandnoble.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → product-review-moderation-pipeline.yml

When a new e-book is ready for Nook, uploads the content file to Amazon S3, creates the product listing in BigCommerce, and sends a notification to the digital content team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Nook Content Publishing Pipeline
  description: When a new e-book is ready for Nook, uploads the content file to Amazon S3, creates the product listing in BigCommerce, and sends a notification to the digital content team via Microsoft Teams.
  tags:
  - retail
  - amazon-s3
  - bigcommerce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nook-publish
    port: 8080
    tools:
    - name: publish-ebook
      description: Orchestrate e-book publishing to the Nook platform.
      inputParameters:
      - name: isbn
        in: body
        type: string
        description: E-book ISBN.
      - name: title
        in: body
        type: string
        description: E-book title.
      - name: file_url
        in: body
        type: string
        description: Source file URL.
      steps:
      - name: upload-content
        type: call
        call: s3.put-object
        with:
          bucket: bn-nook-content
          key: ebooks/{{isbn}}.epub
          source_url: '{{file_url}}'
      - name: create-listing
        type: call
        call: bigcommerce.create-product
        with:
          name: '{{title}} (Nook)'
          sku: NOOK-{{isbn}}
          type: digital
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          channel_id: digital_content
          text: 'New Nook e-book published: {{title}} (ISBN: {{isbn}}). Listing ID: {{create-listing.product_id}}'
  consumes:
  - 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: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/bn-store/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
Open in Framework → View in Fleet → nook-content-publishing-pipeline.yml

Pulls the latest bestseller rankings from the internal analytics system, updates the featured collection in BigCommerce, and posts the updated list to the booklovers Facebook page.

naftiko: '0.5'
info:
  label: Bestseller List Update Pipeline
  description: Pulls the latest bestseller rankings from the internal analytics system, updates the featured collection in BigCommerce, and posts the updated list to the booklovers Facebook page.
  tags:
  - retail
  - publishing
  - bigcommerce
  - facebook
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: bestsellers
    port: 8080
    tools:
    - name: update-bestseller-list
      description: Refresh the bestseller collection on the website and announce it across channels.
      inputParameters:
      - name: category
        in: body
        type: string
        description: Bestseller category such as fiction or nonfiction.
      - name: week_of
        in: body
        type: string
        description: Week date.
      steps:
      - name: get-rankings
        type: call
        call: analytics.get-bestsellers
        with:
          category: '{{category}}'
          week_of: '{{week_of}}'
      - name: update-collection
        type: call
        call: bigcommerce.update-collection
        with:
          collection_id: bestsellers_{{category}}
          product_ids: '{{get-rankings.isbn_list}}'
      - name: post-facebook
        type: call
        call: facebook.create-post
        with:
          text: 'This week''s B&N {{category}} bestsellers are here! Check out the top picks at barnesandnoble.com. #BNBestsellers'
      - name: notify-merch
        type: call
        call: msteams.send-message
        with:
          channel_id: merchandising
          text: Bestseller list updated for {{category}} (week of {{week_of}}). {{get-rankings.count}} titles refreshed.
  consumes:
  - type: http
    namespace: analytics
    baseUri: https://analytics.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.analytics_token
    resources:
    - name: bestsellers
      path: /bestsellers
      operations:
      - name: get-bestsellers
        method: GET
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/bn-store/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: collections
      path: /catalog/categories/{{collection_id}}
      inputParameters:
      - name: collection_id
        in: path
      operations:
      - name: update-collection
        method: PUT
  - type: http
    namespace: facebook
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.facebook_token
    resources:
    - name: posts
      path: /me/feed
      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/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → bestseller-list-update-pipeline.yml

When a new book release is scheduled, creates the product listing in BigCommerce, syncs inventory with the warehouse, schedules a promotional email via Adobe Campaign, and posts an announcement to Instagram and the store operations Microsoft Teams channel.

naftiko: '0.5'
info:
  label: New Book Release Launch Orchestrator
  description: When a new book release is scheduled, creates the product listing in BigCommerce, syncs inventory with the warehouse, schedules a promotional email via Adobe Campaign, and posts an announcement to Instagram and the store operations Microsoft Teams channel.
  tags:
  - retail
  - publishing
  - bigcommerce
  - adobe-campaign
  - instagram
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: book-launch
    port: 8080
    tools:
    - name: launch-book-release
      description: Orchestrate a new book release across e-commerce, email, social, and store operations.
      inputParameters:
      - name: isbn
        in: body
        type: string
        description: Book ISBN.
      - name: title
        in: body
        type: string
        description: Book title.
      - name: release_date
        in: body
        type: string
        description: Release date in YYYY-MM-DD format.
      - name: author
        in: body
        type: string
        description: Author name.
      steps:
      - name: create-listing
        type: call
        call: bigcommerce.create-product
        with:
          isbn: '{{isbn}}'
          name: '{{title}}'
          availability_date: '{{release_date}}'
      - name: sync-inventory
        type: call
        call: wms.sync-isbn
        with:
          isbn: '{{isbn}}'
          warehouse: bn_main_dc
      - name: schedule-email
        type: call
        call: adobe-campaign.create-delivery
        with:
          template: new_release
          label: 'New Release: {{title}} by {{author}}'
          scheduled_date: '{{release_date}}'
      - name: post-social
        type: call
        call: instagram.create-post
        with:
          caption: 'Coming {{release_date}}: {{title}} by {{author}}. Pre-order now at Barnes & Noble! #BNReads #NewRelease'
          media_url: '{{create-listing.cover_image_url}}'
      - name: notify-stores
        type: call
        call: msteams.send-message
        with:
          channel_id: store_ops
          text: 'New release: {{title}} by {{author}} on {{release_date}}. ISBN: {{isbn}}. Prepare displays.'
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/bn-store/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: products
      path: /catalog/products
      operations:
      - name: create-product
        method: POST
  - type: http
    namespace: wms
    baseUri: https://wms.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.wms_token
    resources:
    - name: inventory-sync
      path: /isbn/{{isbn}}/sync
      inputParameters:
      - name: isbn
        in: path
      operations:
      - name: sync-isbn
        method: POST
  - type: http
    namespace: adobe-campaign
    baseUri: https://mc.adobe.io/bn/campaign
    authentication:
      type: bearer
      token: $secrets.adobe_campaign_token
    resources:
    - name: deliveries
      path: /profileAndServicesExt/delivery
      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: /me/media
      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/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → new-book-release-launch-orchestrator.yml

Runs a PCI compliance check by querying Splunk for security events, verifying Palo Alto Networks firewall rules, generating a compliance report in SharePoint, and alerting the security team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Security Audit Compliance Pipeline
  description: Runs a PCI compliance check by querying Splunk for security events, verifying Palo Alto Networks firewall rules, generating a compliance report in SharePoint, and alerting the security team via Microsoft Teams.
  tags:
  - retail
  - splunk
  - palo-alto-networks
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: security-audit
    port: 8080
    tools:
    - name: run-security-audit
      description: Orchestrate PCI security audit compliance checks.
      inputParameters:
      - name: audit_period
        in: body
        type: string
        description: Audit period.
      steps:
      - name: query-security-events
        type: call
        call: splunk.search-security
        with:
          query: index=security sourcetype=pci_audit earliest=-30d
      - name: check-firewall
        type: call
        call: paloalto.get-security-rules
        with:
          policy_type: pci
      - name: upload-report
        type: call
        call: sharepoint.upload-file
        with:
          site: bn-security
          folder: Audit Reports
          file_name: pci_audit_{{audit_period}}.pdf
      - name: notify-security
        type: call
        call: msteams.send-message
        with:
          channel_id: security
          text: 'PCI security audit complete for {{audit_period}}. Events analyzed: {{query-security-events.event_count}}. Firewall rules verified: {{check-firewall.rule_count}}. Report uploaded to SharePoint.'
  consumes:
  - type: http
    namespace: splunk
    baseUri: https://splunk.barnesandnoble.com:8089
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - name: search
      path: /services/search/jobs
      operations:
      - name: search-security
        method: POST
  - type: http
    namespace: paloalto
    baseUri: https://firewall.barnesandnoble.com/restapi/v10.1
    authentication:
      type: apiKey
      key: $secrets.paloalto_api_key
    resources:
    - name: security-rules
      path: /Policies/SecurityRules
      operations:
      - name: get-security-rules
        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}}/drive/root:/{{folder}}/{{file_name}}:/content
      inputParameters:
      - name: site
        in: path
      - name: folder
        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
Open in Framework → View in Fleet → security-audit-compliance-pipeline.yml

Checks the processing status of a video uploaded to the Barnes and Noble YouTube channel by video ID.

naftiko: '0.5'
info:
  label: YouTube Video Upload Status
  description: Checks the processing status of a video uploaded to the Barnes and Noble YouTube channel by video ID.
  tags:
  - retail
  - youtube
capability:
  exposes:
  - type: mcp
    namespace: youtube
    port: 8080
    tools:
    - name: get-video-status
      description: Check the processing status of a YouTube video.
      inputParameters:
      - name: video_id
        in: body
        type: string
        description: YouTube video ID.
      call: youtube.get-video
      with:
        video_id: '{{video_id}}'
      outputParameters:
      - name: title
        type: string
        mapping: $.items[0].snippet.title
      - name: status
        type: string
        mapping: $.items[0].status.uploadStatus
  consumes:
  - type: http
    namespace: youtube
    baseUri: https://www.googleapis.com/youtube/v3
    authentication:
      type: bearer
      token: $secrets.youtube_token
    resources:
    - name: videos
      path: /videos?id={{video_id}}&part=status,snippet
      inputParameters:
      - name: video_id
        in: query
      operations:
      - name: get-video
        method: GET
Open in Framework → View in Fleet → youtube-video-upload-status.yml

Promotes an upcoming author signing event by creating a Facebook post, an Instagram story, scheduling a promotional email via Adobe Campaign, and posting details to the store Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Author Signing Event Promotion Pipeline
  description: Promotes an upcoming author signing event by creating a Facebook post, an Instagram story, scheduling a promotional email via Adobe Campaign, and posting details to the store Microsoft Teams channel.
  tags:
  - retail
  - facebook
  - instagram
  - adobe-campaign
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: event-promo
    port: 8080
    tools:
    - name: promote-signing-event
      description: Orchestrate multi-channel promotion for an author signing event.
      inputParameters:
      - name: author
        in: body
        type: string
        description: Author name.
      - name: book_title
        in: body
        type: string
        description: Book title.
      - name: event_date
        in: body
        type: string
        description: Event date.
      - name: store_name
        in: body
        type: string
        description: Host store name.
      steps:
      - name: post-facebook
        type: call
        call: facebook.create-post
        with:
          message: 'Meet {{author}} at {{store_name}} on {{event_date}}! Get your copy of {{book_title}} signed. #BNEvents'
      - name: post-instagram
        type: call
        call: instagram.create-post
        with:
          caption: 'Author signing: {{author}} at {{store_name}}, {{event_date}}. {{book_title}} #BNEvents #AuthorSigning'
      - name: schedule-email
        type: call
        call: adobe-campaign.create-delivery
        with:
          template: author_event
          label: 'Author Signing: {{author}} at {{store_name}}'
          scheduled_date: '{{event_date}}'
      - name: notify-store
        type: call
        call: msteams.send-message
        with:
          channel_id: store_ops
          text: Author signing event promotion launched for {{author}} at {{store_name}} on {{event_date}}.
  consumes:
  - type: http
    namespace: facebook
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.facebook_page_token
    resources:
    - name: feed
      path: /me/feed
      operations:
      - name: create-post
        method: POST
  - type: http
    namespace: instagram
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.instagram_token
    resources:
    - name: media
      path: /me/media
      operations:
      - name: create-post
        method: POST
  - type: http
    namespace: adobe-campaign
    baseUri: https://mc.adobe.io/bn/campaign
    authentication:
      type: bearer
      token: $secrets.adobe_campaign_token
    resources:
    - name: deliveries
      path: /profileAndServicesExt/delivery
      operations:
      - name: create-delivery
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → author-signing-event-promotion-pipeline.yml

Retrieves a file from Box cloud storage by file ID, returning file metadata and a temporary download URL.

naftiko: '0.5'
info:
  label: Box File Retrieval
  description: Retrieves a file from Box cloud storage by file ID, returning file metadata and a temporary download URL.
  tags:
  - retail
  - box
capability:
  exposes:
  - type: mcp
    namespace: box
    port: 8080
    tools:
    - name: get-file
      description: Retrieve a file from Box by file ID.
      inputParameters:
      - name: file_id
        in: body
        type: string
        description: Box file ID.
      call: box.get-file-info
      with:
        file_id: '{{file_id}}'
      outputParameters:
      - name: file_name
        type: string
        mapping: $.name
      - name: size
        type: number
        mapping: $.size
      - name: download_url
        type: string
        mapping: $.shared_link.download_url
  consumes:
  - type: http
    namespace: box
    baseUri: https://api.box.com/2.0
    authentication:
      type: bearer
      token: $secrets.box_token
    resources:
    - name: files
      path: /files/{{file_id}}
      inputParameters:
      - name: file_id
        in: path
      operations:
      - name: get-file-info
        method: GET
Open in Framework → View in Fleet → box-file-retrieval.yml

Publishes a post to the Barnes and Noble Facebook page with a given message and optional link attachment.

naftiko: '0.5'
info:
  label: Facebook Page Post Publisher
  description: Publishes a post to the Barnes and Noble Facebook page with a given message and optional link attachment.
  tags:
  - retail
  - facebook
capability:
  exposes:
  - type: mcp
    namespace: facebook
    port: 8080
    tools:
    - name: publish-post
      description: Publish a post to the Facebook business page.
      inputParameters:
      - name: message
        in: body
        type: string
        description: Post message text.
      - name: link
        in: body
        type: string
        description: Optional URL to attach.
      call: facebook.create-post
      with:
        message: '{{message}}'
        link: '{{link}}'
      outputParameters:
      - name: post_id
        type: string
        mapping: $.id
  consumes:
  - type: http
    namespace: facebook
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.facebook_page_token
    resources:
    - name: feed
      path: /me/feed
      operations:
      - name: create-post
        method: POST
Open in Framework → View in Fleet → facebook-page-post-publisher.yml

Queries the data warehouse for the top-selling books of the week, generates an email campaign in Adobe Campaign, and posts a summary to the marketing Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Weekly Bestseller Email Campaign
  description: Queries the data warehouse for the top-selling books of the week, generates an email campaign in Adobe Campaign, and posts a summary to the marketing Microsoft Teams channel.
  tags:
  - retail
  - teradata
  - adobe-campaign
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: bestseller-email
    port: 8080
    tools:
    - name: send-bestseller-campaign
      description: Orchestrate weekly bestseller email campaign creation and notification.
      inputParameters:
      - name: week_ending
        in: body
        type: string
        description: Week ending date in YYYY-MM-DD format.
      steps:
      - name: fetch-bestsellers
        type: call
        call: teradata.query-bestsellers
        with:
          week_ending: '{{week_ending}}'
      - name: create-campaign
        type: call
        call: adobe-campaign.create-delivery
        with:
          template: weekly_bestsellers
          label: This Week's Bestsellers - {{week_ending}}
          data: '{{fetch-bestsellers.results}}'
      - name: notify-marketing
        type: call
        call: msteams.send-message
        with:
          channel_id: marketing
          text: 'Weekly bestseller email campaign created for week ending {{week_ending}}. Campaign ID: {{create-campaign.delivery_id}}'
  consumes:
  - type: http
    namespace: teradata
    baseUri: https://teradata.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.teradata_token
    resources:
    - name: bestsellers
      path: /queries/bestsellers
      operations:
      - name: query-bestsellers
        method: POST
  - type: http
    namespace: adobe-campaign
    baseUri: https://mc.adobe.io/bn/campaign
    authentication:
      type: bearer
      token: $secrets.adobe_campaign_token
    resources:
    - name: deliveries
      path: /profileAndServicesExt/delivery
      operations:
      - name: create-delivery
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → weekly-bestseller-email-campaign.yml

When a New Relic alert fires, retrieves the violation details, creates a ServiceNow incident, and posts an alert to the engineering Microsoft Teams channel.

naftiko: '0.5'
info:
  label: New Relic to ServiceNow Incident Pipeline
  description: When a New Relic alert fires, retrieves the violation details, creates a ServiceNow incident, and posts an alert to the engineering Microsoft Teams channel.
  tags:
  - retail
  - new-relic
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: nr-incident
    port: 8080
    tools:
    - name: process-new-relic-alert
      description: Orchestrate New Relic alert to ServiceNow incident creation.
      inputParameters:
      - name: violation_id
        in: body
        type: string
        description: New Relic violation ID.
      steps:
      - name: get-violation
        type: call
        call: newrelic.get-violation
        with:
          violation_id: '{{violation_id}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'New Relic Alert: {{get-violation.condition_name}}'
          description: 'Violation: {{get-violation.label}}. Entity: {{get-violation.entity_name}}. Duration: {{get-violation.duration}} min.'
          urgency: '2'
      - name: alert-engineering
        type: call
        call: msteams.send-message
        with:
          channel_id: engineering
          text: 'New Relic alert: {{get-violation.condition_name}} on {{get-violation.entity_name}}. SNOW incident: {{create-incident.incident_number}}.'
  consumes:
  - type: http
    namespace: newrelic
    baseUri: https://api.newrelic.com/v2
    authentication:
      type: apiKey
      key: $secrets.newrelic_api_key
    resources:
    - name: violations
      path: /alerts_violations/{{violation_id}}.json
      inputParameters:
      - name: violation_id
        in: path
      operations:
      - name: get-violation
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://barnesandnoble.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: 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
Open in Framework → View in Fleet → new-relic-to-servicenow-incident-pipeline.yml

Activates a book flash sale by reserving inventory, applying sale pricing in BigCommerce, and alerting the e-commerce team.

naftiko: '0.5'
info:
  label: Flash Sale Activation
  description: Activates a book flash sale by reserving inventory, applying sale pricing in BigCommerce, and alerting the e-commerce team.
  tags:
  - retail
  - flash-sale
  - bigcommerce
  - wms
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: flash-sales
    port: 8080
    tools:
    - name: activate-flash-sale
      description: Reserve stock, set sale prices, and notify the team for a flash sale.
      inputParameters:
      - name: sale_id
        in: body
        type: string
        description: Sale ID.
      - name: isbn_list
        in: body
        type: array
        description: ISBNs in the sale.
      - name: discount_pct
        in: body
        type: number
        description: Discount percentage.
      steps:
      - name: reserve
        type: call
        call: wms.reserve-inventory
        with:
          sale_id: '{{sale_id}}'
          isbns: '{{isbn_list}}'
      - name: apply-pricing
        type: call
        call: bigcommerce.apply-sale-pricing
        with:
          isbn_list: '{{isbn_list}}'
          discount_pct: '{{discount_pct}}'
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ecommerce
          text: 'Flash sale {{sale_id}} LIVE: {{reserve.reserved_count}} titles at {{discount_pct}}% off.'
  consumes:
  - type: http
    namespace: wms
    baseUri: https://wms.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.wms_token
    resources:
    - name: reservations
      path: /reservations
      operations:
      - name: reserve-inventory
        method: POST
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/bn-store/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: pricing
      path: /pricelists
      operations:
      - name: apply-sale-pricing
        method: POST
  - 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
Open in Framework → View in Fleet → flash-sale-activation.yml

Retrieves a secret value from Azure Key Vault by secret name for use in downstream integrations.

naftiko: '0.5'
info:
  label: Azure Key Vault Secret Retriever
  description: Retrieves a secret value from Azure Key Vault by secret name for use in downstream integrations.
  tags:
  - retail
  - azure-key-vault
capability:
  exposes:
  - type: mcp
    namespace: azure-kv
    port: 8080
    tools:
    - name: get-secret
      description: Retrieve a secret from Azure Key Vault.
      inputParameters:
      - name: secret_name
        in: body
        type: string
        description: Name of the secret.
      call: azure-kv.get-secret
      with:
        secret_name: '{{secret_name}}'
      outputParameters:
      - name: value
        type: string
        mapping: $.value
      - name: id
        type: string
        mapping: $.id
  consumes:
  - type: http
    namespace: azure-kv
    baseUri: https://bn-vault.vault.azure.net
    authentication:
      type: bearer
      token: $secrets.azure_kv_token
    resources:
    - name: secrets
      path: /secrets/{{secret_name}}?api-version=7.4
      inputParameters:
      - name: secret_name
        in: path
      operations:
      - name: get-secret
        method: GET
Open in Framework → View in Fleet → azure-key-vault-secret-retriever.yml

Pulls daily POS transactions from BigCommerce, compares against Oracle EBS cash receipts, logs variances in Google Sheets, and emails the finance team via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Daily Store Cash Reconciliation
  description: Pulls daily POS transactions from BigCommerce, compares against Oracle EBS cash receipts, logs variances in Google Sheets, and emails the finance team via Microsoft Outlook.
  tags:
  - retail
  - bigcommerce
  - oracle-e-business-suite
  - google-sheets
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: cash-recon
    port: 8080
    tools:
    - name: reconcile-cash
      description: Orchestrate daily store cash reconciliation.
      inputParameters:
      - name: store_code
        in: body
        type: string
        description: Store code.
      - name: date
        in: body
        type: string
        description: Reconciliation date.
      steps:
      - name: get-pos-totals
        type: call
        call: bigcommerce.get-daily-totals
        with:
          store_code: '{{store_code}}'
          date: '{{date}}'
      - name: get-erp-receipts
        type: call
        call: oracle-ebs.get-cash-receipts
        with:
          store_code: '{{store_code}}'
          date: '{{date}}'
      - name: log-variances
        type: call
        call: gsheets.append-rows
        with:
          spreadsheet_id: bn_cash_recon
          data: '{{store_code}},{{date}},{{get-pos-totals.total}},{{get-erp-receipts.total}}'
      - name: notify-finance
        type: call
        call: outlook.send-email
        with:
          to: finance@barnesandnoble.com
          subject: 'Cash Reconciliation: Store {{store_code}} - {{date}}'
          body: 'POS total: ${{get-pos-totals.total}}. ERP receipts: ${{get-erp-receipts.total}}.'
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/bn-store/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: orders
      path: /orders
      operations:
      - name: get-daily-totals
        method: GET
  - type: http
    namespace: oracle-ebs
    baseUri: https://erp.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.oracle_ebs_token
    resources:
    - name: cash-receipts
      path: /cash-receipts
      operations:
      - name: get-cash-receipts
        method: GET
  - type: http
    namespace: gsheets
    baseUri: https://sheets.googleapis.com/v4
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: spreadsheets
      path: /spreadsheets/{{spreadsheet_id}}/values:append
      inputParameters:
      - name: spreadsheet_id
        in: path
      operations:
      - name: append-rows
        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
Open in Framework → View in Fleet → daily-store-cash-reconciliation.yml

Ingests new title data from a publisher catalog feed, creates or updates product entries in BigCommerce, syncs with the warehouse, and notifies the buying team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Publisher Catalog Sync Pipeline
  description: Ingests new title data from a publisher catalog feed, creates or updates product entries in BigCommerce, syncs with the warehouse, and notifies the buying team via Microsoft Teams.
  tags:
  - retail
  - publishing
  - bigcommerce
  - wms
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: publisher-sync
    port: 8080
    tools:
    - name: sync-publisher-catalog
      description: Ingest new titles from a publisher and propagate across systems.
      inputParameters:
      - name: publisher_id
        in: body
        type: string
        description: Publisher identifier.
      - name: catalog_url
        in: body
        type: string
        description: URL of the publisher catalog feed.
      steps:
      - name: fetch-catalog
        type: call
        call: publisher.fetch-catalog
        with:
          publisher_id: '{{publisher_id}}'
          url: '{{catalog_url}}'
      - name: upsert-products
        type: call
        call: bigcommerce.upsert-products
        with:
          products: '{{fetch-catalog.titles}}'
      - name: sync-warehouse
        type: call
        call: wms.bulk-sync
        with:
          isbns: '{{fetch-catalog.isbn_list}}'
      - name: notify-buyers
        type: call
        call: msteams.send-message
        with:
          channel_id: buying_team
          text: 'Publisher {{publisher_id}} catalog synced: {{fetch-catalog.new_titles}} new titles, {{fetch-catalog.updated_titles}} updated.'
  consumes:
  - type: http
    namespace: publisher
    baseUri: https://publishers.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.publisher_token
    resources:
    - name: catalogs
      path: /publishers/{{publisher_id}}/catalog
      inputParameters:
      - name: publisher_id
        in: path
      operations:
      - name: fetch-catalog
        method: GET
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/bn-store/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: products
      path: /catalog/products
      operations:
      - name: upsert-products
        method: PUT
  - type: http
    namespace: wms
    baseUri: https://wms.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.wms_token
    resources:
    - name: bulk-sync
      path: /inventory/bulk-sync
      operations:
      - name: bulk-sync
        method: POST
  - 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
Open in Framework → View in Fleet → publisher-catalog-sync-pipeline.yml

Retrieves a document from a SharePoint site by path.

naftiko: '0.5'
info:
  label: SharePoint Document Retrieval
  description: Retrieves a document from a SharePoint site by path.
  tags:
  - collaboration
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: documents
    port: 8080
    tools:
    - name: get-document
      description: Retrieve a document from SharePoint.
      inputParameters:
      - name: site_id
        in: body
        type: string
        description: Site ID.
      - name: file_path
        in: body
        type: string
        description: File path.
      call: sharepoint.get-file
      with:
        site_id: '{{site_id}}'
        file_path: '{{file_path}}'
      outputParameters:
      - name: download_url
        type: string
        mapping: $.@microsoft.graph.downloadUrl
      - name: last_modified
        type: string
        mapping: $.lastModifiedDateTime
  consumes:
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: files
      path: /{{site_id}}/drive/root:/{{file_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: file_path
        in: path
      operations:
      - name: get-file
        method: GET
Open in Framework → View in Fleet → sharepoint-document-retrieval.yml

Provisions a new store by creating location records in Oracle EBS, setting up a POS profile in BigCommerce, creating a ServiceNow configuration item, and notifying operations via Microsoft Teams.

naftiko: '0.5'
info:
  label: New Store Setup Orchestrator
  description: Provisions a new store by creating location records in Oracle EBS, setting up a POS profile in BigCommerce, creating a ServiceNow configuration item, and notifying operations via Microsoft Teams.
  tags:
  - retail
  - oracle-e-business-suite
  - bigcommerce
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: new-store
    port: 8080
    tools:
    - name: setup-store
      description: Orchestrate new store provisioning across all systems.
      inputParameters:
      - name: store_name
        in: body
        type: string
        description: Store name.
      - name: store_code
        in: body
        type: string
        description: Store code.
      - name: address
        in: body
        type: string
        description: Store address.
      steps:
      - name: create-location
        type: call
        call: oracle-ebs.create-location
        with:
          store_name: '{{store_name}}'
          store_code: '{{store_code}}'
          address: '{{address}}'
      - name: create-pos-profile
        type: call
        call: bigcommerce.create-channel
        with:
          name: '{{store_name}} POS'
          type: pos
          store_code: '{{store_code}}'
      - name: create-ci
        type: call
        call: servicenow.create-ci
        with:
          name: Store - {{store_name}}
          category: retail_location
          location: '{{address}}'
      - name: notify-ops
        type: call
        call: msteams.send-message
        with:
          channel_id: store_ops
          text: 'New store provisioned: {{store_name}} ({{store_code}}). ERP location, POS profile, and CMDB entry created.'
  consumes:
  - type: http
    namespace: oracle-ebs
    baseUri: https://erp.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.oracle_ebs_token
    resources:
    - name: locations
      path: /locations
      operations:
      - name: create-location
        method: POST
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/bn-store/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: channels
      path: /channels
      operations:
      - name: create-channel
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://barnesandnoble.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: cmdb
      path: /table/cmdb_ci
      operations:
      - name: create-ci
        method: POST
  - 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
Open in Framework → View in Fleet → new-store-setup-orchestrator.yml

Generates end-of-month reports by querying Teradata for sales data, refreshing Power BI dashboards, exporting a summary to SharePoint, and emailing executives via Microsoft Outlook.

naftiko: '0.5'
info:
  label: End of Month Reporting Orchestrator
  description: Generates end-of-month reports by querying Teradata for sales data, refreshing Power BI dashboards, exporting a summary to SharePoint, and emailing executives via Microsoft Outlook.
  tags:
  - retail
  - teradata
  - power-bi
  - sharepoint
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: eom-report
    port: 8080
    tools:
    - name: generate-eom-report
      description: Orchestrate end-of-month reporting workflow.
      inputParameters:
      - name: month
        in: body
        type: string
        description: Reporting month in YYYY-MM format.
      steps:
      - name: query-sales
        type: call
        call: teradata.run-monthly-report
        with:
          month: '{{month}}'
      - name: refresh-dashboard
        type: call
        call: powerbi.refresh-dataset
        with:
          dataset_id: bn_monthly_sales
      - name: upload-report
        type: call
        call: sharepoint.upload-file
        with:
          site: bn-finance
          folder: Monthly Reports
          file_name: sales_report_{{month}}.xlsx
          data: '{{query-sales.export_url}}'
      - name: email-executives
        type: call
        call: outlook.send-email
        with:
          to: executives@barnesandnoble.com
          subject: End of Month Sales Report - {{month}}
          body: 'Monthly sales report is available. Revenue: ${{query-sales.total_revenue}}. Power BI dashboard refreshed. Report uploaded to SharePoint.'
  consumes:
  - type: http
    namespace: teradata
    baseUri: https://teradata.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.teradata_token
    resources:
    - name: reports
      path: /queries/monthly-sales
      operations:
      - name: run-monthly-report
        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: sharepoint
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: files
      path: /sites/{{site}}/drive/root:/{{folder}}/{{file_name}}:/content
      inputParameters:
      - name: site
        in: path
      - name: folder
        in: path
      - name: file_name
        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
Open in Framework → View in Fleet → end-of-month-reporting-orchestrator.yml

Checks e-commerce application health via Datadog and Dynatrace, and if errors are detected, creates a ServiceNow incident and alerts the engineering team via Microsoft Teams.

naftiko: '0.5'
info:
  label: E-Commerce Site Health Monitor
  description: Checks e-commerce application health via Datadog and Dynatrace, and if errors are detected, creates a ServiceNow incident and alerts the engineering team via Microsoft Teams.
  tags:
  - retail
  - datadog
  - dynatrace
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: site-health
    port: 8080
    tools:
    - name: check-site-health
      description: Orchestrate e-commerce site health check and incident creation.
      inputParameters:
      - name: service_name
        in: body
        type: string
        description: Service name to check.
      steps:
      - name: check-datadog
        type: call
        call: datadog.get-service-status
        with:
          service: '{{service_name}}'
      - name: check-dynatrace
        type: call
        call: dynatrace.get-problem-feed
        with:
          entity: '{{service_name}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: Health degradation detected for {{service_name}}
          description: 'Datadog status: {{check-datadog.status}}. Dynatrace problems: {{check-dynatrace.problem_count}}'
          urgency: '2'
      - name: alert-engineering
        type: call
        call: msteams.send-message
        with:
          channel_id: engineering
          text: Site health alert for {{service_name}}. Incident {{create-incident.incident_number}} created.
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apiKey
      key: $secrets.datadog_api_key
    resources:
    - name: services
      path: /check_run?check={{service}}
      inputParameters:
      - name: service
        in: query
      operations:
      - name: get-service-status
        method: GET
  - type: http
    namespace: dynatrace
    baseUri: https://bn.live.dynatrace.com/api/v2
    authentication:
      type: bearer
      token: $secrets.dynatrace_token
    resources:
    - name: problems
      path: /problems?entitySelector=type(SERVICE),entityName({{entity}})
      inputParameters:
      - name: entity
        in: query
      operations:
      - name: get-problem-feed
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://barnesandnoble.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: 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
Open in Framework → View in Fleet → e-commerce-site-health-monitor.yml

Searches Confluence for book retail procedures and policy documents.

naftiko: '0.5'
info:
  label: Confluence Knowledge Article Search
  description: Searches Confluence for book retail procedures and policy documents.
  tags:
  - collaboration
  - confluence
  - knowledge-management
capability:
  exposes:
  - type: mcp
    namespace: knowledge-base
    port: 8080
    tools:
    - name: search-articles
      description: Search Confluence for knowledge articles.
      inputParameters:
      - name: query
        in: body
        type: string
        description: Search query.
      call: confluence.search
      with:
        cql: text ~ "{{query}}" and space = KB
      outputParameters:
      - name: results
        type: array
        mapping: $.results
      - name: total
        type: number
        mapping: $.totalSize
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://barnesnoble.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: search
      path: /search
      operations:
      - name: search
        method: GET
Open in Framework → View in Fleet → confluence-knowledge-article-search.yml

Appends a data row to a Google Sheets spreadsheet. Reusable logging component.

naftiko: '0.5'
info:
  label: Google Sheets Logger
  description: Appends a data row to a Google Sheets spreadsheet. Reusable logging component.
  tags:
  - productivity
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: sheets-logger
    port: 8080
    tools:
    - name: append-row
      description: Append a row to a Google Sheets spreadsheet.
      inputParameters:
      - name: spreadsheet_id
        in: body
        type: string
        description: Spreadsheet ID.
      - name: range
        in: body
        type: string
        description: Range.
      - name: values
        in: body
        type: array
        description: Row values.
      call: gsheets.append-row
      with:
        spreadsheet_id: '{{spreadsheet_id}}'
        range: '{{range}}'
        values: '{{values}}'
  consumes:
  - 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
Open in Framework → View in Fleet → google-sheets-logger.yml

Executes a price markdown by updating product prices in BigCommerce, adjusting inventory valuation in Oracle EBS, refreshing the Power BI sales dashboard, and notifying the pricing team via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Price Markdown Execution Pipeline
  description: Executes a price markdown by updating product prices in BigCommerce, adjusting inventory valuation in Oracle EBS, refreshing the Power BI sales dashboard, and notifying the pricing team via Microsoft Outlook.
  tags:
  - retail
  - bigcommerce
  - oracle-e-business-suite
  - power-bi
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: markdown
    port: 8080
    tools:
    - name: execute-markdown
      description: Orchestrate price markdown across e-commerce and ERP systems.
      inputParameters:
      - name: product_ids
        in: body
        type: array
        description: List of product IDs to mark down.
      - name: discount_percent
        in: body
        type: number
        description: Discount percentage.
      steps:
      - name: update-prices
        type: call
        call: bigcommerce.batch-update-prices
        with:
          product_ids: '{{product_ids}}'
          discount_percent: '{{discount_percent}}'
      - name: update-valuation
        type: call
        call: oracle-ebs.adjust-inventory-value
        with:
          product_ids: '{{product_ids}}'
          adjustment_percent: '{{discount_percent}}'
      - name: refresh-dashboard
        type: call
        call: powerbi.refresh-dataset
        with:
          dataset_id: bn_sales_dashboard
      - name: notify-pricing
        type: call
        call: outlook.send-email
        with:
          to: pricing@barnesandnoble.com
          subject: 'Markdown Executed: {{discount_percent}}% off'
          body: Price markdown of {{discount_percent}}% applied to {{update-prices.updated_count}} products. Dashboard refreshed.
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/bn-store/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: products
      path: /catalog/products
      operations:
      - name: batch-update-prices
        method: PUT
  - type: http
    namespace: oracle-ebs
    baseUri: https://erp.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.oracle_ebs_token
    resources:
    - name: inventory
      path: /inventory/valuation
      operations:
      - name: adjust-inventory-value
        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: refresh-dataset
        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
Open in Framework → View in Fleet → price-markdown-execution-pipeline.yml

Pulls daily sales from the POS, combines with foot traffic data, and writes a consolidated report to Google Sheets.

naftiko: '0.5'
info:
  label: Store Performance Dashboard Builder
  description: Pulls daily sales from the POS, combines with foot traffic data, and writes a consolidated report to Google Sheets.
  tags:
  - retail
  - analytics
  - pos
  - google-analytics
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: store-performance
    port: 8080
    tools:
    - name: build-daily-report
      description: Aggregate POS sales and traffic data into a daily performance report.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: Store ID.
      - name: date
        in: body
        type: string
        description: Report date.
      steps:
      - name: get-sales
        type: call
        call: pos.get-daily-sales
        with:
          store_id: '{{store_id}}'
          date: '{{date}}'
      - name: get-traffic
        type: call
        call: ga.get-store-traffic
        with:
          store_id: '{{store_id}}'
          date: '{{date}}'
      - name: write-report
        type: call
        call: gsheets.append-row
        with:
          spreadsheet_id: bn_store_daily
          range: Performance!A:F
          values:
          - '{{date}}'
          - '{{store_id}}'
          - '{{get-sales.total_revenue}}'
          - '{{get-sales.transaction_count}}'
          - '{{get-traffic.visitors}}'
          - '{{get-sales.avg_basket_size}}'
  consumes:
  - type: http
    namespace: pos
    baseUri: https://pos.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.pos_token
    resources:
    - name: daily-sales
      path: /stores/{{store_id}}/sales/{{date}}
      inputParameters:
      - name: store_id
        in: path
      - name: date
        in: path
      operations:
      - name: get-daily-sales
        method: GET
  - 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-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}}:append
      inputParameters:
      - name: spreadsheet_id
        in: path
      - name: range
        in: path
      operations:
      - name: append-row
        method: POST
Open in Framework → View in Fleet → store-performance-dashboard-builder.yml

Prepares inventory for an upcoming book signing by checking warehouse stock via WMS, creating a transfer order in Oracle EBS if needed, and confirming readiness to the events team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Book Signing Inventory Prep Pipeline
  description: Prepares inventory for an upcoming book signing by checking warehouse stock via WMS, creating a transfer order in Oracle EBS if needed, and confirming readiness to the events team via Microsoft Teams.
  tags:
  - retail
  - oracle-e-business-suite
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: signing-prep
    port: 8080
    tools:
    - name: prep-signing-inventory
      description: Orchestrate inventory preparation for a book signing event.
      inputParameters:
      - name: isbn
        in: body
        type: string
        description: Book ISBN.
      - name: store_code
        in: body
        type: string
        description: Store code hosting the event.
      - name: quantity_needed
        in: body
        type: number
        description: Number of copies needed.
      steps:
      - name: check-store-stock
        type: call
        call: wms.get-inventory
        with:
          isbn: '{{isbn}}'
          location: '{{store_code}}'
      - name: transfer-stock
        type: call
        call: oracle-ebs.create-transfer-order
        with:
          isbn: '{{isbn}}'
          to_store: '{{store_code}}'
          quantity: '{{quantity_needed}}'
      - name: confirm-readiness
        type: call
        call: msteams.send-message
        with:
          channel_id: events
          text: 'Signing inventory prep complete for ISBN {{isbn}} at store {{store_code}}. Current stock: {{check-store-stock.quantity}}. Transfer order: {{transfer-stock.order_id}}.'
  consumes:
  - type: http
    namespace: wms
    baseUri: https://wms.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.wms_token
    resources:
    - name: inventory
      path: /inventory/{{isbn}}
      inputParameters:
      - name: isbn
        in: path
      operations:
      - name: get-inventory
        method: GET
  - type: http
    namespace: oracle-ebs
    baseUri: https://erp.barnesandnoble.com/api/v1
    authentication:
      type: bearer
      token: $secrets.oracle_ebs_token
    resources:
    - name: transfer-orders
      path: /transfer-orders
      operations:
      - name: create-transfer-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: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → book-signing-inventory-prep-pipeline.yml

Sends a WhatsApp notification message to a customer using a pre-approved template for order updates and promotions.

naftiko: '0.5'
info:
  label: WhatsApp Customer Notification
  description: Sends a WhatsApp notification message to a customer using a pre-approved template for order updates and promotions.
  tags:
  - retail
  - whatsapp
capability:
  exposes:
  - type: mcp
    namespace: whatsapp
    port: 8080
    tools:
    - name: send-notification
      description: Send a WhatsApp notification to a customer.
      inputParameters:
      - name: phone_number
        in: body
        type: string
        description: Customer phone number.
      - name: template_name
        in: body
        type: string
        description: WhatsApp message template name.
      - name: parameters
        in: body
        type: object
        description: Template parameters.
      call: whatsapp.send-template
      with:
        phone_number: '{{phone_number}}'
        template_name: '{{template_name}}'
        parameters: '{{parameters}}'
      outputParameters:
      - name: message_id
        type: string
        mapping: $.messages[0].id
  consumes:
  - 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-template
        method: POST
Open in Framework → View in Fleet → whatsapp-customer-notification.yml

Queries Datadog for p99 API latency metrics on the e-commerce platform.

naftiko: '0.5'
info:
  label: Datadog API Latency Check
  description: Queries Datadog for p99 API latency metrics on the e-commerce platform.
  tags:
  - monitoring
  - datadog
  - latency
capability:
  exposes:
  - type: mcp
    namespace: api-latency
    port: 8080
    tools:
    - name: get-api-latency
      description: Retrieve p99 latency metrics for a given API endpoint.
      inputParameters:
      - name: endpoint_name
        in: body
        type: string
        description: API endpoint name to query.
      call: datadog.query-metrics
      with:
        query: p99:api.latency{endpoint:{{endpoint_name}}}
  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: query-metrics
        method: GET
Open in Framework → View in Fleet → datadog-api-latency-check.yml

Retrieves the current firewall policy status and active threat count from Palo Alto Networks.

naftiko: '0.5'
info:
  label: Palo Alto Firewall Status
  description: Retrieves the current firewall policy status and active threat count from Palo Alto Networks.
  tags:
  - security
  - palo-alto-networks
  - firewall
capability:
  exposes:
  - type: mcp
    namespace: network-security
    port: 8080
    tools:
    - name: get-firewall-status
      description: Look up Palo Alto firewall status by device name.
      inputParameters:
      - name: device_name
        in: body
        type: string
        description: Palo Alto firewall device name.
      call: paloalto.get-device-status
      with:
        device_name: '{{device_name}}'
  consumes:
  - type: http
    namespace: paloalto
    baseUri: https://panorama.bloomingdales.com/restapi/v10.1
    authentication:
      type: apiKey
      key: $secrets.paloalto_api_key
    resources:
    - name: devices
      path: /Devices/{{device_name}}/status
      inputParameters:
      - name: device_name
        in: path
      operations:
      - name: get-device-status
        method: GET
Open in Framework → View in Fleet → palo-alto-firewall-status.yml

Retrieves a Jira issue for store operations task management.

naftiko: '0.5'
info:
  label: Jira Store Operations Task
  description: Retrieves a Jira issue for store operations task management.
  tags:
  - project-management
  - jira
  - retail
capability:
  exposes:
  - type: mcp
    namespace: store-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: Jira issue key.
      call: jira.get-issue
      with:
        issue_key: '{{issue_key}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://bloomingdales.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
Open in Framework → View in Fleet → jira-store-operations-task.yml

Sends a message to a Microsoft Teams channel for store operations notifications.

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

Assigns a Pluralsight training course, creates a Jira tracking task, provisions SharePoint training materials, and notifies the beauty team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Beauty Counter Training Pipeline
  description: Assigns a Pluralsight training course, creates a Jira tracking task, provisions SharePoint training materials, and notifies the beauty team via Microsoft Teams.
  tags:
  - training
  - pluralsight
  - jira
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: beauty-training
    port: 8080
    tools:
    - name: assign-beauty-training
      description: Orchestrate beauty counter associate training across LMS, project tracking, and collaboration.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: Workday employee ID.
      - name: brand_name
        in: body
        type: string
        description: Beauty brand for training.
      - name: store_code
        in: body
        type: string
        description: Store location code.
      steps:
      - name: assign-course
        type: call
        call: pluralsight.assign-course
        with:
          user_id: '{{employee_id}}'
          course_id: beauty_{{brand_name}}_certification
      - name: create-task
        type: call
        call: jira.create-issue
        with:
          project_key: TRN
          summary: 'Beauty training: {{brand_name}} for employee {{employee_id}}'
          issue_type: Task
          description: Complete {{brand_name}} certification by assigned deadline.
      - name: share-materials
        type: call
        call: sharepoint.create-folder
        with:
          site_id: beauty_training
          folder_path: '{{brand_name}}/{{employee_id}}'
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          channel_id: beauty_store_{{store_code}}
          text: 'New beauty training assigned: {{brand_name}} certification for employee {{employee_id}}. Jira: {{create-task.key}}. Materials: {{share-materials.url}}.'
  consumes:
  - type: http
    namespace: pluralsight
    baseUri: https://api.pluralsight.com/api/v1
    authentication:
      type: bearer
      token: $secrets.pluralsight_token
    resources:
    - name: assignments
      path: /course-assignments
      operations:
      - name: assign-course
        method: POST
  - type: http
    namespace: jira
    baseUri: https://bloomingdales.atlassian.net/rest/api/3
    authentication:
      type: 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: 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
Open in Framework → View in Fleet → beauty-counter-training-pipeline.yml

Executes a KQL query against Azure Log Analytics workspace for operational insights.

naftiko: '0.5'
info:
  label: Azure Log Analytics Query
  description: Executes a KQL query against Azure Log Analytics workspace for operational insights.
  tags:
  - monitoring
  - azure-log-analytics
  - operations
capability:
  exposes:
  - type: mcp
    namespace: log-analytics
    port: 8080
    tools:
    - name: run-kql-query
      description: Execute a KQL query in Azure Log Analytics.
      inputParameters:
      - name: kql_query
        in: body
        type: string
        description: KQL query string to execute.
      call: azure-logs.run-query
      with:
        query: '{{kql_query}}'
  consumes:
  - type: http
    namespace: azure-logs
    baseUri: https://api.loganalytics.io/v1/workspaces
    authentication:
      type: bearer
      token: $secrets.azure_log_analytics_token
    resources:
    - name: queries
      path: /bloomingdales-workspace/query
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → azure-log-analytics-query.yml

Executes a query against the SAP BW retail sales info cube.

naftiko: '0.5'
info:
  label: SAP BW Sales Cube Query
  description: Executes a query against the SAP BW retail sales info cube.
  tags:
  - analytics
  - sap-bw
  - sales
capability:
  exposes:
  - type: mcp
    namespace: bw-analytics
    port: 8080
    tools:
    - name: query-sales-cube
      description: Run a query against the SAP BW sales cube.
      inputParameters:
      - name: query_name
        in: body
        type: string
        description: SAP BW query technical name.
      call: sap-bw.execute-query
      with:
        query_name: '{{query_name}}'
  consumes:
  - type: http
    namespace: sap-bw
    baseUri: https://sap-bw.bloomingdales.com/sap/bw/ina
    authentication:
      type: basic
      username: $secrets.sap_bw_user
      password: $secrets.sap_bw_password
    resources:
    - name: queries
      path: /GetResponse
      operations:
      - name: execute-query
        method: POST
Open in Framework → View in Fleet → sap-bw-sales-cube-query.yml

Retrieves the daily settlement report from Square POS for a store location.

naftiko: '0.5'
info:
  label: Square Daily Settlement
  description: Retrieves the daily settlement report from Square POS for a store location.
  tags:
  - payments
  - square
  - settlement
capability:
  exposes:
  - type: mcp
    namespace: pos-settlements
    port: 8080
    tools:
    - name: get-daily-settlement
      description: Retrieve Square daily settlement for a location.
      inputParameters:
      - name: location_id
        in: body
        type: string
        description: Square location ID.
      - name: settlement_date
        in: body
        type: string
        description: Settlement date in YYYY-MM-DD format.
      call: square.get-settlement
      with:
        location_id: '{{location_id}}'
        date: '{{settlement_date}}'
  consumes:
  - type: http
    namespace: square
    baseUri: https://connect.squareup.com/v2
    authentication:
      type: bearer
      token: $secrets.square_token
    resources:
    - name: settlements
      path: /locations/{{location_id}}/settlements
      inputParameters:
      - name: location_id
        in: path
      operations:
      - name: get-settlement
        method: GET
Open in Framework → View in Fleet → square-daily-settlement.yml

Retrieves a Salesforce campaign by ID for marketing performance tracking.

naftiko: '0.5'
info:
  label: Salesforce Campaign Performance
  description: Retrieves a Salesforce campaign by ID for marketing performance tracking.
  tags:
  - marketing
  - salesforce
  - campaign
capability:
  exposes:
  - type: mcp
    namespace: campaign-tracking
    port: 8080
    tools:
    - name: get-campaign
      description: Look up a Salesforce campaign.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: Salesforce campaign ID.
      call: salesforce.get-campaign
      with:
        campaign_id: '{{campaign_id}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://bloomingdales.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
Open in Framework → View in Fleet → salesforce-campaign-performance.yml

When a new product is added to BigCommerce, creates marketing assets in Box, schedules a Facebook promotion, and notifies the merchandising team in Microsoft Teams.

naftiko: '0.5'
info:
  label: New Product Launch Pipeline
  description: When a new product is added to BigCommerce, creates marketing assets in Box, schedules a Facebook promotion, and notifies the merchandising team in Microsoft Teams.
  tags:
  - product-launch
  - bigcommerce
  - box
  - facebook
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: product-launch
    port: 8080
    tools:
    - name: launch-new-product
      description: Orchestrate new product launch across marketing, social, and merchandising systems.
      inputParameters:
      - name: product_id
        in: body
        type: string
        description: BigCommerce product ID.
      - name: launch_date
        in: body
        type: string
        description: Launch date in YYYY-MM-DD.
      steps:
      - name: get-product
        type: call
        call: bigcommerce.get-product
        with:
          product_id: '{{product_id}}'
      - name: create-asset-folder
        type: call
        call: box.create-folder
        with:
          parent_id: marketing_assets
          name: '{{get-product.name}}_{{launch_date}}'
      - name: create-fb-post
        type: call
        call: facebook.create-post
        with:
          page_id: bloomingdales
          message: Introducing {{get-product.name}}! Starting at ${{get-product.price}}. Available {{launch_date}}.
          scheduled_publish_time: '{{launch_date}}T10:00:00'
      - name: notify-merch-team
        type: call
        call: msteams.send-message
        with:
          channel_id: merchandising
          text: 'New product launch: {{get-product.name}} ({{product_id}}) on {{launch_date}}. Assets: {{create-asset-folder.url}}. FB post: {{create-fb-post.id}}.'
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/bloomingdales/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
  - 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: facebook
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.facebook_token
    resources:
    - name: posts
      path: /{{page_id}}/feed
      inputParameters:
      - name: page_id
        in: path
      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/{{channel_id}}/channels/general/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → new-product-launch-pipeline.yml

Downloads a marketing asset file from Google Drive by file ID.

naftiko: '0.5'
info:
  label: Google Drive Asset Download
  description: Downloads a marketing asset file from Google Drive by file ID.
  tags:
  - marketing
  - google-drive
  - assets
capability:
  exposes:
  - type: mcp
    namespace: drive-assets
    port: 8080
    tools:
    - name: download-asset
      description: Download a file from Google Drive by file ID.
      inputParameters:
      - name: file_id
        in: body
        type: string
        description: Google Drive file ID.
      call: google-drive.get-file
      with:
        file_id: '{{file_id}}'
  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/{{file_id}}?alt=media
      inputParameters:
      - name: file_id
        in: path
      operations:
      - name: get-file
        method: GET
Open in Framework → View in Fleet → google-drive-asset-download.yml

Retrieves the latest published version of a Google Tag Manager container for e-commerce tracking.

naftiko: '0.5'
info:
  label: Google Tag Manager Container Version
  description: Retrieves the latest published version of a Google Tag Manager container for e-commerce tracking.
  tags:
  - marketing
  - google-tag-manager
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: tag-management
    port: 8080
    tools:
    - name: get-container-version
      description: Look up the latest 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.
      call: gtm.get-latest-version
      with:
        account_id: '{{account_id}}'
        container_id: '{{container_id}}'
  consumes:
  - type: http
    namespace: gtm
    baseUri: https://www.googleapis.com/tagmanager/v2
    authentication:
      type: bearer
      token: $secrets.google_tagmanager_token
    resources:
    - name: versions
      path: /accounts/{{account_id}}/containers/{{container_id}}/version_headers
      inputParameters:
      - name: account_id
        in: path
      - name: container_id
        in: path
      operations:
      - name: get-latest-version
        method: GET
Open in Framework → View in Fleet → google-tag-manager-container-version.yml

When Dynatrace detects a website outage, creates a P1 ServiceNow incident, posts a Cloudflare maintenance page, and notifies the e-commerce team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Website Outage Response Pipeline
  description: When Dynatrace detects a website outage, creates a P1 ServiceNow incident, posts a Cloudflare maintenance page, and notifies the e-commerce team via Microsoft Teams.
  tags:
  - incident-response
  - dynatrace
  - servicenow
  - cloudflare
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: outage-response
    port: 8080
    tools:
    - name: handle-outage
      description: Orchestrate website outage response across monitoring, incident, and CDN systems.
      inputParameters:
      - name: alert_id
        in: body
        type: string
        description: Dynatrace alert ID.
      - name: affected_url
        in: body
        type: string
        description: Affected website URL.
      steps:
      - name: get-alert
        type: call
        call: dynatrace.get-alert
        with:
          alert_id: '{{alert_id}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Website outage: {{affected_url}}'
          priority: '1'
          category: e-commerce
          description: 'Dynatrace alert {{alert_id}}: {{get-alert.title}}. Impact: {{get-alert.impact_level}}.'
      - name: enable-maintenance-page
        type: call
        call: cloudflare.create-page-rule
        with:
          zone_id: bloomingdales_zone
          url_pattern: '{{affected_url}}/*'
          action: forwarding_url
          destination: https://bloomingdales.com/maintenance.html
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          channel_id: ecommerce_ops
          text: 'OUTAGE: {{affected_url}} is down. Dynatrace: {{get-alert.title}}. ServiceNow: {{create-incident.number}}. Maintenance page enabled.'
  consumes:
  - type: http
    namespace: dynatrace
    baseUri: https://bloomingdales.live.dynatrace.com/api/v2
    authentication:
      type: bearer
      token: $secrets.dynatrace_token
    resources:
    - name: alerts
      path: /problems/{{alert_id}}
      inputParameters:
      - name: alert_id
        in: path
      operations:
      - name: get-alert
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://bloomingdales.service-now.com/api/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: cloudflare
    baseUri: https://api.cloudflare.com/client/v4
    authentication:
      type: bearer
      token: $secrets.cloudflare_token
    resources:
    - name: page-rules
      path: /zones/{{zone_id}}/pagerules
      inputParameters:
      - name: zone_id
        in: path
      operations:
      - name: create-page-rule
        method: POST
  - 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
Open in Framework → View in Fleet → website-outage-response-pipeline.yml

Retrieves Adobe Analytics report data for e-commerce conversion and revenue tracking.

naftiko: '0.5'
info:
  label: Adobe Analytics E-Commerce Tracking
  description: Retrieves Adobe Analytics report data for e-commerce conversion and revenue tracking.
  tags:
  - analytics
  - adobe-analytics
  - e-commerce
capability:
  exposes:
  - type: mcp
    namespace: adobe-analytics
    port: 8080
    tools:
    - name: get-analytics-report
      description: Retrieve an Adobe Analytics report.
      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 for the report.
      call: adobe.get-report
      with:
        rsid: '{{report_suite_id}}'
        dateRange: '{{date_range}}'
  consumes:
  - type: http
    namespace: adobe
    baseUri: https://analytics.adobe.io/api/bloomingdales
    authentication:
      type: bearer
      token: $secrets.adobe_analytics_token
    resources:
    - name: reports
      path: /reports
      operations:
      - name: get-report
        method: POST
Open in Framework → View in Fleet → adobe-analytics-e-commerce-tracking.yml

Retrieves pod status from an Azure Kubernetes Service cluster.

naftiko: '0.5'
info:
  label: Azure Kubernetes Pod Status
  description: Retrieves pod status from an Azure Kubernetes Service cluster.
  tags:
  - infrastructure
  - azure-kubernetes-service
  - containers
capability:
  exposes:
  - type: mcp
    namespace: aks-status
    port: 8080
    tools:
    - name: get-pod-status
      description: List pod statuses for a namespace in AKS.
      inputParameters:
      - name: namespace
        in: body
        type: string
        description: Kubernetes namespace.
      call: aks.list-pods
      with:
        namespace: '{{namespace}}'
  consumes:
  - type: http
    namespace: aks
    baseUri: https://bloomingdales-aks.hcp.eastus.azmk8s.io
    authentication:
      type: bearer
      token: $secrets.aks_token
    resources:
    - name: pods
      path: /api/v1/namespaces/{{namespace}}/pods
      inputParameters:
      - name: namespace
        in: path
      operations:
      - name: list-pods
        method: GET
Open in Framework → View in Fleet → azure-kubernetes-pod-status.yml

Pulls headcount requirements from Teradata analytics, creates job postings on Indeed, generates schedules in Workday, and notifies store managers via Microsoft Teams.

naftiko: '0.5'
info:
  label: Seasonal Staff Scheduling Pipeline
  description: Pulls headcount requirements from Teradata analytics, creates job postings on Indeed, generates schedules in Workday, and notifies store managers via Microsoft Teams.
  tags:
  - hr
  - teradata
  - indeed
  - workday
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: seasonal-staffing
    port: 8080
    tools:
    - name: plan-seasonal-staff
      description: Orchestrate seasonal staffing across analytics, recruiting, HCM, and communication.
      inputParameters:
      - name: store_code
        in: body
        type: string
        description: Store location code.
      - name: season
        in: body
        type: string
        description: Season name.
      steps:
      - name: get-requirements
        type: call
        call: teradata.execute-query
        with:
          query: SELECT positions_needed, department FROM SEASONAL_REQUIREMENTS WHERE store_code='{{store_code}}' AND season='{{season}}'
          database: HR_DB
      - name: create-posting
        type: call
        call: indeed.create-job
        with:
          title: Seasonal {{season}} Associate - Store {{store_code}}
          description: Join Bloomingdale's for the {{season}} season!
          location: Store {{store_code}}
      - name: create-schedule
        type: call
        call: workday.create-schedule
        with:
          store_code: '{{store_code}}'
          season: '{{season}}'
          headcount: '{{get-requirements.positions_needed}}'
      - name: notify-manager
        type: call
        call: msteams.send-message
        with:
          channel_id: store_{{store_code}}
          text: 'Seasonal staffing for {{season}}: {{get-requirements.positions_needed}} positions needed. Job posted on Indeed. Schedule template created in Workday.'
  consumes:
  - type: http
    namespace: teradata
    baseUri: https://bloomingdales-td.teradata.com/api/v1
    authentication:
      type: bearer
      token: $secrets.teradata_token
    resources:
    - name: queries
      path: /queries
      operations:
      - name: execute-query
        method: POST
  - type: http
    namespace: indeed
    baseUri: https://apis.indeed.com/v2
    authentication:
      type: bearer
      token: $secrets.indeed_token
    resources:
    - name: jobs
      path: /jobs
      operations:
      - name: create-job
        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: schedules
      path: /schedules
      operations:
      - name: create-schedule
        method: POST
  - 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
Open in Framework → View in Fleet → seasonal-staff-scheduling-pipeline.yml

Retrieves the current deal stage and value for a HubSpot deal.

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

Identifies VIP customers from Salesforce, sends a personalized invitation via MailChimp, and logs the outreach in Teradata.

naftiko: '0.5'
info:
  label: VIP Customer Outreach Pipeline
  description: Identifies VIP customers from Salesforce, sends a personalized invitation via MailChimp, and logs the outreach in Teradata.
  tags:
  - marketing
  - salesforce
  - mailchimp
  - teradata
capability:
  exposes:
  - type: mcp
    namespace: vip-outreach
    port: 8080
    tools:
    - name: execute-vip-outreach
      description: Orchestrate VIP customer outreach across CRM, email, and analytics.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: Salesforce VIP customer ID.
      - name: event_name
        in: body
        type: string
        description: Exclusive event name.
      steps:
      - name: get-customer
        type: call
        call: salesforce.get-contact
        with:
          contact_id: '{{customer_id}}'
      - name: send-invitation
        type: call
        call: mailchimp.send-transactional
        with:
          email: '{{get-customer.email}}'
          template: vip_invitation
          merge_vars: '{"FIRST_NAME": "{{get-customer.first_name}}", "EVENT": "{{event_name}}"}'
      - name: log-outreach
        type: call
        call: teradata.execute-query
        with:
          query: INSERT INTO VIP_OUTREACH (customer_id, event_name, created_at) VALUES ('{{customer_id}}', '{{event_name}}', CURRENT_TIMESTAMP)
          database: MARKETING_DB
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://bloomingdales.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: mailchimp
    baseUri: https://mandrillapp.com/api/1.0
    authentication:
      type: apiKey
      key: $secrets.mandrill_api_key
    resources:
    - name: messages
      path: /messages/send-template
      operations:
      - name: send-transactional
        method: POST
  - type: http
    namespace: teradata
    baseUri: https://bloomingdales-td.teradata.com/api/v1
    authentication:
      type: bearer
      token: $secrets.teradata_token
    resources:
    - name: queries
      path: /queries
      operations:
      - name: execute-query
        method: POST
Open in Framework → View in Fleet → vip-customer-outreach-pipeline.yml

Creates an Instagram shopping post for product promotion and social commerce.

naftiko: '0.5'
info:
  label: Instagram Shopping Post
  description: Creates an Instagram shopping post for product promotion and social commerce.
  tags:
  - marketing
  - instagram
  - social-commerce
capability:
  exposes:
  - type: mcp
    namespace: social-commerce
    port: 8080
    tools:
    - name: create-shopping-post
      description: Create an Instagram shopping post.
      inputParameters:
      - name: image_url
        in: body
        type: string
        description: Product image URL.
      - name: caption
        in: body
        type: string
        description: Post caption.
      call: instagram.create-media
      with:
        image_url: '{{image_url}}'
        caption: '{{caption}}'
  consumes:
  - type: http
    namespace: instagram
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.instagram_token
    resources:
    - name: media
      path: /me/media
      operations:
      - name: create-media
        method: POST
Open in Framework → View in Fleet → instagram-shopping-post.yml

Retrieves product details from BigCommerce for e-commerce catalog management.

naftiko: '0.5'
info:
  label: BigCommerce Product Catalog Lookup
  description: Retrieves product details from BigCommerce for e-commerce catalog management.
  tags:
  - e-commerce
  - bigcommerce
  - catalog
capability:
  exposes:
  - type: mcp
    namespace: product-catalog
    port: 8080
    tools:
    - name: get-product
      description: Look up a BigCommerce product by ID.
      inputParameters:
      - name: product_id
        in: body
        type: string
        description: BigCommerce product ID.
      call: bigcommerce.get-product
      with:
        product_id: '{{product_id}}'
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/bloomingdales/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
Open in Framework → View in Fleet → bigcommerce-product-catalog-lookup.yml

Retrieves a Square POS transaction by payment ID for in-store sales reconciliation.

naftiko: '0.5'
info:
  label: Square POS Transaction Lookup
  description: Retrieves a Square POS transaction by payment ID for in-store sales reconciliation.
  tags:
  - payments
  - square
  - pos
  - retail
capability:
  exposes:
  - type: mcp
    namespace: pos-transactions
    port: 8080
    tools:
    - name: get-payment
      description: Look up a Square payment by ID.
      inputParameters:
      - name: payment_id
        in: body
        type: string
        description: The Square payment ID.
      call: square.get-payment
      with:
        payment_id: '{{payment_id}}'
      outputParameters:
      - name: amount
        type: string
        mapping: $.payment.amount_money.amount
      - name: status
        type: string
        mapping: $.payment.status
      - name: created_at
        type: string
        mapping: $.payment.created_at
  consumes:
  - type: http
    namespace: square
    baseUri: https://connect.squareup.com/v2
    authentication:
      type: bearer
      token: $secrets.square_token
    resources:
    - name: payments
      path: /payments/{{payment_id}}
      inputParameters:
      - name: payment_id
        in: path
      operations:
      - name: get-payment
        method: GET
Open in Framework → View in Fleet → square-pos-transaction-lookup.yml

Launches a holiday marketing campaign by creating a Salesforce campaign, sending a MailChimp email blast, posting to Facebook and Instagram, and updating the Google Tag Manager container.

naftiko: '0.5'
info:
  label: Holiday Campaign Orchestrator
  description: Launches a holiday marketing campaign by creating a Salesforce campaign, sending a MailChimp email blast, posting to Facebook and Instagram, and updating the Google Tag Manager container.
  tags:
  - marketing
  - salesforce
  - mailchimp
  - facebook
  - instagram
  - google-tag-manager
capability:
  exposes:
  - type: mcp
    namespace: holiday-campaigns
    port: 8080
    tools:
    - name: launch-holiday-campaign
      description: Orchestrate a multichannel holiday marketing campaign.
      inputParameters:
      - name: campaign_name
        in: body
        type: string
        description: Holiday campaign name.
      - name: discount_percent
        in: body
        type: string
        description: Discount percentage.
      - name: start_date
        in: body
        type: string
        description: Campaign start date.
      steps:
      - name: create-campaign
        type: call
        call: salesforce.create-campaign
        with:
          name: '{{campaign_name}}'
          type: Holiday
          start_date: '{{start_date}}'
      - name: send-email
        type: call
        call: mailchimp.send-campaign
        with:
          list_id: holiday_subscribers
          subject: '{{campaign_name}} - {{discount_percent}}% Off!'
          template: holiday_promo
      - name: post-facebook
        type: call
        call: facebook.create-post
        with:
          page_id: bloomingdales
          message: '{{campaign_name}} is here! Enjoy {{discount_percent}}% off. Shop now!'
      - name: post-instagram
        type: call
        call: instagram.create-post
        with:
          caption: '{{campaign_name}} starts now! {{discount_percent}}% off everything. #bloomingdales #holiday'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://bloomingdales.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: mailchimp
    baseUri: https://us1.api.mailchimp.com/3.0
    authentication:
      type: apiKey
      key: $secrets.mailchimp_api_key
    resources:
    - name: campaigns
      path: /campaigns
      operations:
      - name: send-campaign
        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
      inputParameters:
      - name: page_id
        in: path
      operations:
      - name: create-post
        method: POST
  - type: http
    namespace: instagram
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.instagram_token
    resources:
    - name: media
      path: /bloomingdales/media
      operations:
      - name: create-post
        method: POST
Open in Framework → View in Fleet → holiday-campaign-orchestrator.yml

Creates a Zoom meeting for store manager coordination calls.

naftiko: '0.5'
info:
  label: Zoom Store Manager Meeting
  description: Creates a Zoom meeting for store manager coordination calls.
  tags:
  - collaboration
  - zoom
  - meetings
capability:
  exposes:
  - type: mcp
    namespace: meeting-scheduler
    port: 8080
    tools:
    - name: create-zoom-meeting
      description: Create a Zoom meeting.
      inputParameters:
      - name: topic
        in: body
        type: string
        description: Meeting topic.
      - name: duration
        in: body
        type: integer
        description: Duration in minutes.
      - name: start_time
        in: body
        type: string
        description: Start time in ISO 8601.
      call: zoom.create-meeting
      with:
        topic: '{{topic}}'
        duration: '{{duration}}'
        start_time: '{{start_time}}'
      outputParameters:
      - name: join_url
        type: string
        mapping: $.join_url
      - name: meeting_id
        type: string
        mapping: $.id
  consumes:
  - type: http
    namespace: zoom
    baseUri: https://api.zoom.us/v2
    authentication:
      type: bearer
      token: $secrets.zoom_token
    resources:
    - name: meetings
      path: /users/me/meetings
      operations:
      - name: create-meeting
        method: POST
Open in Framework → View in Fleet → zoom-store-manager-meeting.yml

Retrieves Google Optimize experiment results for e-commerce website optimization.

naftiko: '0.5'
info:
  label: Google Optimize A/B Test Results
  description: Retrieves Google Optimize experiment results for e-commerce website optimization.
  tags:
  - marketing
  - google-optimize
  - experimentation
capability:
  exposes:
  - type: mcp
    namespace: web-experimentation
    port: 8080
    tools:
    - name: get-experiment-results
      description: Look up Google Optimize experiment results.
      inputParameters:
      - name: experiment_id
        in: body
        type: string
        description: The experiment ID.
      - name: profile_id
        in: body
        type: string
        description: The GA profile ID.
      call: optimize.get-experiment
      with:
        experiment_id: '{{experiment_id}}'
        profile_id: '{{profile_id}}'
  consumes:
  - type: http
    namespace: optimize
    baseUri: https://www.googleapis.com/analytics/v3/management
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: experiments
      path: /accounts/bloomingdales/webproperties/{{profile_id}}/profiles/1/experiments/{{experiment_id}}
      inputParameters:
      - name: experiment_id
        in: path
      - name: profile_id
        in: path
      operations:
      - name: get-experiment
        method: GET
Open in Framework → View in Fleet → google-optimize-a-b-test-results.yml

Identifies inactive subscribers in MailChimp, enriches with Salesforce purchase history, sends a winback offer, and logs the campaign in Teradata.

naftiko: '0.5'
info:
  label: MailChimp Subscriber Winback Pipeline
  description: Identifies inactive subscribers in MailChimp, enriches with Salesforce purchase history, sends a winback offer, and logs the campaign in Teradata.
  tags:
  - marketing
  - mailchimp
  - salesforce
  - teradata
capability:
  exposes:
  - type: mcp
    namespace: subscriber-winback
    port: 8080
    tools:
    - name: run-winback-campaign
      description: Orchestrate subscriber winback across email, CRM, and analytics.
      inputParameters:
      - name: subscriber_email
        in: body
        type: string
        description: Subscriber email address.
      - name: offer_code
        in: body
        type: string
        description: Promotional offer code.
      steps:
      - name: get-purchase-history
        type: call
        call: salesforce.get-purchases
        with:
          email: '{{subscriber_email}}'
      - name: send-winback
        type: call
        call: mailchimp.send-transactional
        with:
          email: '{{subscriber_email}}'
          template: winback_offer
          merge_vars: '{"OFFER_CODE": "{{offer_code}}", "LAST_PURCHASE": "{{get-purchase-history.last_purchase_date}}"}'
      - name: log-campaign
        type: call
        call: teradata.execute-query
        with:
          query: INSERT INTO WINBACK_CAMPAIGNS (email, offer_code, sent_at) VALUES ('{{subscriber_email}}', '{{offer_code}}', CURRENT_TIMESTAMP)
          database: MARKETING_DB
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://bloomingdales.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: purchases
      path: /sobjects/Order
      operations:
      - name: get-purchases
        method: GET
  - type: http
    namespace: mailchimp
    baseUri: https://mandrillapp.com/api/1.0
    authentication:
      type: apiKey
      key: $secrets.mandrill_api_key
    resources:
    - name: messages
      path: /messages/send-template
      operations:
      - name: send-transactional
        method: POST
  - type: http
    namespace: teradata
    baseUri: https://bloomingdales-td.teradata.com/api/v1
    authentication:
      type: bearer
      token: $secrets.teradata_token
    resources:
    - name: queries
      path: /queries
      operations:
      - name: execute-query
        method: POST
Open in Framework → View in Fleet → mailchimp-subscriber-winback-pipeline.yml

Retrieves MailChimp email campaign performance metrics, returning open rate, click rate, and total recipients.

naftiko: '0.5'
info:
  label: MailChimp Campaign Performance Lookup
  description: Retrieves MailChimp email campaign performance metrics, returning open rate, click rate, and total recipients.
  tags:
  - marketing
  - mailchimp
  - email-campaign
capability:
  exposes:
  - type: mcp
    namespace: email-marketing
    port: 8080
    tools:
    - name: get-campaign-report
      description: Look up MailChimp campaign metrics by campaign ID.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: The MailChimp campaign ID.
      call: mailchimp.get-campaign-report
      with:
        campaign_id: '{{campaign_id}}'
      outputParameters:
      - name: open_rate
        type: string
        mapping: $.opens.open_rate
      - name: click_rate
        type: string
        mapping: $.clicks.click_rate
      - name: total_recipients
        type: integer
        mapping: $.emails_sent
  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
Open in Framework → View in Fleet → mailchimp-campaign-performance-lookup.yml

Retrieves New Relic application performance metrics for the Bloomingdale's e-commerce platform.

naftiko: '0.5'
info:
  label: New Relic E-Commerce APM
  description: Retrieves New Relic application performance metrics for the Bloomingdale's e-commerce platform.
  tags:
  - monitoring
  - new-relic
  - e-commerce
capability:
  exposes:
  - type: mcp
    namespace: apm-monitoring
    port: 8080
    tools:
    - name: get-app-performance
      description: Look up New Relic APM metrics.
      inputParameters:
      - name: app_id
        in: body
        type: string
        description: 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}}.json
      inputParameters:
      - name: app_id
        in: path
      operations:
      - name: get-app-metrics
        method: GET
Open in Framework → View in Fleet → new-relic-e-commerce-apm.yml

Aggregates daily sales from Oracle EBS, refreshes the Power BI dashboard, uploads the report to SharePoint, and emails executives via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Daily Sales Report Pipeline
  description: Aggregates daily sales from Oracle EBS, refreshes the Power BI dashboard, uploads the report to SharePoint, and emails executives via Microsoft Outlook.
  tags:
  - reporting
  - sales
  - oracle-e-business-suite
  - power-bi
  - sharepoint
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: sales-reporting
    port: 8080
    tools:
    - name: generate-daily-sales-report
      description: Given a date, aggregate sales data and distribute reports.
      inputParameters:
      - name: report_date
        in: body
        type: string
        description: Report date (YYYY-MM-DD).
      - name: bi_dataset_id
        in: body
        type: string
        description: Power BI dataset ID.
      - name: bi_group_id
        in: body
        type: string
        description: Power BI workspace ID.
      - name: exec_emails
        in: body
        type: string
        description: Comma-separated executive email addresses.
      steps:
      - name: get-sales-data
        type: call
        call: oracle-ebs.get-daily-sales
        with:
          date: '{{report_date}}'
      - name: refresh-dashboard
        type: call
        call: powerbi.refresh-dataset
        with:
          group_id: '{{bi_group_id}}'
          dataset_id: '{{bi_dataset_id}}'
      - name: upload-report
        type: call
        call: sharepoint.upload-file
        with:
          site_id: sales_reports_site
          folder_path: DailyReports
          file_name: daily_sales_{{report_date}}.pdf
      - name: email-executives
        type: call
        call: outlook.send-mail
        with:
          to: '{{exec_emails}}'
          subject: 'Daily Sales Report: {{report_date}}'
          body: 'Sales for {{report_date}}: Total revenue ${{get-sales-data.total_revenue}}. Transactions: {{get-sales-data.total_transactions}}. Dashboard refreshed. Report: {{upload-report.url}}'
  consumes:
  - type: http
    namespace: oracle-ebs
    baseUri: https://bloomingdales-ebs.oraclecloud.com/webservices/rest/v1
    authentication:
      type: bearer
      token: $secrets.oracle_ebs_token
    resources:
    - name: sales
      path: /sales/daily?date={{date}}
      inputParameters:
      - name: date
        in: query
      operations:
      - name: get-daily-sales
        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: /groups/{{group_id}}/datasets/{{dataset_id}}/refreshes
      inputParameters:
      - name: group_id
        in: path
      - name: dataset_id
        in: path
      operations:
      - name: refresh-dataset
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: 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: outlook
    baseUri: https://graph.microsoft.com/v1.0/me
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: mail
      path: /sendMail
      operations:
      - name: send-mail
        method: POST
Open in Framework → View in Fleet → daily-sales-report-pipeline.yml

Invokes an Azure ML endpoint for merchandise demand forecasting, returning predicted units and confidence interval.

naftiko: '0.5'
info:
  label: Azure Machine Learning Demand Forecast
  description: Invokes an Azure ML endpoint for merchandise demand forecasting, returning predicted units and confidence interval.
  tags:
  - machine-learning
  - azure-machine-learning
  - forecasting
  - retail
capability:
  exposes:
  - type: mcp
    namespace: demand-forecast
    port: 8080
    tools:
    - name: forecast-demand
      description: Score demand forecast using Azure ML.
      inputParameters:
      - name: item_number
        in: body
        type: string
        description: The merchandise item number.
      - name: store_code
        in: body
        type: string
        description: The store location.
      - name: forecast_days
        in: body
        type: integer
        description: Number of days to forecast.
      call: azureml.score-demand
      with:
        item: '{{item_number}}'
        store: '{{store_code}}'
        days: '{{forecast_days}}'
      outputParameters:
      - name: predicted_units
        type: integer
        mapping: $.predictions[0].units
      - name: confidence
        type: string
        mapping: $.predictions[0].confidence
  consumes:
  - type: http
    namespace: azureml
    baseUri: https://bloomingdales-ml.eastus.inference.ml.azure.com
    authentication:
      type: bearer
      token: $secrets.azureml_token
    resources:
    - name: scoring
      path: /score
      operations:
      - name: score-demand
        method: POST
Open in Framework → View in Fleet → azure-machine-learning-demand-forecast.yml

Checks Salesforce for customer birthday, generates a gift card code in Oracle EBS, sends a birthday email via MailChimp, and logs the reward in Teradata.

naftiko: '0.5'
info:
  label: Customer Birthday Rewards Pipeline
  description: Checks Salesforce for customer birthday, generates a gift card code in Oracle EBS, sends a birthday email via MailChimp, and logs the reward in Teradata.
  tags:
  - loyalty
  - salesforce
  - oracle-e-business-suite
  - mailchimp
  - teradata
capability:
  exposes:
  - type: mcp
    namespace: birthday-rewards
    port: 8080
    tools:
    - name: send-birthday-reward
      description: Orchestrate customer birthday reward across CRM, ERP, email, and analytics.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: Salesforce customer contact ID.
      steps:
      - name: get-customer
        type: call
        call: salesforce.get-contact
        with:
          contact_id: '{{customer_id}}'
      - name: generate-gift-card
        type: call
        call: oracle-ebs.create-gift-card
        with:
          amount: '25'
          recipient_name: '{{get-customer.first_name}} {{get-customer.last_name}}'
      - name: send-email
        type: call
        call: mailchimp.send-transactional
        with:
          email: '{{get-customer.email}}'
          template: birthday_reward
          merge_vars: '{"FIRST_NAME": "{{get-customer.first_name}}", "GIFT_CARD_CODE": "{{generate-gift-card.code}}"}'
      - name: log-reward
        type: call
        call: teradata.execute-query
        with:
          query: INSERT INTO BIRTHDAY_REWARDS (customer_id, gift_card_code, sent_at) VALUES ('{{customer_id}}', '{{generate-gift-card.code}}', CURRENT_TIMESTAMP)
          database: LOYALTY_DB
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://bloomingdales.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: oracle-ebs
    baseUri: https://erp.bloomingdales.com/webservices/rest/v1
    authentication:
      type: basic
      username: $secrets.oracle_ebs_user
      password: $secrets.oracle_ebs_password
    resources:
    - name: gift-cards
      path: /gift-cards
      operations:
      - name: create-gift-card
        method: POST
  - type: http
    namespace: mailchimp
    baseUri: https://mandrillapp.com/api/1.0
    authentication:
      type: apiKey
      key: $secrets.mandrill_api_key
    resources:
    - name: messages
      path: /messages/send-template
      operations:
      - name: send-transactional
        method: POST
  - type: http
    namespace: teradata
    baseUri: https://bloomingdales-td.teradata.com/api/v1
    authentication:
      type: bearer
      token: $secrets.teradata_token
    resources:
    - name: queries
      path: /queries
      operations:
      - name: execute-query
        method: POST
Open in Framework → View in Fleet → customer-birthday-rewards-pipeline.yml

Schedules an Instagram post, a Twitter announcement, and a LinkedIn update for an influencer collaboration, then logs the campaign in Salesforce.

naftiko: '0.5'
info:
  label: Social Media Influencer Campaign Pipeline
  description: Schedules an Instagram post, a Twitter announcement, and a LinkedIn update for an influencer collaboration, then logs the campaign in Salesforce.
  tags:
  - marketing
  - instagram
  - twitter
  - linkedin
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: influencer-campaigns
    port: 8080
    tools:
    - name: launch-influencer-campaign
      description: Orchestrate an influencer marketing campaign across social platforms and CRM.
      inputParameters:
      - name: campaign_name
        in: body
        type: string
        description: Marketing campaign name.
      - name: influencer_handle
        in: body
        type: string
        description: Influencer social media handle.
      - name: product_name
        in: body
        type: string
        description: Featured product name.
      steps:
      - name: post-instagram
        type: call
        call: instagram.create-post
        with:
          caption: 'Loving the new {{product_name}} from @bloomingdales! #{{campaign_name}} #sponsored'
      - name: post-twitter
        type: call
        call: twitter.create-tweet
        with:
          text: 'Excited to partner with @Bloomingdales on the new {{product_name}}! #{{campaign_name}}'
      - name: post-linkedin
        type: call
        call: linkedin.create-post
        with:
          text: 'Thrilled to announce our collaboration with {{influencer_handle}} featuring {{product_name}}. #{{campaign_name}}'
      - name: log-campaign
        type: call
        call: salesforce.create-campaign
        with:
          name: '{{campaign_name}}'
          type: Influencer
          status: Active
  consumes:
  - type: http
    namespace: instagram
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.instagram_token
    resources:
    - name: media
      path: /bloomingdales/media
      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
  - 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://bloomingdales.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
Open in Framework → View in Fleet → social-media-influencer-campaign-pipeline.yml

Pulls market share data from Circana, loads it into Teradata, generates a Power BI competitive dashboard, and emails insights to the strategy team via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Circana Competitive Analysis Pipeline
  description: Pulls market share data from Circana, loads it into Teradata, generates a Power BI competitive dashboard, and emails insights to the strategy team via Microsoft Outlook.
  tags:
  - analytics
  - circana
  - teradata
  - power-bi
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: competitive-analysis
    port: 8080
    tools:
    - name: run-competitive-analysis
      description: Orchestrate competitive market analysis across data provider, warehouse, BI, and email.
      inputParameters:
      - name: category
        in: body
        type: string
        description: Product category for analysis.
      - name: time_period
        in: body
        type: string
        description: Time period for the analysis.
      steps:
      - name: get-market-data
        type: call
        call: circana.get-market-share
        with:
          category: '{{category}}'
          period: '{{time_period}}'
      - name: load-data
        type: call
        call: teradata.execute-query
        with:
          query: INSERT INTO COMPETITIVE_DATA (category, period, market_share, loaded_at) VALUES ('{{category}}', '{{time_period}}', {{get-market-data.share_percent}}, CURRENT_TIMESTAMP)
          database: ANALYTICS_DB
      - name: refresh-dashboard
        type: call
        call: powerbi.refresh-dataset
        with:
          dataset_id: competitive_dashboard
      - name: email-insights
        type: call
        call: outlook.send-email
        with:
          to: strategy-team@bloomingdales.com
          subject: 'Competitive Analysis: {{category}} ({{time_period}})'
          body: 'Market share for {{category}}: {{get-market-data.share_percent}}%. Dashboard has been updated.'
  consumes:
  - type: http
    namespace: circana
    baseUri: https://api.circana.com/v2
    authentication:
      type: bearer
      token: $secrets.circana_token
    resources:
    - name: market-share
      path: /market-share
      operations:
      - name: get-market-share
        method: GET
  - type: http
    namespace: teradata
    baseUri: https://bloomingdales-td.teradata.com/api/v1
    authentication:
      type: bearer
      token: $secrets.teradata_token
    resources:
    - name: queries
      path: /queries
      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
  - 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
Open in Framework → View in Fleet → circana-competitive-analysis-pipeline.yml

Retrieves a HubSpot contact by email for retail marketing campaigns.

naftiko: '0.5'
info:
  label: HubSpot Marketing Contact Lookup
  description: Retrieves a HubSpot contact by email for retail marketing campaigns.
  tags:
  - marketing
  - hubspot
  - contacts
capability:
  exposes:
  - type: mcp
    namespace: marketing-crm
    port: 8080
    tools:
    - name: get-contact
      description: Look up a HubSpot contact by email.
      inputParameters:
      - name: email
        in: body
        type: string
        description: Contact email.
      call: hubspot.get-contact-by-email
      with:
        email: '{{email}}'
  consumes:
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com/crm/v3
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: contacts
      path: /objects/contacts/{{email}}?idProperty=email
      inputParameters:
      - name: email
        in: path
      operations:
      - name: get-contact-by-email
        method: GET
Open in Framework → View in Fleet → hubspot-marketing-contact-lookup.yml

When a customer requests order status via WhatsApp, looks up the order in BigCommerce and replies with a tracking update.

naftiko: '0.5'
info:
  label: WhatsApp Order Tracking Pipeline
  description: When a customer requests order status via WhatsApp, looks up the order in BigCommerce and replies with a tracking update.
  tags:
  - customer-service
  - whatsapp
  - bigcommerce
capability:
  exposes:
  - type: mcp
    namespace: order-tracking
    port: 8080
    tools:
    - name: track-order-whatsapp
      description: Look up order status and reply to customer via WhatsApp.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: BigCommerce order ID.
      - name: customer_phone
        in: body
        type: string
        description: Customer WhatsApp phone number.
      steps:
      - name: get-order
        type: call
        call: bigcommerce.get-order
        with:
          order_id: '{{order_id}}'
      - name: send-status
        type: call
        call: whatsapp.send-message
        with:
          phone: '{{customer_phone}}'
          message: 'Your order #{{order_id}} status: {{get-order.status}}. Tracking: {{get-order.tracking_number}}. Estimated delivery: {{get-order.estimated_delivery}}.'
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/bloomingdales/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: whatsapp
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.whatsapp_token
    resources:
    - name: messages
      path: /bloomingdales_wa/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → whatsapp-order-tracking-pipeline.yml

Books a personal shopping appointment by checking availability in Salesforce, creating a calendar event via Microsoft Outlook, and sending a confirmation via WhatsApp.

naftiko: '0.5'
info:
  label: Personal Shopper Appointment Pipeline
  description: Books a personal shopping appointment by checking availability in Salesforce, creating a calendar event via Microsoft Outlook, and sending a confirmation via WhatsApp.
  tags:
  - customer-service
  - salesforce
  - microsoft-outlook
  - whatsapp
capability:
  exposes:
  - type: mcp
    namespace: personal-shopping
    port: 8080
    tools:
    - name: book-appointment
      description: Book a personal shopper appointment across CRM, calendar, and messaging.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: Salesforce customer ID.
      - name: preferred_date
        in: body
        type: string
        description: Preferred appointment date.
      - name: store_code
        in: body
        type: string
        description: Store location code.
      steps:
      - name: get-customer
        type: call
        call: salesforce.get-contact
        with:
          contact_id: '{{customer_id}}'
      - name: check-availability
        type: call
        call: salesforce.get-availability
        with:
          store_code: '{{store_code}}'
          date: '{{preferred_date}}'
      - name: create-event
        type: call
        call: outlook.create-event
        with:
          subject: 'Personal Shopping: {{get-customer.first_name}} {{get-customer.last_name}}'
          start_time: '{{check-availability.next_slot}}'
          duration: 60
          location: Store {{store_code}}
      - name: send-confirmation
        type: call
        call: whatsapp.send-message
        with:
          phone: '{{get-customer.phone}}'
          message: Hi {{get-customer.first_name}}, your personal shopping appointment is confirmed for {{check-availability.next_slot}} at store {{store_code}}.
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://bloomingdales.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: get-availability
        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
  - type: http
    namespace: whatsapp
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.whatsapp_token
    resources:
    - name: messages
      path: /bloomingdales_wa/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → personal-shopper-appointment-pipeline.yml

Pulls employee data from Workday, retrieves sales metrics from Teradata, generates a review document in SharePoint, and sends a calendar invite via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Employee Performance Review Pipeline
  description: Pulls employee data from Workday, retrieves sales metrics from Teradata, generates a review document in SharePoint, and sends a calendar invite via Microsoft Outlook.
  tags:
  - hr
  - workday
  - teradata
  - sharepoint
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: performance-reviews
    port: 8080
    tools:
    - name: prepare-review
      description: Orchestrate performance review preparation across HCM, analytics, collaboration, and calendar.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: Workday employee ID.
      - name: review_period
        in: body
        type: string
        description: Review period.
      steps:
      - name: get-employee
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{employee_id}}'
      - name: get-sales-metrics
        type: call
        call: teradata.execute-query
        with:
          query: SELECT total_sales, avg_transaction, customer_satisfaction FROM EMPLOYEE_PERFORMANCE WHERE employee_id='{{employee_id}}' AND period='{{review_period}}'
          database: HR_DB
      - name: create-review-doc
        type: call
        call: sharepoint.create-file
        with:
          site_id: hr_reviews
          folder_path: Reviews/{{review_period}}/{{get-employee.full_name}}
      - name: schedule-review
        type: call
        call: outlook.create-event
        with:
          subject: 'Performance Review: {{get-employee.full_name}} - {{review_period}}'
          attendees: '{{get-employee.manager_email}},{{get-employee.email}}'
          duration: 30
  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: teradata
    baseUri: https://bloomingdales-td.teradata.com/api/v1
    authentication:
      type: bearer
      token: $secrets.teradata_token
    resources:
    - name: queries
      path: /queries
      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: drive-items
      path: /{{site_id}}/drive/root:/{{folder_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      operations:
      - name: create-file
        method: PUT
  - 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
Open in Framework → View in Fleet → employee-performance-review-pipeline.yml

Posts a Twitter reply for customer service interactions from the official Bloomingdale's account.

naftiko: '0.5'
info:
  label: Twitter Customer Service Response
  description: Posts a Twitter reply for customer service interactions from the official Bloomingdale's account.
  tags:
  - customer-service
  - twitter
  - social-media
capability:
  exposes:
  - type: mcp
    namespace: social-cs
    port: 8080
    tools:
    - name: reply-to-tweet
      description: Post a Twitter reply.
      inputParameters:
      - name: text
        in: body
        type: string
        description: Reply text.
      - name: in_reply_to
        in: body
        type: string
        description: Tweet ID to reply to.
      call: twitter.create-tweet
      with:
        text: '{{text}}'
        reply_to: '{{in_reply_to}}'
  consumes:
  - 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
Open in Framework → View in Fleet → twitter-customer-service-response.yml

Creates a Zoom webinar, sends invitations via Microsoft Outlook, posts announcement on Microsoft Teams, and creates a follow-up task in Jira.

naftiko: '0.5'
info:
  label: Zoom Town Hall Scheduling Pipeline
  description: Creates a Zoom webinar, sends invitations via Microsoft Outlook, posts announcement on Microsoft Teams, and creates a follow-up task in Jira.
  tags:
  - communications
  - zoom
  - microsoft-outlook
  - microsoft-teams
  - jira
capability:
  exposes:
  - type: mcp
    namespace: town-hall
    port: 8080
    tools:
    - name: schedule-town-hall
      description: Orchestrate company town hall scheduling across webinar, email, chat, and project tracking.
      inputParameters:
      - name: topic
        in: body
        type: string
        description: Town hall topic.
      - name: date
        in: body
        type: string
        description: Event date.
      steps:
      - name: create-webinar
        type: call
        call: zoom.create-webinar
        with:
          topic: '{{topic}}'
          start_time: '{{date}}T14:00:00'
          duration: 60
      - name: send-invitations
        type: call
        call: outlook.send-email
        with:
          to: all-employees@bloomingdales.com
          subject: 'Town Hall: {{topic}} - {{date}}'
          body: 'Join us for a town hall on {{topic}}. Zoom link: {{create-webinar.join_url}}'
      - name: announce-teams
        type: call
        call: msteams.send-message
        with:
          channel_id: company_announcements
          text: 'Town Hall: {{topic}} on {{date}} at 2:00 PM. Join: {{create-webinar.join_url}}'
      - name: create-followup
        type: call
        call: jira.create-issue
        with:
          project_key: COMM
          summary: 'Post town hall: {{topic}} - send recording'
          issue_type: Task
  consumes:
  - type: http
    namespace: zoom
    baseUri: https://api.zoom.us/v2
    authentication:
      type: bearer
      token: $secrets.zoom_token
    resources:
    - name: webinars
      path: /users/me/webinars
      operations:
      - name: create-webinar
        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
  - 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: jira
    baseUri: https://bloomingdales.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → zoom-town-hall-scheduling-pipeline.yml

Retrieves network node performance from SolarWinds for store IT infrastructure monitoring.

naftiko: '0.5'
info:
  label: SolarWinds Store Network Monitoring
  description: Retrieves network node performance from SolarWinds for store IT infrastructure monitoring.
  tags:
  - monitoring
  - solarwinds
  - networking
  - retail
capability:
  exposes:
  - type: mcp
    namespace: network-monitoring
    port: 8080
    tools:
    - name: get-node-status
      description: Look up SolarWinds node status by node ID.
      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: $.Status
      - name: cpu_load
        type: string
        mapping: $.CPULoad
      - name: response_time
        type: string
        mapping: $.ResponseTime
  consumes:
  - type: http
    namespace: solarwinds
    baseUri: https://bloomingdales-solarwinds.macys.com/SolarWinds/InformationService/v3/Json
    authentication:
      type: basic
      username: $secrets.solarwinds_user
      password: $secrets.solarwinds_password
    resources:
    - name: nodes
      path: /Query?query=SELECT+Status,CPULoad,ResponseTime+FROM+Orion.Nodes+WHERE+NodeID={{node_id}}
      inputParameters:
      - name: node_id
        in: query
      operations:
      - name: get-node
        method: GET
Open in Framework → View in Fleet → solarwinds-store-network-monitoring.yml

When a gift card transaction is flagged, pulls transaction details from Mastercard, creates a ServiceNow security incident, and alerts the loss prevention team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Gift Card Fraud Detection Pipeline
  description: When a gift card transaction is flagged, pulls transaction details from Mastercard, creates a ServiceNow security incident, and alerts the loss prevention team via Microsoft Teams.
  tags:
  - security
  - fraud
  - mastercard
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: fraud-detection
    port: 8080
    tools:
    - name: investigate-gift-card
      description: Orchestrate gift card fraud investigation across payment and incident systems.
      inputParameters:
      - name: transaction_id
        in: body
        type: string
        description: Mastercard transaction ID.
      - name: card_number_last4
        in: body
        type: string
        description: Last four digits of the gift card.
      steps:
      - name: get-transaction
        type: call
        call: mastercard.get-transaction
        with:
          transaction_id: '{{transaction_id}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Gift card fraud alert: {{card_number_last4}}'
          priority: '2'
          category: security
          description: 'Suspicious gift card transaction {{transaction_id}}. Amount: ${{get-transaction.amount}}. Location: {{get-transaction.merchant_name}}.'
      - name: alert-lp-team
        type: call
        call: msteams.send-message
        with:
          channel_id: loss_prevention
          text: 'FRAUD ALERT: Gift card ending {{card_number_last4}}. Amount: ${{get-transaction.amount}}. Incident: {{create-incident.number}}.'
  consumes:
  - type: http
    namespace: mastercard
    baseUri: https://api.mastercard.com/transaction/v1
    authentication:
      type: bearer
      token: $secrets.mastercard_token
    resources:
    - name: transactions
      path: /transactions/{{transaction_id}}
      inputParameters:
      - name: transaction_id
        in: path
      operations:
      - name: get-transaction
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://bloomingdales.service-now.com/api/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
Open in Framework → View in Fleet → gift-card-fraud-detection-pipeline.yml

Sends an email via Microsoft Outlook for retail operations communications.

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

When a loyalty customer makes a purchase, updates their Salesforce profile, sends a thank-you email via MailChimp, and logs the engagement in Teradata.

naftiko: '0.5'
info:
  label: Customer Loyalty Engagement Pipeline
  description: When a loyalty customer makes a purchase, updates their Salesforce profile, sends a thank-you email via MailChimp, and logs the engagement in Teradata.
  tags:
  - loyalty
  - salesforce
  - mailchimp
  - teradata
capability:
  exposes:
  - type: mcp
    namespace: loyalty-engagement
    port: 8080
    tools:
    - name: process-loyalty-purchase
      description: Given a customer ID and purchase details, update loyalty records and send engagement communications.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The Salesforce customer contact ID.
      - name: purchase_amount
        in: body
        type: string
        description: Purchase amount.
      - name: store_code
        in: body
        type: string
        description: Store location code.
      steps:
      - name: get-customer
        type: call
        call: salesforce.get-contact
        with:
          contact_id: '{{customer_id}}'
      - name: update-loyalty
        type: call
        call: salesforce.update-contact
        with:
          contact_id: '{{customer_id}}'
          last_purchase_amount: '{{purchase_amount}}'
          last_purchase_store: '{{store_code}}'
      - name: send-thank-you
        type: call
        call: mailchimp.send-transactional
        with:
          email: '{{get-customer.email}}'
          template: loyalty_thank_you
          merge_vars: '{"FIRST_NAME": "{{get-customer.name}}", "AMOUNT": "{{purchase_amount}}", "POINTS": "{{get-customer.loyalty_points}}"}'
      - name: log-engagement
        type: call
        call: teradata.execute-query
        with:
          query: INSERT INTO LOYALTY_ENGAGEMENTS (customer_id, purchase_amount, store_code, engagement_type, created_at) VALUES ('{{customer_id}}', {{purchase_amount}}, '{{store_code}}', 'purchase', CURRENT_TIMESTAMP)
          database: LOYALTY_DB
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://bloomingdales.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: mailchimp
    baseUri: https://mandrillapp.com/api/1.0
    authentication:
      type: apiKey
      key: $secrets.mandrill_api_key
    resources:
    - name: messages
      path: /messages/send-template
      operations:
      - name: send-transactional
        method: POST
  - type: http
    namespace: teradata
    baseUri: https://bloomingdales-td.teradata.com/api/v1
    authentication:
      type: bearer
      token: $secrets.teradata_token
    resources:
    - name: queries
      path: /queries
      operations:
      - name: execute-query
        method: POST
Open in Framework → View in Fleet → customer-loyalty-engagement-pipeline.yml

Retrieves DNS records from Cloudflare for a specified domain zone.

naftiko: '0.5'
info:
  label: Cloudflare DNS Record Lookup
  description: Retrieves DNS records from Cloudflare for a specified domain zone.
  tags:
  - infrastructure
  - cloudflare
  - dns
capability:
  exposes:
  - type: mcp
    namespace: dns-management
    port: 8080
    tools:
    - name: get-dns-records
      description: Look up DNS records for a Cloudflare zone.
      inputParameters:
      - name: zone_id
        in: body
        type: string
        description: Cloudflare zone identifier.
      call: cloudflare.list-dns-records
      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: dns-records
      path: /zones/{{zone_id}}/dns_records
      inputParameters:
      - name: zone_id
        in: path
      operations:
      - name: list-dns-records
        method: GET
Open in Framework → View in Fleet → cloudflare-dns-record-lookup.yml

Retrieves Mastercard payment transaction details for order verification and fraud checks.

naftiko: '0.5'
info:
  label: Mastercard Payment Transaction Lookup
  description: Retrieves Mastercard payment transaction details for order verification and fraud checks.
  tags:
  - payments
  - mastercard
  - retail
capability:
  exposes:
  - type: mcp
    namespace: payment-processing
    port: 8080
    tools:
    - name: get-transaction
      description: Look up a Mastercard transaction by reference.
      inputParameters:
      - name: transaction_ref
        in: body
        type: string
        description: The transaction reference number.
      call: mastercard.get-transaction
      with:
        transaction_ref: '{{transaction_ref}}'
  consumes:
  - type: http
    namespace: mastercard
    baseUri: https://sandbox.api.mastercard.com/v1
    authentication:
      type: oauth
      consumer_key: $secrets.mastercard_consumer_key
      signing_key: $secrets.mastercard_signing_key
    resources:
    - name: transactions
      path: /transactions/{{transaction_ref}}
      inputParameters:
      - name: transaction_ref
        in: path
      operations:
      - name: get-transaction
        method: GET
Open in Framework → View in Fleet → mastercard-payment-transaction-lookup.yml

Retrieves Cisco network device status for in-store Wi-Fi and POS network infrastructure.

naftiko: '0.5'
info:
  label: Cisco Store Network Device Status
  description: Retrieves Cisco network device status for in-store Wi-Fi and POS network infrastructure.
  tags:
  - networking
  - cisco
  - retail
capability:
  exposes:
  - type: mcp
    namespace: store-network
    port: 8080
    tools:
    - name: get-network-device
      description: Look up Cisco device status.
      inputParameters:
      - name: device_id
        in: body
        type: string
        description: The Cisco DNA Center device ID.
      call: cisco.get-device
      with:
        device_id: '{{device_id}}'
      outputParameters:
      - name: hostname
        type: string
        mapping: $.response.hostname
      - name: uptime
        type: string
        mapping: $.response.upTime
      - name: reachability
        type: string
        mapping: $.response.reachabilityStatus
  consumes:
  - type: http
    namespace: cisco
    baseUri: https://bloomingdales-dnac.macys.com/dna/intent/api/v1
    authentication:
      type: bearer
      token: $secrets.cisco_dnac_token
    resources:
    - name: devices
      path: /network-device/{{device_id}}
      inputParameters:
      - name: device_id
        in: path
      operations:
      - name: get-device
        method: GET
Open in Framework → View in Fleet → cisco-store-network-device-status.yml

Uploads a brand video to the Bloomingdale's YouTube channel for fashion and lifestyle content marketing.

naftiko: '0.5'
info:
  label: YouTube Brand Content Upload
  description: Uploads a brand video to the Bloomingdale's YouTube channel for fashion and lifestyle content marketing.
  tags:
  - marketing
  - youtube
  - brand-content
capability:
  exposes:
  - type: mcp
    namespace: video-marketing
    port: 8080
    tools:
    - name: upload-brand-video
      description: Upload a video to the Bloomingdale's YouTube channel.
      inputParameters:
      - name: title
        in: body
        type: string
        description: Video title.
      - name: description
        in: body
        type: string
        description: Video description.
      call: youtube.upload-video
      with:
        title: '{{title}}'
        description: '{{description}}'
  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
Open in Framework → View in Fleet → youtube-brand-content-upload.yml

When a GitHub pull request is merged, triggers an Azure DevOps build, creates a ServiceNow change request, and notifies the engineering team via Microsoft Teams.

naftiko: '0.5'
info:
  label: GitHub Deployment Approval Pipeline
  description: When a GitHub pull request is merged, triggers an Azure DevOps build, creates a ServiceNow change request, and notifies the engineering team via Microsoft Teams.
  tags:
  - devops
  - github
  - azure-devops
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: deployment-approval
    port: 8080
    tools:
    - name: process-deployment
      description: Orchestrate deployment approval across source control, CI/CD, ITSM, and communication.
      inputParameters:
      - name: repo_name
        in: body
        type: string
        description: GitHub repository name.
      - name: pr_number
        in: body
        type: string
        description: Pull request number.
      steps:
      - name: get-pr
        type: call
        call: github.get-pull-request
        with:
          repo: '{{repo_name}}'
          pr_number: '{{pr_number}}'
      - name: trigger-build
        type: call
        call: azure-devops.run-pipeline
        with:
          project: bloomingdales-ecommerce
          pipeline_id: production_deploy
          branch: '{{get-pr.merge_commit_sha}}'
      - name: create-change
        type: call
        call: servicenow.create-change
        with:
          short_description: 'Deploy: {{repo_name}} PR #{{pr_number}}'
          description: '{{get-pr.title}}: {{get-pr.body}}'
          type: standard
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          channel_id: engineering
          text: 'Deployment started: {{repo_name}} PR #{{pr_number}} - {{get-pr.title}}. Build: {{trigger-build.build_id}}. Change: {{create-change.number}}.'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com/repos/bloomingdales
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: pull-requests
      path: /{{repo}}/pulls/{{pr_number}}
      inputParameters:
      - name: repo
        in: path
      - name: pr_number
        in: path
      operations:
      - name: get-pull-request
        method: GET
  - type: http
    namespace: azure-devops
    baseUri: https://dev.azure.com/bloomingdales
    authentication:
      type: bearer
      token: $secrets.azure_devops_token
    resources:
    - name: pipelines
      path: /{{project}}/_apis/pipelines/{{pipeline_id}}/runs
      inputParameters:
      - name: project
        in: path
      - name: pipeline_id
        in: path
      operations:
      - name: run-pipeline
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://bloomingdales.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.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
Open in Framework → View in Fleet → github-deployment-approval-pipeline.yml

Pulls ad metrics from Google Analytics and Facebook, combines them in Teradata, and distributes a report via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Digital Ad Performance Reporting Pipeline
  description: Pulls ad metrics from Google Analytics and Facebook, combines them in Teradata, and distributes a report via Microsoft Outlook.
  tags:
  - marketing
  - google-analytics
  - facebook
  - teradata
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: ad-reporting
    port: 8080
    tools:
    - name: generate-ad-report
      description: Aggregate digital ad performance data across channels and distribute reports.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: Campaign identifier.
      - name: date_range
        in: body
        type: string
        description: Date range for the report.
      steps:
      - name: get-google-metrics
        type: call
        call: google-analytics.get-report
        with:
          view_id: bloomingdales
          campaign_id: '{{campaign_id}}'
      - name: get-facebook-metrics
        type: call
        call: facebook.get-ad-insights
        with:
          campaign_id: '{{campaign_id}}'
      - name: store-combined
        type: call
        call: teradata.execute-query
        with:
          query: INSERT INTO AD_PERFORMANCE (campaign_id, google_clicks, fb_clicks, reported_at) VALUES ('{{campaign_id}}', {{get-google-metrics.clicks}}, {{get-facebook-metrics.clicks}}, CURRENT_TIMESTAMP)
          database: MARKETING_DB
      - name: email-report
        type: call
        call: outlook.send-email
        with:
          to: marketing-team@bloomingdales.com
          subject: 'Ad Performance Report: {{campaign_id}}'
          body: 'Google: {{get-google-metrics.clicks}} clicks. Facebook: {{get-facebook-metrics.clicks}} clicks.'
  consumes:
  - type: http
    namespace: google-analytics
    baseUri: https://analyticsreporting.googleapis.com/v4
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: reports
      path: /reports:batchGet
      operations:
      - name: get-report
        method: POST
  - type: http
    namespace: facebook
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.facebook_token
    resources:
    - name: ad-insights
      path: /act_bloomingdales/insights
      operations:
      - name: get-ad-insights
        method: GET
  - type: http
    namespace: teradata
    baseUri: https://bloomingdales-td.teradata.com/api/v1
    authentication:
      type: bearer
      token: $secrets.teradata_token
    resources:
    - name: queries
      path: /queries
      operations:
      - name: execute-query
        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
Open in Framework → View in Fleet → digital-ad-performance-reporting-pipeline.yml

Retrieves the latest build status for Bloomingdale's e-commerce platform pipelines.

naftiko: '0.5'
info:
  label: Azure DevOps Build Status
  description: Retrieves the latest build status for Bloomingdale's e-commerce platform pipelines.
  tags:
  - ci
  - azure-devops
  - e-commerce
capability:
  exposes:
  - type: mcp
    namespace: devops-builds
    port: 8080
    tools:
    - name: get-build-status
      description: Look up the latest Azure DevOps build.
      inputParameters:
      - name: pipeline_id
        in: body
        type: string
        description: Pipeline definition ID.
      call: azuredevops.get-latest-build
      with:
        definition_id: '{{pipeline_id}}'
  consumes:
  - type: http
    namespace: azuredevops
    baseUri: https://dev.azure.com/bloomingdales/_apis/build
    authentication:
      type: bearer
      token: $secrets.azuredevops_pat
    resources:
    - name: builds
      path: /builds?definitions={{definition_id}}&$top=1&statusFilter=completed
      inputParameters:
      - name: definition_id
        in: query
      operations:
      - name: get-latest-build
        method: GET
Open in Framework → View in Fleet → azure-devops-build-status.yml

Retrieves an employee time-off balance from Workday HCM.

naftiko: '0.5'
info:
  label: Workday Time-Off Balance
  description: Retrieves an employee time-off balance from Workday HCM.
  tags:
  - hr
  - workday
  - time-off
capability:
  exposes:
  - type: mcp
    namespace: hr-timeoff
    port: 8080
    tools:
    - name: get-time-off-balance
      description: Look up employee time-off balance by worker ID.
      inputParameters:
      - name: worker_id
        in: body
        type: string
        description: Workday worker ID.
      call: workday.get-time-off
      with:
        worker_id: '{{worker_id}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/absenceManagement/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: time-off
      path: /workers/{{worker_id}}/timeOffBalances
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-time-off
        method: GET
Open in Framework → View in Fleet → workday-time-off-balance.yml

Creates a job posting on Indeed for retail store positions.

naftiko: '0.5'
info:
  label: Indeed Job Posting
  description: Creates a job posting on Indeed for retail store positions.
  tags:
  - hr
  - recruitment
  - indeed
  - retail
capability:
  exposes:
  - type: mcp
    namespace: hr-recruitment
    port: 8080
    tools:
    - name: create-job-posting
      description: Create an Indeed job posting.
      inputParameters:
      - name: title
        in: body
        type: string
        description: Job title.
      - name: location
        in: body
        type: string
        description: Job location.
      - name: description
        in: body
        type: string
        description: Job description.
      call: indeed.create-posting
      with:
        title: '{{title}}'
        location: '{{location}}'
        description: '{{description}}'
  consumes:
  - type: http
    namespace: indeed
    baseUri: https://apis.indeed.com/v2
    authentication:
      type: bearer
      token: $secrets.indeed_token
    resources:
    - name: postings
      path: /jobs
      operations:
      - name: create-posting
        method: POST
Open in Framework → View in Fleet → indeed-job-posting.yml

Checks SolarWinds network status, Cisco device health, and New Relic APM for a store, then posts a unified health report to Microsoft Teams.

naftiko: '0.5'
info:
  label: Store IT Infrastructure Health Pipeline
  description: Checks SolarWinds network status, Cisco device health, and New Relic APM for a store, then posts a unified health report to Microsoft Teams.
  tags:
  - infrastructure
  - solarwinds
  - cisco
  - new-relic
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: store-it-health
    port: 8080
    tools:
    - name: check-store-health
      description: Aggregate IT health metrics from network, device, and APM systems for a store.
      inputParameters:
      - name: store_code
        in: body
        type: string
        description: Store location code.
      steps:
      - name: check-network
        type: call
        call: solarwinds.get-node-status
        with:
          node_name: store_{{store_code}}
      - name: check-devices
        type: call
        call: cisco.get-device-status
        with:
          location: '{{store_code}}'
      - name: check-apm
        type: call
        call: newrelic.get-app-health
        with:
          app_name: store_{{store_code}}_pos
      - name: post-report
        type: call
        call: msteams.send-message
        with:
          channel_id: it_ops
          text: 'Store {{store_code}} Health: Network: {{check-network.status}}, Devices: {{check-devices.healthy_count}}/{{check-devices.total_count}} up, POS APM: {{check-apm.health_status}}.'
  consumes:
  - type: http
    namespace: solarwinds
    baseUri: https://solarwinds.bloomingdales.com/SolarWinds/InformationService/v3/Json
    authentication:
      type: basic
      username: $secrets.solarwinds_user
      password: $secrets.solarwinds_password
    resources:
    - name: nodes
      path: /Query
      operations:
      - name: get-node-status
        method: GET
  - type: http
    namespace: cisco
    baseUri: https://cisco-dnac.bloomingdales.com/dna/intent/api/v1
    authentication:
      type: bearer
      token: $secrets.cisco_token
    resources:
    - name: devices
      path: /network-device?location={{location}}
      inputParameters:
      - name: location
        in: query
      operations:
      - name: get-device-status
        method: GET
  - type: http
    namespace: newrelic
    baseUri: https://api.newrelic.com/v2
    authentication:
      type: apiKey
      key: $secrets.newrelic_api_key
    resources:
    - name: applications
      path: /applications.json?filter[name]={{app_name}}
      inputParameters:
      - name: app_name
        in: query
      operations:
      - name: get-app-health
        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
Open in Framework → View in Fleet → store-it-infrastructure-health-pipeline.yml

Retrieves visual merchandising assets from Box for store display planning.

naftiko: '0.5'
info:
  label: Box Visual Assets Retrieval
  description: Retrieves visual merchandising assets from Box for store display planning.
  tags:
  - collaboration
  - box
  - visual-assets
capability:
  exposes:
  - type: mcp
    namespace: visual-assets
    port: 8080
    tools:
    - name: get-box-file
      description: Look up a Box file by ID.
      inputParameters:
      - name: file_id
        in: body
        type: string
        description: The Box file ID.
      call: box.get-file
      with:
        file_id: '{{file_id}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.name
      - name: size
        type: integer
        mapping: $.size
      - name: shared_link
        type: string
        mapping: $.shared_link.url
  consumes:
  - type: http
    namespace: box
    baseUri: https://api.box.com/2.0
    authentication:
      type: bearer
      token: $secrets.box_token
    resources:
    - name: files
      path: /files/{{file_id}}
      inputParameters:
      - name: file_id
        in: path
      operations:
      - name: get-file
        method: GET
Open in Framework → View in Fleet → box-visual-assets-retrieval.yml

Posts a job opening to LinkedIn, creates a tracking ticket in Jira, logs the recruitment campaign in Workday, and notifies HR via Microsoft Teams.

naftiko: '0.5'
info:
  label: LinkedIn Recruiting Pipeline
  description: Posts a job opening to LinkedIn, creates a tracking ticket in Jira, logs the recruitment campaign in Workday, and notifies HR via Microsoft Teams.
  tags:
  - hr
  - linkedin
  - jira
  - workday
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: recruiting
    port: 8080
    tools:
    - name: launch-recruiting-campaign
      description: Orchestrate a recruiting campaign across social, project tracking, HCM, and communication.
      inputParameters:
      - name: job_title
        in: body
        type: string
        description: Job title to post.
      - name: department
        in: body
        type: string
        description: Department name.
      - name: store_code
        in: body
        type: string
        description: Store location code.
      steps:
      - name: post-job
        type: call
        call: linkedin.create-job-posting
        with:
          title: '{{job_title}}'
          company: Bloomingdale's
          location: Store {{store_code}}
      - name: create-tracker
        type: call
        call: jira.create-issue
        with:
          project_key: HR
          summary: 'Recruiting: {{job_title}} - Store {{store_code}}'
          issue_type: Task
      - name: log-requisition
        type: call
        call: workday.create-requisition
        with:
          title: '{{job_title}}'
          department: '{{department}}'
          location: '{{store_code}}'
      - name: notify-hr
        type: call
        call: msteams.send-message
        with:
          channel_id: hr_recruiting
          text: 'New recruiting campaign: {{job_title}} at store {{store_code}}. LinkedIn: {{post-job.id}}. Jira: {{create-tracker.key}}.'
  consumes:
  - 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: jira
    baseUri: https://bloomingdales.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        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: 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/{{channel_id}}/channels/general/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → linkedin-recruiting-pipeline.yml

Retrieves Cloudflare analytics for the Bloomingdale's e-commerce CDN.

naftiko: '0.5'
info:
  label: Cloudflare CDN Performance
  description: Retrieves Cloudflare analytics for the Bloomingdale's e-commerce CDN.
  tags:
  - networking
  - cloudflare
  - cdn
capability:
  exposes:
  - type: mcp
    namespace: cdn-analytics
    port: 8080
    tools:
    - name: get-cdn-analytics
      description: Retrieve Cloudflare zone analytics.
      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
Open in Framework → View in Fleet → cloudflare-cdn-performance.yml

Retrieves employee details from Workday for store management.

naftiko: '0.5'
info:
  label: Workday Employee Directory Lookup
  description: Retrieves employee details from Workday for store management.
  tags:
  - hr
  - workday
  - employee
capability:
  exposes:
  - type: mcp
    namespace: hr-directory
    port: 8080
    tools:
    - name: get-employee
      description: Look up an employee in Workday.
      inputParameters:
      - name: worker_id
        in: body
        type: string
        description: 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
Open in Framework → View in Fleet → workday-employee-directory-lookup.yml

Provisions a new store by creating a Jira project, configuring SolarWinds monitoring, creating a Square POS location, and notifying the retail ops team via Zoom.

naftiko: '0.5'
info:
  label: Store Opening Preparation Pipeline
  description: Provisions a new store by creating a Jira project, configuring SolarWinds monitoring, creating a Square POS location, and notifying the retail ops team via Zoom.
  tags:
  - operations
  - jira
  - solarwinds
  - square
  - zoom
capability:
  exposes:
  - type: mcp
    namespace: store-opening
    port: 8080
    tools:
    - name: prepare-store-opening
      description: Orchestrate new store opening tasks across project management, monitoring, POS, and communication.
      inputParameters:
      - name: store_name
        in: body
        type: string
        description: New store name.
      - name: store_address
        in: body
        type: string
        description: Store physical address.
      - name: opening_date
        in: body
        type: string
        description: Planned opening date.
      steps:
      - name: create-project
        type: call
        call: jira.create-project
        with:
          name: 'Store Opening: {{store_name}}'
          key: SO
          description: Store opening at {{store_address}} planned for {{opening_date}}.
      - name: add-monitoring
        type: call
        call: solarwinds.add-node
        with:
          node_name: '{{store_name}}'
          ip_address: auto
          location: '{{store_address}}'
      - name: create-pos-location
        type: call
        call: square.create-location
        with:
          name: '{{store_name}}'
          address: '{{store_address}}'
      - name: schedule-kickoff
        type: call
        call: zoom.create-meeting
        with:
          topic: 'Store Opening Kickoff: {{store_name}}'
          start_time: '{{opening_date}}T09:00:00'
          duration: 60
  consumes:
  - type: http
    namespace: jira
    baseUri: https://bloomingdales.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: projects
      path: /project
      operations:
      - name: create-project
        method: POST
  - type: http
    namespace: solarwinds
    baseUri: https://solarwinds.bloomingdales.com/SolarWinds/InformationService/v3/Json
    authentication:
      type: basic
      username: $secrets.solarwinds_user
      password: $secrets.solarwinds_password
    resources:
    - name: nodes
      path: /Create/Orion.Nodes
      operations:
      - name: add-node
        method: POST
  - type: http
    namespace: square
    baseUri: https://connect.squareup.com/v2
    authentication:
      type: bearer
      token: $secrets.square_token
    resources:
    - name: locations
      path: /locations
      operations:
      - name: create-location
        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
Open in Framework → View in Fleet → store-opening-preparation-pipeline.yml

Synchronizes inventory counts between Oracle EBS, BigCommerce online store, and Square POS by reconciling stock levels across all channels.

naftiko: '0.5'
info:
  label: Cross-Channel Inventory Sync Pipeline
  description: Synchronizes inventory counts between Oracle EBS, BigCommerce online store, and Square POS by reconciling stock levels across all channels.
  tags:
  - inventory
  - oracle-e-business-suite
  - bigcommerce
  - square
capability:
  exposes:
  - type: mcp
    namespace: inventory-sync
    port: 8080
    tools:
    - name: sync-inventory
      description: Reconcile and synchronize inventory across Oracle EBS, BigCommerce, and Square.
      inputParameters:
      - name: sku
        in: body
        type: string
        description: Product SKU to synchronize.
      steps:
      - name: get-erp-stock
        type: call
        call: oracle-ebs.get-item-quantity
        with:
          item_number: '{{sku}}'
      - name: update-online
        type: call
        call: bigcommerce.update-inventory
        with:
          sku: '{{sku}}'
          inventory_level: '{{get-erp-stock.available_quantity}}'
      - name: update-pos
        type: call
        call: square.update-inventory
        with:
          sku: '{{sku}}'
          quantity: '{{get-erp-stock.available_quantity}}'
  consumes:
  - type: http
    namespace: oracle-ebs
    baseUri: https://erp.bloomingdales.com/webservices/rest/v1
    authentication:
      type: basic
      username: $secrets.oracle_ebs_user
      password: $secrets.oracle_ebs_password
    resources:
    - name: items
      path: /inventory/items/{{item_number}}/quantities
      inputParameters:
      - name: item_number
        in: path
      operations:
      - name: get-item-quantity
        method: GET
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/bloomingdales/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: inventory
      path: /catalog/products/inventory
      operations:
      - name: update-inventory
        method: PUT
  - type: http
    namespace: square
    baseUri: https://connect.squareup.com/v2
    authentication:
      type: bearer
      token: $secrets.square_token
    resources:
    - name: inventory
      path: /inventory/changes/batch-create
      operations:
      - name: update-inventory
        method: POST
Open in Framework → View in Fleet → cross-channel-inventory-sync-pipeline.yml

When an online order is placed, checks store inventory via Oracle EBS, creates a fulfillment task in ServiceNow, updates the Salesforce order record, and notifies the store team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Omnichannel Order Fulfillment Pipeline
  description: When an online order is placed, checks store inventory via Oracle EBS, creates a fulfillment task in ServiceNow, updates the Salesforce order record, and notifies the store team via Microsoft Teams.
  tags:
  - e-commerce
  - fulfillment
  - oracle-e-business-suite
  - servicenow
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: order-fulfillment
    port: 8080
    tools:
    - name: process-online-order
      description: Given an order ID, orchestrate fulfillment across Oracle EBS, ServiceNow, Salesforce, and Microsoft Teams.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The e-commerce order ID.
      - name: item_number
        in: body
        type: string
        description: The item number to fulfill.
      - name: store_code
        in: body
        type: string
        description: Preferred fulfillment store code.
      - name: store_channel
        in: body
        type: string
        description: Microsoft Teams channel for the store team.
      steps:
      - name: check-inventory
        type: call
        call: oracle-ebs.get-inventory
        with:
          item_number: '{{item_number}}'
          store_code: '{{store_code}}'
      - name: create-fulfillment-task
        type: call
        call: servicenow.create-task
        with:
          short_description: Fulfill order {{order_id}} at {{store_code}}
          category: store_fulfillment
          description: 'Item: {{item_number}}. Available qty: {{check-inventory.available_qty}}. Order: {{order_id}}.'
      - name: update-salesforce
        type: call
        call: salesforce.update-order
        with:
          order_id: '{{order_id}}'
          status: Fulfillment_In_Progress
          fulfillment_store: '{{store_code}}'
      - name: notify-store
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: '{{store_channel}}'
          text: 'New fulfillment: Order {{order_id}}, Item {{item_number}} at {{store_code}}. Inventory: {{check-inventory.available_qty}} available. Task: {{create-fulfillment-task.number}}.'
  consumes:
  - type: http
    namespace: oracle-ebs
    baseUri: https://bloomingdales-ebs.oraclecloud.com/webservices/rest/v1
    authentication:
      type: bearer
      token: $secrets.oracle_ebs_token
    resources:
    - name: inventory
      path: /inventory?item={{item_number}}&location={{store_code}}
      inputParameters:
      - name: item_number
        in: query
      - name: store_code
        in: query
      operations:
      - name: get-inventory
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://bloomingdales.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: salesforce
    baseUri: https://bloomingdales.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: orders
      path: /sobjects/Order/{{order_id}}
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: update-order
        method: PATCH
  - type: http
    namespace: 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: post-channel-message
        method: POST
Open in Framework → View in Fleet → omnichannel-order-fulfillment-pipeline.yml

Retrieves Dynatrace real user monitoring data for the Bloomingdale's e-commerce site.

naftiko: '0.5'
info:
  label: Dynatrace Website Performance
  description: Retrieves Dynatrace real user monitoring data for the Bloomingdale's e-commerce site.
  tags:
  - monitoring
  - dynatrace
  - e-commerce
capability:
  exposes:
  - type: mcp
    namespace: rum-monitoring
    port: 8080
    tools:
    - name: get-rum-metrics
      description: Look up Dynatrace RUM metrics by application.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: Dynatrace application entity ID.
      call: dynatrace.get-entity
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: dynatrace
    baseUri: https://bloomingdales.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
Open in Framework → View in Fleet → dynatrace-website-performance.yml

When a return is initiated, looks up the order in Oracle EBS, processes the refund via Square, creates a ServiceNow case, and updates the Salesforce customer record.

naftiko: '0.5'
info:
  label: Customer Return Processing Pipeline
  description: When a return is initiated, looks up the order in Oracle EBS, processes the refund via Square, creates a ServiceNow case, and updates the Salesforce customer record.
  tags:
  - returns
  - oracle-e-business-suite
  - square
  - servicenow
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: return-processing
    port: 8080
    tools:
    - name: process-return
      description: Given an order ID and return reason, process the return across Oracle EBS, Square, ServiceNow, and Salesforce.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The original order ID.
      - name: return_reason
        in: body
        type: string
        description: Reason for the return.
      - name: refund_amount
        in: body
        type: string
        description: The refund amount in cents.
      - name: payment_id
        in: body
        type: string
        description: The original Square payment ID.
      steps:
      - name: get-order
        type: call
        call: oracle-ebs.get-order
        with:
          order_id: '{{order_id}}'
      - name: process-refund
        type: call
        call: square.create-refund
        with:
          payment_id: '{{payment_id}}'
          amount: '{{refund_amount}}'
          reason: '{{return_reason}}'
      - name: create-case
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Return processed: Order {{order_id}}'
          category: customer_returns
          description: 'Return for order {{order_id}}. Reason: {{return_reason}}. Refund: ${{refund_amount}}. Square refund: {{process-refund.refund_id}}.'
      - name: update-customer
        type: call
        call: salesforce.update-contact
        with:
          contact_id: '{{get-order.customer_id}}'
          last_return_date: today
          last_return_reason: '{{return_reason}}'
  consumes:
  - type: http
    namespace: oracle-ebs
    baseUri: https://bloomingdales-ebs.oraclecloud.com/webservices/rest/v1
    authentication:
      type: bearer
      token: $secrets.oracle_ebs_token
    resources:
    - name: orders
      path: /orders/{{order_id}}
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-order
        method: GET
  - 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: servicenow
    baseUri: https://bloomingdales.service-now.com/api/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://bloomingdales.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
Open in Framework → View in Fleet → customer-return-processing-pipeline.yml

Retrieves chargeback details from Mastercard by case number.

naftiko: '0.5'
info:
  label: Mastercard Chargeback Lookup
  description: Retrieves chargeback details from Mastercard by case number.
  tags:
  - payments
  - mastercard
  - chargebacks
capability:
  exposes:
  - type: mcp
    namespace: chargeback-management
    port: 8080
    tools:
    - name: get-chargeback
      description: Look up a Mastercard chargeback by case number.
      inputParameters:
      - name: case_number
        in: body
        type: string
        description: Mastercard chargeback case number.
      call: mastercard.get-chargeback
      with:
        case_number: '{{case_number}}'
  consumes:
  - type: http
    namespace: mastercard
    baseUri: https://api.mastercard.com/dispute/v1
    authentication:
      type: bearer
      token: $secrets.mastercard_token
    resources:
    - name: chargebacks
      path: /chargebacks/{{case_number}}
      inputParameters:
      - name: case_number
        in: path
      operations:
      - name: get-chargeback
        method: GET
Open in Framework → View in Fleet → mastercard-chargeback-lookup.yml

Retrieves Google Analytics traffic metrics for the Bloomingdale's e-commerce website.

naftiko: '0.5'
info:
  label: Google Analytics Store Website Traffic
  description: Retrieves Google Analytics traffic metrics for the Bloomingdale's e-commerce website.
  tags:
  - marketing
  - google-analytics
  - e-commerce
capability:
  exposes:
  - type: mcp
    namespace: web-analytics
    port: 8080
    tools:
    - name: get-traffic-report
      description: Retrieve GA4 traffic metrics for a date range.
      inputParameters:
      - name: property_id
        in: body
        type: string
        description: The GA4 property 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: ga.run-report
      with:
        property_id: '{{property_id}}'
        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
      inputParameters:
      - name: property_id
        in: path
      operations:
      - name: run-report
        method: POST
Open in Framework → View in Fleet → google-analytics-store-website-traffic.yml

Retrieves a Sparx EA model package for retail systems architecture documentation.

naftiko: '0.5'
info:
  label: Sparx Enterprise Architect Retail Model
  description: Retrieves a Sparx EA model package for retail systems architecture documentation.
  tags:
  - architecture
  - sparx-enterprise-architect
  - retail
capability:
  exposes:
  - type: mcp
    namespace: ea-models
    port: 8080
    tools:
    - name: get-ea-package
      description: Look up a Sparx EA model package.
      inputParameters:
      - name: package_id
        in: body
        type: string
        description: EA package GUID.
      call: sparxea.get-package
      with:
        package_id: '{{package_id}}'
  consumes:
  - type: http
    namespace: sparxea
    baseUri: https://bloomingdales-ea.macys.com/api/v1
    authentication:
      type: bearer
      token: $secrets.sparxea_token
    resources:
    - name: packages
      path: /packages/{{package_id}}
      inputParameters:
      - name: package_id
        in: path
      operations:
      - name: get-package
        method: GET
Open in Framework → View in Fleet → sparx-enterprise-architect-retail-model.yml

Invokes an Azure ML endpoint for personalized product recommendations.

naftiko: '0.5'
info:
  label: Azure Machine Learning Product Recommendation
  description: Invokes an Azure ML endpoint for personalized product recommendations.
  tags:
  - machine-learning
  - azure-machine-learning
  - personalization
  - retail
capability:
  exposes:
  - type: mcp
    namespace: product-reco
    port: 8080
    tools:
    - name: get-recommendations
      description: Get product recommendations for a customer.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: Customer identifier.
      - name: num_items
        in: body
        type: integer
        description: Number of recommendations.
      call: azureml.score-recommendations
      with:
        customer_id: '{{customer_id}}'
        num_items: '{{num_items}}'
  consumes:
  - type: http
    namespace: azureml
    baseUri: https://bloomingdales-ml.eastus.inference.ml.azure.com
    authentication:
      type: bearer
      token: $secrets.azureml_token
    resources:
    - name: scoring
      path: /score
      operations:
      - name: score-recommendations
        method: POST
Open in Framework → View in Fleet → azure-machine-learning-product-recommendation.yml

Creates a Facebook page post for product promotions and brand engagement.

naftiko: '0.5'
info:
  label: Facebook Product Promotion Post
  description: Creates a Facebook page post for product promotions and brand engagement.
  tags:
  - marketing
  - facebook
  - promotion
capability:
  exposes:
  - type: mcp
    namespace: social-facebook
    port: 8080
    tools:
    - name: create-promo-post
      description: Create a Facebook promotion post.
      inputParameters:
      - name: message
        in: body
        type: string
        description: The post message.
      - name: link
        in: body
        type: string
        description: Product page link.
      call: facebook.create-post
      with:
        message: '{{message}}'
        link: '{{link}}'
  consumes:
  - type: http
    namespace: facebook
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.facebook_page_token
    resources:
    - name: posts
      path: /me/feed
      operations:
      - name: create-post
        method: POST
Open in Framework → View in Fleet → facebook-product-promotion-post.yml

Retrieves a change request record from ServiceNow by change number.

naftiko: '0.5'
info:
  label: ServiceNow Change Request Lookup
  description: Retrieves a change request record from ServiceNow by change number.
  tags:
  - operations
  - servicenow
  - change-management
capability:
  exposes:
  - type: mcp
    namespace: change-management
    port: 8080
    tools:
    - name: get-change-request
      description: Look up a ServiceNow change request by number.
      inputParameters:
      - name: change_number
        in: body
        type: string
        description: ServiceNow change request number.
      call: servicenow.get-change
      with:
        change_number: '{{change_number}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://bloomingdales.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: change-requests
      path: /table/change_request?sysparm_query=number={{change_number}}
      inputParameters:
      - name: change_number
        in: query
      operations:
      - name: get-change
        method: GET
Open in Framework → View in Fleet → servicenow-change-request-lookup.yml

When a new vendor is approved in Oracle EBS, creates a Salesforce account, provisions a SharePoint collaboration site, and sends welcome email via MailChimp.

naftiko: '0.5'
info:
  label: Vendor Onboarding Pipeline
  description: When a new vendor is approved in Oracle EBS, creates a Salesforce account, provisions a SharePoint collaboration site, and sends welcome email via MailChimp.
  tags:
  - procurement
  - oracle-e-business-suite
  - salesforce
  - sharepoint
  - mailchimp
capability:
  exposes:
  - type: mcp
    namespace: vendor-onboarding
    port: 8080
    tools:
    - name: onboard-vendor
      description: Orchestrate new vendor onboarding across ERP, CRM, and collaboration platforms.
      inputParameters:
      - name: vendor_id
        in: body
        type: string
        description: Oracle EBS vendor ID.
      - name: vendor_email
        in: body
        type: string
        description: Primary vendor contact email.
      steps:
      - name: get-vendor
        type: call
        call: oracle-ebs.get-vendor
        with:
          vendor_id: '{{vendor_id}}'
      - name: create-account
        type: call
        call: salesforce.create-account
        with:
          name: '{{get-vendor.vendor_name}}'
          type: Vendor
          vendor_number: '{{vendor_id}}'
      - name: create-site
        type: call
        call: sharepoint.create-folder
        with:
          site_id: vendor_portal
          folder_path: Vendors/{{get-vendor.vendor_name}}
      - name: send-welcome
        type: call
        call: mailchimp.send-transactional
        with:
          email: '{{vendor_email}}'
          template: vendor_welcome
          merge_vars: '{"VENDOR_NAME": "{{get-vendor.vendor_name}}", "PORTAL_URL": "{{create-site.url}}"}'
  consumes:
  - type: http
    namespace: oracle-ebs
    baseUri: https://erp.bloomingdales.com/webservices/rest/v1
    authentication:
      type: basic
      username: $secrets.oracle_ebs_user
      password: $secrets.oracle_ebs_password
    resources:
    - name: vendors
      path: /vendors/{{vendor_id}}
      inputParameters:
      - name: vendor_id
        in: path
      operations:
      - name: get-vendor
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://bloomingdales.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: 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: mailchimp
    baseUri: https://mandrillapp.com/api/1.0
    authentication:
      type: apiKey
      key: $secrets.mandrill_api_key
    resources:
    - name: messages
      path: /messages/send-template
      operations:
      - name: send-transactional
        method: POST
Open in Framework → View in Fleet → vendor-onboarding-pipeline.yml

Sends a promotional SMS blast to a customer segment via Adobe Campaign.

naftiko: '0.5'
info:
  label: Adobe Campaign SMS Blast
  description: Sends a promotional SMS blast to a customer segment via Adobe Campaign.
  tags:
  - marketing
  - adobe-campaign
  - sms
capability:
  exposes:
  - type: mcp
    namespace: campaign-sms
    port: 8080
    tools:
    - name: send-sms-blast
      description: Send an SMS campaign to a target audience segment.
      inputParameters:
      - name: segment_id
        in: body
        type: string
        description: Adobe Campaign audience segment ID.
      call: adobe-campaign.send-sms
      with:
        segment_id: '{{segment_id}}'
  consumes:
  - type: http
    namespace: adobe-campaign
    baseUri: https://mc.adobe.io/bloomingdales/campaign
    authentication:
      type: bearer
      token: $secrets.adobe_campaign_token
    resources:
    - name: sms-deliveries
      path: /smsDeliveries/{{segment_id}}/send
      inputParameters:
      - name: segment_id
        in: path
      operations:
      - name: send-sms
        method: POST
Open in Framework → View in Fleet → adobe-campaign-sms-blast.yml

When inventory falls below threshold, checks Oracle EBS stock levels, creates a restock PO, logs in ServiceNow, and alerts the store operations team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Inventory Restock Alert Pipeline
  description: When inventory falls below threshold, checks Oracle EBS stock levels, creates a restock PO, logs in ServiceNow, and alerts the store operations team via Microsoft Teams.
  tags:
  - inventory
  - restock
  - oracle-e-business-suite
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: inventory-alerts
    port: 8080
    tools:
    - name: trigger-restock-alert
      description: Given an item and store, check inventory and initiate restock if below threshold.
      inputParameters:
      - name: item_number
        in: body
        type: string
        description: The item number.
      - name: store_code
        in: body
        type: string
        description: The store location code.
      - name: threshold
        in: body
        type: integer
        description: Minimum stock threshold.
      - name: ops_channel
        in: body
        type: string
        description: Microsoft Teams channel for store ops.
      steps:
      - name: check-stock
        type: call
        call: oracle-ebs.get-inventory
        with:
          item_number: '{{item_number}}'
          store_code: '{{store_code}}'
      - name: create-restock-po
        type: call
        call: oracle-ebs.create-purchase-order
        with:
          item_number: '{{item_number}}'
          quantity: '{{threshold}}'
          store_code: '{{store_code}}'
      - name: log-restock
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Restock alert: {{item_number}} at {{store_code}}'
          category: inventory_restock
          description: 'Current stock: {{check-stock.on_hand_qty}}. Threshold: {{threshold}}. PO: {{create-restock-po.po_number}}.'
      - name: alert-ops
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: '{{ops_channel}}'
          text: 'RESTOCK ALERT: {{item_number}} at {{store_code}}. Current: {{check-stock.on_hand_qty}}. PO {{create-restock-po.po_number}} created. ServiceNow: {{log-restock.number}}.'
  consumes:
  - type: http
    namespace: oracle-ebs
    baseUri: https://bloomingdales-ebs.oraclecloud.com/webservices/rest/v1
    authentication:
      type: bearer
      token: $secrets.oracle_ebs_token
    resources:
    - name: inventory
      path: /inventory?item={{item_number}}&location={{store_code}}
      inputParameters:
      - name: item_number
        in: query
      - name: store_code
        in: query
      operations:
      - name: get-inventory
        method: GET
    - name: purchase-orders
      path: /purchase-orders
      operations:
      - name: create-purchase-order
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://bloomingdales.service-now.com/api/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: post-channel-message
        method: POST
Open in Framework → View in Fleet → inventory-restock-alert-pipeline.yml

Runs end-of-day closing procedures by pulling Square POS totals, reconciling with Oracle EBS, and posting the closing report to Microsoft Teams.

naftiko: '0.5'
info:
  label: Store Closing Checklist Pipeline
  description: Runs end-of-day closing procedures by pulling Square POS totals, reconciling with Oracle EBS, and posting the closing report to Microsoft Teams.
  tags:
  - operations
  - square
  - oracle-e-business-suite
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: store-closing
    port: 8080
    tools:
    - name: run-closing-checklist
      description: Execute store closing procedures across POS, ERP, and team communication.
      inputParameters:
      - name: store_code
        in: body
        type: string
        description: Store location code.
      - name: closing_date
        in: body
        type: string
        description: Closing date in YYYY-MM-DD.
      steps:
      - name: get-pos-totals
        type: call
        call: square.get-daily-totals
        with:
          location_id: '{{store_code}}'
          date: '{{closing_date}}'
      - name: get-erp-totals
        type: call
        call: oracle-ebs.get-daily-sales
        with:
          org_id: '{{store_code}}'
          date: '{{closing_date}}'
      - name: post-report
        type: call
        call: msteams.send-message
        with:
          channel_id: store_{{store_code}}
          text: 'Closing report for {{closing_date}}: POS total: ${{get-pos-totals.gross_sales}}, ERP total: ${{get-erp-totals.total_revenue}}.'
  consumes:
  - type: http
    namespace: square
    baseUri: https://connect.squareup.com/v2
    authentication:
      type: bearer
      token: $secrets.square_token
    resources:
    - name: transactions
      path: /locations/{{location_id}}/transactions
      inputParameters:
      - name: location_id
        in: path
      operations:
      - name: get-daily-totals
        method: GET
  - type: http
    namespace: oracle-ebs
    baseUri: https://erp.bloomingdales.com/webservices/rest/v1
    authentication:
      type: basic
      username: $secrets.oracle_ebs_user
      password: $secrets.oracle_ebs_password
    resources:
    - name: sales
      path: /sales/daily-summary
      operations:
      - name: get-daily-sales
        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
Open in Framework → View in Fleet → store-closing-checklist-pipeline.yml

Retrieves a point-in-time inventory snapshot from Oracle Cloud for a specific warehouse.

naftiko: '0.5'
info:
  label: Oracle Cloud Inventory Snapshot
  description: Retrieves a point-in-time inventory snapshot from Oracle Cloud for a specific warehouse.
  tags:
  - inventory
  - oracle-cloud
  - warehouse
capability:
  exposes:
  - type: mcp
    namespace: inventory-snapshot
    port: 8080
    tools:
    - name: get-inventory-snapshot
      description: Retrieve current inventory levels from Oracle Cloud.
      inputParameters:
      - name: warehouse_id
        in: body
        type: string
        description: Oracle Cloud warehouse identifier.
      call: oracle-cloud.get-inventory
      with:
        warehouse_id: '{{warehouse_id}}'
  consumes:
  - type: http
    namespace: oracle-cloud
    baseUri: https://bloomingdales.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: bearer
      token: $secrets.oracle_cloud_token
    resources:
    - name: inventory
      path: /inventoryBalances?q=WarehouseId={{warehouse_id}}
      inputParameters:
      - name: warehouse_id
        in: query
      operations:
      - name: get-inventory
        method: GET
Open in Framework → View in Fleet → oracle-cloud-inventory-snapshot.yml

Creates a Google Optimize A/B test, updates the Google Tag Manager container, logs the experiment in Salesforce, and notifies the product team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Google Optimize Experiment Launch Pipeline
  description: Creates a Google Optimize A/B test, updates the Google Tag Manager container, logs the experiment in Salesforce, and notifies the product team via Microsoft Teams.
  tags:
  - experimentation
  - google-optimize
  - google-tag-manager
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: ab-testing
    port: 8080
    tools:
    - name: launch-experiment
      description: Orchestrate A/B test launch across experimentation, tag management, CRM, and communication.
      inputParameters:
      - name: experiment_name
        in: body
        type: string
        description: Experiment name.
      - name: page_url
        in: body
        type: string
        description: Target page URL for the experiment.
      steps:
      - name: create-experiment
        type: call
        call: google-optimize.create-experiment
        with:
          name: '{{experiment_name}}'
          url: '{{page_url}}'
      - name: update-gtm
        type: call
        call: google-tag-manager.create-tag
        with:
          container_id: bloomingdales_web
          tag_name: experiment_{{experiment_name}}
      - name: log-experiment
        type: call
        call: salesforce.create-record
        with:
          object: Experiment__c
          name: '{{experiment_name}}'
          status: Active
      - name: notify-product
        type: call
        call: msteams.send-message
        with:
          channel_id: product_experimentation
          text: 'New A/B test launched: {{experiment_name}} on {{page_url}}. GTM tag deployed.'
  consumes:
  - type: http
    namespace: google-optimize
    baseUri: https://www.googleapis.com/analytics/v3
    authentication:
      type: bearer
      token: $secrets.google_optimize_token
    resources:
    - name: experiments
      path: /management/accounts/bloomingdales/webproperties/UA-XXXX/profiles/YYYY/experiments
      operations:
      - name: create-experiment
        method: POST
  - type: http
    namespace: google-tag-manager
    baseUri: https://www.googleapis.com/tagmanager/v2
    authentication:
      type: bearer
      token: $secrets.gtm_token
    resources:
    - name: tags
      path: /accounts/bloomingdales/containers/{{container_id}}/workspaces/default/tags
      inputParameters:
      - name: container_id
        in: path
      operations:
      - name: create-tag
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://bloomingdales.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: records
      path: /sobjects/{{object}}
      inputParameters:
      - name: object
        in: path
      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
Open in Framework → View in Fleet → google-optimize-experiment-launch-pipeline.yml

When a security incident is reported, creates a ServiceNow ticket, logs evidence in Box, and alerts loss prevention via Microsoft Teams.

naftiko: '0.5'
info:
  label: Store Security Incident Pipeline
  description: When a security incident is reported, creates a ServiceNow ticket, logs evidence in Box, and alerts loss prevention via Microsoft Teams.
  tags:
  - security
  - servicenow
  - box
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: store-security
    port: 8080
    tools:
    - name: report-security-incident
      description: Create a store security incident workflow across ticketing, evidence storage, and notifications.
      inputParameters:
      - name: store_code
        in: body
        type: string
        description: Store location code.
      - name: incident_type
        in: body
        type: string
        description: Type of security incident.
      - name: description
        in: body
        type: string
        description: Incident description.
      steps:
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Security: {{incident_type}} at store {{store_code}}'
          priority: '2'
          category: loss_prevention
          description: '{{description}}'
      - name: create-evidence-folder
        type: call
        call: box.create-folder
        with:
          parent_id: security_evidence
          name: '{{create-ticket.number}}_{{store_code}}'
      - name: alert-lp
        type: call
        call: msteams.send-message
        with:
          channel_id: loss_prevention
          text: 'SECURITY INCIDENT: {{incident_type}} at store {{store_code}}. Ticket: {{create-ticket.number}}. Evidence folder: {{create-evidence-folder.url}}.'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://bloomingdales.service-now.com/api/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://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
Open in Framework → View in Fleet → store-security-incident-pipeline.yml

Reconciles supplier payments between Oracle EBS and Mastercard settlement data, logs discrepancies in Jira, and notifies the finance team via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Supplier Payment Reconciliation Pipeline
  description: Reconciles supplier payments between Oracle EBS and Mastercard settlement data, logs discrepancies in Jira, and notifies the finance team via Microsoft Outlook.
  tags:
  - finance
  - oracle-e-business-suite
  - mastercard
  - jira
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: payment-reconciliation
    port: 8080
    tools:
    - name: reconcile-payments
      description: Reconcile supplier payments across ERP and payment processor, flagging discrepancies.
      inputParameters:
      - name: vendor_id
        in: body
        type: string
        description: Oracle EBS vendor ID.
      - name: settlement_date
        in: body
        type: string
        description: Settlement date to reconcile.
      steps:
      - name: get-erp-payments
        type: call
        call: oracle-ebs.get-payments
        with:
          vendor_id: '{{vendor_id}}'
          date: '{{settlement_date}}'
      - name: get-settlements
        type: call
        call: mastercard.get-settlements
        with:
          merchant_id: bloomingdales
          date: '{{settlement_date}}'
      - name: create-discrepancy-ticket
        type: call
        call: jira.create-issue
        with:
          project_key: FIN
          summary: 'Payment reconciliation: Vendor {{vendor_id}} on {{settlement_date}}'
          issue_type: Task
          description: 'ERP total: ${{get-erp-payments.total}}. Settlement total: ${{get-settlements.total}}.'
      - name: notify-finance
        type: call
        call: outlook.send-email
        with:
          to: finance-team@bloomingdales.com
          subject: 'Payment Reconciliation: Vendor {{vendor_id}}'
          body: 'Reconciliation for {{settlement_date}} complete. ERP: ${{get-erp-payments.total}}, Settlement: ${{get-settlements.total}}. Jira: {{create-discrepancy-ticket.key}}.'
  consumes:
  - type: http
    namespace: oracle-ebs
    baseUri: https://erp.bloomingdales.com/webservices/rest/v1
    authentication:
      type: basic
      username: $secrets.oracle_ebs_user
      password: $secrets.oracle_ebs_password
    resources:
    - name: payments
      path: /payables/payments
      operations:
      - name: get-payments
        method: GET
  - 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: jira
    baseUri: https://bloomingdales.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_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: messages
      path: /me/sendMail
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → supplier-payment-reconciliation-pipeline.yml

Creates a LinkedIn company page post for Bloomingdale's brand awareness and recruitment.

naftiko: '0.5'
info:
  label: LinkedIn Brand Content Post
  description: Creates a LinkedIn company page post for Bloomingdale's brand awareness and recruitment.
  tags:
  - marketing
  - linkedin
  - brand
capability:
  exposes:
  - type: mcp
    namespace: social-linkedin
    port: 8080
    tools:
    - name: create-linkedin-post
      description: Create a LinkedIn company page post.
      inputParameters:
      - name: text
        in: body
        type: string
        description: The post text.
      call: linkedin.create-post
      with:
        text: '{{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
Open in Framework → View in Fleet → linkedin-brand-content-post.yml

Exports an architecture diagram from Sparx Enterprise Architect, uploads it to SharePoint, creates a review task in Jira, and notifies the architecture team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Sparx Architecture Review Pipeline
  description: Exports an architecture diagram from Sparx Enterprise Architect, uploads it to SharePoint, creates a review task in Jira, and notifies the architecture team via Microsoft Teams.
  tags:
  - architecture
  - sparx-enterprise-architect
  - sharepoint
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: architecture-review
    port: 8080
    tools:
    - name: initiate-review
      description: Orchestrate architecture diagram review across modeling, document storage, and project tracking.
      inputParameters:
      - name: model_id
        in: body
        type: string
        description: Sparx EA model GUID.
      - name: diagram_name
        in: body
        type: string
        description: Diagram name.
      steps:
      - name: export-diagram
        type: call
        call: sparx-ea.export-diagram
        with:
          model_id: '{{model_id}}'
          diagram_name: '{{diagram_name}}'
      - name: upload-to-sharepoint
        type: call
        call: sharepoint.upload-file
        with:
          site_id: enterprise_architecture
          folder_path: Diagrams/Reviews
          file_name: '{{diagram_name}}.png'
      - name: create-review-task
        type: call
        call: jira.create-issue
        with:
          project_key: ARCH
          summary: 'Review: {{diagram_name}}'
          issue_type: Task
          description: 'Architecture diagram review. Document: {{upload-to-sharepoint.url}}'
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          channel_id: architecture
          text: 'Architecture review requested: {{diagram_name}}. Document: {{upload-to-sharepoint.url}}. Jira: {{create-review-task.key}}.'
  consumes:
  - type: http
    namespace: sparx-ea
    baseUri: https://sparx.bloomingdales.com/api/v1
    authentication:
      type: bearer
      token: $secrets.sparx_ea_token
    resources:
    - name: diagrams
      path: /models/{{model_id}}/diagrams/{{diagram_name}}/export
      inputParameters:
      - name: model_id
        in: path
      - name: diagram_name
        in: path
      operations:
      - name: export-diagram
        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: upload-file
        method: PUT
  - type: http
    namespace: jira
    baseUri: https://bloomingdales.atlassian.net/rest/api/3
    authentication:
      type: 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
Open in Framework → View in Fleet → sparx-architecture-review-pipeline.yml

Pulls product reviews from BigCommerce, runs sentiment analysis via Azure ML, updates the product record in Salesforce, and sends a summary to the merchandising team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Product Review Analysis Pipeline
  description: Pulls product reviews from BigCommerce, runs sentiment analysis via Azure ML, updates the product record in Salesforce, and sends a summary to the merchandising team via Microsoft Teams.
  tags:
  - analytics
  - bigcommerce
  - azure-machine-learning
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: review-analysis
    port: 8080
    tools:
    - name: analyze-reviews
      description: Orchestrate product review sentiment analysis across e-commerce, ML, CRM, and communication.
      inputParameters:
      - name: product_id
        in: body
        type: string
        description: BigCommerce product ID.
      steps:
      - name: get-reviews
        type: call
        call: bigcommerce.get-reviews
        with:
          product_id: '{{product_id}}'
      - name: analyze-sentiment
        type: call
        call: azure-ml.score-endpoint
        with:
          endpoint: sentiment_analysis
          input_data: '{{get-reviews.reviews}}'
      - name: update-product
        type: call
        call: salesforce.update-product
        with:
          product_id: '{{product_id}}'
          sentiment_score: '{{analyze-sentiment.average_score}}'
      - name: notify-merch
        type: call
        call: msteams.send-message
        with:
          channel_id: merchandising
          text: 'Review analysis for product {{product_id}}: Average sentiment {{analyze-sentiment.average_score}}/5. Total reviews: {{get-reviews.count}}.'
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/bloomingdales/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: reviews
      path: /catalog/products/{{product_id}}/reviews
      inputParameters:
      - name: product_id
        in: path
      operations:
      - name: get-reviews
        method: GET
  - type: http
    namespace: azure-ml
    baseUri: https://bloomingdales-ml.api.azureml.ms
    authentication:
      type: bearer
      token: $secrets.azure_ml_token
    resources:
    - name: endpoints
      path: /score/{{endpoint}}
      inputParameters:
      - name: endpoint
        in: path
      operations:
      - name: score-endpoint
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://bloomingdales.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
  - 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
Open in Framework → View in Fleet → product-review-analysis-pipeline.yml

Checks Dynatrace for POS system health at a specific store, returning application status, response time, and error rate.

naftiko: '0.5'
info:
  label: Store POS System Health Check
  description: Checks Dynatrace for POS system health at a specific store, returning application status, response time, and error rate.
  tags:
  - monitoring
  - dynatrace
  - pos
  - retail
capability:
  exposes:
  - type: mcp
    namespace: pos-monitoring
    port: 8080
    tools:
    - name: check-pos-health
      description: Look up Dynatrace application health for store POS systems.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The Dynatrace application entity ID.
      call: dynatrace.get-entity
      with:
        entity_id: '{{entity_id}}'
      outputParameters:
      - name: display_name
        type: string
        mapping: $.displayName
      - name: health_state
        type: string
        mapping: $.properties.healthState
  consumes:
  - type: http
    namespace: dynatrace
    baseUri: https://bloomingdales.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
Open in Framework → View in Fleet → store-pos-system-health-check.yml

Launches a seasonal promotion by creating a MailChimp campaign, posting to Facebook and Instagram, updating the Salesforce promotion record, and notifying the marketing team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Seasonal Promotion Launch Pipeline
  description: Launches a seasonal promotion by creating a MailChimp campaign, posting to Facebook and Instagram, updating the Salesforce promotion record, and notifying the marketing team via Microsoft Teams.
  tags:
  - marketing
  - promotions
  - mailchimp
  - facebook
  - instagram
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: promo-launch
    port: 8080
    tools:
    - name: launch-seasonal-promotion
      description: Given promotion details, orchestrate launch across email, social, CRM, and internal channels.
      inputParameters:
      - name: promo_name
        in: body
        type: string
        description: The promotion name.
      - name: discount_pct
        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.
      - name: marketing_channel
        in: body
        type: string
        description: Microsoft Teams marketing channel.
      steps:
      - name: create-email-campaign
        type: call
        call: mailchimp.create-campaign
        with:
          subject: '{{promo_name}} - {{discount_pct}}% Off at Bloomingdale''s'
          from_name: Bloomingdale's
      - name: post-facebook
        type: call
        call: facebook.create-post
        with:
          message: '{{promo_name}}! Enjoy {{discount_pct}}% off select items. {{start_date}} through {{end_date}}. Shop now at bloomingdales.com'
      - name: post-instagram
        type: call
        call: instagram.create-media
        with:
          caption: '{{promo_name}} is here! {{discount_pct}}% off. Shop the sale at bloomingdales.com #Bloomingdales #Sale'
      - name: notify-marketing
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: '{{marketing_channel}}'
          text: 'Promotion launched: {{promo_name}} ({{discount_pct}}% off). Email campaign: {{create-email-campaign.id}}. Social posts live.'
  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
  - type: http
    namespace: facebook
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.facebook_page_token
    resources:
    - name: posts
      path: /me/feed
      operations:
      - name: create-post
        method: POST
  - type: http
    namespace: instagram
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.instagram_token
    resources:
    - name: media
      path: /me/media
      operations:
      - name: create-media
        method: POST
  - 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: post-channel-message
        method: POST
Open in Framework → View in Fleet → seasonal-promotion-launch-pipeline.yml

Runs a Teradata data extract, refreshes the Power BI executive dashboard, and emails the refreshed report link via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Power BI Executive Dashboard Refresh Pipeline
  description: Runs a Teradata data extract, refreshes the Power BI executive dashboard, and emails the refreshed report link via Microsoft Outlook.
  tags:
  - analytics
  - teradata
  - power-bi
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: exec-dashboard
    port: 8080
    tools:
    - name: refresh-exec-dashboard
      description: Orchestrate executive dashboard refresh across data warehouse, BI, and email.
      inputParameters:
      - name: report_date
        in: body
        type: string
        description: Report date in YYYY-MM-DD.
      steps:
      - name: extract-data
        type: call
        call: teradata.execute-query
        with:
          query: CALL REFRESH_EXEC_DASHBOARD_STAGING('{{report_date}}')
          database: EXECUTIVE_DB
      - name: refresh-dashboard
        type: call
        call: powerbi.refresh-dataset
        with:
          dataset_id: exec_daily_dashboard
      - name: email-link
        type: call
        call: outlook.send-email
        with:
          to: executive-team@bloomingdales.com
          subject: Executive Dashboard Updated - {{report_date}}
          body: The executive dashboard has been refreshed with data as of {{report_date}}.
  consumes:
  - type: http
    namespace: teradata
    baseUri: https://bloomingdales-td.teradata.com/api/v1
    authentication:
      type: bearer
      token: $secrets.teradata_token
    resources:
    - name: queries
      path: /queries
      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
  - 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
Open in Framework → View in Fleet → power-bi-executive-dashboard-refresh-pipeline.yml

On new store employee creation in Oracle E-Business Suite, opens a ServiceNow onboarding ticket, provisions a SharePoint folder, and sends a Microsoft Teams welcome message.

naftiko: '0.5'
info:
  label: Store Employee Onboarding Orchestrator
  description: On new store employee creation in Oracle E-Business Suite, opens a ServiceNow onboarding ticket, provisions a SharePoint folder, and sends a Microsoft Teams welcome message.
  tags:
  - hr
  - onboarding
  - retail
  - oracle-e-business-suite
  - servicenow
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-onboarding
    port: 8080
    tools:
    - name: trigger-store-onboarding
      description: Given an Oracle EBS employee ID and store location, orchestrate the full onboarding sequence.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The Oracle EBS employee ID.
      - name: store_location
        in: body
        type: string
        description: The store location code.
      - name: start_date
        in: body
        type: string
        description: Start date in YYYY-MM-DD format.
      steps:
      - name: get-employee
        type: call
        call: oracle-ebs.get-employee
        with:
          employee_id: '{{employee_id}}'
      - name: open-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'New store hire onboarding: {{get-employee.full_name}}'
          category: hr_onboarding
          assigned_group: Store_Ops_{{store_location}}
          description: Onboarding for {{get-employee.full_name}} starting {{start_date}} at {{store_location}}.
      - name: provision-folder
        type: call
        call: sharepoint.create-folder
        with:
          site_id: store_onboarding_site
          folder_path: StoreOnboarding/{{get-employee.full_name}}_{{store_location}}
      - name: send-welcome
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-employee.work_email}}'
          text: 'Welcome to Bloomingdale''s {{store_location}}, {{get-employee.first_name}}! Your onboarding ticket is {{open-ticket.number}}. Documents: {{provision-folder.url}}.'
  consumes:
  - type: http
    namespace: oracle-ebs
    baseUri: https://bloomingdales-ebs.oraclecloud.com/webservices/rest/v1
    authentication:
      type: bearer
      token: $secrets.oracle_ebs_token
    resources:
    - name: employees
      path: /employees/{{employee_id}}
      inputParameters:
      - name: employee_id
        in: path
      operations:
      - name: get-employee
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://bloomingdales.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: drive-items
      path: /{{site_id}}/drive/root:/{{folder_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      operations:
      - name: create-folder
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → store-employee-onboarding-orchestrator.yml

When a buyer creates a purchase order for new merchandise, submits it to Oracle EBS, creates a ServiceNow tracking ticket, and notifies the buying team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Vendor Purchase Order Pipeline
  description: When a buyer creates a purchase order for new merchandise, submits it to Oracle EBS, creates a ServiceNow tracking ticket, and notifies the buying team via Microsoft Teams.
  tags:
  - procurement
  - oracle-e-business-suite
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: merchandise-procurement
    port: 8080
    tools:
    - name: submit-purchase-order
      description: Given vendor and merchandise details, create a PO in Oracle EBS and track across systems.
      inputParameters:
      - name: vendor_id
        in: body
        type: string
        description: The Oracle EBS vendor ID.
      - name: item_number
        in: body
        type: string
        description: The merchandise item number.
      - name: quantity
        in: body
        type: integer
        description: Order quantity.
      - name: buying_channel
        in: body
        type: string
        description: Microsoft Teams channel for the buying team.
      steps:
      - name: create-po
        type: call
        call: oracle-ebs.create-purchase-order
        with:
          vendor_id: '{{vendor_id}}'
          item_number: '{{item_number}}'
          quantity: '{{quantity}}'
      - name: create-tracking
        type: call
        call: servicenow.create-incident
        with:
          short_description: PO {{create-po.po_number}} for item {{item_number}}
          category: procurement
          description: 'Purchase order created for vendor {{vendor_id}}. Item: {{item_number}}. Qty: {{quantity}}.'
      - name: notify-buyers
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: '{{buying_channel}}'
          text: 'New PO created: {{create-po.po_number}}. Item: {{item_number}}. Qty: {{quantity}}. Vendor: {{vendor_id}}. Tracking: {{create-tracking.number}}.'
  consumes:
  - type: http
    namespace: oracle-ebs
    baseUri: https://bloomingdales-ebs.oraclecloud.com/webservices/rest/v1
    authentication:
      type: bearer
      token: $secrets.oracle_ebs_token
    resources:
    - name: purchase-orders
      path: /purchase-orders
      operations:
      - name: create-purchase-order
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://bloomingdales.service-now.com/api/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: post-channel-message
        method: POST
Open in Framework → View in Fleet → vendor-purchase-order-pipeline.yml

Pulls video analytics from YouTube, logs metrics in Teradata, updates the campaign in Salesforce, and sends a performance report via Microsoft Outlook.

naftiko: '0.5'
info:
  label: YouTube Video Performance Pipeline
  description: Pulls video analytics from YouTube, logs metrics in Teradata, updates the campaign in Salesforce, and sends a performance report via Microsoft Outlook.
  tags:
  - marketing
  - youtube
  - teradata
  - salesforce
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: video-analytics
    port: 8080
    tools:
    - name: report-video-performance
      description: Orchestrate YouTube video performance reporting across analytics, data warehouse, CRM, and email.
      inputParameters:
      - name: video_id
        in: body
        type: string
        description: YouTube video ID.
      - name: campaign_id
        in: body
        type: string
        description: Salesforce campaign ID.
      steps:
      - name: get-analytics
        type: call
        call: youtube.get-video-stats
        with:
          video_id: '{{video_id}}'
      - name: log-metrics
        type: call
        call: teradata.execute-query
        with:
          query: INSERT INTO VIDEO_METRICS (video_id, views, likes, shares, logged_at) VALUES ('{{video_id}}', {{get-analytics.views}}, {{get-analytics.likes}}, {{get-analytics.shares}}, CURRENT_TIMESTAMP)
          database: MARKETING_DB
      - name: update-campaign
        type: call
        call: salesforce.update-campaign
        with:
          campaign_id: '{{campaign_id}}'
          video_views: '{{get-analytics.views}}'
      - name: email-report
        type: call
        call: outlook.send-email
        with:
          to: marketing-team@bloomingdales.com
          subject: 'YouTube Performance: {{video_id}}'
          body: 'Views: {{get-analytics.views}}, Likes: {{get-analytics.likes}}, Shares: {{get-analytics.shares}}.'
  consumes:
  - type: http
    namespace: youtube
    baseUri: https://www.googleapis.com/youtube/v3
    authentication:
      type: apiKey
      key: $secrets.youtube_api_key
    resources:
    - name: videos
      path: /videos?part=statistics&id={{video_id}}
      inputParameters:
      - name: video_id
        in: query
      operations:
      - name: get-video-stats
        method: GET
  - type: http
    namespace: teradata
    baseUri: https://bloomingdales-td.teradata.com/api/v1
    authentication:
      type: bearer
      token: $secrets.teradata_token
    resources:
    - name: queries
      path: /queries
      operations:
      - name: execute-query
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://bloomingdales.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: 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
Open in Framework → View in Fleet → youtube-video-performance-pipeline.yml

Retrieves a customer service case from Salesforce Lightning by case number.

naftiko: '0.5'
info:
  label: Salesforce Lightning Case Lookup
  description: Retrieves a customer service case from Salesforce Lightning by case number.
  tags:
  - customer-service
  - salesforce-lightning
  - case-management
capability:
  exposes:
  - type: mcp
    namespace: customer-cases
    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}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://bloomingdales.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
Open in Framework → View in Fleet → salesforce-lightning-case-lookup.yml

Retrieves GitHub repository metadata for Bloomingdale's e-commerce platform projects.

naftiko: '0.5'
info:
  label: GitHub E-Commerce Repository Status
  description: Retrieves GitHub repository metadata for Bloomingdale's e-commerce platform projects.
  tags:
  - development
  - github
  - e-commerce
capability:
  exposes:
  - type: mcp
    namespace: dev-repos
    port: 8080
    tools:
    - name: get-repo-info
      description: Look up a GitHub repository.
      inputParameters:
      - name: repo_name
        in: body
        type: string
        description: Repository name (owner/repo).
      call: github.get-repo
      with:
        repo_name: '{{repo_name}}'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: repos
      path: /repos/{{repo_name}}
      inputParameters:
      - name: repo_name
        in: path
      operations:
      - name: get-repo
        method: GET
Open in Framework → View in Fleet → github-e-commerce-repository-status.yml

When a customer reaches a new loyalty tier, updates Salesforce, sends congratulations via MailChimp, and logs the upgrade in Teradata.

naftiko: '0.5'
info:
  label: Loyalty Rewards Tier Upgrade Pipeline
  description: When a customer reaches a new loyalty tier, updates Salesforce, sends congratulations via MailChimp, and logs the upgrade in Teradata.
  tags:
  - loyalty
  - salesforce
  - mailchimp
  - teradata
capability:
  exposes:
  - type: mcp
    namespace: loyalty-tier
    port: 8080
    tools:
    - name: process-tier-upgrade
      description: Orchestrate loyalty tier upgrade across CRM, email, and analytics.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: Salesforce customer contact ID.
      - name: new_tier
        in: body
        type: string
        description: New loyalty tier name.
      steps:
      - name: get-customer
        type: call
        call: salesforce.get-contact
        with:
          contact_id: '{{customer_id}}'
      - name: update-salesforce
        type: call
        call: salesforce.update-contact
        with:
          contact_id: '{{customer_id}}'
          loyalty_tier: '{{new_tier}}'
      - name: send-congratulations
        type: call
        call: mailchimp.send-transactional
        with:
          email: '{{get-customer.email}}'
          template: tier_upgrade
          merge_vars: '{"FIRST_NAME": "{{get-customer.first_name}}", "NEW_TIER": "{{new_tier}}"}'
      - name: log-upgrade
        type: call
        call: teradata.execute-query
        with:
          query: INSERT INTO TIER_UPGRADES (customer_id, new_tier, upgraded_at) VALUES ('{{customer_id}}', '{{new_tier}}', CURRENT_TIMESTAMP)
          database: LOYALTY_DB
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://bloomingdales.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: mailchimp
    baseUri: https://mandrillapp.com/api/1.0
    authentication:
      type: apiKey
      key: $secrets.mandrill_api_key
    resources:
    - name: messages
      path: /messages/send-template
      operations:
      - name: send-transactional
        method: POST
  - type: http
    namespace: teradata
    baseUri: https://bloomingdales-td.teradata.com/api/v1
    authentication:
      type: bearer
      token: $secrets.teradata_token
    resources:
    - name: queries
      path: /queries
      operations:
      - name: execute-query
        method: POST
Open in Framework → View in Fleet → loyalty-rewards-tier-upgrade-pipeline.yml

Runs Azure ML demand forecast, pulls current inventory from Oracle EBS, calculates optimal markdowns, and updates prices in BigCommerce.

naftiko: '0.5'
info:
  label: Weekly Markdown Optimization Pipeline
  description: Runs Azure ML demand forecast, pulls current inventory from Oracle EBS, calculates optimal markdowns, and updates prices in BigCommerce.
  tags:
  - pricing
  - azure-machine-learning
  - oracle-e-business-suite
  - bigcommerce
capability:
  exposes:
  - type: mcp
    namespace: markdown-optimization
    port: 8080
    tools:
    - name: optimize-markdowns
      description: Run weekly markdown optimization across demand forecasting, inventory, and e-commerce.
      inputParameters:
      - name: category_id
        in: body
        type: string
        description: Product category ID.
      - name: markdown_budget
        in: body
        type: string
        description: Available markdown budget.
      steps:
      - name: run-forecast
        type: call
        call: azure-ml.run-pipeline
        with:
          pipeline_id: demand_forecast_v3
          parameters: '{"category_id": "{{category_id}}", "horizon_days": 14}'
      - name: get-inventory
        type: call
        call: oracle-ebs.get-inventory
        with:
          category_id: '{{category_id}}'
      - name: update-prices
        type: call
        call: bigcommerce.batch-update-prices
        with:
          category_id: '{{category_id}}'
          forecast_data: '{{run-forecast.output}}'
          inventory_data: '{{get-inventory.items}}'
          budget: '{{markdown_budget}}'
  consumes:
  - type: http
    namespace: azure-ml
    baseUri: https://bloomingdales-ml.api.azureml.ms
    authentication:
      type: bearer
      token: $secrets.azure_ml_token
    resources:
    - name: pipelines
      path: /pipelines/{{pipeline_id}}/run
      inputParameters:
      - name: pipeline_id
        in: path
      operations:
      - name: run-pipeline
        method: POST
  - type: http
    namespace: oracle-ebs
    baseUri: https://erp.bloomingdales.com/webservices/rest/v1
    authentication:
      type: basic
      username: $secrets.oracle_ebs_user
      password: $secrets.oracle_ebs_password
    resources:
    - name: inventory
      path: /inventory?category_id={{category_id}}
      inputParameters:
      - name: category_id
        in: query
      operations:
      - name: get-inventory
        method: GET
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/bloomingdales/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: products
      path: /catalog/products
      operations:
      - name: batch-update-prices
        method: PUT
Open in Framework → View in Fleet → weekly-markdown-optimization-pipeline.yml

When new visual merchandising guidelines are approved, uploads them to SharePoint, creates Salesforce campaign records, and notifies all store managers via Microsoft Teams.

naftiko: '0.5'
info:
  label: Visual Merchandising Pipeline
  description: When new visual merchandising guidelines are approved, uploads them to SharePoint, creates Salesforce campaign records, and notifies all store managers via Microsoft Teams.
  tags:
  - merchandising
  - sharepoint
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: visual-merch
    port: 8080
    tools:
    - name: distribute-merchandising-guidelines
      description: Given merchandising guidelines, distribute to stores via SharePoint, Salesforce, and Microsoft Teams.
      inputParameters:
      - name: guideline_name
        in: body
        type: string
        description: Name of the merchandising guideline.
      - name: season
        in: body
        type: string
        description: Season (e.g., Spring 2026).
      - name: store_managers_channel
        in: body
        type: string
        description: Microsoft Teams channel for store managers.
      steps:
      - name: upload-guidelines
        type: call
        call: sharepoint.upload-file
        with:
          site_id: visual_merchandising_site
          folder_path: Guidelines/{{season}}
          file_name: '{{guideline_name}}.pdf'
      - name: create-campaign
        type: call
        call: salesforce.create-campaign
        with:
          name: '{{season}} Visual Merchandising: {{guideline_name}}'
          status: Active
          type: In-Store
      - name: notify-managers
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: '{{store_managers_channel}}'
          text: 'New visual merchandising guidelines: {{guideline_name}} for {{season}}. Download: {{upload-guidelines.url}}. Campaign: {{create-campaign.id}}.'
  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: salesforce
    baseUri: https://bloomingdales.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: channel-messages
      path: /teams/{{channel_id}}/channels/general/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → visual-merchandising-pipeline.yml

Retrieves inventory levels from Oracle E-Business Suite for a given item and store location.

naftiko: '0.5'
info:
  label: Oracle EBS Inventory Lookup
  description: Retrieves inventory levels from Oracle E-Business Suite for a given item and store location.
  tags:
  - inventory
  - oracle-e-business-suite
  - retail
capability:
  exposes:
  - type: mcp
    namespace: inventory-management
    port: 8080
    tools:
    - name: get-inventory-level
      description: Look up Oracle EBS inventory for an item at a store.
      inputParameters:
      - name: item_number
        in: body
        type: string
        description: The Oracle item number.
      - name: store_code
        in: body
        type: string
        description: The store location code.
      call: oracle-ebs.get-inventory
      with:
        item_number: '{{item_number}}'
        store_code: '{{store_code}}'
      outputParameters:
      - name: on_hand_qty
        type: integer
        mapping: $.onHandQuantity
      - name: available_qty
        type: integer
        mapping: $.availableQuantity
      - name: reserved_qty
        type: integer
        mapping: $.reservedQuantity
  consumes:
  - type: http
    namespace: oracle-ebs
    baseUri: https://bloomingdales-ebs.oraclecloud.com/webservices/rest/v1
    authentication:
      type: bearer
      token: $secrets.oracle_ebs_token
    resources:
    - name: inventory
      path: /inventory?item={{item_number}}&location={{store_code}}
      inputParameters:
      - name: item_number
        in: query
      - name: store_code
        in: query
      operations:
      - name: get-inventory
        method: GET
Open in Framework → View in Fleet → oracle-ebs-inventory-lookup.yml

Executes a report query against SAP BW for retail merchandise analysis and category performance.

naftiko: '0.5'
info:
  label: SAP BW Retail Analytics Query
  description: Executes a report query against SAP BW for retail merchandise analysis and category performance.
  tags:
  - analytics
  - sap-bw
  - reporting
  - retail
capability:
  exposes:
  - type: mcp
    namespace: bw-reporting
    port: 8080
    tools:
    - name: run-bw-query
      description: Execute a SAP BW query for retail analytics.
      inputParameters:
      - name: query_name
        in: body
        type: string
        description: The SAP BW query name.
      - name: store_code
        in: body
        type: string
        description: Store filter parameter.
      - name: period
        in: body
        type: string
        description: Reporting period.
      call: sap-bw.execute-query
      with:
        query: '{{query_name}}'
        store: '{{store_code}}'
        period: '{{period}}'
  consumes:
  - type: http
    namespace: sap-bw
    baseUri: https://bloomingdales-bw.sap.com/sap/opu/odata/sap/API_BW_QUERY_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: queries
      path: /QueryResults?queryName={{query}}&store={{store}}&period={{period}}
      inputParameters:
      - name: query
        in: query
      - name: store
        in: query
      - name: period
        in: query
      operations:
      - name: execute-query
        method: GET
Open in Framework → View in Fleet → sap-bw-retail-analytics-query.yml

Monitors Twitter mentions, runs sentiment analysis via Azure ML, creates a Salesforce case for negative mentions, and alerts customer service via Microsoft Teams.

naftiko: '0.5'
info:
  label: Twitter Customer Sentiment Alert Pipeline
  description: Monitors Twitter mentions, runs sentiment analysis via Azure ML, creates a Salesforce case for negative mentions, and alerts customer service via Microsoft Teams.
  tags:
  - customer-service
  - twitter
  - azure-machine-learning
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: twitter-sentiment
    port: 8080
    tools:
    - name: process-twitter-mention
      description: Orchestrate Twitter mention triage across social, ML, CRM, and team communication.
      inputParameters:
      - name: tweet_id
        in: body
        type: string
        description: Twitter tweet ID.
      steps:
      - name: get-tweet
        type: call
        call: twitter.get-tweet
        with:
          tweet_id: '{{tweet_id}}'
      - name: analyze-sentiment
        type: call
        call: azure-ml.score-endpoint
        with:
          endpoint: sentiment_analysis
          input_data: '{{get-tweet.text}}'
      - name: create-case
        type: call
        call: salesforce.create-case
        with:
          subject: 'Twitter mention: @{{get-tweet.author}} ({{analyze-sentiment.label}})'
          description: 'Tweet: {{get-tweet.text}}. Sentiment: {{analyze-sentiment.score}}.'
          priority: High
      - name: alert-team
        type: call
        call: msteams.send-message
        with:
          channel_id: customer_service
          text: 'Negative tweet from @{{get-tweet.author}}: {{get-tweet.text}}. Sentiment: {{analyze-sentiment.score}}. Case: {{create-case.id}}.'
  consumes:
  - type: http
    namespace: twitter
    baseUri: https://api.twitter.com/2
    authentication:
      type: bearer
      token: $secrets.twitter_token
    resources:
    - name: tweets
      path: /tweets/{{tweet_id}}
      inputParameters:
      - name: tweet_id
        in: path
      operations:
      - name: get-tweet
        method: GET
  - type: http
    namespace: azure-ml
    baseUri: https://bloomingdales-ml.api.azureml.ms
    authentication:
      type: bearer
      token: $secrets.azure_ml_token
    resources:
    - name: endpoints
      path: /score/{{endpoint}}
      inputParameters:
      - name: endpoint
        in: path
      operations:
      - name: score-endpoint
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://bloomingdales.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
Open in Framework → View in Fleet → twitter-customer-sentiment-alert-pipeline.yml

Detects abandoned carts in BigCommerce, enriches customer data from Salesforce, sends recovery email via MailChimp, and logs the event in Google Analytics.

naftiko: '0.5'
info:
  label: Email Abandoned Cart Recovery Pipeline
  description: Detects abandoned carts in BigCommerce, enriches customer data from Salesforce, sends recovery email via MailChimp, and logs the event in Google Analytics.
  tags:
  - e-commerce
  - bigcommerce
  - salesforce
  - mailchimp
  - google-analytics
capability:
  exposes:
  - type: mcp
    namespace: cart-recovery
    port: 8080
    tools:
    - name: recover-abandoned-cart
      description: Orchestrate abandoned cart recovery across e-commerce, CRM, email, and analytics.
      inputParameters:
      - name: cart_id
        in: body
        type: string
        description: BigCommerce abandoned cart ID.
      steps:
      - name: get-cart
        type: call
        call: bigcommerce.get-cart
        with:
          cart_id: '{{cart_id}}'
      - name: get-customer
        type: call
        call: salesforce.get-contact
        with:
          email: '{{get-cart.customer_email}}'
      - name: send-recovery-email
        type: call
        call: mailchimp.send-transactional
        with:
          email: '{{get-cart.customer_email}}'
          template: abandoned_cart
          merge_vars: '{"FIRST_NAME": "{{get-customer.first_name}}", "CART_TOTAL": "{{get-cart.total}}", "CART_URL": "{{get-cart.recovery_url}}"}'
      - name: track-event
        type: call
        call: google-analytics.send-event
        with:
          category: cart_recovery
          action: email_sent
          label: '{{cart_id}}'
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/bloomingdales/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: carts
      path: /carts/{{cart_id}}
      inputParameters:
      - name: cart_id
        in: path
      operations:
      - name: get-cart
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://bloomingdales.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: contacts
      path: /sobjects/Contact
      operations:
      - name: get-contact
        method: GET
  - type: http
    namespace: mailchimp
    baseUri: https://mandrillapp.com/api/1.0
    authentication:
      type: apiKey
      key: $secrets.mandrill_api_key
    resources:
    - name: messages
      path: /messages/send-template
      operations:
      - name: send-transactional
        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: send-event
        method: POST
Open in Framework → View in Fleet → email-abandoned-cart-recovery-pipeline.yml

Generates a trusted ticket for embedding the Chewy e-commerce analytics Tableau dashboard.

naftiko: '0.5'
info:
  label: Tableau E-Commerce Analytics Embed
  description: Generates a trusted ticket for embedding the Chewy e-commerce analytics Tableau dashboard.
  tags:
  - analytics
  - visualization
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: ecommerce-dashboards
    port: 8080
    tools:
    - name: get-tableau-embed
      description: Generate a Tableau trusted ticket for e-commerce dashboards.
      inputParameters:
      - name: username
        in: body
        type: string
        description: Tableau username.
      call: tableau.get-trusted-ticket
      with:
        username: '{{username}}'
      outputParameters:
      - name: ticket
        type: string
        mapping: $
  consumes:
  - type: http
    namespace: tableau
    baseUri: https://tableau.chewy.com
    authentication:
      type: basic
      username: $secrets.tableau_admin_user
      password: $secrets.tableau_admin_password
    resources:
    - name: trusted
      path: /trusted
      operations:
      - name: get-trusted-ticket
        method: POST
Open in Framework → View in Fleet → tableau-e-commerce-analytics-embed.yml

Manages rate limiting configurations on Kong API Gateway for Chewy's public API endpoints.

naftiko: '0.5'
info:
  label: Kong API Gateway Rate Limit Manager
  description: Manages rate limiting configurations on Kong API Gateway for Chewy's public API endpoints.
  tags:
  - infrastructure
  - api-gateway
  - kong
capability:
  exposes:
  - type: mcp
    namespace: api-gateway
    port: 8080
    tools:
    - name: get-rate-limits
      description: Retrieve current rate limit configurations from Kong.
      inputParameters:
      - name: service_name
        in: body
        type: string
        description: Kong service name.
      call: kong.get-plugins
      with:
        service_name: '{{service_name}}'
        plugin_name: rate-limiting
      outputParameters:
      - name: config
        type: object
        mapping: $.data[0].config
      - name: enabled
        type: boolean
        mapping: $.data[0].enabled
  consumes:
  - type: http
    namespace: kong
    baseUri: https://kong-admin.chewy.com
    authentication:
      type: apiKey
      key: $secrets.kong_admin_key
    resources:
    - name: plugins
      path: /services/{{service_name}}/plugins
      inputParameters:
      - name: service_name
        in: path
      operations:
      - name: get-plugins
        method: GET
Open in Framework → View in Fleet → kong-api-gateway-rate-limit-manager.yml

Executes Snowflake SQL queries against Chewy's analytics warehouse for customer segmentation, cohort analysis, and purchasing trends.

naftiko: '0.5'
info:
  label: Snowflake Customer Analytics Query
  description: Executes Snowflake SQL queries against Chewy's analytics warehouse for customer segmentation, cohort analysis, and purchasing trends.
  tags:
  - analytics
  - data-warehouse
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: customer-analytics
    port: 8080
    tools:
    - name: query-customer-analytics
      description: Execute a Snowflake analytics query for customer data.
      inputParameters:
      - name: sql
        in: body
        type: string
        description: The SQL query to execute.
      call: snowflake.execute-statement
      with:
        statement: '{{sql}}'
        warehouse: CHEWY_ANALYTICS_WH
        database: CHEWY_ANALYTICS
      outputParameters:
      - name: data
        type: array
        mapping: $.data
      - name: row_count
        type: integer
        mapping: $.resultSetMetaData.numRows
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://chewy.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: execute-statement
        method: POST
Open in Framework → View in Fleet → snowflake-customer-analytics-query.yml

On low inventory detection, queries SAP HANA for stock levels, creates a Coupa purchase order, notifies the vendor via email, and updates the dashboard in Power BI.

naftiko: '0.5'
info:
  label: Inventory Restock Alert Orchestrator
  description: On low inventory detection, queries SAP HANA for stock levels, creates a Coupa purchase order, notifies the vendor via email, and updates the dashboard in Power BI.
  tags:
  - inventory
  - procurement
  - sap-hana
  - coupa
  - power-bi
capability:
  exposes:
  - type: mcp
    namespace: inventory-restock
    port: 8080
    tools:
    - name: process-restock
      description: Orchestrate inventory restock across SAP HANA, Coupa, email, and Power BI.
      inputParameters:
      - name: product_id
        in: body
        type: string
        description: Product SKU.
      - name: warehouse_id
        in: body
        type: string
        description: Warehouse identifier.
      steps:
      - name: check-stock
        type: call
        call: sap-hana.get-inventory
        with:
          product_id: '{{product_id}}'
          warehouse_id: '{{warehouse_id}}'
      - name: create-po
        type: call
        call: coupa.create-purchase-order
        with:
          supplier_id: '{{check-stock.preferred_supplier}}'
          item: '{{product_id}}'
          quantity: '{{check-stock.reorder_quantity}}'
      - name: notify-vendor
        type: call
        call: ses.send-email
        with:
          to: '{{check-stock.supplier_email}}'
          subject: 'Chewy PO: {{create-po.po_number}} - {{product_id}}'
          body: Please fulfill PO {{create-po.po_number}} for {{check-stock.reorder_quantity}} units of {{product_id}}.
      - name: refresh-dashboard
        type: call
        call: powerbi.refresh-dataset
        with:
          dataset_id: inventory-levels
  consumes:
  - type: http
    namespace: sap-hana
    baseUri: https://chewy-hana.sap.com/api/v1
    authentication:
      type: basic
      username: $secrets.sap_hana_user
      password: $secrets.sap_hana_password
    resources:
    - name: inventory
      path: /inventory
      operations:
      - name: get-inventory
        method: GET
  - type: http
    namespace: coupa
    baseUri: https://chewy.coupahost.com/api
    authentication:
      type: bearer
      token: $secrets.coupa_api_token
    resources:
    - name: purchase-orders
      path: /purchase_orders
      operations:
      - name: create-purchase-order
        method: POST
  - type: http
    namespace: ses
    baseUri: https://email.us-east-1.amazonaws.com
    authentication:
      type: aws-sig-v4
      access_key: $secrets.aws_access_key
      secret_key: $secrets.aws_secret_key
    resources:
    - name: emails
      path: /v2/email/outbound-emails
      operations:
      - name: send-email
        method: POST
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: datasets
      path: /datasets/{{dataset_id}}/refreshes
      inputParameters:
      - name: dataset_id
        in: path
      operations:
      - name: refresh-dataset
        method: POST
Open in Framework → View in Fleet → inventory-restock-alert-orchestrator.yml

Publishes employer brand and pet industry thought leadership content on the Chewy LinkedIn company page.

naftiko: '0.5'
info:
  label: LinkedIn Pet Brand Content Publisher
  description: Publishes employer brand and pet industry thought leadership content on the Chewy LinkedIn company page.
  tags:
  - marketing
  - employer-brand
  - linkedin
capability:
  exposes:
  - type: mcp
    namespace: brand-content
    port: 8080
    tools:
    - name: publish-linkedin-post
      description: Post content to the Chewy LinkedIn page.
      inputParameters:
      - name: text
        in: body
        type: string
        description: Post content.
      - name: media_url
        in: body
        type: string
        description: Optional media URL.
      call: linkedin.create-post
      with:
        author: urn:li:organization:{{chewy_org_id}}
        text: '{{text}}'
        media_url: '{{media_url}}'
      outputParameters:
      - name: post_id
        type: string
        mapping: $.id
  consumes:
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: ugcPosts
      path: /ugcPosts
      operations:
      - name: create-post
        method: POST
Open in Framework → View in Fleet → linkedin-pet-brand-content-publisher.yml

Recovers abandoned carts by querying Snowflake for cart data, generating personalized offers, sending recovery emails via MailChimp, and tracking conversion in Google Analytics.

naftiko: '0.5'
info:
  label: Abandoned Cart Recovery Orchestrator
  description: Recovers abandoned carts by querying Snowflake for cart data, generating personalized offers, sending recovery emails via MailChimp, and tracking conversion in Google Analytics.
  tags:
  - e-commerce
  - cart-recovery
  - snowflake
  - mailchimp
  - google-analytics
capability:
  exposes:
  - type: mcp
    namespace: cart-recovery
    port: 8080
    tools:
    - name: recover-abandoned-carts
      description: Orchestrate abandoned cart recovery across Snowflake, promotions, MailChimp, and Google Analytics.
      inputParameters:
      - name: hours_abandoned
        in: body
        type: integer
        description: Minimum hours since cart abandonment.
      steps:
      - name: get-abandoned-carts
        type: call
        call: snowflake.query-abandoned
        with:
          statement: SELECT * FROM ABANDONED_CARTS WHERE abandoned_at <= DATEADD(hour, -{{hours_abandoned}}, CURRENT_TIMESTAMP) AND recovery_sent = FALSE
          warehouse: CHEWY_ECOMMERCE_WH
      - name: generate-offers
        type: call
        call: promotions.create-recovery-offers
        with:
          carts: '{{get-abandoned-carts.data}}'
      - name: send-recovery-emails
        type: call
        call: mailchimp.send-campaign
        with:
          list_id: cart-abandoners
          template: cart-recovery
          data: '{{generate-offers.email_data}}'
      - name: track-campaign
        type: call
        call: google-analytics.create-campaign
        with:
          name: cart-recovery-{{hours_abandoned}}h
          source: email
          medium: mailchimp
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://chewy.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query-abandoned
        method: POST
  - type: http
    namespace: promotions
    baseUri: https://promotions-api.chewy.com/v1
    authentication:
      type: bearer
      token: $secrets.promotions_api_token
    resources:
    - name: recovery
      path: /cart-recovery-offers
      operations:
      - name: create-recovery-offers
        method: POST
  - type: http
    namespace: mailchimp
    baseUri: https://us1.api.mailchimp.com/3.0
    authentication:
      type: bearer
      token: $secrets.mailchimp_api_key
    resources:
    - name: campaigns
      path: /campaigns
      operations:
      - name: send-campaign
        method: POST
  - type: http
    namespace: google-analytics
    baseUri: https://analyticsadmin.googleapis.com/v1beta
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: campaigns
      path: /properties/$secrets.ga_property_id/campaigns
      operations:
      - name: create-campaign
        method: POST
Open in Framework → View in Fleet → abandoned-cart-recovery-orchestrator.yml

Retrieves recruiting pipeline data from Workday Recruiting for fulfillment center and customer service hiring.

naftiko: '0.5'
info:
  label: Workday Recruiting Pipeline Tracker
  description: Retrieves recruiting pipeline data from Workday Recruiting for fulfillment center and customer service hiring.
  tags:
  - hr
  - recruiting
  - workday
capability:
  exposes:
  - type: mcp
    namespace: recruiting
    port: 8080
    tools:
    - name: get-recruiting-pipeline
      description: Fetch recruiting pipeline data from Workday Recruiting.
      inputParameters:
      - name: requisition_id
        in: body
        type: string
        description: Requisition ID.
      call: workday-recruiting.get-pipeline
      with:
        requisition_id: '{{requisition_id}}'
      outputParameters:
      - name: total_applicants
        type: integer
        mapping: $.pipeline.total
      - name: stage_counts
        type: object
        mapping: $.pipeline.stages
  consumes:
  - type: http
    namespace: workday-recruiting
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: requisitions
      path: /recruiting/requisitions/{{requisition_id}}/pipeline
      inputParameters:
      - name: requisition_id
        in: path
      operations:
      - name: get-pipeline
        method: GET
Open in Framework → View in Fleet → workday-recruiting-pipeline-tracker.yml

Checks Azure DevOps pipeline status for Chewy's microservices deployments.

naftiko: '0.5'
info:
  label: Azure DevOps CI/CD Pipeline Status
  description: Checks Azure DevOps pipeline status for Chewy's microservices deployments.
  tags:
  - devops
  - ci-cd
  - azure-devops
capability:
  exposes:
  - type: mcp
    namespace: cicd-status
    port: 8080
    tools:
    - name: get-pipeline-status
      description: Get Azure DevOps pipeline run status.
      inputParameters:
      - name: project
        in: body
        type: string
        description: Project name.
      - name: pipeline_id
        in: body
        type: string
        description: Pipeline ID.
      call: azuredevops.get-pipeline-runs
      with:
        project: '{{project}}'
        pipeline_id: '{{pipeline_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.value[0].state
      - name: result
        type: string
        mapping: $.value[0].result
  consumes:
  - type: http
    namespace: azuredevops
    baseUri: https://dev.azure.com/chewy
    authentication:
      type: basic
      username: ''
      password: $secrets.azuredevops_pat
    resources:
    - name: pipeline-runs
      path: /{{project}}/_apis/pipelines/{{pipeline_id}}/runs
      inputParameters:
      - name: project
        in: path
      - name: pipeline_id
        in: path
      operations:
      - name: get-pipeline-runs
        method: GET
Open in Framework → View in Fleet → azure-devops-ci-cd-pipeline-status.yml

Runs a customer churn prediction model in Databricks to identify at-risk Autoship subscribers and stores predictions in Snowflake.

naftiko: '0.5'
info:
  label: Databricks Customer Churn Prediction Model
  description: Runs a customer churn prediction model in Databricks to identify at-risk Autoship subscribers and stores predictions in Snowflake.
  tags:
  - analytics
  - churn-prediction
  - databricks
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: churn-analytics
    port: 8080
    tools:
    - name: run-churn-model
      description: Execute the Databricks churn prediction model and store results in Snowflake.
      inputParameters:
      - name: customer_segment
        in: body
        type: string
        description: Customer segment (autoship_dog, autoship_cat, one_time, high_value).
      - name: prediction_window_days
        in: body
        type: integer
        description: Days ahead to predict churn.
      steps:
      - name: run-notebook
        type: call
        call: databricks.run-notebook
        with:
          notebook_path: /Shared/churn_prediction_v3
          parameters: '{"segment": "{{customer_segment}}", "window": {{prediction_window_days}}}'
      - name: load-predictions
        type: call
        call: snowflake.run-query
        with:
          query: CALL load_churn_predictions('{{customer_segment}}')
  consumes:
  - type: http
    namespace: databricks
    baseUri: https://chewy.cloud.databricks.com/api/2.1
    authentication:
      type: bearer
      token: $secrets.databricks_token
    resources:
    - name: jobs
      path: /jobs/runs/submit
      operations:
      - name: run-notebook
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://chewy.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → databricks-customer-churn-prediction-model.yml

Sends pet birthday surprises by querying MongoDB for upcoming birthdays, generating personalized offers, sending emails via MailChimp, and logging in Salesforce.

naftiko: '0.5'
info:
  label: Pet Birthday Surprise Orchestrator
  description: Sends pet birthday surprises by querying MongoDB for upcoming birthdays, generating personalized offers, sending emails via MailChimp, and logging in Salesforce.
  tags:
  - customer-engagement
  - personalization
  - mongodb
  - mailchimp
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: pet-birthdays
    port: 8080
    tools:
    - name: send-birthday-surprise
      description: Orchestrate pet birthday surprise across MongoDB, promotions, MailChimp, and Salesforce.
      inputParameters:
      - name: date_range
        in: body
        type: integer
        description: Days ahead to check for birthdays.
      steps:
      - name: get-birthdays
        type: call
        call: mongodb.find-birthdays
        with:
          collection: customer_profiles
          days_ahead: '{{date_range}}'
      - name: generate-offers
        type: call
        call: promotions.create-birthday-offers
        with:
          customers: '{{get-birthdays.data}}'
      - name: send-emails
        type: call
        call: mailchimp.send-campaign
        with:
          list_id: birthday-pets
          template: pet-birthday
          recipients: '{{get-birthdays.emails}}'
      - name: log-outreach
        type: call
        call: salesforce.create-bulk-activities
        with:
          activities: '{{generate-offers.activity_log}}'
          type: pet_birthday_outreach
  consumes:
  - type: http
    namespace: mongodb
    baseUri: https://data.mongodb-api.chewy.com/app/data-chewy/endpoint/data/v1
    authentication:
      type: bearer
      token: $secrets.mongodb_api_key
    resources:
    - name: find
      path: /action/find
      operations:
      - name: find-birthdays
        method: POST
  - type: http
    namespace: promotions
    baseUri: https://promotions-api.chewy.com/v1
    authentication:
      type: bearer
      token: $secrets.promotions_api_token
    resources:
    - name: birthday
      path: /birthday-offers
      operations:
      - name: create-birthday-offers
        method: POST
  - type: http
    namespace: mailchimp
    baseUri: https://us1.api.mailchimp.com/3.0
    authentication:
      type: bearer
      token: $secrets.mailchimp_api_key
    resources:
    - name: campaigns
      path: /campaigns
      operations:
      - name: send-campaign
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://chewy.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: activities
      path: /composite/sobjects/Activity__c
      operations:
      - name: create-bulk-activities
        method: POST
Open in Framework → View in Fleet → pet-birthday-surprise-orchestrator.yml

Manages Google Tag Manager tags for Chewy.com event tracking including add-to-cart, checkout, and Autoship signup events.

naftiko: '0.5'
info:
  label: Google Tag Manager Event Tracker
  description: Manages Google Tag Manager tags for Chewy.com event tracking including add-to-cart, checkout, and Autoship signup events.
  tags:
  - digital
  - analytics
  - google-tag-manager
capability:
  exposes:
  - type: mcp
    namespace: tag-management
    port: 8080
    tools:
    - name: get-container-tags
      description: List tags in a GTM container for Chewy.com.
      inputParameters:
      - name: container_id
        in: body
        type: string
        description: GTM container ID.
      call: gtm.list-tags
      with:
        container_id: '{{container_id}}'
      outputParameters:
      - name: tags
        type: array
        mapping: $.tag
      - name: total
        type: integer
        mapping: $.total
  consumes:
  - type: http
    namespace: gtm
    baseUri: https://www.googleapis.com/tagmanager/v2
    authentication:
      type: bearer
      token: $secrets.google_tag_manager_token
    resources:
    - name: tags
      path: /accounts/{{account_id}}/containers/{{container_id}}/workspaces/default/tags
      inputParameters:
      - name: container_id
        in: path
      operations:
      - name: list-tags
        method: GET
Open in Framework → View in Fleet → google-tag-manager-event-tracker.yml

When a customer contacts support about a pet product issue, creates a Salesforce case and a ServiceNow ticket with order history context.

naftiko: '0.5'
info:
  label: Customer Service Ticket Creator
  description: When a customer contacts support about a pet product issue, creates a Salesforce case and a ServiceNow ticket with order history context.
  tags:
  - customer-service
  - salesforce
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: customer-support
    port: 8080
    tools:
    - name: create-support-case
      description: Create a customer support case in Salesforce and ServiceNow with order context.
      inputParameters:
      - name: customer_email
        in: body
        type: string
        description: Customer email.
      - name: order_id
        in: body
        type: string
        description: Related order ID.
      - name: issue_type
        in: body
        type: string
        description: Issue type (damaged_item, wrong_item, missing_item, product_quality, autoship_issue).
      - name: description
        in: body
        type: string
        description: Issue description.
      steps:
      - name: create-sf-case
        type: call
        call: salesforce.create-case
        with:
          subject: 'Customer Issue: {{issue_type}} - Order {{order_id}}'
          description: '{{description}}'
          type: '{{issue_type}}'
          email: '{{customer_email}}'
          order_id: '{{order_id}}'
      - name: create-snow-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Support: {{issue_type}} for order {{order_id}}'
          category: customer_support
          description: '{{description}}. SF Case: {{create-sf-case.id}}.'
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          channel_id: customer_support
          text: 'New support case: {{issue_type}} for order {{order_id}}. SF: {{create-sf-case.id}}. SNOW: {{create-snow-ticket.number}}.'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://chewy.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: servicenow
    baseUri: https://chewy.service-now.com/api/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
Open in Framework → View in Fleet → customer-service-ticket-creator.yml

Searches Elasticsearch for customer product reviews by product ID, rating, and keywords for content moderation and analytics.

naftiko: '0.5'
info:
  label: Elasticsearch Product Review Search
  description: Searches Elasticsearch for customer product reviews by product ID, rating, and keywords for content moderation and analytics.
  tags:
  - reviews
  - search
  - elasticsearch
capability:
  exposes:
  - type: mcp
    namespace: review-search
    port: 8080
    tools:
    - name: search-reviews
      description: Search product reviews in Elasticsearch.
      inputParameters:
      - name: product_id
        in: body
        type: string
        description: Product SKU.
      - name: min_rating
        in: body
        type: integer
        description: Minimum star rating filter.
      call: elasticsearch.search
      with:
        index: product-reviews
        query: '{"bool":{"must":[{"term":{"product_id":"{{product_id}}"}},{"range":{"rating":{"gte":{{min_rating}}}}}]}}'
      outputParameters:
      - name: reviews
        type: array
        mapping: $.hits.hits
      - name: total
        type: integer
        mapping: $.hits.total.value
  consumes:
  - type: http
    namespace: elasticsearch
    baseUri: https://search.chewy.com
    authentication:
      type: bearer
      token: $secrets.elasticsearch_token
    resources:
    - name: search
      path: /{{index}}/_search
      inputParameters:
      - name: index
        in: path
      operations:
      - name: search
        method: POST
Open in Framework → View in Fleet → elasticsearch-product-review-search.yml

Uses Google Gemini to generate product descriptions for new pet products in the catalog.

naftiko: '0.5'
info:
  label: Gemini AI Product Description Generator
  description: Uses Google Gemini to generate product descriptions for new pet products in the catalog.
  tags:
  - content
  - ai
  - gemini
capability:
  exposes:
  - type: mcp
    namespace: content-generation
    port: 8080
    tools:
    - name: generate-product-description
      description: Generate a product description using Gemini AI.
      inputParameters:
      - name: product_name
        in: body
        type: string
        description: Product name.
      - name: pet_type
        in: body
        type: string
        description: Pet type.
      - name: key_features
        in: body
        type: string
        description: Comma-separated key features.
      call: gemini.generate-content
      with:
        prompt: 'Write a compelling e-commerce product description for {{product_name}}, a {{pet_type}} product. Key features: {{key_features}}. Keep it under 200 words, SEO-friendly.'
      outputParameters:
      - name: description
        type: string
        mapping: $.candidates[0].content.parts[0].text
  consumes:
  - type: http
    namespace: gemini
    baseUri: https://generativelanguage.googleapis.com/v1beta
    authentication:
      type: apiKey
      key: $secrets.gemini_api_key
    resources:
    - name: content
      path: /models/gemini-pro:generateContent
      operations:
      - name: generate-content
        method: POST
Open in Framework → View in Fleet → gemini-ai-product-description-generator.yml

Monitors network connectivity across Chewy's fulfillment centers via SolarWinds.

naftiko: '0.5'
info:
  label: SolarWinds Fulfillment Center Network Monitor
  description: Monitors network connectivity across Chewy's fulfillment centers via SolarWinds.
  tags:
  - infrastructure
  - networking
  - solarwinds
capability:
  exposes:
  - type: mcp
    namespace: fc-network
    port: 8080
    tools:
    - name: get-fc-network-health
      description: Retrieve network health for a fulfillment center from SolarWinds.
      inputParameters:
      - name: fc_code
        in: body
        type: string
        description: Fulfillment center code.
      call: solarwinds.get-node-stats
      with:
        node: '{{fc_code}}'
      outputParameters:
      - name: availability
        type: number
        mapping: $.availability_pct
      - name: avg_latency
        type: number
        mapping: $.avg_response_time_ms
  consumes:
  - type: http
    namespace: solarwinds
    baseUri: https://solarwinds.chewy.com/SolarWinds/InformationService/v3/Json
    authentication:
      type: basic
      username: $secrets.solarwinds_user
      password: $secrets.solarwinds_password
    resources:
    - name: query
      path: /Query
      operations:
      - name: get-node-stats
        method: POST
Open in Framework → View in Fleet → solarwinds-fulfillment-center-network-monitor.yml

Optimizes shipping rates by querying Snowflake for order patterns, comparing carrier rates via ShipStation, updating routing rules, and publishing savings reports in Google Sheets.

naftiko: '0.5'
info:
  label: Shipping Rate Optimization Pipeline
  description: Optimizes shipping rates by querying Snowflake for order patterns, comparing carrier rates via ShipStation, updating routing rules, and publishing savings reports in Google Sheets.
  tags:
  - shipping
  - cost-optimization
  - snowflake
  - shipstation
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: shipping-optimization
    port: 8080
    tools:
    - name: optimize-shipping-rates
      description: Orchestrate shipping rate optimization across Snowflake, ShipStation, and Google Sheets.
      inputParameters:
      - name: region
        in: body
        type: string
        description: Shipping region to optimize.
      steps:
      - name: get-patterns
        type: call
        call: snowflake.query-shipping-data
        with:
          statement: SELECT * FROM SHIPPING_PATTERNS WHERE region = '{{region}}' AND ship_date >= DATEADD(month, -3, CURRENT_DATE)
          warehouse: CHEWY_LOGISTICS_WH
      - name: compare-rates
        type: call
        call: shipstation.compare-carrier-rates
        with:
          region: '{{region}}'
          volume: '{{get-patterns.avg_daily_volume}}'
      - name: update-routing
        type: call
        call: shipping.update-routing-rules
        with:
          region: '{{region}}'
          optimal_carrier: '{{compare-rates.recommended_carrier}}'
          rate: '{{compare-rates.best_rate}}'
      - name: publish-report
        type: call
        call: googlesheets.update-sheet
        with:
          spreadsheet_id: shipping-optimization-tracker
          range: '{{region}}!A:F'
          values: '{{compare-rates.comparison_data}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://chewy.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query-shipping-data
        method: POST
  - type: http
    namespace: shipstation
    baseUri: https://ssapi.shipstation.com
    authentication:
      type: basic
      username: $secrets.shipstation_api_key
      password: $secrets.shipstation_api_secret
    resources:
    - name: rates
      path: /shipments/getrates
      operations:
      - name: compare-carrier-rates
        method: POST
  - type: http
    namespace: shipping
    baseUri: https://shipping-api.chewy.com/v1
    authentication:
      type: bearer
      token: $secrets.shipping_api_token
    resources:
    - name: routing
      path: /routing-rules
      operations:
      - name: update-routing-rules
        method: PUT
  - type: http
    namespace: googlesheets
    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: update-sheet
        method: PUT
Open in Framework → View in Fleet → shipping-rate-optimization-pipeline.yml

Launches a flash sale by updating product prices in Elasticsearch, configuring promotions, sending marketing emails via MailChimp, and posting to social media via Instagram.

naftiko: '0.5'
info:
  label: Flash Sale Launch Orchestrator
  description: Launches a flash sale by updating product prices in Elasticsearch, configuring promotions, sending marketing emails via MailChimp, and posting to social media via Instagram.
  tags:
  - marketing
  - promotions
  - elasticsearch
  - mailchimp
  - instagram
capability:
  exposes:
  - type: mcp
    namespace: flash-sale
    port: 8080
    tools:
    - name: launch-flash-sale
      description: Orchestrate flash sale launch across Elasticsearch, promotions, MailChimp, and Instagram.
      inputParameters:
      - name: sale_id
        in: body
        type: string
        description: Flash sale identifier.
      - name: product_ids
        in: body
        type: string
        description: Comma-separated product SKUs.
      - name: discount_pct
        in: body
        type: integer
        description: Discount percentage.
      steps:
      - name: update-prices
        type: call
        call: promotions.apply-sale-pricing
        with:
          sale_id: '{{sale_id}}'
          products: '{{product_ids}}'
          discount: '{{discount_pct}}'
      - name: update-catalog
        type: call
        call: elasticsearch.bulk-update
        with:
          index: chewy_products
          products: '{{product_ids}}'
          sale_badge: true
      - name: send-email-blast
        type: call
        call: mailchimp.send-campaign
        with:
          list_id: pet-parents-active
          template: flash-sale
          subject: 'Flash Sale: {{discount_pct}}% Off Select Items!'
      - name: post-social
        type: call
        call: instagram.create-post
        with:
          caption: 'Flash Sale Alert! {{discount_pct}}% off select pet products. Shop now at Chewy.com! #ChewyDeals'
          image_url: '{{update-prices.banner_url}}'
  consumes:
  - type: http
    namespace: promotions
    baseUri: https://promotions-api.chewy.com/v1
    authentication:
      type: bearer
      token: $secrets.promotions_api_token
    resources:
    - name: sales
      path: /flash-sales
      operations:
      - name: apply-sale-pricing
        method: POST
  - type: http
    namespace: elasticsearch
    baseUri: https://search.chewy.com
    authentication:
      type: bearer
      token: $secrets.elasticsearch_token
    resources:
    - name: bulk
      path: /_bulk
      operations:
      - name: bulk-update
        method: POST
  - type: http
    namespace: mailchimp
    baseUri: https://us1.api.mailchimp.com/3.0
    authentication:
      type: bearer
      token: $secrets.mailchimp_api_key
    resources:
    - name: campaigns
      path: /campaigns
      operations:
      - name: send-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: /$secrets.instagram_account_id/media
      operations:
      - name: create-post
        method: POST
Open in Framework → View in Fleet → flash-sale-launch-orchestrator.yml

Retrieves application performance metrics from New Relic for Chewy's web and mobile applications.

naftiko: '0.5'
info:
  label: New Relic Application Performance Monitor
  description: Retrieves application performance metrics from New Relic for Chewy's web and mobile applications.
  tags:
  - monitoring
  - devops
  - new-relic
capability:
  exposes:
  - type: mcp
    namespace: app-health
    port: 8080
    tools:
    - name: get-app-health
      description: Fetch application health metrics from New Relic.
      inputParameters:
      - name: app_name
        in: body
        type: string
        description: New Relic application name.
      call: newrelic.get-app-metrics
      with:
        app_name: '{{app_name}}'
      outputParameters:
      - name: error_rate
        type: number
        mapping: $.application.application_summary.error_rate
      - name: response_time
        type: number
        mapping: $.application.application_summary.response_time
      - name: throughput
        type: number
        mapping: $.application.application_summary.throughput
  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
      operations:
      - name: get-app-metrics
        method: GET
Open in Framework → View in Fleet → new-relic-application-performance-monitor.yml

Manages job postings on Indeed for Chewy's fulfillment center and customer service roles.

naftiko: '0.5'
info:
  label: Indeed Job Posting Manager
  description: Manages job postings on Indeed for Chewy's fulfillment center and customer service roles.
  tags:
  - hr
  - recruiting
  - indeed
capability:
  exposes:
  - type: mcp
    namespace: job-postings
    port: 8080
    tools:
    - name: create-job-posting
      description: Create a job posting on Indeed.
      inputParameters:
      - name: title
        in: body
        type: string
        description: Job title.
      - name: location
        in: body
        type: string
        description: Job location.
      - name: description
        in: body
        type: string
        description: Job description.
      - name: job_type
        in: body
        type: string
        description: Job type (full_time, part_time, seasonal).
      call: indeed.create-posting
      with:
        title: '{{title}}'
        location: '{{location}}'
        description: '{{description}}'
        type: '{{job_type}}'
        company: Chewy
      outputParameters:
      - name: posting_id
        type: string
        mapping: $.id
      - name: url
        type: string
        mapping: $.url
  consumes:
  - type: http
    namespace: indeed
    baseUri: https://apis.indeed.com/v2
    authentication:
      type: bearer
      token: $secrets.indeed_token
    resources:
    - name: postings
      path: /jobs
      operations:
      - name: create-posting
        method: POST
Open in Framework → View in Fleet → indeed-job-posting-manager.yml

Coordinates new fulfillment center launch by verifying network in SolarWinds, staffing in Workday, equipment in ServiceNow, and publishing go-live announcement to Microsoft Teams.

naftiko: '0.5'
info:
  label: New Warehouse Launch Orchestrator
  description: Coordinates new fulfillment center launch by verifying network in SolarWinds, staffing in Workday, equipment in ServiceNow, and publishing go-live announcement to Microsoft Teams.
  tags:
  - fulfillment
  - launch
  - solarwinds
  - workday
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: warehouse-launch
    port: 8080
    tools:
    - name: verify-launch-readiness
      description: Orchestrate warehouse launch readiness across SolarWinds, Workday, ServiceNow, and Teams.
      inputParameters:
      - name: warehouse_id
        in: body
        type: string
        description: New fulfillment center ID.
      - name: launch_date
        in: body
        type: string
        description: Planned launch date.
      steps:
      - name: verify-network
        type: call
        call: solarwinds.check-site
        with:
          site_id: fc-{{warehouse_id}}
      - name: verify-staffing
        type: call
        call: workday.get-site-headcount
        with:
          location: '{{warehouse_id}}'
      - name: verify-equipment
        type: call
        call: servicenow.get-assets
        with:
          location: '{{warehouse_id}}'
      - name: announce-launch
        type: call
        call: msteams.send-channel-message
        with:
          team_id: fulfillment-ops
          channel: announcements
          text: 'FC {{warehouse_id}} launch readiness: Network={{verify-network.status}}, Staff={{verify-staffing.headcount}}/{{verify-staffing.target}}, Equipment={{verify-equipment.deployed}}/{{verify-equipment.required}}. Launch: {{launch_date}}.'
  consumes:
  - type: http
    namespace: solarwinds
    baseUri: https://solarwinds.chewy.com/api/v1
    authentication:
      type: bearer
      token: $secrets.solarwinds_token
    resources:
    - name: sites
      path: /sites/{{site_id}}/health
      inputParameters:
      - name: site_id
        in: path
      operations:
      - name: check-site
        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: /workers/headcount
      operations:
      - name: get-site-headcount
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://chewy.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: assets
      path: /table/alm_hardware
      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: 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
Open in Framework → View in Fleet → new-warehouse-launch-orchestrator.yml

Retrieves vendor inventory availability data from SAP HANA to coordinate product availability across fulfillment centers.

naftiko: '0.5'
info:
  label: SAP HANA Vendor Inventory Sync
  description: Retrieves vendor inventory availability data from SAP HANA to coordinate product availability across fulfillment centers.
  tags:
  - supply-chain
  - inventory
  - sap-hana
capability:
  exposes:
  - type: mcp
    namespace: vendor-inventory
    port: 8080
    tools:
    - name: get-vendor-inventory
      description: Query SAP HANA for vendor product availability.
      inputParameters:
      - name: vendor_id
        in: body
        type: string
        description: Vendor ID.
      - name: product_category
        in: body
        type: string
        description: Product category.
      call: sap-hana.run-query
      with:
        query: SELECT product_id, available_qty, lead_time_days, next_available_date FROM vendor_inventory WHERE vendor_id='{{vendor_id}}' AND category='{{product_category}}' AND available_qty > 0
      outputParameters:
      - name: items
        type: array
        mapping: $.results
      - name: total_skus
        type: integer
        mapping: $.count
  consumes:
  - type: http
    namespace: sap-hana
    baseUri: https://sap-hana.chewy.com/api/v1
    authentication:
      type: basic
      username: $secrets.sap_hana_user
      password: $secrets.sap_hana_password
    resources:
    - name: queries
      path: /sql
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → sap-hana-vendor-inventory-sync.yml

Plans warehouse capacity by querying Snowflake for volume projections, checking SAP HANA for current utilization, updating capacity targets, and publishing forecasts in Tableau.

naftiko: '0.5'
info:
  label: Warehouse Capacity Planning Pipeline
  description: Plans warehouse capacity by querying Snowflake for volume projections, checking SAP HANA for current utilization, updating capacity targets, and publishing forecasts in Tableau.
  tags:
  - capacity-planning
  - warehousing
  - snowflake
  - sap-hana
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: capacity-planning
    port: 8080
    tools:
    - name: plan-warehouse-capacity
      description: Orchestrate warehouse capacity planning across Snowflake, SAP HANA, and Tableau.
      inputParameters:
      - name: warehouse_id
        in: body
        type: string
        description: Fulfillment center ID.
      - name: planning_horizon
        in: body
        type: integer
        description: Planning horizon in weeks.
      steps:
      - name: get-projections
        type: call
        call: snowflake.query-projections
        with:
          statement: SELECT * FROM VOLUME_PROJECTIONS WHERE warehouse_id = '{{warehouse_id}}' AND week_offset <= {{planning_horizon}}
          warehouse: CHEWY_OPERATIONS_WH
      - name: get-utilization
        type: call
        call: sap-hana.get-capacity
        with:
          warehouse_id: '{{warehouse_id}}'
      - name: update-targets
        type: call
        call: sap-hana.update-capacity-targets
        with:
          warehouse_id: '{{warehouse_id}}'
          projections: '{{get-projections.data}}'
          current_utilization: '{{get-utilization.utilization_pct}}'
      - name: publish-forecast
        type: call
        call: tableau.refresh-workbook
        with:
          workbook_id: warehouse-capacity
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://chewy.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query-projections
        method: POST
  - type: http
    namespace: sap-hana
    baseUri: https://chewy-hana.sap.com/api/v1
    authentication:
      type: basic
      username: $secrets.sap_hana_user
      password: $secrets.sap_hana_password
    resources:
    - name: capacity
      path: /warehouse-capacity
      operations:
      - name: get-capacity
        method: GET
      - name: update-capacity-targets
        method: PUT
  - type: http
    namespace: tableau
    baseUri: https://tableau.chewy.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: workbooks
      path: /sites/default/workbooks/{{workbook_id}}/refresh
      inputParameters:
      - name: workbook_id
        in: path
      operations:
      - name: refresh-workbook
        method: POST
Open in Framework → View in Fleet → warehouse-capacity-planning-pipeline.yml

Screens pet food products against known pet allergen profiles, flagging ingredients that may trigger allergic reactions and suggesting safe alternatives.

naftiko: '0.5'
info:
  label: Pet Food Allergen Screening Pipeline
  description: Screens pet food products against known pet allergen profiles, flagging ingredients that may trigger allergic reactions and suggesting safe alternatives.
  tags:
  - pet-health
  - food-safety
  - product-catalog
capability:
  exposes:
  - type: mcp
    namespace: allergen-screening
    port: 8080
    tools:
    - name: screen-product-allergens
      description: Screen a product for allergens against a pet allergy profile.
      inputParameters:
      - name: product_sku
        in: body
        type: string
        description: The product SKU to screen.
      - name: pet_id
        in: body
        type: string
        description: The pet profile ID with known allergies.
      call: product-safety-api.check-allergens
      with:
        sku: '{{product_sku}}'
        pet: '{{pet_id}}'
      outputParameters:
      - name: is_safe
        type: boolean
        mapping: $.screening.isSafe
      - name: flagged_ingredients
        type: array
        mapping: $.screening.flaggedIngredients
      - name: safe_alternatives
        type: array
        mapping: $.screening.safeAlternatives
  consumes:
  - type: http
    namespace: product-safety-api
    baseUri: https://api.chewy.com/product-safety/v1
    authentication:
      type: bearer
      token: $secrets.chewy_product_safety_token
    resources:
    - name: allergen-checks
      path: /allergen-screening
      operations:
      - name: check-allergens
        method: POST
Open in Framework → View in Fleet → pet-food-allergen-screening-pipeline.yml

Optimizes warehouse shift schedules by pulling volume forecasts from Snowflake, checking worker availability in Workday, generating schedules, and posting shifts in Microsoft Teams.

naftiko: '0.5'
info:
  label: Warehouse Worker Scheduling Orchestrator
  description: Optimizes warehouse shift schedules by pulling volume forecasts from Snowflake, checking worker availability in Workday, generating schedules, and posting shifts in Microsoft Teams.
  tags:
  - workforce-management
  - scheduling
  - snowflake
  - workday
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: shift-scheduling
    port: 8080
    tools:
    - name: optimize-schedules
      description: Orchestrate warehouse shift scheduling across Snowflake, Workday, and Teams.
      inputParameters:
      - name: warehouse_id
        in: body
        type: string
        description: Fulfillment center ID.
      - name: week_start
        in: body
        type: string
        description: Week start date in YYYY-MM-DD.
      steps:
      - name: get-forecast
        type: call
        call: snowflake.query-volume-forecast
        with:
          statement: SELECT * FROM VOLUME_FORECAST WHERE warehouse_id = '{{warehouse_id}}' AND week_start = '{{week_start}}'
          warehouse: CHEWY_OPERATIONS_WH
      - name: get-availability
        type: call
        call: workday.get-worker-availability
        with:
          location: '{{warehouse_id}}'
          week: '{{week_start}}'
      - name: generate-schedule
        type: call
        call: scheduling.optimize-shifts
        with:
          forecast: '{{get-forecast.data}}'
          available_workers: '{{get-availability.workers}}'
          warehouse_id: '{{warehouse_id}}'
      - name: post-schedule
        type: call
        call: msteams.send-channel-message
        with:
          team_id: fc-{{warehouse_id}}
          channel: schedules
          text: 'Updated schedule for week of {{week_start}}: {{generate-schedule.shift_count}} shifts, {{generate-schedule.worker_count}} workers assigned.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://chewy.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query-volume-forecast
        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: availability
      path: /workers/availability
      operations:
      - name: get-worker-availability
        method: GET
  - type: http
    namespace: scheduling
    baseUri: https://scheduling-api.chewy.com/v1
    authentication:
      type: bearer
      token: $secrets.scheduling_api_token
    resources:
    - name: shifts
      path: /optimize
      operations:
      - name: optimize-shifts
        method: POST
  - 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
Open in Framework → View in Fleet → warehouse-worker-scheduling-orchestrator.yml

Queries MongoDB for Chewy customer profiles including pet information, preferences, order history summary, and loyalty tier.

naftiko: '0.5'
info:
  label: MongoDB Customer Profile Lookup
  description: Queries MongoDB for Chewy customer profiles including pet information, preferences, order history summary, and loyalty tier.
  tags:
  - customer-data
  - profiles
  - mongodb
capability:
  exposes:
  - type: mcp
    namespace: customer-profiles
    port: 8080
    tools:
    - name: get-customer-profile
      description: Look up a customer profile from MongoDB.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: Chewy customer ID.
      call: mongodb.find-one
      with:
        collection: customer_profiles
        filter: '{"customer_id": "{{customer_id}}"}'
      outputParameters:
      - name: pets
        type: array
        mapping: $.pets
      - name: loyalty_tier
        type: string
        mapping: $.loyalty_tier
      - name: lifetime_value
        type: number
        mapping: $.lifetime_value
  consumes:
  - type: http
    namespace: mongodb
    baseUri: https://data.mongodb-api.chewy.com/app/data-chewy/endpoint/data/v1
    authentication:
      type: bearer
      token: $secrets.mongodb_api_key
    resources:
    - name: find
      path: /action/findOne
      operations:
      - name: find-one
        method: POST
Open in Framework → View in Fleet → mongodb-customer-profile-lookup.yml

Retrieves a customer order from the order management system and returns shipping status, tracking number, and delivery estimate.

naftiko: '0.5'
info:
  label: Customer Order Status Lookup
  description: Retrieves a customer order from the order management system and returns shipping status, tracking number, and delivery estimate.
  tags:
  - e-commerce
  - orders
  - order-management
capability:
  exposes:
  - type: mcp
    namespace: order-management
    port: 8080
    tools:
    - name: get-order-status
      description: Look up a Chewy order and return current status and tracking information.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: Chewy order ID.
      call: orders.get-order
      with:
        order_id: '{{order_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.order.status
      - name: tracking_number
        type: string
        mapping: $.order.shipment.tracking_number
      - name: carrier
        type: string
        mapping: $.order.shipment.carrier
      - name: estimated_delivery
        type: string
        mapping: $.order.shipment.estimated_delivery
      - name: total
        type: number
        mapping: $.order.total
  consumes:
  - type: http
    namespace: orders
    baseUri: https://orders-api.chewy.com/v2
    authentication:
      type: bearer
      token: $secrets.orders_api_token
    resources:
    - name: orders
      path: /orders/{{order_id}}
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-order
        method: GET
Open in Framework → View in Fleet → customer-order-status-lookup.yml

Retrieves warehouse operations dashboard snapshots from Grafana showing order volume, processing times, and fulfillment SLA compliance.

naftiko: '0.5'
info:
  label: Grafana Warehouse Dashboard Snapshot
  description: Retrieves warehouse operations dashboard snapshots from Grafana showing order volume, processing times, and fulfillment SLA compliance.
  tags:
  - warehousing
  - monitoring
  - grafana
capability:
  exposes:
  - type: mcp
    namespace: warehouse-monitoring
    port: 8080
    tools:
    - name: get-warehouse-dashboard
      description: Fetch a Grafana warehouse operations dashboard snapshot.
      inputParameters:
      - name: dashboard_uid
        in: body
        type: string
        description: Grafana dashboard UID.
      call: grafana.get-dashboard
      with:
        uid: '{{dashboard_uid}}'
      outputParameters:
      - name: title
        type: string
        mapping: $.dashboard.title
      - name: panels
        type: array
        mapping: $.dashboard.panels
  consumes:
  - type: http
    namespace: grafana
    baseUri: https://grafana.chewy.com/api
    authentication:
      type: bearer
      token: $secrets.grafana_api_key
    resources:
    - name: dashboards
      path: /dashboards/uid/{{uid}}
      inputParameters:
      - name: uid
        in: path
      operations:
      - name: get-dashboard
        method: GET
Open in Framework → View in Fleet → grafana-warehouse-dashboard-snapshot.yml

Queries Dynatrace for performance anomalies affecting Chewy.com shopping experience.

naftiko: '0.5'
info:
  label: Dynatrace E-Commerce Performance Monitor
  description: Queries Dynatrace for performance anomalies affecting Chewy.com shopping experience.
  tags:
  - monitoring
  - performance
  - dynatrace
capability:
  exposes:
  - type: mcp
    namespace: ecommerce-performance
    port: 8080
    tools:
    - name: get-performance-problems
      description: Retrieve performance problems from Dynatrace.
      inputParameters:
      - name: time_range
        in: body
        type: string
        description: Time range.
      call: dynatrace.get-problems
      with:
        relativeTime: '{{time_range}}'
        status: OPEN
      outputParameters:
      - name: problems
        type: array
        mapping: $.result
      - name: total_count
        type: integer
        mapping: $.totalCount
  consumes:
  - type: http
    namespace: dynatrace
    baseUri: https://chewy.live.dynatrace.com/api/v2
    authentication:
      type: bearer
      token: $secrets.dynatrace_token
    resources:
    - name: problems
      path: /problems
      operations:
      - name: get-problems
        method: GET
Open in Framework → View in Fleet → dynatrace-e-commerce-performance-monitor.yml

Sends SMS notifications to Chewy customers via Twilio for order confirmations, shipping updates, and delivery alerts.

naftiko: '0.5'
info:
  label: Twilio Order SMS Notification Sender
  description: Sends SMS notifications to Chewy customers via Twilio for order confirmations, shipping updates, and delivery alerts.
  tags:
  - notifications
  - sms
  - twilio
capability:
  exposes:
  - type: mcp
    namespace: customer-notifications
    port: 8080
    tools:
    - name: send-order-sms
      description: Send an SMS notification to a customer via Twilio.
      inputParameters:
      - name: phone_number
        in: body
        type: string
        description: Customer phone number in E.164 format.
      - name: message
        in: body
        type: string
        description: SMS message body.
      call: twilio.send-message
      with:
        To: '{{phone_number}}'
        Body: '{{message}}'
        From: '+18886337569'
      outputParameters:
      - name: message_sid
        type: string
        mapping: $.sid
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: twilio
    baseUri: https://api.twilio.com/2010-04-01/Accounts/$secrets.twilio_account_sid
    authentication:
      type: basic
      username: $secrets.twilio_account_sid
      password: $secrets.twilio_auth_token
    resources:
    - name: messages
      path: /Messages.json
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → twilio-order-sms-notification-sender.yml

Retrieves payroll summary data from Workday Payroll for HR and finance teams.

naftiko: '0.5'
info:
  label: Workday Payroll Summary Report
  description: Retrieves payroll summary data from Workday Payroll for HR and finance teams.
  tags:
  - hr
  - payroll
  - workday
capability:
  exposes:
  - type: mcp
    namespace: payroll-reporting
    port: 8080
    tools:
    - name: get-payroll-summary
      description: Fetch payroll summary from Workday Payroll.
      inputParameters:
      - name: pay_period
        in: body
        type: string
        description: Pay period.
      - name: department
        in: body
        type: string
        description: Department filter.
      call: workday-payroll.get-summary
      with:
        period: '{{pay_period}}'
        department: '{{department}}'
      outputParameters:
      - name: total_gross
        type: number
        mapping: $.summary.total_gross_pay
      - name: headcount
        type: integer
        mapping: $.summary.employee_count
  consumes:
  - type: http
    namespace: workday-payroll
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: payroll
      path: /payroll/summaries
      operations:
      - name: get-summary
        method: GET
Open in Framework → View in Fleet → workday-payroll-summary-report.yml

Retrieves an IT incident from ServiceNow and returns current status and resolution details.

naftiko: '0.5'
info:
  label: ServiceNow IT Incident Lookup
  description: Retrieves an IT incident from ServiceNow and returns current status and resolution details.
  tags:
  - it-support
  - incident-management
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: it-support
    port: 8080
    tools:
    - name: get-incident
      description: Look up a ServiceNow incident.
      inputParameters:
      - name: incident_number
        in: body
        type: string
        description: Incident number.
      call: servicenow.get-incident
      with:
        number: '{{incident_number}}'
      outputParameters:
      - name: state
        type: string
        mapping: $.result[0].state
      - name: assigned_to
        type: string
        mapping: $.result[0].assigned_to.display_value
      - name: short_description
        type: string
        mapping: $.result[0].short_description
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://chewy.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
Open in Framework → View in Fleet → servicenow-it-incident-lookup.yml

Retrieves firewall rules from Palo Alto protecting Chewy's e-commerce payment processing infrastructure.

naftiko: '0.5'
info:
  label: Palo Alto Networks E-Commerce Security Audit
  description: Retrieves firewall rules from Palo Alto protecting Chewy's e-commerce payment processing infrastructure.
  tags:
  - security
  - compliance
  - palo-alto-networks
capability:
  exposes:
  - type: mcp
    namespace: network-security
    port: 8080
    tools:
    - name: audit-firewall-rules
      description: Fetch firewall rules from Palo Alto Panorama.
      inputParameters:
      - name: device_group
        in: body
        type: string
        description: Device group.
      call: paloalto.get-security-rules
      with:
        device_group: '{{device_group}}'
      outputParameters:
      - name: rules
        type: array
        mapping: $.result.entry
      - name: total_rules
        type: integer
        mapping: $.result.@count
  consumes:
  - type: http
    namespace: paloalto
    baseUri: https://panorama.chewy.com/restapi/v10.2
    authentication:
      type: apiKey
      key: $secrets.paloalto_api_key
    resources:
    - name: security-rules
      path: /Policies/SecurityRules
      operations:
      - name: get-security-rules
        method: GET
Open in Framework → View in Fleet → palo-alto-networks-e-commerce-security-audit.yml

Checks CloudWatch metrics for the Lambda functions powering Chewy's Autoship subscription processing.

naftiko: '0.5'
info:
  label: AWS Lambda Autoship Processing Health
  description: Checks CloudWatch metrics for the Lambda functions powering Chewy's Autoship subscription processing.
  tags:
  - devops
  - serverless
  - aws-lambda
  - cloudwatch
capability:
  exposes:
  - type: mcp
    namespace: autoship-health
    port: 8080
    tools:
    - name: check-autoship-lambda
      description: Get CloudWatch metrics for Autoship Lambda functions.
      inputParameters:
      - name: function_name
        in: body
        type: string
        description: Lambda function name.
      - name: period_minutes
        in: body
        type: integer
        description: Lookback period.
      steps:
      - name: get-invocations
        type: call
        call: cloudwatch.get-metric
        with:
          namespace: AWS/Lambda
          metric_name: Invocations
          dimensions: '[{"Name": "FunctionName", "Value": "{{function_name}}"}]'
          period: '{{period_minutes}}'
      - name: get-errors
        type: call
        call: cloudwatch.get-metric
        with:
          namespace: AWS/Lambda
          metric_name: Errors
          dimensions: '[{"Name": "FunctionName", "Value": "{{function_name}}"}]'
          period: '{{period_minutes}}'
  consumes:
  - type: http
    namespace: cloudwatch
    baseUri: https://monitoring.us-east-1.amazonaws.com
    authentication:
      type: aws-sig-v4
      access_key: $secrets.aws_access_key
      secret_key: $secrets.aws_secret_key
    resources:
    - name: metrics
      path: /
      operations:
      - name: get-metric
        method: POST
Open in Framework → View in Fleet → aws-lambda-autoship-processing-health.yml

Coordinates live nutrition consultations between Chewy veterinary nutritionists and pet parents, including scheduling, video session setup, and follow-up product recommendations.

naftiko: '0.5'
info:
  label: Live Pet Nutrition Consultation Orchestrator
  description: Coordinates live nutrition consultations between Chewy veterinary nutritionists and pet parents, including scheduling, video session setup, and follow-up product recommendations.
  tags:
  - pet-nutrition
  - telehealth
  - consultation
capability:
  exposes:
  - type: mcp
    namespace: nutrition-consultation
    port: 8080
    tools:
    - name: schedule-consultation
      description: Schedule a live pet nutrition consultation session.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The Chewy customer identifier.
      - name: pet_profile_id
        in: body
        type: string
        description: The pet profile identifier with dietary history.
      - name: consultation_type
        in: body
        type: string
        description: Type of consultation such as weight-management or allergy-diet.
      call: telehealth-api.create-session
      with:
        customer: '{{customer_id}}'
        pet: '{{pet_profile_id}}'
        type: '{{consultation_type}}'
      outputParameters:
      - name: session_id
        type: string
        mapping: $.session.id
      - name: scheduled_time
        type: string
        mapping: $.session.scheduledAt
      - name: nutritionist_name
        type: string
        mapping: $.session.assignedNutritionist
  consumes:
  - type: http
    namespace: telehealth-api
    baseUri: https://api.chewy.com/telehealth/v1
    authentication:
      type: bearer
      token: $secrets.chewy_telehealth_token
    resources:
    - name: sessions
      path: /consultations/nutrition
      operations:
      - name: create-session
        method: POST
Open in Framework → View in Fleet → live-pet-nutrition-consultation-orchestrator.yml

Verifies the status of Veritas Cluster backup jobs for Chewy's database and application clusters.

naftiko: '0.5'
info:
  label: Veritas Cluster Backup Verification
  description: Verifies the status of Veritas Cluster backup jobs for Chewy's database and application clusters.
  tags:
  - infrastructure
  - backup
  - veritas
capability:
  exposes:
  - type: mcp
    namespace: backup-verification
    port: 8080
    tools:
    - name: check-backup-status
      description: Verify Veritas Cluster backup job status.
      inputParameters:
      - name: cluster_name
        in: body
        type: string
        description: Cluster name.
      - name: backup_date
        in: body
        type: string
        description: Backup date.
      call: veritas.get-backup-status
      with:
        cluster: '{{cluster_name}}'
        date: '{{backup_date}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.job.status
      - name: completion_pct
        type: number
        mapping: $.job.completion_pct
      - name: data_size_gb
        type: number
        mapping: $.job.data_size_gb
  consumes:
  - type: http
    namespace: veritas
    baseUri: https://veritas.chewy.com/api/v1
    authentication:
      type: bearer
      token: $secrets.veritas_token
    resources:
    - name: backup-jobs
      path: /clusters/{{cluster}}/backups
      inputParameters:
      - name: cluster
        in: path
      operations:
      - name: get-backup-status
        method: GET
Open in Framework → View in Fleet → veritas-cluster-backup-verification.yml

Resolves delivery exceptions by checking ShipStation tracking, creating a replacement order in the OMS, notifying the customer via SMS, and logging in ServiceNow.

naftiko: '0.5'
info:
  label: Delivery Exception Resolution Pipeline
  description: Resolves delivery exceptions by checking ShipStation tracking, creating a replacement order in the OMS, notifying the customer via SMS, and logging in ServiceNow.
  tags:
  - shipping
  - delivery
  - shipstation
  - twilio
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: delivery-exception
    port: 8080
    tools:
    - name: resolve-delivery-exception
      description: Orchestrate delivery exception resolution across ShipStation, OMS, Twilio, and ServiceNow.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: Original order ID.
      - name: exception_type
        in: body
        type: string
        description: Exception type (lost, damaged, wrong_address).
      steps:
      - name: check-tracking
        type: call
        call: shipstation.get-tracking
        with:
          order_id: '{{order_id}}'
      - name: create-replacement
        type: call
        call: oms.create-replacement-order
        with:
          original_order_id: '{{order_id}}'
          reason: '{{exception_type}}'
      - name: notify-customer
        type: call
        call: twilio.send-message
        with:
          To: '{{check-tracking.customer_phone}}'
          Body: 'We''re sorry about your delivery issue. A replacement has been shipped (Order #{{create-replacement.new_order_id}}). Track at chewy.com/track.'
          From: '+18886337569'
      - name: log-exception
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Delivery exception: {{order_id}} - {{exception_type}}'
          category: shipping
          assigned_group: Shipping_Operations
          description: 'Original order: {{order_id}}. Exception: {{exception_type}}. Replacement: {{create-replacement.new_order_id}}. Carrier: {{check-tracking.carrier}}.'
  consumes:
  - type: http
    namespace: shipstation
    baseUri: https://ssapi.shipstation.com
    authentication:
      type: basic
      username: $secrets.shipstation_api_key
      password: $secrets.shipstation_api_secret
    resources:
    - name: tracking
      path: /shipments
      operations:
      - name: get-tracking
        method: GET
  - type: http
    namespace: oms
    baseUri: https://oms-api.chewy.com/v2
    authentication:
      type: bearer
      token: $secrets.oms_api_token
    resources:
    - name: replacements
      path: /orders/replacement
      operations:
      - name: create-replacement-order
        method: POST
  - type: http
    namespace: twilio
    baseUri: https://api.twilio.com/2010-04-01/Accounts/$secrets.twilio_account_sid
    authentication:
      type: basic
      username: $secrets.twilio_account_sid
      password: $secrets.twilio_auth_token
    resources:
    - name: messages
      path: /Messages.json
      operations:
      - name: send-message
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://chewy.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → delivery-exception-resolution-pipeline.yml

Retrieves shipment tracking details from ShipStation for Chewy customer orders including carrier, status, and estimated delivery date.

naftiko: '0.5'
info:
  label: ShipStation Shipment Tracking Lookup
  description: Retrieves shipment tracking details from ShipStation for Chewy customer orders including carrier, status, and estimated delivery date.
  tags:
  - shipping
  - fulfillment
  - shipstation
capability:
  exposes:
  - type: mcp
    namespace: shipment-tracking
    port: 8080
    tools:
    - name: get-shipment-tracking
      description: Look up shipment tracking details from ShipStation.
      inputParameters:
      - name: order_number
        in: body
        type: string
        description: Chewy order number.
      call: shipstation.get-shipment
      with:
        orderNumber: '{{order_number}}'
      outputParameters:
      - name: tracking_number
        type: string
        mapping: $.shipments[0].trackingNumber
      - name: carrier
        type: string
        mapping: $.shipments[0].carrierCode
      - name: status
        type: string
        mapping: $.shipments[0].shipmentStatus
      - name: estimated_delivery
        type: string
        mapping: $.shipments[0].estimatedDeliveryDate
  consumes:
  - type: http
    namespace: shipstation
    baseUri: https://ssapi.shipstation.com
    authentication:
      type: basic
      username: $secrets.shipstation_api_key
      password: $secrets.shipstation_api_secret
    resources:
    - name: shipments
      path: /shipments
      operations:
      - name: get-shipment
        method: GET
Open in Framework → View in Fleet → shipstation-shipment-tracking-lookup.yml

Publishes customer service procedures and pet care guides to Confluence and notifies the support team.

naftiko: '0.5'
info:
  label: Confluence Knowledge Base Manager
  description: Publishes customer service procedures and pet care guides to Confluence and notifies the support team.
  tags:
  - knowledge-management
  - customer-service
  - confluence
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: knowledge-base
    port: 8080
    tools:
    - name: publish-guide
      description: Create a pet care guide or support procedure in Confluence and notify the team.
      inputParameters:
      - name: space_key
        in: body
        type: string
        description: Confluence space.
      - name: title
        in: body
        type: string
        description: Page title.
      - name: content
        in: body
        type: string
        description: Page content.
      steps:
      - name: create-page
        type: call
        call: confluence.create-page
        with:
          space_key: '{{space_key}}'
          title: '{{title}}'
          body: '{{content}}'
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          channel_id: customer_support
          text: 'New guide published: {{title}}. View at {{create-page.url}}'
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://chewy.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: content
      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/{{channel_id}}/channels/general/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → confluence-knowledge-base-manager.yml

Exports weekly e-commerce sales metrics from Snowflake to Google Sheets for executive review.

naftiko: '0.5'
info:
  label: Google Sheets Weekly Sales Exporter
  description: Exports weekly e-commerce sales metrics from Snowflake to Google Sheets for executive review.
  tags:
  - reporting
  - sales
  - snowflake
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: sales-reporting
    port: 8080
    tools:
    - name: export-weekly-sales
      description: Query Snowflake for weekly sales and write to Google Sheets.
      inputParameters:
      - name: week_ending
        in: body
        type: string
        description: Week ending date.
      - name: spreadsheet_id
        in: body
        type: string
        description: Google Sheets ID.
      steps:
      - name: fetch-sales
        type: call
        call: snowflake.run-query
        with:
          query: SELECT pet_category, SUM(revenue) as revenue, COUNT(DISTINCT order_id) as orders, SUM(CASE WHEN is_autoship THEN revenue ELSE 0 END) as autoship_revenue FROM weekly_sales WHERE week_ending='{{week_ending}}' GROUP BY pet_category
      - name: write-sheet
        type: call
        call: google-sheets.update-values
        with:
          spreadsheet_id: '{{spreadsheet_id}}'
          range: WeeklySales!A1
          values: '{{fetch-sales.results}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://chewy.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: google-sheets
    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
Open in Framework → View in Fleet → google-sheets-weekly-sales-exporter.yml

Onboards vet clinic partners by creating accounts in Salesforce, provisioning API credentials in Okta, setting up EDI integration, and sending welcome kits via email.

naftiko: '0.5'
info:
  label: Vet Clinic Partnership Onboarding Pipeline
  description: Onboards vet clinic partners by creating accounts in Salesforce, provisioning API credentials in Okta, setting up EDI integration, and sending welcome kits via email.
  tags:
  - partnerships
  - veterinary
  - salesforce
  - okta
capability:
  exposes:
  - type: mcp
    namespace: vet-partnership
    port: 8080
    tools:
    - name: onboard-vet-clinic
      description: Orchestrate vet clinic partner onboarding across Salesforce, Okta, EDI, and email.
      inputParameters:
      - name: clinic_name
        in: body
        type: string
        description: Veterinary clinic name.
      - name: contact_email
        in: body
        type: string
        description: Primary contact email.
      - name: license_number
        in: body
        type: string
        description: Veterinary license number.
      steps:
      - name: create-account
        type: call
        call: salesforce.create-partner-account
        with:
          name: '{{clinic_name}}'
          type: Vet_Partner
          email: '{{contact_email}}'
          license: '{{license_number}}'
      - name: provision-api
        type: call
        call: okta.create-app-user
        with:
          email: '{{contact_email}}'
          group: Vet_Partners_API
          app: chewy-partner-portal
      - name: setup-integration
        type: call
        call: edi.provision-partner
        with:
          partner_id: '{{create-account.account_id}}'
          partner_type: veterinary
      - name: send-welcome
        type: call
        call: ses.send-email
        with:
          to: '{{contact_email}}'
          subject: Welcome to Chewy Vet Partner Program - {{clinic_name}}
          body: 'Welcome to the Chewy Vet Partner program! Your API credentials and partner portal access details are enclosed. Partner ID: {{create-account.account_id}}.'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://chewy.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /sobjects/Account
      operations:
      - name: create-partner-account
        method: POST
  - type: http
    namespace: okta
    baseUri: https://chewy.okta.com/api/v1
    authentication:
      type: bearer
      token: $secrets.okta_api_token
    resources:
    - name: users
      path: /users
      operations:
      - name: create-app-user
        method: POST
  - type: http
    namespace: edi
    baseUri: https://edi-api.chewy.com/v1
    authentication:
      type: bearer
      token: $secrets.edi_api_token
    resources:
    - name: partners
      path: /partners
      operations:
      - name: provision-partner
        method: POST
  - type: http
    namespace: ses
    baseUri: https://email.us-east-1.amazonaws.com
    authentication:
      type: aws-sig-v4
      access_key: $secrets.aws_access_key
      secret_key: $secrets.aws_secret_key
    resources:
    - name: emails
      path: /v2/email/outbound-emails
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → vet-clinic-partnership-onboarding-pipeline.yml

Onboards new pet product vendors by creating a Coupa supplier profile, setting up EDI integration, provisioning a Salesforce partner account, and assigning training in Pluralsight.

naftiko: '0.5'
info:
  label: Vendor Onboarding Orchestrator
  description: Onboards new pet product vendors by creating a Coupa supplier profile, setting up EDI integration, provisioning a Salesforce partner account, and assigning training in Pluralsight.
  tags:
  - vendor-management
  - onboarding
  - coupa
  - salesforce
  - pluralsight
capability:
  exposes:
  - type: mcp
    namespace: vendor-onboarding
    port: 8080
    tools:
    - name: onboard-vendor
      description: Orchestrate vendor onboarding across Coupa, EDI, Salesforce, and Pluralsight.
      inputParameters:
      - name: vendor_name
        in: body
        type: string
        description: Vendor company name.
      - name: contact_email
        in: body
        type: string
        description: Vendor contact email.
      - name: product_categories
        in: body
        type: string
        description: Product categories (food, treats, toys, health).
      steps:
      - name: create-supplier
        type: call
        call: coupa.create-supplier
        with:
          name: '{{vendor_name}}'
          contact_email: '{{contact_email}}'
          categories: '{{product_categories}}'
      - name: setup-edi
        type: call
        call: edi.provision-partner
        with:
          supplier_id: '{{create-supplier.supplier_id}}'
          partner_name: '{{vendor_name}}'
      - name: create-partner-account
        type: call
        call: salesforce.create-account
        with:
          name: '{{vendor_name}}'
          type: Vendor
          email: '{{contact_email}}'
          supplier_id: '{{create-supplier.supplier_id}}'
      - name: assign-training
        type: call
        call: pluralsight.assign-channel
        with:
          email: '{{contact_email}}'
          channel_id: chewy-vendor-portal-training
  consumes:
  - type: http
    namespace: coupa
    baseUri: https://chewy.coupahost.com/api
    authentication:
      type: bearer
      token: $secrets.coupa_api_token
    resources:
    - name: suppliers
      path: /suppliers
      operations:
      - name: create-supplier
        method: POST
  - type: http
    namespace: edi
    baseUri: https://edi-api.chewy.com/v1
    authentication:
      type: bearer
      token: $secrets.edi_api_token
    resources:
    - name: partners
      path: /partners
      operations:
      - name: provision-partner
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://chewy.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /sobjects/Account
      operations:
      - name: create-account
        method: POST
  - type: http
    namespace: pluralsight
    baseUri: https://api.pluralsight.com/api/v1
    authentication:
      type: bearer
      token: $secrets.pluralsight_token
    resources:
    - name: assignments
      path: /channel-assignments
      operations:
      - name: assign-channel
        method: POST
Open in Framework → View in Fleet → vendor-onboarding-orchestrator.yml

Queries Snowflake for fulfillment center KPIs including pick rate, pack accuracy, and ship-on-time percentage, then pushes to Power BI.

naftiko: '0.5'
info:
  label: Fulfillment Center Performance Dashboard
  description: Queries Snowflake for fulfillment center KPIs including pick rate, pack accuracy, and ship-on-time percentage, then pushes to Power BI.
  tags:
  - operations
  - fulfillment
  - snowflake
  - power-bi
capability:
  exposes:
  - type: mcp
    namespace: fulfillment-analytics
    port: 8080
    tools:
    - name: refresh-fc-dashboard
      description: Pull FC performance data from Snowflake and refresh the Power BI dashboard.
      inputParameters:
      - name: fc_code
        in: body
        type: string
        description: Fulfillment center code.
      - name: date
        in: body
        type: string
        description: Report date.
      - name: dataset_id
        in: body
        type: string
        description: Power BI dataset ID.
      steps:
      - name: fetch-kpis
        type: call
        call: snowflake.run-query
        with:
          query: SELECT fc_code, pick_rate, pack_accuracy_pct, ship_on_time_pct, units_shipped, orders_processed FROM fc_daily_kpis WHERE fc_code='{{fc_code}}' AND report_date='{{date}}'
      - name: refresh-dashboard
        type: call
        call: powerbi.trigger-refresh
        with:
          dataset_id: '{{dataset_id}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://chewy.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: refreshes
      path: /datasets/{{dataset_id}}/refreshes
      inputParameters:
      - name: dataset_id
        in: path
      operations:
      - name: trigger-refresh
        method: POST
Open in Framework → View in Fleet → fulfillment-center-performance-dashboard.yml

Queries Redis cache for product availability, pricing, and inventory data for the Chewy e-commerce storefront.

naftiko: '0.5'
info:
  label: Redis Product Cache Lookup
  description: Queries Redis cache for product availability, pricing, and inventory data for the Chewy e-commerce storefront.
  tags:
  - caching
  - product-data
  - redis
capability:
  exposes:
  - type: mcp
    namespace: product-cache
    port: 8080
    tools:
    - name: get-product-cache
      description: Look up product data from Redis cache.
      inputParameters:
      - name: product_id
        in: body
        type: string
        description: Chewy product SKU.
      call: redis.get-key
      with:
        key: product:{{product_id}}
      outputParameters:
      - name: price
        type: number
        mapping: $.price
      - name: in_stock
        type: boolean
        mapping: $.in_stock
      - name: warehouse_qty
        type: integer
        mapping: $.warehouse_quantity
  consumes:
  - type: http
    namespace: redis
    baseUri: https://redis-api.chewy.com/v1
    authentication:
      type: bearer
      token: $secrets.redis_api_token
    resources:
    - name: keys
      path: /get/{{key}}
      inputParameters:
      - name: key
        in: path
      operations:
      - name: get-key
        method: GET
Open in Framework → View in Fleet → redis-product-cache-lookup.yml

Processes product returns by looking up the order in the OMS, initiating a Stripe refund, updating inventory in SAP HANA, and creating a Zendesk resolution ticket.

naftiko: '0.5'
info:
  label: Order Return Processing Orchestrator
  description: Processes product returns by looking up the order in the OMS, initiating a Stripe refund, updating inventory in SAP HANA, and creating a Zendesk resolution ticket.
  tags:
  - returns
  - e-commerce
  - stripe
  - sap-hana
  - zendesk
capability:
  exposes:
  - type: mcp
    namespace: return-processing
    port: 8080
    tools:
    - name: process-return
      description: Orchestrate return processing across OMS, Stripe, SAP HANA, and Zendesk.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: Original order ID.
      - name: return_reason
        in: body
        type: string
        description: Reason for return.
      - name: items
        in: body
        type: string
        description: Comma-separated SKUs to return.
      steps:
      - name: get-order
        type: call
        call: oms.get-order
        with:
          order_id: '{{order_id}}'
      - name: issue-refund
        type: call
        call: stripe.create-refund
        with:
          charge_id: '{{get-order.charge_id}}'
          amount: '{{get-order.return_amount}}'
      - name: update-inventory
        type: call
        call: sap-hana.update-stock
        with:
          items: '{{items}}'
          action: return_to_stock
      - name: create-ticket
        type: call
        call: zendesk.create-ticket
        with:
          subject: 'Return processed: Order {{order_id}}'
          description: 'Return for order {{order_id}}. Reason: {{return_reason}}. Refund: ${{issue-refund.amount}}. Items: {{items}}.'
          requester_email: '{{get-order.customer_email}}'
  consumes:
  - type: http
    namespace: oms
    baseUri: https://oms-api.chewy.com/v2
    authentication:
      type: bearer
      token: $secrets.oms_api_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-hana
    baseUri: https://chewy-hana.sap.com/api/v1
    authentication:
      type: basic
      username: $secrets.sap_hana_user
      password: $secrets.sap_hana_password
    resources:
    - name: inventory
      path: /inventory/update
      operations:
      - name: update-stock
        method: POST
  - type: http
    namespace: zendesk
    baseUri: https://chewy.zendesk.com/api/v2
    authentication:
      type: bearer
      token: $secrets.zendesk_token
    resources:
    - name: tickets
      path: /tickets
      operations:
      - name: create-ticket
        method: POST
Open in Framework → View in Fleet → order-return-processing-orchestrator.yml

Runs Postman API test collections for Chewy's e-commerce APIs including cart, checkout, and Autoship endpoints.

naftiko: '0.5'
info:
  label: Postman E-Commerce API Test Suite
  description: Runs Postman API test collections for Chewy's e-commerce APIs including cart, checkout, and Autoship endpoints.
  tags:
  - qa
  - api-testing
  - postman
capability:
  exposes:
  - type: mcp
    namespace: api-testing
    port: 8080
    tools:
    - name: run-api-tests
      description: Run Postman e-commerce API test collection.
      inputParameters:
      - name: collection_id
        in: body
        type: string
        description: Collection UID.
      - name: environment_id
        in: body
        type: string
        description: Environment UID.
      call: postman.run-collection
      with:
        collection: '{{collection_id}}'
        environment: '{{environment_id}}'
      outputParameters:
      - name: total_tests
        type: integer
        mapping: $.run.stats.tests.total
      - name: failed_tests
        type: integer
        mapping: $.run.stats.tests.failed
  consumes:
  - type: http
    namespace: postman
    baseUri: https://api.getpostman.com
    authentication:
      type: apiKey
      key: $secrets.postman_api_key
    resources:
    - name: collection-runs
      path: /monitors/{{collection_id}}/run
      inputParameters:
      - name: collection_id
        in: path
      operations:
      - name: run-collection
        method: POST
Open in Framework → View in Fleet → postman-e-commerce-api-test-suite.yml

Generates pet weight tracking dashboards for customers, pulling historical weight data and correlating with food consumption patterns to provide health insights.

naftiko: '0.5'
info:
  label: Pet Weight Tracking Dashboard Generator
  description: Generates pet weight tracking dashboards for customers, pulling historical weight data and correlating with food consumption patterns to provide health insights.
  tags:
  - pet-health
  - analytics
  - dashboard
capability:
  exposes:
  - type: mcp
    namespace: pet-weight-tracker
    port: 8080
    tools:
    - name: generate-weight-dashboard
      description: Generate a weight tracking dashboard for a specific pet.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The Chewy customer identifier.
      - name: pet_id
        in: body
        type: string
        description: The pet profile identifier.
      - name: time_range
        in: body
        type: string
        description: Time range for weight history such as 6m or 1y.
      call: pet-analytics-api.get-weight-trends
      with:
        customer: '{{customer_id}}'
        pet: '{{pet_id}}'
        range: '{{time_range}}'
      outputParameters:
      - name: current_weight
        type: number
        mapping: $.weightData.currentWeight
      - name: target_weight
        type: number
        mapping: $.weightData.targetWeight
      - name: trend_direction
        type: string
        mapping: $.weightData.trendDirection
  consumes:
  - type: http
    namespace: pet-analytics-api
    baseUri: https://api.chewy.com/pet-analytics/v1
    authentication:
      type: bearer
      token: $secrets.chewy_pet_analytics_token
    resources:
    - name: weight-trends
      path: /pets/{{pet}}/weight-trends
      inputParameters:
      - name: pet
        in: path
      operations:
      - name: get-weight-trends
        method: GET
Open in Framework → View in Fleet → pet-weight-tracking-dashboard-generator.yml

Generates personalized product recommendations by fetching pet profiles from MongoDB, running the ML model in Databricks, caching results in Redis, and updating the search index in Elasticsearch.

naftiko: '0.5'
info:
  label: Product Recommendation Personalization Pipeline
  description: Generates personalized product recommendations by fetching pet profiles from MongoDB, running the ML model in Databricks, caching results in Redis, and updating the search index in Elasticsearch.
  tags:
  - personalization
  - recommendations
  - mongodb
  - databricks
  - redis
  - elasticsearch
capability:
  exposes:
  - type: mcp
    namespace: recommendations
    port: 8080
    tools:
    - name: generate-recommendations
      description: Orchestrate personalized recommendations across MongoDB, Databricks, Redis, and Elasticsearch.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: Chewy customer ID.
      steps:
      - name: get-profile
        type: call
        call: mongodb.get-customer
        with:
          collection: customer_profiles
          filter: '{"customer_id": "{{customer_id}}"}'
      - name: run-model
        type: call
        call: databricks.score-recommendations
        with:
          customer_data: '{{get-profile}}'
          model: product-reco-v4
      - name: cache-results
        type: call
        call: redis.set-key
        with:
          key: reco:{{customer_id}}
          value: '{{run-model.recommendations}}'
          ttl: 3600
      - name: update-search
        type: call
        call: elasticsearch.update-personalization
        with:
          index: personalized_rankings
          customer_id: '{{customer_id}}'
          rankings: '{{run-model.product_scores}}'
  consumes:
  - type: http
    namespace: mongodb
    baseUri: https://data.mongodb-api.chewy.com/app/data-chewy/endpoint/data/v1
    authentication:
      type: bearer
      token: $secrets.mongodb_api_key
    resources:
    - name: find
      path: /action/findOne
      operations:
      - name: get-customer
        method: POST
  - type: http
    namespace: databricks
    baseUri: https://chewy.cloud.databricks.com/api/2.0
    authentication:
      type: bearer
      token: $secrets.databricks_token
    resources:
    - name: serving
      path: /serving-endpoints/product-reco-v4/invocations
      operations:
      - name: score-recommendations
        method: POST
  - type: http
    namespace: redis
    baseUri: https://redis-api.chewy.com/v1
    authentication:
      type: bearer
      token: $secrets.redis_api_token
    resources:
    - name: keys
      path: /set
      operations:
      - name: set-key
        method: POST
  - type: http
    namespace: elasticsearch
    baseUri: https://search.chewy.com
    authentication:
      type: bearer
      token: $secrets.elasticsearch_token
    resources:
    - name: personalization
      path: /{{index}}/_update/{{customer_id}}
      inputParameters:
      - name: index
        in: path
      - name: customer_id
        in: path
      operations:
      - name: update-personalization
        method: POST
Open in Framework → View in Fleet → product-recommendation-personalization-pipeline.yml

Creates coordinated social media campaigns across Instagram, Facebook, and YouTube promoting pet products and Chewy brand content.

naftiko: '0.5'
info:
  label: Social Media Pet Content Campaign
  description: Creates coordinated social media campaigns across Instagram, Facebook, and YouTube promoting pet products and Chewy brand content.
  tags:
  - marketing
  - social-media
  - instagram
  - facebook
  - youtube
capability:
  exposes:
  - type: mcp
    namespace: social-campaigns
    port: 8080
    tools:
    - name: launch-pet-campaign
      description: Create social media posts across Instagram, Facebook, and YouTube for a pet product campaign.
      inputParameters:
      - name: campaign_name
        in: body
        type: string
        description: Campaign name.
      - name: post_content
        in: body
        type: string
        description: Post text.
      - name: image_url
        in: body
        type: string
        description: Campaign image URL.
      - name: product_url
        in: body
        type: string
        description: Product page URL.
      steps:
      - name: post-instagram
        type: call
        call: instagram.create-post
        with:
          caption: '{{post_content}} Shop now at chewy.com! #Chewy #PetLove'
          image_url: '{{image_url}}'
      - name: post-facebook
        type: call
        call: facebook.create-post
        with:
          message: '{{post_content}}'
          link: '{{product_url}}'
      - name: schedule-youtube
        type: call
        call: youtube.insert-video
        with:
          title: '{{campaign_name}}'
          description: '{{post_content}}'
  consumes:
  - type: http
    namespace: instagram
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.instagram_token
    resources:
    - name: media
      path: /{{ig_account_id}}/media
      operations:
      - name: create-post
        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: youtube
    baseUri: https://www.googleapis.com/youtube/v3
    authentication:
      type: bearer
      token: $secrets.youtube_token
    resources:
    - name: videos
      path: /videos
      operations:
      - name: insert-video
        method: POST
Open in Framework → View in Fleet → social-media-pet-content-campaign.yml

Uploads and manages product images in Amazon S3 for the Chewy product catalog.

naftiko: '0.5'
info:
  label: Amazon S3 Product Image Manager
  description: Uploads and manages product images in Amazon S3 for the Chewy product catalog.
  tags:
  - e-commerce
  - content
  - amazon-s3
capability:
  exposes:
  - type: mcp
    namespace: product-images
    port: 8080
    tools:
    - name: upload-product-image
      description: Upload a product image to S3.
      inputParameters:
      - name: product_id
        in: body
        type: string
        description: Product SKU.
      - name: image_type
        in: body
        type: string
        description: Image type (primary, alternate, lifestyle).
      - name: content
        in: body
        type: string
        description: Base64-encoded image data.
      call: s3.put-object
      with:
        bucket: chewy-product-images
        key: products/{{product_id}}/{{image_type}}.jpg
        content_type: image/jpeg
      outputParameters:
      - name: etag
        type: string
        mapping: $.ETag
      - name: url
        type: string
        mapping: $.url
  consumes:
  - type: http
    namespace: s3
    baseUri: https://chewy-product-images.s3.us-east-1.amazonaws.com
    authentication:
      type: aws-sig-v4
      access_key: $secrets.aws_access_key
      secret_key: $secrets.aws_secret_key
    resources:
    - name: objects
      path: /{{key}}
      inputParameters:
      - name: key
        in: path
      operations:
      - name: put-object
        method: PUT
Open in Framework → View in Fleet → amazon-s3-product-image-manager.yml

Retrieves payroll data from ADP for Chewy's fulfillment center and corporate employees.

naftiko: '0.5'
info:
  label: ADP Payroll Data Retriever
  description: Retrieves payroll data from ADP for Chewy's fulfillment center and corporate employees.
  tags:
  - hr
  - payroll
  - adp
capability:
  exposes:
  - type: mcp
    namespace: payroll
    port: 8080
    tools:
    - name: get-payroll-summary
      description: Fetch payroll summary from ADP.
      inputParameters:
      - name: pay_period
        in: body
        type: string
        description: Pay period.
      - name: department
        in: body
        type: string
        description: Department.
      call: adp.get-payroll
      with:
        period: '{{pay_period}}'
        department: '{{department}}'
      outputParameters:
      - name: total_gross
        type: number
        mapping: $.summary.total_gross
      - name: headcount
        type: integer
        mapping: $.summary.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
      operations:
      - name: get-payroll
        method: GET
Open in Framework → View in Fleet → adp-payroll-data-retriever.yml

On autoship cancellation request, retrieves customer history from Salesforce, applies retention offer via the promotions engine, updates the subscription, and logs the outcome in Snowflake.

naftiko: '0.5'
info:
  label: Autoship Cancellation Retention Orchestrator
  description: On autoship cancellation request, retrieves customer history from Salesforce, applies retention offer via the promotions engine, updates the subscription, and logs the outcome in Snowflake.
  tags:
  - subscriptions
  - retention
  - salesforce
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: autoship-retention
    port: 8080
    tools:
    - name: process-cancellation
      description: Orchestrate autoship cancellation retention across Salesforce, promotions, and Snowflake.
      inputParameters:
      - name: subscription_id
        in: body
        type: string
        description: Autoship subscription ID.
      - name: cancellation_reason
        in: body
        type: string
        description: Customer's cancellation reason.
      steps:
      - name: get-customer
        type: call
        call: salesforce.get-customer-360
        with:
          subscription_id: '{{subscription_id}}'
      - name: generate-offer
        type: call
        call: promotions.create-retention-offer
        with:
          customer_id: '{{get-customer.customer_id}}'
          lifetime_value: '{{get-customer.lifetime_value}}'
          reason: '{{cancellation_reason}}'
      - name: apply-offer
        type: call
        call: subscriptions.update-autoship
        with:
          subscription_id: '{{subscription_id}}'
          discount: '{{generate-offer.discount_pct}}'
          action: retention_offer
      - name: log-outcome
        type: call
        call: snowflake.insert-retention-log
        with:
          statement: INSERT INTO RETENTION_LOG VALUES ('{{subscription_id}}', '{{cancellation_reason}}', '{{generate-offer.offer_type}}', '{{apply-offer.outcome}}', CURRENT_TIMESTAMP)
          warehouse: CHEWY_ANALYTICS_WH
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://chewy.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: customers
      path: /sobjects/Customer__c
      operations:
      - name: get-customer-360
        method: GET
  - type: http
    namespace: promotions
    baseUri: https://promotions-api.chewy.com/v1
    authentication:
      type: bearer
      token: $secrets.promotions_api_token
    resources:
    - name: retention
      path: /retention-offers
      operations:
      - name: create-retention-offer
        method: POST
  - type: http
    namespace: subscriptions
    baseUri: https://subscriptions-api.chewy.com/v1
    authentication:
      type: bearer
      token: $secrets.subscriptions_api_token
    resources:
    - name: autoship
      path: /autoship/{{subscription_id}}
      inputParameters:
      - name: subscription_id
        in: path
      operations:
      - name: update-autoship
        method: PATCH
  - type: http
    namespace: snowflake
    baseUri: https://chewy.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: insert-retention-log
        method: POST
Open in Framework → View in Fleet → autoship-cancellation-retention-orchestrator.yml

Monitors Cloudflare CDN performance for Chewy.com including cache hit ratios and bandwidth usage for product images and static assets.

naftiko: '0.5'
info:
  label: Cloudflare CDN Performance Monitor
  description: Monitors Cloudflare CDN performance for Chewy.com including cache hit ratios and bandwidth usage for product images and static assets.
  tags:
  - infrastructure
  - cdn
  - cloudflare
capability:
  exposes:
  - type: mcp
    namespace: cdn-monitoring
    port: 8080
    tools:
    - name: get-cdn-analytics
      description: Retrieve Cloudflare CDN analytics for Chewy.com.
      inputParameters:
      - name: zone_id
        in: body
        type: string
        description: Cloudflare zone ID.
      - name: time_range
        in: body
        type: string
        description: Time range in minutes.
      call: cloudflare.get-analytics
      with:
        zone_id: '{{zone_id}}'
        since: -{{time_range}}min
      outputParameters:
      - name: requests_cached
        type: integer
        mapping: $.result.totals.requests.cached
      - name: requests_uncached
        type: integer
        mapping: $.result.totals.requests.uncached
      - name: bandwidth_saved
        type: number
        mapping: $.result.totals.bandwidth.cached
  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
Open in Framework → View in Fleet → cloudflare-cdn-performance-monitor.yml

Retrieves payment transaction details from Stripe for Chewy customer orders including charge status, refunds, and payment method.

naftiko: '0.5'
info:
  label: Stripe Payment Transaction Lookup
  description: Retrieves payment transaction details from Stripe for Chewy customer orders including charge status, refunds, and payment method.
  tags:
  - payments
  - e-commerce
  - stripe
capability:
  exposes:
  - type: mcp
    namespace: payment-lookup
    port: 8080
    tools:
    - name: get-payment
      description: Look up a Stripe payment transaction by charge ID.
      inputParameters:
      - name: charge_id
        in: body
        type: string
        description: Stripe charge identifier.
      call: stripe.get-charge
      with:
        charge_id: '{{charge_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.status
      - name: amount
        type: number
        mapping: $.amount
      - name: refunded
        type: boolean
        mapping: $.refunded
  consumes:
  - type: http
    namespace: stripe
    baseUri: https://api.stripe.com/v1
    authentication:
      type: bearer
      token: $secrets.stripe_secret_key
    resources:
    - name: charges
      path: /charges/{{charge_id}}
      inputParameters:
      - name: charge_id
        in: path
      operations:
      - name: get-charge
        method: GET
Open in Framework → View in Fleet → stripe-payment-transaction-lookup.yml

Exports product design assets from Figma and uploads to S3 for the product content team.

naftiko: '0.5'
info:
  label: Figma Pet Product Design Asset Exporter
  description: Exports product design assets from Figma and uploads to S3 for the product content team.
  tags:
  - design
  - product-content
  - figma
  - amazon-s3
capability:
  exposes:
  - type: mcp
    namespace: design-assets
    port: 8080
    tools:
    - name: export-design-assets
      description: Export images from Figma and upload to S3.
      inputParameters:
      - name: file_key
        in: body
        type: string
        description: Figma file key.
      - name: node_ids
        in: body
        type: string
        description: Node IDs to export.
      - name: s3_prefix
        in: body
        type: string
        description: S3 key prefix.
      steps:
      - name: get-images
        type: call
        call: figma.get-images
        with:
          file_key: '{{file_key}}'
          ids: '{{node_ids}}'
          format: png
          scale: 2
      - name: upload-to-s3
        type: call
        call: s3.put-object
        with:
          bucket: chewy-design-assets
          key: '{{s3_prefix}}/{{get-images.filename}}'
          body: '{{get-images.image_data}}'
  consumes:
  - type: http
    namespace: figma
    baseUri: https://api.figma.com/v1
    authentication:
      type: bearer
      token: $secrets.figma_token
    resources:
    - name: images
      path: /images/{{file_key}}
      inputParameters:
      - name: file_key
        in: path
      operations:
      - name: get-images
        method: GET
  - type: http
    namespace: s3
    baseUri: https://chewy-design-assets.s3.amazonaws.com
    authentication:
      type: aws-sig-v4
      access_key: $secrets.aws_access_key
      secret_key: $secrets.aws_secret_key
    resources:
    - name: objects
      path: /{{key}}
      inputParameters:
      - name: key
        in: path
      operations:
      - name: put-object
        method: PUT
Open in Framework → View in Fleet → figma-pet-product-design-asset-exporter.yml

Adjusts autoship subscriptions based on pet profile changes by updating the subscription engine, recalculating pricing, notifying the customer via WhatsApp, and logging in Salesforce.

naftiko: '0.5'
info:
  label: Pet Food Subscription Adjustment Orchestrator
  description: Adjusts autoship subscriptions based on pet profile changes by updating the subscription engine, recalculating pricing, notifying the customer via WhatsApp, and logging in Salesforce.
  tags:
  - subscriptions
  - pet-profiles
  - whatsapp
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: subscription-adjustment
    port: 8080
    tools:
    - name: adjust-subscription
      description: Orchestrate subscription adjustment across subscription engine, pricing, WhatsApp, and Salesforce.
      inputParameters:
      - name: subscription_id
        in: body
        type: string
        description: Autoship subscription ID.
      - name: pet_weight
        in: body
        type: number
        description: Updated pet weight in lbs.
      - name: pet_age
        in: body
        type: integer
        description: Updated pet age in months.
      steps:
      - name: recalculate
        type: call
        call: subscriptions.recalculate-quantity
        with:
          subscription_id: '{{subscription_id}}'
          pet_weight: '{{pet_weight}}'
          pet_age: '{{pet_age}}'
      - name: update-pricing
        type: call
        call: subscriptions.update-pricing
        with:
          subscription_id: '{{subscription_id}}'
          new_quantity: '{{recalculate.recommended_quantity}}'
      - name: notify-customer
        type: call
        call: whatsapp.send-message
        with:
          phone: '{{recalculate.customer_phone}}'
          message: 'Your Chewy autoship has been adjusted based on your pet''s updated profile. New delivery: {{recalculate.recommended_quantity}} units every {{recalculate.frequency}} days.'
      - name: log-change
        type: call
        call: salesforce.create-activity
        with:
          customer_id: '{{recalculate.customer_id}}'
          subject: 'Autoship adjusted: {{subscription_id}}'
          description: 'Quantity: {{recalculate.recommended_quantity}}. Pet weight: {{pet_weight}}lbs, age: {{pet_age}}mo.'
  consumes:
  - type: http
    namespace: subscriptions
    baseUri: https://subscriptions-api.chewy.com/v1
    authentication:
      type: bearer
      token: $secrets.subscriptions_api_token
    resources:
    - name: recalculate
      path: /autoship/{{subscription_id}}/recalculate
      inputParameters:
      - name: subscription_id
        in: path
      operations:
      - name: recalculate-quantity
        method: POST
    - name: pricing
      path: /autoship/{{subscription_id}}/pricing
      inputParameters:
      - name: subscription_id
        in: path
      operations:
      - name: update-pricing
        method: PUT
  - type: http
    namespace: whatsapp
    baseUri: https://graph.facebook.com/v18.0/$secrets.whatsapp_business_id
    authentication:
      type: bearer
      token: $secrets.whatsapp_token
    resources:
    - name: messages
      path: /messages
      operations:
      - name: send-message
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://chewy.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: activities
      path: /sobjects/Activity__c
      operations:
      - name: create-activity
        method: POST
Open in Framework → View in Fleet → pet-food-subscription-adjustment-orchestrator.yml

Creates targeted email campaigns in MailChimp for pet parents based on pet type, purchase history, and Autoship status from Salesforce.

naftiko: '0.5'
info:
  label: MailChimp Pet Parent Email Campaign
  description: Creates targeted email campaigns in MailChimp for pet parents based on pet type, purchase history, and Autoship status from Salesforce.
  tags:
  - marketing
  - email
  - mailchimp
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: email-marketing
    port: 8080
    tools:
    - name: create-pet-campaign
      description: Build a targeted email campaign using Salesforce segments and MailChimp.
      inputParameters:
      - name: campaign_name
        in: body
        type: string
        description: Campaign name.
      - name: pet_type
        in: body
        type: string
        description: Target pet type.
      - name: template_id
        in: body
        type: string
        description: MailChimp template.
      - name: subject_line
        in: body
        type: string
        description: Email subject.
      steps:
      - name: get-segment
        type: call
        call: salesforce.query
        with:
          q: SELECT Email, FirstName, Pet_Type__c FROM Contact WHERE Pet_Type__c = '{{pet_type}}' AND Has_Autoship__c = true AND Email != null
      - name: create-campaign
        type: call
        call: mailchimp.create-campaign
        with:
          type: regular
          recipients_list_id: chewy_pet_parents
          subject_line: '{{subject_line}}'
          template_id: '{{template_id}}'
          from_name: Chewy
      - name: send-campaign
        type: call
        call: mailchimp.send-campaign
        with:
          campaign_id: '{{create-campaign.id}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://chewy.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: 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
Open in Framework → View in Fleet → mailchimp-pet-parent-email-campaign.yml

Processes loyalty tier upgrades by querying Snowflake for spend data, updating the customer profile in Salesforce, sending a congratulations email, and applying new benefits.

naftiko: '0.5'
info:
  label: Customer Loyalty Tier Upgrade Pipeline
  description: Processes loyalty tier upgrades by querying Snowflake for spend data, updating the customer profile in Salesforce, sending a congratulations email, and applying new benefits.
  tags:
  - loyalty
  - customer-engagement
  - snowflake
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: loyalty-tier
    port: 8080
    tools:
    - name: process-tier-upgrade
      description: Orchestrate loyalty tier upgrade across Snowflake, Salesforce, and email.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: Chewy customer ID.
      steps:
      - name: get-spend
        type: call
        call: snowflake.query-loyalty
        with:
          statement: SELECT * FROM LOYALTY_METRICS WHERE customer_id = '{{customer_id}}'
          warehouse: CHEWY_ANALYTICS_WH
      - name: update-tier
        type: call
        call: salesforce.update-contact
        with:
          customer_id: '{{customer_id}}'
          loyalty_tier: '{{get-spend.new_tier}}'
      - name: send-congratulations
        type: call
        call: ses.send-email
        with:
          to: '{{get-spend.email}}'
          subject: Congratulations! You've reached {{get-spend.new_tier}} status at Chewy!
          body: You've been upgraded to {{get-spend.new_tier}} tier. Enjoy your new benefits!
      - name: apply-benefits
        type: call
        call: promotions.activate-tier-benefits
        with:
          customer_id: '{{customer_id}}'
          tier: '{{get-spend.new_tier}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://chewy.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query-loyalty
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://chewy.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: contacts
      path: /sobjects/Contact/{{customer_id}}
      inputParameters:
      - name: customer_id
        in: path
      operations:
      - name: update-contact
        method: PATCH
  - type: http
    namespace: ses
    baseUri: https://email.us-east-1.amazonaws.com
    authentication:
      type: aws-sig-v4
      access_key: $secrets.aws_access_key
      secret_key: $secrets.aws_secret_key
    resources:
    - name: emails
      path: /v2/email/outbound-emails
      operations:
      - name: send-email
        method: POST
  - type: http
    namespace: promotions
    baseUri: https://promotions-api.chewy.com/v1
    authentication:
      type: bearer
      token: $secrets.promotions_api_token
    resources:
    - name: tier-benefits
      path: /tier-benefits/activate
      operations:
      - name: activate-tier-benefits
        method: POST
Open in Framework → View in Fleet → customer-loyalty-tier-upgrade-pipeline.yml

Monitors competitor pricing by querying the price intelligence database, comparing with current Chewy prices, auto-adjusting via the pricing engine, and logging changes in Snowflake.

naftiko: '0.5'
info:
  label: Price Match Competitor Pipeline
  description: Monitors competitor pricing by querying the price intelligence database, comparing with current Chewy prices, auto-adjusting via the pricing engine, and logging changes in Snowflake.
  tags:
  - pricing
  - competitive-intelligence
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: price-matching
    port: 8080
    tools:
    - name: run-price-match
      description: Orchestrate price matching across intelligence DB, pricing engine, and Snowflake.
      inputParameters:
      - name: category
        in: body
        type: string
        description: Product category to check.
      steps:
      - name: get-competitor-prices
        type: call
        call: pricing-intel.get-competitive-prices
        with:
          category: '{{category}}'
      - name: get-current-prices
        type: call
        call: snowflake.query-prices
        with:
          statement: SELECT * FROM PRODUCT_PRICES WHERE category = '{{category}}' AND active = TRUE
          warehouse: CHEWY_PRICING_WH
      - name: adjust-prices
        type: call
        call: pricing-engine.apply-adjustments
        with:
          competitor_data: '{{get-competitor-prices.data}}'
          current_prices: '{{get-current-prices.data}}'
          strategy: competitive_match
      - name: log-changes
        type: call
        call: snowflake.insert-price-changes
        with:
          statement: INSERT INTO PRICE_CHANGE_LOG SELECT * FROM TABLE(FLATTEN(input => parse_json('{{adjust-prices.changes}}')))
          warehouse: CHEWY_PRICING_WH
  consumes:
  - type: http
    namespace: pricing-intel
    baseUri: https://pricing-intel.chewy.com/api/v1
    authentication:
      type: bearer
      token: $secrets.pricing_intel_token
    resources:
    - name: competitive
      path: /competitive-prices
      operations:
      - name: get-competitive-prices
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://chewy.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query-prices
        method: POST
      - name: insert-price-changes
        method: POST
  - type: http
    namespace: pricing-engine
    baseUri: https://pricing-api.chewy.com/v1
    authentication:
      type: bearer
      token: $secrets.pricing_api_token
    resources:
    - name: adjustments
      path: /adjustments
      operations:
      - name: apply-adjustments
        method: POST
Open in Framework → View in Fleet → price-match-competitor-pipeline.yml

Escalates high-priority customer complaints by retrieving context from Salesforce, analyzing sentiment via Databricks ML, routing to a specialist in ServiceNow, and sending an apology email.

naftiko: '0.5'
info:
  label: Customer Complaint Escalation Pipeline
  description: Escalates high-priority customer complaints by retrieving context from Salesforce, analyzing sentiment via Databricks ML, routing to a specialist in ServiceNow, and sending an apology email.
  tags:
  - customer-service
  - escalation
  - salesforce
  - databricks
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: complaint-escalation
    port: 8080
    tools:
    - name: escalate-complaint
      description: Orchestrate complaint escalation across Salesforce, Databricks, ServiceNow, and email.
      inputParameters:
      - name: case_id
        in: body
        type: string
        description: Salesforce case ID.
      steps:
      - name: get-case
        type: call
        call: salesforce.get-case
        with:
          case_id: '{{case_id}}'
      - name: analyze-sentiment
        type: call
        call: databricks.score-sentiment
        with:
          text: '{{get-case.description}}'
          model: customer-sentiment-v2
      - name: route-specialist
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Escalated complaint: {{case_id}} - Sentiment: {{analyze-sentiment.score}}'
          category: customer_escalation
          assigned_group: Customer_Experience_Specialists
          description: 'Customer: {{get-case.customer_name}}

            Sentiment: {{analyze-sentiment.score}}

            Original complaint: {{get-case.description}}'
      - name: send-apology
        type: call
        call: ses.send-email
        with:
          to: '{{get-case.customer_email}}'
          subject: We're sorry - A specialist is looking into your concern
          body: 'Dear {{get-case.customer_name}}, we''ve escalated your concern to a specialist who will reach out within 24 hours. Reference: {{route-specialist.number}}.'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://chewy.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: databricks
    baseUri: https://chewy.cloud.databricks.com/api/2.0
    authentication:
      type: bearer
      token: $secrets.databricks_token
    resources:
    - name: serving
      path: /serving-endpoints/customer-sentiment-v2/invocations
      operations:
      - name: score-sentiment
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://chewy.service-now.com/api/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: ses
    baseUri: https://email.us-east-1.amazonaws.com
    authentication:
      type: aws-sig-v4
      access_key: $secrets.aws_access_key
      secret_key: $secrets.aws_secret_key
    resources:
    - name: emails
      path: /v2/email/outbound-emails
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → customer-complaint-escalation-pipeline.yml

Checks secret rotation status and lease expiration in HashiCorp Vault for Chewy platform service credentials.

naftiko: '0.5'
info:
  label: HashiCorp Vault Secret Status
  description: Checks secret rotation status and lease expiration in HashiCorp Vault for Chewy platform service credentials.
  tags:
  - security
  - secrets-management
  - hashicorp-vault
capability:
  exposes:
  - type: mcp
    namespace: secrets-management
    port: 8080
    tools:
    - name: check-secret-status
      description: Check a secret's lease and rotation status in Vault.
      inputParameters:
      - name: secret_path
        in: body
        type: string
        description: Vault secret path.
      call: vault.read-secret-metadata
      with:
        path: '{{secret_path}}'
      outputParameters:
      - name: version
        type: integer
        mapping: $.data.current_version
      - name: created_time
        type: string
        mapping: $.data.versions.*.created_time
  consumes:
  - type: http
    namespace: vault
    baseUri: https://vault.chewy.com/v1
    authentication:
      type: bearer
      token: $secrets.vault_token
    resources:
    - name: metadata
      path: /{{path}}/metadata
      inputParameters:
      - name: path
        in: path
      operations:
      - name: read-secret-metadata
        method: GET
Open in Framework → View in Fleet → hashicorp-vault-secret-status.yml

Runs an Alteryx workflow for collaborative filtering product recommendations and loads results to Snowflake for the recommendation API.

naftiko: '0.5'
info:
  label: Alteryx Product Recommendation Engine
  description: Runs an Alteryx workflow for collaborative filtering product recommendations and loads results to Snowflake for the recommendation API.
  tags:
  - analytics
  - recommendations
  - alteryx
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: product-recommendations
    port: 8080
    tools:
    - name: run-recommendation-model
      description: Execute the Alteryx product recommendation workflow and load to Snowflake.
      inputParameters:
      - name: pet_type
        in: body
        type: string
        description: Pet type for recommendations.
      - name: model_version
        in: body
        type: string
        description: Model version.
      steps:
      - name: trigger-workflow
        type: call
        call: alteryx.run-workflow
        with:
          workflow_id: product_recs_v4
          parameters: '{"pet_type": "{{pet_type}}", "version": "{{model_version}}"}'
      - name: load-results
        type: call
        call: snowflake.run-query
        with:
          query: CALL load_recommendations('{{pet_type}}', '{{model_version}}')
  consumes:
  - type: http
    namespace: alteryx
    baseUri: https://alteryx.chewy.com/api/v3
    authentication:
      type: bearer
      token: $secrets.alteryx_token
    resources:
    - name: workflows
      path: /workflows/{{workflow_id}}/jobs
      inputParameters:
      - name: workflow_id
        in: path
      operations:
      - name: run-workflow
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://chewy.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → alteryx-product-recommendation-engine.yml

Searches the Workday employee directory by name or department.

naftiko: '0.5'
info:
  label: Workday Employee Directory
  description: Searches the Workday employee directory by name or department.
  tags:
  - hr
  - directory
  - workday
capability:
  exposes:
  - type: mcp
    namespace: hr-directory
    port: 8080
    tools:
    - name: search-employees
      description: Search for employees in Workday.
      inputParameters:
      - name: search_term
        in: body
        type: string
        description: Search term.
      call: workday.search-workers
      with:
        search: '{{search_term}}'
      outputParameters:
      - name: employees
        type: array
        mapping: $.workers
      - name: total_count
        type: integer
        mapping: $.total
  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: search-workers
        method: GET
Open in Framework → View in Fleet → workday-employee-directory.yml

Monitors Apache Kafka consumer lag and throughput for Chewy's order processing event streams.

naftiko: '0.5'
info:
  label: Kafka Order Event Stream Monitor
  description: Monitors Apache Kafka consumer lag and throughput for Chewy's order processing event streams.
  tags:
  - streaming
  - kafka
  - order-processing
capability:
  exposes:
  - type: mcp
    namespace: order-streaming
    port: 8080
    tools:
    - name: get-order-stream-health
      description: Check Kafka topic health for order event streams.
      inputParameters:
      - name: topic_name
        in: body
        type: string
        description: Kafka topic name.
      call: kafka.get-consumer-lag
      with:
        topic: '{{topic_name}}'
      outputParameters:
      - name: total_lag
        type: integer
        mapping: $.total_lag
      - name: throughput
        type: number
        mapping: $.messages_per_second
  consumes:
  - type: http
    namespace: kafka
    baseUri: https://kafka-rest.chewy.com/v3
    authentication:
      type: bearer
      token: $secrets.kafka_rest_token
    resources:
    - name: consumer-groups
      path: /clusters/chewy-prod/consumer-groups/order-processors/lags
      operations:
      - name: get-consumer-lag
        method: GET
Open in Framework → View in Fleet → kafka-order-event-stream-monitor.yml

Targets lapsed customers by querying Snowflake for inactive accounts, segmenting via Databricks ML, sending personalized win-back emails via MailChimp, and tracking in Salesforce.

naftiko: '0.5'
info:
  label: Customer Win-Back Campaign Orchestrator
  description: Targets lapsed customers by querying Snowflake for inactive accounts, segmenting via Databricks ML, sending personalized win-back emails via MailChimp, and tracking in Salesforce.
  tags:
  - marketing
  - retention
  - snowflake
  - databricks
  - mailchimp
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: win-back
    port: 8080
    tools:
    - name: launch-win-back
      description: Orchestrate customer win-back campaign across Snowflake, Databricks, MailChimp, and Salesforce.
      inputParameters:
      - name: inactive_days
        in: body
        type: integer
        description: Minimum days of inactivity.
      steps:
      - name: get-lapsed
        type: call
        call: snowflake.query-lapsed
        with:
          statement: SELECT * FROM CUSTOMER_ACTIVITY WHERE last_order_date <= DATEADD(day, -{{inactive_days}}, CURRENT_DATE) AND win_back_sent = FALSE
          warehouse: CHEWY_MARKETING_WH
      - name: segment-customers
        type: call
        call: databricks.segment-customers
        with:
          customers: '{{get-lapsed.data}}'
          model: win-back-segmentation-v2
      - name: send-campaign
        type: call
        call: mailchimp.send-campaign
        with:
          list_id: win-back-targets
          template: we-miss-you
          segments: '{{segment-customers.segments}}'
      - name: log-campaign
        type: call
        call: salesforce.create-campaign
        with:
          name: Win-Back {{inactive_days}}d - Batch
          type: Email
          status: Sent
          members: '{{get-lapsed.count}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://chewy.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query-lapsed
        method: POST
  - type: http
    namespace: databricks
    baseUri: https://chewy.cloud.databricks.com/api/2.0
    authentication:
      type: bearer
      token: $secrets.databricks_token
    resources:
    - name: serving
      path: /serving-endpoints/win-back-segmentation-v2/invocations
      operations:
      - name: segment-customers
        method: POST
  - type: http
    namespace: mailchimp
    baseUri: https://us1.api.mailchimp.com/3.0
    authentication:
      type: bearer
      token: $secrets.mailchimp_api_key
    resources:
    - name: campaigns
      path: /campaigns
      operations:
      - name: send-campaign
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://chewy.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: campaigns
      path: /sobjects/Campaign
      operations:
      - name: create-campaign
        method: POST
Open in Framework → View in Fleet → customer-win-back-campaign-orchestrator.yml

Retrieves a purchase order from Coupa and returns status, vendor, and delivery details for supply chain teams.

naftiko: '0.5'
info:
  label: Coupa Vendor Purchase Order Tracker
  description: Retrieves a purchase order from Coupa and returns status, vendor, and delivery details for supply chain teams.
  tags:
  - procurement
  - supply-chain
  - coupa
capability:
  exposes:
  - type: mcp
    namespace: procurement
    port: 8080
    tools:
    - name: get-purchase-order
      description: Look up a Coupa purchase order.
      inputParameters:
      - name: po_number
        in: body
        type: string
        description: PO number.
      call: coupa.get-po
      with:
        po_number: '{{po_number}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.status
      - name: supplier
        type: string
        mapping: $.supplier.name
      - name: total
        type: number
        mapping: $.total
      - name: delivery_date
        type: string
        mapping: $.need-by-date
  consumes:
  - type: http
    namespace: coupa
    baseUri: https://chewy.coupahost.com/api
    authentication:
      type: bearer
      token: $secrets.coupa_api_token
    resources:
    - name: purchase-orders
      path: /purchase_orders/{{po_number}}
      inputParameters:
      - name: po_number
        in: path
      operations:
      - name: get-po
        method: GET
Open in Framework → View in Fleet → coupa-vendor-purchase-order-tracker.yml

Retrieves e-commerce conversion funnel metrics from Google Analytics for Chewy.com including cart abandonment and checkout completion rates.

naftiko: '0.5'
info:
  label: Google Analytics E-Commerce Funnel Report
  description: Retrieves e-commerce conversion funnel metrics from Google Analytics for Chewy.com including cart abandonment and checkout completion rates.
  tags:
  - e-commerce
  - analytics
  - google-analytics
capability:
  exposes:
  - type: mcp
    namespace: ecommerce-analytics
    port: 8080
    tools:
    - name: get-funnel-metrics
      description: Fetch e-commerce conversion funnel data from Google Analytics.
      inputParameters:
      - name: start_date
        in: body
        type: string
        description: Start date.
      - name: end_date
        in: body
        type: string
        description: End date.
      call: google-analytics.get-report
      with:
        view_id: chewy_web_property
        start_date: '{{start_date}}'
        end_date: '{{end_date}}'
        metrics: sessions,transactions,transactionRevenue
        dimensions: channelGrouping
      outputParameters:
      - name: data
        type: array
        mapping: $.reports[0].data.rows
      - name: totals
        type: object
        mapping: $.reports[0].data.totals[0]
  consumes:
  - type: http
    namespace: google-analytics
    baseUri: https://analyticsreporting.googleapis.com/v4
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: reports
      path: /reports:batchGet
      operations:
      - name: get-report
        method: POST
Open in Framework → View in Fleet → google-analytics-e-commerce-funnel-report.yml

Retrieves customer behavioral event data from Segment for Chewy's product analytics including page views, cart actions, and purchase events.

naftiko: '0.5'
info:
  label: Segment Customer Event Tracker
  description: Retrieves customer behavioral event data from Segment for Chewy's product analytics including page views, cart actions, and purchase events.
  tags:
  - analytics
  - customer-behavior
  - segment
capability:
  exposes:
  - type: mcp
    namespace: event-tracking
    port: 8080
    tools:
    - name: get-customer-events
      description: Fetch customer behavioral events from Segment.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: Chewy customer ID.
      - name: event_type
        in: body
        type: string
        description: Event type filter (page_view, add_to_cart, purchase).
      call: segment.get-profile-events
      with:
        user_id: '{{customer_id}}'
        event: '{{event_type}}'
      outputParameters:
      - name: events
        type: array
        mapping: $.data
      - name: count
        type: integer
        mapping: $.cursor.total
  consumes:
  - type: http
    namespace: segment
    baseUri: https://profiles.segment.com/v1/spaces/$secrets.segment_space_id
    authentication:
      type: bearer
      token: $secrets.segment_api_token
    resources:
    - name: events
      path: /collections/users/profiles/user_id:{{user_id}}/events
      inputParameters:
      - name: user_id
        in: path
      operations:
      - name: get-profile-events
        method: GET
Open in Framework → View in Fleet → segment-customer-event-tracker.yml

Reviews product content quality by fetching listings from Elasticsearch, running AI content analysis via Gemini, flagging issues in Jira, and notifying the content team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Product Content Review Orchestrator
  description: Reviews product content quality by fetching listings from Elasticsearch, running AI content analysis via Gemini, flagging issues in Jira, and notifying the content team via Microsoft Teams.
  tags:
  - content-management
  - quality
  - elasticsearch
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: content-review
    port: 8080
    tools:
    - name: review-product-content
      description: Orchestrate product content review across Elasticsearch, Gemini AI, Jira, and Teams.
      inputParameters:
      - name: product_id
        in: body
        type: string
        description: Product SKU to review.
      steps:
      - name: get-listing
        type: call
        call: elasticsearch.get-product
        with:
          index: chewy_products
          id: '{{product_id}}'
      - name: analyze-content
        type: call
        call: gemini.analyze-content
        with:
          title: '{{get-listing.title}}'
          description: '{{get-listing.description}}'
      - name: flag-issues
        type: call
        call: jira.create-issue
        with:
          project: CONTENT
          summary: 'Content review: {{product_id}} - {{analyze-content.issues_count}} issues'
          description: 'Product: {{get-listing.title}}

            Issues: {{analyze-content.issues}}

            Score: {{analyze-content.quality_score}}'
          issuetype: Task
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: content-team
          channel: reviews
          text: 'Content review completed: {{product_id}}. Score: {{analyze-content.quality_score}}. Issues: {{analyze-content.issues_count}}. Jira: {{flag-issues.key}}.'
  consumes:
  - type: http
    namespace: elasticsearch
    baseUri: https://search.chewy.com
    authentication:
      type: bearer
      token: $secrets.elasticsearch_token
    resources:
    - name: products
      path: /{{index}}/_doc/{{id}}
      inputParameters:
      - name: index
        in: path
      - name: id
        in: path
      operations:
      - name: get-product
        method: GET
  - type: http
    namespace: gemini
    baseUri: https://generativelanguage.googleapis.com/v1beta
    authentication:
      type: bearer
      token: $secrets.gemini_api_key
    resources:
    - name: content
      path: /models/gemini-pro:generateContent
      operations:
      - name: analyze-content
        method: POST
  - type: http
    namespace: jira
    baseUri: https://chewy.atlassian.net/rest/api/3
    authentication:
      type: 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}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → product-content-review-orchestrator.yml

Verifies pet pharmacy prescriptions by validating the vet license, checking the prescription database, approving the order in the OMS, and sending a confirmation SMS via Twilio.

naftiko: '0.5'
info:
  label: Pet Prescription Verification Pipeline
  description: Verifies pet pharmacy prescriptions by validating the vet license, checking the prescription database, approving the order in the OMS, and sending a confirmation SMS via Twilio.
  tags:
  - pharmacy
  - prescription
  - e-commerce
  - twilio
capability:
  exposes:
  - type: mcp
    namespace: prescription-verification
    port: 8080
    tools:
    - name: verify-prescription
      description: Orchestrate prescription verification across vet validation, pharmacy DB, OMS, and Twilio.
      inputParameters:
      - name: prescription_id
        in: body
        type: string
        description: Prescription identifier.
      - name: order_id
        in: body
        type: string
        description: Associated order ID.
      steps:
      - name: validate-vet
        type: call
        call: pharmacy.verify-vet-license
        with:
          prescription_id: '{{prescription_id}}'
      - name: check-prescription
        type: call
        call: pharmacy.validate-prescription
        with:
          prescription_id: '{{prescription_id}}'
          vet_valid: '{{validate-vet.valid}}'
      - name: approve-order
        type: call
        call: oms.approve-rx-order
        with:
          order_id: '{{order_id}}'
          prescription_status: '{{check-prescription.status}}'
      - name: notify-customer
        type: call
        call: twilio.send-message
        with:
          To: '{{approve-order.customer_phone}}'
          Body: 'Your Chewy pharmacy order #{{order_id}} has been verified and is being processed. Estimated delivery: {{approve-order.delivery_date}}.'
          From: '+18886337569'
  consumes:
  - type: http
    namespace: pharmacy
    baseUri: https://pharmacy-api.chewy.com/v1
    authentication:
      type: bearer
      token: $secrets.pharmacy_api_token
    resources:
    - name: vet-license
      path: /vet-verification
      operations:
      - name: verify-vet-license
        method: POST
    - name: prescriptions
      path: /prescriptions/validate
      operations:
      - name: validate-prescription
        method: POST
  - type: http
    namespace: oms
    baseUri: https://oms-api.chewy.com/v2
    authentication:
      type: bearer
      token: $secrets.oms_api_token
    resources:
    - name: rx-orders
      path: /orders/{{order_id}}/approve-rx
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: approve-rx-order
        method: POST
  - type: http
    namespace: twilio
    baseUri: https://api.twilio.com/2010-04-01/Accounts/$secrets.twilio_account_sid
    authentication:
      type: basic
      username: $secrets.twilio_account_sid
      password: $secrets.twilio_auth_token
    resources:
    - name: messages
      path: /Messages.json
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → pet-prescription-verification-pipeline.yml

Queries Prometheus for fulfillment center operational metrics including pick rate, pack rate, ship rate, and error rates.

naftiko: '0.5'
info:
  label: Prometheus Fulfillment Metrics
  description: Queries Prometheus for fulfillment center operational metrics including pick rate, pack rate, ship rate, and error rates.
  tags:
  - fulfillment
  - monitoring
  - prometheus
capability:
  exposes:
  - type: mcp
    namespace: fulfillment-metrics
    port: 8080
    tools:
    - name: query-fulfillment-metrics
      description: Query Prometheus for fulfillment center performance metrics.
      inputParameters:
      - name: warehouse_id
        in: body
        type: string
        description: Fulfillment center identifier.
      - name: metric
        in: body
        type: string
        description: Metric name (pick_rate, pack_rate, ship_rate).
      call: prometheus.query
      with:
        query: '{{metric}}{warehouse="{{warehouse_id}}"}'
      outputParameters:
      - name: value
        type: number
        mapping: $.data.result[0].value[1]
  consumes:
  - type: http
    namespace: prometheus
    baseUri: https://prometheus.chewy.com/api/v1
    authentication:
      type: bearer
      token: $secrets.prometheus_token
    resources:
    - name: query
      path: /query
      operations:
      - name: query
        method: POST
Open in Framework → View in Fleet → prometheus-fulfillment-metrics.yml

Triggers a Qlik Sense app reload for customer behavior analytics including repeat purchase rates and category affinity.

naftiko: '0.5'
info:
  label: Qlik Sense Customer Analytics Dashboard
  description: Triggers a Qlik Sense app reload for customer behavior analytics including repeat purchase rates and category affinity.
  tags:
  - analytics
  - customer-behavior
  - qlik-sense
capability:
  exposes:
  - type: mcp
    namespace: customer-analytics
    port: 8080
    tools:
    - name: reload-customer-dashboard
      description: Trigger Qlik Sense reload for customer analytics.
      inputParameters:
      - name: app_id
        in: body
        type: string
        description: Qlik Sense app ID.
      call: qlik.reload-app
      with:
        app_id: '{{app_id}}'
      outputParameters:
      - name: reload_id
        type: string
        mapping: $.id
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: qlik
    baseUri: https://chewy.us.qlikcloud.com/api/v1
    authentication:
      type: bearer
      token: $secrets.qlik_api_key
    resources:
    - name: reloads
      path: /reloads
      operations:
      - name: reload-app
        method: POST
Open in Framework → View in Fleet → qlik-sense-customer-analytics-dashboard.yml

On fulfillment center incident, queries Datadog for system health, creates a Jira ticket, pages the on-call engineer via PagerDuty, and posts a status update to Microsoft Teams.

naftiko: '0.5'
info:
  label: Warehouse Incident Response Orchestrator
  description: On fulfillment center incident, queries Datadog for system health, creates a Jira ticket, pages the on-call engineer via PagerDuty, and posts a status update to Microsoft Teams.
  tags:
  - incident-response
  - fulfillment
  - datadog
  - jira
  - pagerduty
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: warehouse-incident
    port: 8080
    tools:
    - name: respond-to-incident
      description: Orchestrate warehouse incident response across Datadog, Jira, PagerDuty, and Teams.
      inputParameters:
      - name: warehouse_id
        in: body
        type: string
        description: Fulfillment center ID.
      - name: severity
        in: body
        type: string
        description: Incident severity (P1, P2, P3).
      - name: description
        in: body
        type: string
        description: Incident description.
      steps:
      - name: check-health
        type: call
        call: datadog.get-service-status
        with:
          service: warehouse-{{warehouse_id}}
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: WAREHOUSE
          summary: '{{severity}} - FC {{warehouse_id}}: {{description}}'
          description: 'Warehouse: {{warehouse_id}}

            Severity: {{severity}}

            System Health: {{check-health.status}}

            Description: {{description}}'
          issuetype: Incident
      - name: page-oncall
        type: call
        call: pagerduty.create-incident
        with:
          service_id: warehouse-ops
          title: '{{severity}} FC {{warehouse_id}}: {{description}}'
          body: 'Jira: {{create-ticket.key}}'
      - name: post-status
        type: call
        call: msteams.send-channel-message
        with:
          team_id: fulfillment-ops
          channel: incidents
          text: '{{severity}} INCIDENT FC {{warehouse_id}}: {{description}}. Jira: {{create-ticket.key}}. On-call paged.'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: services
      path: /check_run
      operations:
      - name: get-service-status
        method: GET
  - type: http
    namespace: jira
    baseUri: https://chewy.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        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: 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
Open in Framework → View in Fleet → warehouse-incident-response-orchestrator.yml

On website performance degradation, checks Dynatrace for bottlenecks, queries Cloudflare for CDN status, creates a Jira incident, and alerts engineering via Microsoft Teams.

naftiko: '0.5'
info:
  label: Website Performance Degradation Pipeline
  description: On website performance degradation, checks Dynatrace for bottlenecks, queries Cloudflare for CDN status, creates a Jira incident, and alerts engineering via Microsoft Teams.
  tags:
  - performance
  - e-commerce
  - dynatrace
  - cloudflare
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: web-performance
    port: 8080
    tools:
    - name: investigate-degradation
      description: Orchestrate web performance investigation across Dynatrace, Cloudflare, Jira, and Teams.
      inputParameters:
      - name: page_url
        in: body
        type: string
        description: Affected page URL.
      - name: response_time_ms
        in: body
        type: integer
        description: Current response time in milliseconds.
      steps:
      - name: check-apm
        type: call
        call: dynatrace.get-page-health
        with:
          url: '{{page_url}}'
      - name: check-cdn
        type: call
        call: cloudflare.get-zone-analytics
        with:
          zone_id: chewy.com
      - name: create-incident
        type: call
        call: jira.create-issue
        with:
          project: PLATFORM
          summary: 'Performance degradation: {{page_url}} - {{response_time_ms}}ms'
          description: 'Page: {{page_url}}

            Response time: {{response_time_ms}}ms

            APM bottleneck: {{check-apm.bottleneck}}

            CDN status: {{check-cdn.status}}'
          issuetype: Incident
      - name: alert-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: web-engineering
          channel: alerts
          text: 'Performance alert: {{page_url}} at {{response_time_ms}}ms. Jira: {{create-incident.key}}. Bottleneck: {{check-apm.bottleneck}}.'
  consumes:
  - type: http
    namespace: dynatrace
    baseUri: https://chewy.live.dynatrace.com/api/v2
    authentication:
      type: bearer
      token: $secrets.dynatrace_token
    resources:
    - name: metrics
      path: /metrics/query
      operations:
      - name: get-page-health
        method: GET
  - 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-zone-analytics
        method: GET
  - type: http
    namespace: jira
    baseUri: https://chewy.atlassian.net/rest/api/3
    authentication:
      type: 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}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → website-performance-degradation-pipeline.yml

Processes CCPA/GDPR data requests by identifying records across MongoDB, Snowflake, and Salesforce, generating a data export, and logging compliance in ServiceNow.

naftiko: '0.5'
info:
  label: Customer Data Privacy Request Orchestrator
  description: Processes CCPA/GDPR data requests by identifying records across MongoDB, Snowflake, and Salesforce, generating a data export, and logging compliance in ServiceNow.
  tags:
  - privacy
  - compliance
  - mongodb
  - snowflake
  - salesforce
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: privacy-requests
    port: 8080
    tools:
    - name: process-privacy-request
      description: Orchestrate data privacy request across MongoDB, Snowflake, Salesforce, and ServiceNow.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: Customer ID.
      - name: request_type
        in: body
        type: string
        description: Request type (access, delete, portability).
      steps:
      - name: get-profile-data
        type: call
        call: mongodb.find-customer-data
        with:
          collection: customer_profiles
          filter: '{"customer_id": "{{customer_id}}"}'
      - name: get-analytics-data
        type: call
        call: snowflake.query-customer-data
        with:
          statement: SELECT * FROM CUSTOMER_360 WHERE customer_id = '{{customer_id}}'
          warehouse: CHEWY_PRIVACY_WH
      - name: get-crm-data
        type: call
        call: salesforce.get-contact
        with:
          customer_id: '{{customer_id}}'
      - name: log-compliance
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Privacy request: {{request_type}} - Customer {{customer_id}}'
          category: privacy_compliance
          assigned_group: Privacy_Operations
          description: 'Request type: {{request_type}}. Records found: MongoDB={{get-profile-data.found}}, Snowflake={{get-analytics-data.row_count}}, Salesforce={{get-crm-data.found}}.'
  consumes:
  - type: http
    namespace: mongodb
    baseUri: https://data.mongodb-api.chewy.com/app/data-chewy/endpoint/data/v1
    authentication:
      type: bearer
      token: $secrets.mongodb_api_key
    resources:
    - name: find
      path: /action/findOne
      operations:
      - name: find-customer-data
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://chewy.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query-customer-data
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://chewy.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: contacts
      path: /sobjects/Contact/{{customer_id}}
      inputParameters:
      - name: customer_id
        in: path
      operations:
      - name: get-contact
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://chewy.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → customer-data-privacy-request-orchestrator.yml

Queries Datadog for Chewy.com platform health metrics including API response times, error rates, and cart service availability.

naftiko: '0.5'
info:
  label: Datadog Platform Health Monitor
  description: Queries Datadog for Chewy.com platform health metrics including API response times, error rates, and cart service availability.
  tags:
  - devops
  - monitoring
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: platform-monitoring
    port: 8080
    tools:
    - name: check-platform-health
      description: Fetch platform health metrics from Datadog for Chewy's e-commerce services.
      inputParameters:
      - name: service_name
        in: body
        type: string
        description: Service name in Datadog.
      call: datadog.query-metrics
      with:
        query: avg:trace.web.request.duration{service:{{service_name}}}.rollup(avg, 300)
      outputParameters:
      - name: avg_latency
        type: number
        mapping: $.series[0].pointlist[-1][1]
  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: query-metrics
        method: GET
Open in Framework → View in Fleet → datadog-platform-health-monitor.yml

Retrieves active CloudWatch alarms for Chewy's e-commerce infrastructure including API gateways, Lambda functions, and ECS services.

naftiko: '0.5'
info:
  label: AWS CloudWatch E-Commerce Alarms
  description: Retrieves active CloudWatch alarms for Chewy's e-commerce infrastructure including API gateways, Lambda functions, and ECS services.
  tags:
  - monitoring
  - alarms
  - cloudwatch
  - aws
capability:
  exposes:
  - type: mcp
    namespace: cloud-alarms
    port: 8080
    tools:
    - name: get-active-alarms
      description: Fetch active CloudWatch alarms for e-commerce infrastructure.
      inputParameters:
      - name: alarm_prefix
        in: body
        type: string
        description: Alarm name prefix filter.
      call: cloudwatch.describe-alarms
      with:
        alarm_name_prefix: '{{alarm_prefix}}'
        state_value: ALARM
      outputParameters:
      - name: alarms
        type: array
        mapping: $.MetricAlarms
      - name: count
        type: integer
        mapping: $.MetricAlarms.length
  consumes:
  - type: http
    namespace: cloudwatch
    baseUri: https://monitoring.us-east-1.amazonaws.com
    authentication:
      type: aws-sig-v4
      access_key: $secrets.aws_access_key
      secret_key: $secrets.aws_secret_key
    resources:
    - name: alarms
      path: /
      operations:
      - name: describe-alarms
        method: POST
Open in Framework → View in Fleet → aws-cloudwatch-e-commerce-alarms.yml

Sends order delivery status notifications to customers via WhatsApp Business API.

naftiko: '0.5'
info:
  label: WhatsApp Order Delivery Notification
  description: Sends order delivery status notifications to customers via WhatsApp Business API.
  tags:
  - customer-service
  - notifications
  - whatsapp
capability:
  exposes:
  - type: mcp
    namespace: delivery-notifications
    port: 8080
    tools:
    - name: send-delivery-update
      description: Send a delivery status update to a customer via WhatsApp.
      inputParameters:
      - name: phone_number
        in: body
        type: string
        description: Customer phone in E.164 format.
      - name: order_id
        in: body
        type: string
        description: Order ID.
      - name: status
        in: body
        type: string
        description: Delivery status (shipped, out_for_delivery, delivered).
      - name: tracking_url
        in: body
        type: string
        description: Tracking URL.
      call: whatsapp.send-message
      with:
        to: '{{phone_number}}'
        template: delivery_update
        parameters: '["{{order_id}}", "{{status}}", "{{tracking_url}}"]'
      outputParameters:
      - name: message_id
        type: string
        mapping: $.messages[0].id
  consumes:
  - type: http
    namespace: whatsapp
    baseUri: https://graph.facebook.com/v18.0/{{phone_number_id}}
    authentication:
      type: bearer
      token: $secrets.whatsapp_token
    resources:
    - name: messages
      path: /messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → whatsapp-order-delivery-notification.yml

Receives CloudWatch alarms for Chewy's AWS infrastructure and forwards critical alerts to Teams and ServiceNow.

naftiko: '0.5'
info:
  label: CloudWatch Infrastructure Alerting
  description: Receives CloudWatch alarms for Chewy's AWS infrastructure and forwards critical alerts to Teams and ServiceNow.
  tags:
  - devops
  - alerting
  - cloudwatch
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: infra-alerting
    port: 8080
    tools:
    - name: forward-alarm
      description: Forward a CloudWatch alarm to Teams and create a ServiceNow incident.
      inputParameters:
      - name: alarm_name
        in: body
        type: string
        description: Alarm name.
      - name: alarm_description
        in: body
        type: string
        description: Alarm details.
      - name: severity
        in: body
        type: string
        description: Severity level.
      steps:
      - name: notify-teams
        type: call
        call: msteams.send-message
        with:
          channel_id: infra_alerts
          text: 'AWS ALARM [{{severity}}]: {{alarm_name}} - {{alarm_description}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'CloudWatch: {{alarm_name}}'
          category: infrastructure
          urgency: '{{severity}}'
          description: '{{alarm_description}}'
  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-message
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://chewy.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → cloudwatch-infrastructure-alerting.yml

Retrieves current sprint status from Jira for Chewy's platform engineering team.

naftiko: '0.5'
info:
  label: Jira Engineering Sprint Tracker
  description: Retrieves current sprint status from Jira for Chewy's platform engineering team.
  tags:
  - development
  - project-management
  - jira
capability:
  exposes:
  - type: mcp
    namespace: dev-tracking
    port: 8080
    tools:
    - name: get-sprint-progress
      description: Fetch current sprint progress from Jira.
      inputParameters:
      - name: board_id
        in: body
        type: string
        description: Jira board ID.
      call: jira.get-active-sprint
      with:
        board_id: '{{board_id}}'
      outputParameters:
      - name: sprint_name
        type: string
        mapping: $.values[0].name
      - name: start_date
        type: string
        mapping: $.values[0].startDate
      - name: end_date
        type: string
        mapping: $.values[0].endDate
  consumes:
  - type: http
    namespace: jira
    baseUri: https://chewy.atlassian.net/rest/agile/1.0
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: sprints
      path: /board/{{board_id}}/sprint
      inputParameters:
      - name: board_id
        in: path
      operations:
      - name: get-active-sprint
        method: GET
Open in Framework → View in Fleet → jira-engineering-sprint-tracker.yml

Conducts supplier quality audits by pulling defect data from Snowflake, generating audit reports in Google Docs, notifying suppliers via email, and updating Coupa supplier scores.

naftiko: '0.5'
info:
  label: Supplier Quality Audit Orchestrator
  description: Conducts supplier quality audits by pulling defect data from Snowflake, generating audit reports in Google Docs, notifying suppliers via email, and updating Coupa supplier scores.
  tags:
  - quality-assurance
  - supplier-management
  - snowflake
  - google-docs
  - coupa
capability:
  exposes:
  - type: mcp
    namespace: supplier-audit
    port: 8080
    tools:
    - name: conduct-quality-audit
      description: Orchestrate supplier quality audit across Snowflake, Google Docs, email, and Coupa.
      inputParameters:
      - name: supplier_id
        in: body
        type: string
        description: Supplier identifier.
      - name: audit_period
        in: body
        type: string
        description: Audit period (e.g., 2026-Q1).
      steps:
      - name: get-defect-data
        type: call
        call: snowflake.query-defects
        with:
          statement: SELECT * FROM PRODUCT_DEFECTS WHERE supplier_id = '{{supplier_id}}' AND period = '{{audit_period}}'
          warehouse: CHEWY_QUALITY_WH
      - name: generate-report
        type: call
        call: googledocs.create-document
        with:
          title: 'Quality Audit: {{supplier_id}} - {{audit_period}}'
          content: 'Defect rate: {{get-defect-data.defect_rate}}%. Total units: {{get-defect-data.total_units}}. Defective: {{get-defect-data.defective_count}}.'
      - name: notify-supplier
        type: call
        call: ses.send-email
        with:
          to: '{{get-defect-data.supplier_email}}'
          subject: Chewy Quality Audit Results - {{audit_period}}
          body: 'Your quality audit for {{audit_period}} is complete. Defect rate: {{get-defect-data.defect_rate}}%. Report: {{generate-report.url}}.'
      - name: update-score
        type: call
        call: coupa.update-supplier-score
        with:
          supplier_id: '{{supplier_id}}'
          quality_score: '{{get-defect-data.quality_score}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://chewy.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query-defects
        method: POST
  - type: http
    namespace: googledocs
    baseUri: https://docs.googleapis.com/v1
    authentication:
      type: bearer
      token: $secrets.google_docs_token
    resources:
    - name: documents
      path: /documents
      operations:
      - name: create-document
        method: POST
  - type: http
    namespace: ses
    baseUri: https://email.us-east-1.amazonaws.com
    authentication:
      type: aws-sig-v4
      access_key: $secrets.aws_access_key
      secret_key: $secrets.aws_secret_key
    resources:
    - name: emails
      path: /v2/email/outbound-emails
      operations:
      - name: send-email
        method: POST
  - type: http
    namespace: coupa
    baseUri: https://chewy.coupahost.com/api
    authentication:
      type: bearer
      token: $secrets.coupa_api_token
    resources:
    - name: suppliers
      path: /suppliers/{{supplier_id}}
      inputParameters:
      - name: supplier_id
        in: path
      operations:
      - name: update-supplier-score
        method: PUT
Open in Framework → View in Fleet → supplier-quality-audit-orchestrator.yml

Triggers a refresh of the Power BI revenue dashboard tracking daily sales, Autoship revenue, and customer lifetime value.

naftiko: '0.5'
info:
  label: Power BI Revenue Dashboard Refresh
  description: Triggers a refresh of the Power BI revenue dashboard tracking daily sales, Autoship revenue, and customer lifetime value.
  tags:
  - analytics
  - revenue
  - power-bi
capability:
  exposes:
  - type: mcp
    namespace: revenue-reporting
    port: 8080
    tools:
    - name: refresh-revenue-dashboard
      description: Trigger a Power BI dataset refresh for the revenue dashboard.
      inputParameters:
      - name: dataset_id
        in: body
        type: string
        description: Power BI dataset ID.
      call: powerbi.trigger-refresh
      with:
        dataset_id: '{{dataset_id}}'
      outputParameters:
      - 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: refreshes
      path: /datasets/{{dataset_id}}/refreshes
      inputParameters:
      - name: dataset_id
        in: path
      operations:
      - name: trigger-refresh
        method: POST
Open in Framework → View in Fleet → power-bi-revenue-dashboard-refresh.yml

Monitors DynamoDB inventory levels at fulfillment centers, triggers Coupa purchase requisitions when stock drops below thresholds, and notifies supply chain via Teams.

naftiko: '0.5'
info:
  label: Warehouse Inventory Reorder Pipeline
  description: Monitors DynamoDB inventory levels at fulfillment centers, triggers Coupa purchase requisitions when stock drops below thresholds, and notifies supply chain via Teams.
  tags:
  - supply-chain
  - inventory
  - dynamodb
  - coupa
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: inventory-management
    port: 8080
    tools:
    - name: check-and-reorder
      description: Check inventory in DynamoDB, create Coupa requisitions for low stock, and notify supply chain.
      inputParameters:
      - name: fulfillment_center
        in: body
        type: string
        description: Fulfillment center code.
      - name: product_category
        in: body
        type: string
        description: Product category to check.
      steps:
      - name: check-levels
        type: call
        call: dynamodb.query-items
        with:
          table_name: chewy_inventory
          key_condition: fc_code = :fc AND category = :cat
          expression_values: '{":fc": "{{fulfillment_center}}", ":cat": "{{product_category}}"}'
      - name: create-requisition
        type: call
        call: coupa.create-requisition
        with:
          supplier_id: '{{check-levels.preferred_supplier}}'
          items: '{{check-levels.low_stock_items}}'
          ship_to: '{{fulfillment_center}}'
      - name: notify-supply-chain
        type: call
        call: msteams.send-message
        with:
          channel_id: supply_chain_ops
          text: 'Reorder triggered for FC {{fulfillment_center}} ({{product_category}}). Coupa requisition: {{create-requisition.id}}.'
  consumes:
  - type: http
    namespace: dynamodb
    baseUri: https://dynamodb.us-east-1.amazonaws.com
    authentication:
      type: aws-sig-v4
      access_key: $secrets.aws_access_key
      secret_key: $secrets.aws_secret_key
    resources:
    - name: items
      path: /
      operations:
      - name: query-items
        method: POST
  - type: http
    namespace: coupa
    baseUri: https://chewy.coupahost.com/api
    authentication:
      type: bearer
      token: $secrets.coupa_api_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/{{channel_id}}/channels/general/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → warehouse-inventory-reorder-pipeline.yml

Creates a Zoom meeting for vendor partnership discussions and sends calendar invites via Outlook.

naftiko: '0.5'
info:
  label: Zoom Vendor Partnership Meeting
  description: Creates a Zoom meeting for vendor partnership discussions and sends calendar invites via Outlook.
  tags:
  - partnerships
  - meetings
  - zoom
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: vendor-meetings
    port: 8080
    tools:
    - name: schedule-vendor-meeting
      description: Schedule a Zoom meeting with a vendor and send Outlook invites.
      inputParameters:
      - name: vendor_name
        in: body
        type: string
        description: Vendor name.
      - name: date_time
        in: body
        type: string
        description: Meeting date/time.
      - name: attendees
        in: body
        type: string
        description: Attendee emails.
      - name: topic
        in: body
        type: string
        description: Meeting topic.
      steps:
      - name: create-meeting
        type: call
        call: zoom.create-meeting
        with:
          topic: '{{topic}} - {{vendor_name}}'
          start_time: '{{date_time}}'
          duration: 60
      - name: send-invite
        type: call
        call: outlook.create-event
        with:
          subject: '{{topic}} - {{vendor_name}}'
          start_time: '{{date_time}}'
          body: 'Join Zoom: {{create-meeting.join_url}}'
          attendees: '{{attendees}}'
  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: events
      path: /me/events
      operations:
      - name: create-event
        method: POST
Open in Framework → View in Fleet → zoom-vendor-partnership-meeting.yml

Monitors Azure Data Factory pipelines that sync product catalog data from vendors into the data warehouse.

naftiko: '0.5'
info:
  label: Azure Data Factory Product Data ETL
  description: Monitors Azure Data Factory pipelines that sync product catalog data from vendors into the data warehouse.
  tags:
  - data-engineering
  - etl
  - azure-data-factory
capability:
  exposes:
  - type: mcp
    namespace: product-etl
    port: 8080
    tools:
    - name: get-pipeline-status
      description: Check the latest ADF product data pipeline status.
      inputParameters:
      - name: pipeline_name
        in: body
        type: string
        description: ADF pipeline name.
      call: adf.get-pipeline-runs
      with:
        pipeline_name: '{{pipeline_name}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.value[0].status
      - name: duration
        type: string
        mapping: $.value[0].durationInMs
  consumes:
  - type: http
    namespace: adf
    baseUri: https://management.azure.com/subscriptions/{{subscription_id}}/resourceGroups/chewy-data-rg/providers/Microsoft.DataFactory/factories/chewy-adf
    authentication:
      type: bearer
      token: $secrets.azure_mgmt_token
    resources:
    - name: pipeline-runs
      path: /queryPipelineRuns
      operations:
      - name: get-pipeline-runs
        method: POST
Open in Framework → View in Fleet → azure-data-factory-product-data-etl.yml

Checks employee authentication status and application access in Okta for Chewy internal systems.

naftiko: '0.5'
info:
  label: Okta Employee Access Status
  description: Checks employee authentication status and application access in Okta for Chewy internal systems.
  tags:
  - identity
  - authentication
  - okta
capability:
  exposes:
  - type: mcp
    namespace: identity-management
    port: 8080
    tools:
    - name: get-user-status
      description: Check an employee's authentication status in Okta.
      inputParameters:
      - name: user_email
        in: body
        type: string
        description: Employee email address.
      call: okta.get-user
      with:
        login: '{{user_email}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.status
      - name: last_login
        type: string
        mapping: $.lastLogin
  consumes:
  - type: http
    namespace: okta
    baseUri: https://chewy.okta.com/api/v1
    authentication:
      type: bearer
      token: $secrets.okta_api_token
    resources:
    - name: users
      path: /users/{{login}}
      inputParameters:
      - name: login
        in: path
      operations:
      - name: get-user
        method: GET
Open in Framework → View in Fleet → okta-employee-access-status.yml

Reviews marketplace seller performance by querying Snowflake for metrics, evaluating quality scores, updating seller status in Salesforce, and sending performance reports via email.

naftiko: '0.5'
info:
  label: Marketplace Seller Performance Review Pipeline
  description: Reviews marketplace seller performance by querying Snowflake for metrics, evaluating quality scores, updating seller status in Salesforce, and sending performance reports via email.
  tags:
  - marketplace
  - seller-management
  - snowflake
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: seller-performance
    port: 8080
    tools:
    - name: review-seller-performance
      description: Orchestrate seller performance review across Snowflake, scoring, Salesforce, and email.
      inputParameters:
      - name: seller_id
        in: body
        type: string
        description: Marketplace seller ID.
      - name: review_period
        in: body
        type: string
        description: Review period (e.g., 2026-Q1).
      steps:
      - name: get-metrics
        type: call
        call: snowflake.query-seller-metrics
        with:
          statement: SELECT * FROM SELLER_METRICS WHERE seller_id = '{{seller_id}}' AND period = '{{review_period}}'
          warehouse: CHEWY_MARKETPLACE_WH
      - name: calculate-score
        type: call
        call: scoring.evaluate-seller
        with:
          metrics: '{{get-metrics.data}}'
      - name: update-status
        type: call
        call: salesforce.update-seller
        with:
          seller_id: '{{seller_id}}'
          performance_score: '{{calculate-score.score}}'
          tier: '{{calculate-score.tier}}'
      - name: send-report
        type: call
        call: ses.send-email
        with:
          to: '{{get-metrics.seller_email}}'
          subject: 'Chewy Marketplace: Your {{review_period}} Performance Report'
          body: 'Your performance score: {{calculate-score.score}}. Tier: {{calculate-score.tier}}. Full report available in Seller Portal.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://chewy.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query-seller-metrics
        method: POST
  - type: http
    namespace: scoring
    baseUri: https://marketplace-api.chewy.com/v1
    authentication:
      type: bearer
      token: $secrets.marketplace_api_token
    resources:
    - name: scoring
      path: /seller-scoring
      operations:
      - name: evaluate-seller
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://chewy.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: sellers
      path: /sobjects/Seller__c/{{seller_id}}
      inputParameters:
      - name: seller_id
        in: path
      operations:
      - name: update-seller
        method: PATCH
  - type: http
    namespace: ses
    baseUri: https://email.us-east-1.amazonaws.com
    authentication:
      type: aws-sig-v4
      access_key: $secrets.aws_access_key
      secret_key: $secrets.aws_secret_key
    resources:
    - name: emails
      path: /v2/email/outbound-emails
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → marketplace-seller-performance-review-pipeline.yml

Triggers GitHub Actions deployment workflows for Chewy's e-commerce platform and notifies the release team.

naftiko: '0.5'
info:
  label: GitHub Actions Deployment Pipeline
  description: Triggers GitHub Actions deployment workflows for Chewy's e-commerce platform and notifies the release team.
  tags:
  - devops
  - deployment
  - github-actions
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: platform-deployment
    port: 8080
    tools:
    - name: trigger-deployment
      description: Trigger a GitHub Actions deployment and notify the team.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: Repository (org/repo).
      - name: workflow_id
        in: body
        type: string
        description: Workflow ID.
      - name: environment
        in: body
        type: string
        description: Target environment.
      steps:
      - name: dispatch-workflow
        type: call
        call: github.dispatch-workflow
        with:
          owner_repo: '{{repo}}'
          workflow_id: '{{workflow_id}}'
          ref: main
          inputs: '{"environment": "{{environment}}"}'
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          channel_id: releases
          text: 'Deployment triggered: {{repo}} to {{environment}}.'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: workflow-dispatches
      path: /repos/{{owner_repo}}/actions/workflows/{{workflow_id}}/dispatches
      inputParameters:
      - name: owner_repo
        in: path
      - name: workflow_id
        in: path
      operations:
      - name: dispatch-workflow
        method: POST
  - 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
Open in Framework → View in Fleet → github-actions-deployment-pipeline.yml

Processes fraud alerts by checking Stripe for suspicious transactions, running fraud scoring in Databricks, blocking accounts, and creating ServiceNow investigation cases.

naftiko: '0.5'
info:
  label: Fraud Detection Alert Pipeline
  description: Processes fraud alerts by checking Stripe for suspicious transactions, running fraud scoring in Databricks, blocking accounts, and creating ServiceNow investigation cases.
  tags:
  - fraud-detection
  - security
  - stripe
  - databricks
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: fraud-detection
    port: 8080
    tools:
    - name: process-fraud-alert
      description: Orchestrate fraud alert processing across Stripe, Databricks, and ServiceNow.
      inputParameters:
      - name: transaction_id
        in: body
        type: string
        description: Suspicious transaction ID.
      - name: customer_id
        in: body
        type: string
        description: Customer account ID.
      steps:
      - name: get-transaction
        type: call
        call: stripe.get-charge
        with:
          charge_id: '{{transaction_id}}'
      - name: score-fraud
        type: call
        call: databricks.score-fraud
        with:
          transaction: '{{get-transaction}}'
          model: fraud-detection-v3
      - name: block-account
        type: call
        call: accounts.suspend-account
        with:
          customer_id: '{{customer_id}}'
          reason: fraud_investigation
          fraud_score: '{{score-fraud.score}}'
      - name: create-case
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Fraud alert: Customer {{customer_id}} - Score {{score-fraud.score}}'
          category: fraud_investigation
          assigned_group: Fraud_Operations
          description: 'Transaction: {{transaction_id}}

            Amount: {{get-transaction.amount}}

            Fraud score: {{score-fraud.score}}

            Indicators: {{score-fraud.indicators}}'
  consumes:
  - type: http
    namespace: stripe
    baseUri: https://api.stripe.com/v1
    authentication:
      type: bearer
      token: $secrets.stripe_secret_key
    resources:
    - name: charges
      path: /charges/{{charge_id}}
      inputParameters:
      - name: charge_id
        in: path
      operations:
      - name: get-charge
        method: GET
  - type: http
    namespace: databricks
    baseUri: https://chewy.cloud.databricks.com/api/2.0
    authentication:
      type: bearer
      token: $secrets.databricks_token
    resources:
    - name: serving
      path: /serving-endpoints/fraud-detection-v3/invocations
      operations:
      - name: score-fraud
        method: POST
  - type: http
    namespace: accounts
    baseUri: https://accounts-api.chewy.com/v1
    authentication:
      type: bearer
      token: $secrets.accounts_api_token
    resources:
    - name: suspension
      path: /customers/{{customer_id}}/suspend
      inputParameters:
      - name: customer_id
        in: path
      operations:
      - name: suspend-account
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://chewy.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → fraud-detection-alert-pipeline.yml

Syncs pet health records from veterinary partners into Chewy customer profiles, enabling personalized product recommendations based on pet health needs.

naftiko: '0.5'
info:
  label: Pet Health Records Integration Pipeline
  description: Syncs pet health records from veterinary partners into Chewy customer profiles, enabling personalized product recommendations based on pet health needs.
  tags:
  - pet-health
  - data-integration
  - veterinary
capability:
  exposes:
  - type: mcp
    namespace: pet-health-records
    port: 8080
    tools:
    - name: sync-health-records
      description: Sync pet health records from veterinary partner systems.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The Chewy customer identifier.
      - name: pet_id
        in: body
        type: string
        description: The pet profile identifier.
      - name: vet_partner_id
        in: body
        type: string
        description: The veterinary partner system ID.
      call: vet-integration-api.fetch-records
      with:
        customer: '{{customer_id}}'
        pet: '{{pet_id}}'
        partner: '{{vet_partner_id}}'
      outputParameters:
      - name: records_synced
        type: integer
        mapping: $.sync.recordCount
      - name: last_visit_date
        type: string
        mapping: $.sync.lastVisitDate
      - name: health_alerts
        type: array
        mapping: $.sync.alerts
  consumes:
  - type: http
    namespace: vet-integration-api
    baseUri: https://api.chewy.com/vet-connect/v1
    authentication:
      type: bearer
      token: $secrets.chewy_vet_connect_token
    resources:
    - name: records
      path: /customers/{{customer}}/pets/{{pet}}/records
      inputParameters:
      - name: customer
        in: path
      - name: pet
        in: path
      operations:
      - name: fetch-records
        method: GET
Open in Framework → View in Fleet → pet-health-records-integration-pipeline.yml

On product recall, identifies affected customers from Snowflake, removes product from catalog in Elasticsearch, sends recall notices via email, and logs actions in Salesforce.

naftiko: '0.5'
info:
  label: Product Recall Notification Pipeline
  description: On product recall, identifies affected customers from Snowflake, removes product from catalog in Elasticsearch, sends recall notices via email, and logs actions in Salesforce.
  tags:
  - product-safety
  - recall
  - snowflake
  - elasticsearch
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: product-recall
    port: 8080
    tools:
    - name: process-recall
      description: Orchestrate product recall across Snowflake, Elasticsearch, email, and Salesforce.
      inputParameters:
      - name: product_id
        in: body
        type: string
        description: Recalled product SKU.
      - name: recall_reason
        in: body
        type: string
        description: Reason for recall.
      steps:
      - name: find-affected-customers
        type: call
        call: snowflake.query-affected
        with:
          statement: SELECT * FROM ORDER_ITEMS WHERE product_id = '{{product_id}}' AND order_date >= DATEADD(year, -1, CURRENT_DATE)
          warehouse: CHEWY_OPERATIONS_WH
      - name: remove-from-catalog
        type: call
        call: elasticsearch.update-product
        with:
          index: chewy_products
          id: '{{product_id}}'
          body: '{"doc":{"status":"recalled","available":false}}'
      - name: send-notices
        type: call
        call: ses.send-bulk-email
        with:
          recipients: '{{find-affected-customers.customer_emails}}'
          subject: Important Safety Notice - Product Recall
          body: 'A product you recently purchased from Chewy has been recalled: {{product_id}}. Reason: {{recall_reason}}. A full refund will be issued automatically.'
      - name: log-recall
        type: call
        call: salesforce.create-campaign
        with:
          name: 'Recall: {{product_id}}'
          description: '{{recall_reason}}. Affected customers: {{find-affected-customers.count}}.'
          status: In Progress
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://chewy.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query-affected
        method: POST
  - type: http
    namespace: elasticsearch
    baseUri: https://search.chewy.com
    authentication:
      type: bearer
      token: $secrets.elasticsearch_token
    resources:
    - name: products
      path: /{{index}}/_update/{{id}}
      inputParameters:
      - name: index
        in: path
      - name: id
        in: path
      operations:
      - name: update-product
        method: POST
  - type: http
    namespace: ses
    baseUri: https://email.us-east-1.amazonaws.com
    authentication:
      type: aws-sig-v4
      access_key: $secrets.aws_access_key
      secret_key: $secrets.aws_secret_key
    resources:
    - name: bulk-email
      path: /v2/email/outbound-bulk-emails
      operations:
      - name: send-bulk-email
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://chewy.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: campaigns
      path: /sobjects/Campaign
      operations:
      - name: create-campaign
        method: POST
Open in Framework → View in Fleet → product-recall-notification-pipeline.yml

Queries Snowflake for Autoship subscription metrics including retention rates, average order values, and churn signals by pet category.

naftiko: '0.5'
info:
  label: Autoship Subscription Analytics
  description: Queries Snowflake for Autoship subscription metrics including retention rates, average order values, and churn signals by pet category.
  tags:
  - e-commerce
  - subscriptions
  - autoship
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: subscription-analytics
    port: 8080
    tools:
    - name: get-autoship-metrics
      description: Retrieve Autoship subscription performance metrics from Snowflake.
      inputParameters:
      - name: pet_category
        in: body
        type: string
        description: Pet category (dog, cat, fish, bird, reptile, small_pet).
      - name: date_range_start
        in: body
        type: string
        description: Start date.
      - name: date_range_end
        in: body
        type: string
        description: End date.
      call: snowflake.run-query
      with:
        query: SELECT pet_category, COUNT(DISTINCT subscription_id) as active_subs, AVG(order_value) as avg_order_value, COUNT(CASE WHEN status='cancelled' THEN 1 END)::FLOAT / COUNT(*) as churn_rate, AVG(months_active) as avg_lifetime_months FROM autoship_subscriptions WHERE pet_category='{{pet_category}}' AND created_date BETWEEN '{{date_range_start}}' AND '{{date_range_end}}' GROUP BY pet_category
      outputParameters:
      - name: results
        type: array
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://chewy.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → autoship-subscription-analytics.yml

Retrieves customer engagement metrics from HubSpot for pet parent marketing campaigns.

naftiko: '0.5'
info:
  label: HubSpot Pet Parent Engagement Tracker
  description: Retrieves customer engagement metrics from HubSpot for pet parent marketing campaigns.
  tags:
  - marketing
  - engagement
  - hubspot
capability:
  exposes:
  - type: mcp
    namespace: marketing-engagement
    port: 8080
    tools:
    - name: get-campaign-engagement
      description: Fetch campaign engagement data from HubSpot.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: HubSpot campaign ID.
      call: hubspot.get-campaign
      with:
        campaign_id: '{{campaign_id}}'
      outputParameters:
      - name: opens
        type: integer
        mapping: $.counters.open
      - name: clicks
        type: integer
        mapping: $.counters.click
      - name: delivered
        type: integer
        mapping: $.counters.delivered
  consumes:
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: campaigns
      path: /email/public/v1/campaigns/{{campaign_id}}
      inputParameters:
      - name: campaign_id
        in: path
      operations:
      - name: get-campaign
        method: GET
Open in Framework → View in Fleet → hubspot-pet-parent-engagement-tracker.yml

Retrieves a complete customer profile from Salesforce including pet information, order history, Autoship subscriptions, and support cases.

naftiko: '0.5'
info:
  label: Salesforce Customer 360 Viewer
  description: Retrieves a complete customer profile from Salesforce including pet information, order history, Autoship subscriptions, and support cases.
  tags:
  - crm
  - customer-360
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: customer-360
    port: 8080
    tools:
    - name: get-customer-profile
      description: Fetch complete customer profile from Salesforce.
      inputParameters:
      - name: customer_email
        in: body
        type: string
        description: Customer email address.
      call: salesforce.query
      with:
        q: SELECT Id, Name, Email, Pet_Type__c, Pet_Name__c, Has_Autoship__c, Lifetime_Value__c, Last_Order_Date__c, Total_Orders__c, Open_Cases__c FROM Contact WHERE Email = '{{customer_email}}'
      outputParameters:
      - name: customer
        type: object
        mapping: $.records[0]
      - name: found
        type: boolean
        mapping: $.totalSize > 0
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://chewy.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: query
      path: /query
      operations:
      - name: query
        method: GET
Open in Framework → View in Fleet → salesforce-customer-360-viewer.yml

Manages referral partnerships with animal shelters and rescue organizations, tracking adoption events and triggering welcome kit shipments for newly adopted pets.

naftiko: '0.5'
info:
  label: Pet Adoption Partner Referral Pipeline
  description: Manages referral partnerships with animal shelters and rescue organizations, tracking adoption events and triggering welcome kit shipments for newly adopted pets.
  tags:
  - pet-adoption
  - partnerships
  - fulfillment
capability:
  exposes:
  - type: mcp
    namespace: adoption-referral
    port: 8080
    tools:
    - name: process-adoption-referral
      description: Process an adoption referral from a shelter partner and trigger welcome kit.
      inputParameters:
      - name: shelter_partner_id
        in: body
        type: string
        description: The shelter or rescue organization partner ID.
      - name: adopter_email
        in: body
        type: string
        description: Email address of the new pet adopter.
      - name: pet_species
        in: body
        type: string
        description: Species of the adopted pet such as dog or cat.
      - name: pet_size
        in: body
        type: string
        description: Size category of the adopted pet.
      call: adoption-api.create-referral
      with:
        partner: '{{shelter_partner_id}}'
        email: '{{adopter_email}}'
        species: '{{pet_species}}'
        size: '{{pet_size}}'
      outputParameters:
      - name: referral_id
        type: string
        mapping: $.referral.id
      - name: welcome_kit_tracking
        type: string
        mapping: $.referral.kitShipmentTracking
      - name: coupon_code
        type: string
        mapping: $.referral.welcomeCouponCode
  consumes:
  - type: http
    namespace: adoption-api
    baseUri: https://api.chewy.com/partnerships/v1
    authentication:
      type: bearer
      token: $secrets.chewy_partnerships_token
    resources:
    - name: referrals
      path: /adoption-referrals
      operations:
      - name: create-referral
        method: POST
Open in Framework → View in Fleet → pet-adoption-partner-referral-pipeline.yml

Assigns learning paths in Pluralsight for Chewy's technology and customer service teams.

naftiko: '0.5'
info:
  label: Pluralsight Employee Learning Manager
  description: Assigns learning paths in Pluralsight for Chewy's technology and customer service teams.
  tags:
  - training
  - learning
  - pluralsight
capability:
  exposes:
  - type: mcp
    namespace: learning-management
    port: 8080
    tools:
    - name: assign-learning-path
      description: Assign a Pluralsight learning path to an employee.
      inputParameters:
      - name: user_email
        in: body
        type: string
        description: Employee email.
      - name: path_id
        in: body
        type: string
        description: Learning path ID.
      - name: due_date
        in: body
        type: string
        description: Due date.
      call: pluralsight.assign-path
      with:
        email: '{{user_email}}'
        path_id: '{{path_id}}'
        due_date: '{{due_date}}'
      outputParameters:
      - name: assignment_id
        type: string
        mapping: $.id
  consumes:
  - type: http
    namespace: pluralsight
    baseUri: https://api.pluralsight.com/api/v1
    authentication:
      type: bearer
      token: $secrets.pluralsight_token
    resources:
    - name: assignments
      path: /learning-paths/{{path_id}}/assignments
      inputParameters:
      - name: path_id
        in: path
      operations:
      - name: assign-path
        method: POST
Open in Framework → View in Fleet → pluralsight-employee-learning-manager.yml

Queries Snowflake for compliance metrics, creates SharePoint report, and notifies compliance team via Teams.

naftiko: '0.5'
info:
  label: Quarterly Compliance Audit Report
  description: Queries Snowflake for compliance metrics, creates SharePoint report, and notifies compliance team via Teams.
  tags:
  - compliance
  - snowflake
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: compliance
    port: 8080
    tools:
    - name: generate-report
      description: Given quarter and year, query metrics and notify.
      inputParameters:
      - name: fiscal_quarter
        in: body
        type: string
        description: Quarter.
      - name: fiscal_year
        in: body
        type: string
        description: Year.
      steps:
      - name: query
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT control_area, pass_count, fail_count FROM COMPLIANCE.QUARTERLY_METRICS WHERE fiscal_quarter = '{{fiscal_quarter}}' AND fiscal_year = '{{fiscal_year}}'
      - name: create-report
        type: call
        call: sharepoint.create-document
        with:
          name: Compliance-{{fiscal_quarter}}-{{fiscal_year}}.xlsx
          data: '{{query.results}}'
      - name: notify
        type: call
        call: msteams.send-channel-message
        with:
          team_id: compliance-team
          channel: general
          text: 'Compliance report for {{fiscal_quarter}} {{fiscal_year}}: {{create-report.web_url}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://costco.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: sharepoint
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: documents
      path: /sites/costco.sharepoint.com/drive/root:/{{name}}:/content
      inputParameters:
      - name: name
        in: path
      operations:
      - name: create-document
        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}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → quarterly-compliance-audit-report.yml

Retrieves material master data from SAP for a given material number including description, category, and stock levels.

naftiko: '0.5'
info:
  label: SAP Material Master Lookup
  description: Retrieves material master data from SAP for a given material number including description, category, and stock levels.
  tags:
  - inventory
  - sap
  - material-management
capability:
  exposes:
  - type: mcp
    namespace: material-master
    port: 8080
    tools:
    - name: get-material
      description: Look up material master record by material number.
      inputParameters:
      - name: material_number
        in: body
        type: string
        description: SAP material number.
      call: sap.get-material
      with:
        material_number: '{{material_number}}'
      outputParameters:
      - name: description
        type: string
        mapping: $.d.MaterialDescription
      - name: category
        type: string
        mapping: $.d.MaterialGroup
      - name: stock_quantity
        type: number
        mapping: $.d.UnrestrictedStock
  consumes:
  - type: http
    namespace: sap
    baseUri: https://costco-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: materials
      path: /A_Material('{{material_number}}')
      inputParameters:
      - name: material_number
        in: path
      operations:
      - name: get-material
        method: GET
Open in Framework → View in Fleet → sap-material-master-lookup.yml

When Okta detects suspicious login, creates security incident, suspends sessions, and alerts SOC.

naftiko: '0.5'
info:
  label: Okta Suspicious Login Handler
  description: When Okta detects suspicious login, creates security incident, suspends sessions, and alerts SOC.
  tags:
  - security
  - okta
  - servicenow
  - slack
capability:
  exposes:
  - type: mcp
    namespace: threat-response
    port: 8080
    tools:
    - name: handle-suspicious-login
      description: Given event ID and user, create incident, suspend sessions, and alert SOC.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: Okta event ID.
      - name: user_login
        in: body
        type: string
        description: User email.
      steps:
      - name: get-event
        type: call
        call: okta.get-event
        with:
          event_id: '{{event_id}}'
      - name: suspend-sessions
        type: call
        call: okta.clear-sessions
        with:
          user_login: '{{user_login}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          category: security
          urgency: 1
          short_description: 'Suspicious login: {{user_login}} from {{get-event.client_ip}}'
      - name: alert
        type: call
        call: slack.post-message
        with:
          channel: soc-alerts
          text: 'Suspicious login: {{user_login}} from {{get-event.client_ip}}. Incident: {{create-incident.number}}.'
  consumes:
  - type: http
    namespace: okta
    baseUri: https://costco.okta.com/api/v1
    authentication:
      type: bearer
      token: $secrets.okta_token
    resources:
    - name: events
      path: /logs?filter=uuid+eq+"{{event_id}}"
      inputParameters:
      - name: event_id
        in: query
      operations:
      - name: get-event
        method: GET
    - name: sessions
      path: /users/{{user_login}}/sessions
      inputParameters:
      - name: user_login
        in: path
      operations:
      - name: clear-sessions
        method: DELETE
  - type: http
    namespace: servicenow
    baseUri: https://costco.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → okta-suspicious-login-handler.yml

When an employee's role changes in Workday, updates Okta group memberships to match the new role's access entitlements.

naftiko: '0.5'
info:
  label: Workday Role Change Access Provisioning
  description: When an employee's role changes in Workday, updates Okta group memberships to match the new role's access entitlements.
  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 reflect 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: /costco/workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: okta
    baseUri: https://costco.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
Open in Framework → View in Fleet → workday-role-change-access-provisioning.yml

Queries Snowflake for weekly warehouse throughput metrics and posts digest to leadership Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Weekly Warehouse Performance Digest
  description: Queries Snowflake for weekly warehouse throughput metrics and posts digest to leadership Microsoft Teams channel.
  tags:
  - analytics
  - retail
  - snowflake
  - microsoft-teams
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: warehouse-reporting
    port: 8080
    tools:
    - name: publish-warehouse-performance
      description: Given a region and week ending date, query Snowflake and post digest.
      inputParameters:
      - name: region
        in: body
        type: string
        description: Region code.
      - name: week_ending
        in: body
        type: string
        description: Week ending date.
      steps:
      - name: query-performance
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT warehouse_id, SUM(net_sales) as total_sales, SUM(member_visits) as visits FROM RETAIL.WEEKLY_METRICS WHERE region = '{{region}}' AND week_ending = '{{week_ending}}' GROUP BY warehouse_id ORDER BY total_sales DESC
      - name: post-digest
        type: call
        call: msteams.send-channel-message
        with:
          team_id: '{{region}}-leadership'
          channel: performance
          text: 'Weekly warehouse performance for {{region}} ending {{week_ending}}: {{query-performance.row_count}} locations reported.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://costco.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: 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
Open in Framework → View in Fleet → weekly-warehouse-performance-digest.yml

Logs a quality issue in SAP, creates a Jira investigation ticket, notifies the supplier via Salesforce case, and alerts the quality team in Slack.

naftiko: '0.5'
info:
  label: Supplier Quality Issue Pipeline
  description: Logs a quality issue in SAP, creates a Jira investigation ticket, notifies the supplier via Salesforce case, and alerts the quality team in Slack.
  tags:
  - quality
  - sap
  - jira
  - salesforce
  - slack
capability:
  exposes:
  - type: mcp
    namespace: supplier-quality
    port: 8080
    tools:
    - name: report-quality-issue
      description: Orchestrate supplier quality issue reporting and tracking.
      inputParameters:
      - name: material_number
        in: body
        type: string
        description: SAP material number.
      - name: supplier_name
        in: body
        type: string
        description: Supplier name.
      - name: defect_description
        in: body
        type: string
        description: Description of quality defect.
      steps:
      - name: log-in-sap
        type: call
        call: sap.create-quality-notification
        with:
          material: '{{material_number}}'
          notification_type: Q2
          description: '{{defect_description}}'
      - name: create-jira
        type: call
        call: jira.create-issue
        with:
          project: QUALITY
          summary: 'Quality issue: {{material_number}} from {{supplier_name}}'
          description: '{{defect_description}}. SAP QN: {{log-in-sap.notification_number}}.'
          issuetype: Bug
      - name: create-supplier-case
        type: call
        call: salesforce.create-case
        with:
          subject: 'Quality issue: {{material_number}}'
          account_name: '{{supplier_name}}'
          description: '{{defect_description}}'
      - name: notify-quality
        type: call
        call: slack.post-message
        with:
          channel: quality-assurance
          text: 'Quality issue reported: {{material_number}} from {{supplier_name}}. SAP: {{log-in-sap.notification_number}}. Jira: {{create-jira.key}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://costco-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: jira
    baseUri: https://costco.atlassian.net/rest/api/3
    authentication:
      type: 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://costco.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: cases
      path: /sobjects/Case
      operations:
      - name: create-case
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → supplier-quality-issue-pipeline.yml

Returns a stage-by-stage candidate summary for an open Workday job requisition for recruiting team oversight.

naftiko: '0.5'
info:
  label: Workday Recruiting Pipeline Summary
  description: Returns a stage-by-stage candidate summary for an open Workday job requisition for recruiting team oversight.
  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 stage-by-stage candidate counts and the job title. Use to track open position pipeline health.
      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: open_since
        type: string
        mapping: $.jobRequisition.openDate
  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: /costco/jobRequisitions/{{requisitionId}}
      inputParameters:
      - name: requisitionId
        in: path
      operations:
      - name: get-job-requisition
        method: GET
Open in Framework → View in Fleet → workday-recruiting-pipeline-summary.yml

When a new vendor is approved, creates SAP vendor master, opens ServiceNow ticket, and notifies procurement via Slack.

naftiko: '0.5'
info:
  label: New Vendor Onboarding Orchestrator
  description: When a new vendor is approved, creates SAP vendor master, opens ServiceNow ticket, and notifies procurement via Slack.
  tags:
  - procurement
  - sap
  - servicenow
  - slack
  - vendor-management
capability:
  exposes:
  - type: mcp
    namespace: vendor-ops
    port: 8080
    tools:
    - name: onboard-vendor
      description: Given vendor details, create SAP record, ServiceNow ticket, and notify.
      inputParameters:
      - name: vendor_name
        in: body
        type: string
        description: Vendor name.
      - name: vendor_tax_id
        in: body
        type: string
        description: Tax ID.
      - name: category
        in: body
        type: string
        description: Category.
      steps:
      - name: create-vendor
        type: call
        call: sap.create-vendor
        with:
          vendor_name: '{{vendor_name}}'
          tax_id: '{{vendor_tax_id}}'
      - name: open-ticket
        type: call
        call: servicenow.create-request
        with:
          category: vendor_onboarding
          short_description: 'Vendor onboarding: {{vendor_name}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: procurement-onboarding
          text: 'Vendor {{vendor_name}} onboarded. SAP: {{create-vendor.vendor_id}}. Ticket: {{open-ticket.number}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://costco-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
      operations:
      - name: create-vendor
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://costco.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: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → new-vendor-onboarding-orchestrator.yml

When a price change is approved in SAP, updates Snowflake catalog and notifies merchandising via Slack.

naftiko: '0.5'
info:
  label: Store Price Change Propagation
  description: When a price change is approved in SAP, updates Snowflake catalog and notifies merchandising via Slack.
  tags:
  - merchandising
  - sap
  - snowflake
  - slack
  - pricing
capability:
  exposes:
  - type: mcp
    namespace: merchandising
    port: 8080
    tools:
    - name: propagate-price-change
      description: Given a material number and new price, update catalog and notify.
      inputParameters:
      - name: material_number
        in: body
        type: string
        description: SAP material number.
      - name: new_price
        in: body
        type: string
        description: New price.
      - name: effective_date
        in: body
        type: string
        description: Effective date.
      steps:
      - name: get-material
        type: call
        call: sap.get-material
        with:
          material_number: '{{material_number}}'
      - name: update-catalog
        type: call
        call: snowflake.execute-statement
        with:
          statement: UPDATE RETAIL.PRODUCT_CATALOG SET retail_price = {{new_price}}, price_effective_date = '{{effective_date}}' WHERE material_number = '{{material_number}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: merchandising-pricing
          text: 'Price change: {{get-material.description}} ({{material_number}}): ${{new_price}} effective {{effective_date}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://costco-s4.sap.com/sap/opu/odata/sap/API_PRODUCT_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: products
      path: /A_Product('{{material_number}}')
      inputParameters:
      - name: material_number
        in: path
      operations:
      - name: get-material
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://costco.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: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → store-price-change-propagation.yml

Registers a new supplier in SAP Ariba, creates the vendor master in SAP S/4HANA, and notifies the procurement team in Teams.

naftiko: '0.5'
info:
  label: SAP Ariba Supplier Onboarding
  description: Registers a new supplier in SAP Ariba, creates the vendor master in SAP S/4HANA, and notifies the procurement team in 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 name, email, and country, register in SAP Ariba, create the SAP vendor master, 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.
      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://costco-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
Open in Framework → View in Fleet → sap-ariba-supplier-onboarding.yml

Queries Snowflake for inventory discrepancies, creates a recount task in Jira, notifies warehouse managers via Slack, and updates SAP inventory records.

naftiko: '0.5'
info:
  label: Warehouse Inventory Recount Pipeline
  description: Queries Snowflake for inventory discrepancies, creates a recount task in Jira, notifies warehouse managers via Slack, and updates SAP inventory records.
  tags:
  - inventory
  - snowflake
  - jira
  - slack
  - sap
capability:
  exposes:
  - type: mcp
    namespace: inventory-recount
    port: 8080
    tools:
    - name: trigger-recount
      description: Orchestrate inventory recount for discrepant items.
      inputParameters:
      - name: warehouse_id
        in: body
        type: string
        description: Warehouse ID.
      - name: threshold_pct
        in: body
        type: number
        description: Discrepancy threshold percentage.
      steps:
      - name: find-discrepancies
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT sku, system_qty, physical_qty, ABS(system_qty - physical_qty)/system_qty*100 as variance_pct FROM INVENTORY.CYCLE_COUNT WHERE warehouse_id = '{{warehouse_id}}' AND variance_pct > {{threshold_pct}}
      - name: create-task
        type: call
        call: jira.create-issue
        with:
          project: WHSE
          summary: 'Inventory recount: Warehouse {{warehouse_id}} - {{find-discrepancies.row_count}} items'
          description: Items exceeding {{threshold_pct}}% variance require recount.
          issuetype: Task
      - name: notify-manager
        type: call
        call: slack.post-message
        with:
          channel: warehouse-{{warehouse_id}}-ops
          text: 'Recount required: {{find-discrepancies.row_count}} items above {{threshold_pct}}% variance. Jira: {{create-task.key}}'
      - name: flag-in-sap
        type: call
        call: sap.update-inventory-flag
        with:
          warehouse_id: '{{warehouse_id}}'
          flag: recount_pending
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://costco.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://costco.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
  - type: http
    namespace: sap
    baseUri: https://costco-s4.sap.com/sap/opu/odata/sap/MM_INV_MGMT_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: inventory
      path: /A_InventoryFlag
      operations:
      - name: update-inventory-flag
        method: POST
Open in Framework → View in Fleet → warehouse-inventory-recount-pipeline.yml

Retrieves group membership details for a user in Okta by email address.

naftiko: '0.5'
info:
  label: Okta Group Membership Lookup
  description: Retrieves group membership details for a user in Okta by email address.
  tags:
  - identity
  - okta
  - access-management
capability:
  exposes:
  - type: mcp
    namespace: okta-groups
    port: 8080
    tools:
    - name: get-user-groups
      description: Look up Okta group memberships for a user.
      inputParameters:
      - name: user_email
        in: body
        type: string
        description: User email address.
      call: okta.get-user-groups
      with:
        user_id: '{{user_email}}'
      outputParameters:
      - name: groups
        type: array
        mapping: $.groups
  consumes:
  - type: http
    namespace: okta
    baseUri: https://costco.okta.com/api/v1
    authentication:
      type: apiKey
      key: $secrets.okta_api_token
    resources:
    - name: users
      path: /users/{{user_id}}/groups
      inputParameters:
      - name: user_id
        in: path
      operations:
      - name: get-user-groups
        method: GET
Open in Framework → View in Fleet → okta-group-membership-lookup.yml

Compares Workday payroll results with budgets in Snowflake and alerts payroll team via Teams.

naftiko: '0.5'
info:
  label: Workday Payroll Variance Alert
  description: Compares Workday payroll results with budgets in Snowflake and alerts payroll team via Teams.
  tags:
  - finance
  - hr
  - workday
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: payroll-ops
    port: 8080
    tools:
    - name: check-payroll-variance
      description: Given a pay period, compare payroll with budgets and alert.
      inputParameters:
      - name: pay_period
        in: body
        type: string
        description: Pay period.
      steps:
      - name: get-payroll
        type: call
        call: workday.get-payroll-results
        with:
          pay_period: '{{pay_period}}'
      - name: log-variance
        type: call
        call: snowflake.execute-statement
        with:
          statement: INSERT INTO FINANCE.PAYROLL_VARIANCE (pay_period, total_payroll) VALUES ('{{pay_period}}', {{get-payroll.total_amount}})
      - name: alert
        type: call
        call: msteams.send-channel-message
        with:
          team_id: payroll-team
          channel: variance-alerts
          text: 'Payroll variance for {{pay_period}}: ${{get-payroll.total_amount}}.'
  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: /costco/payroll/results
      operations:
      - name: get-payroll-results
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://costco.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: 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
Open in Framework → View in Fleet → workday-payroll-variance-alert.yml

Lists channels in a Microsoft Teams team.

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

When a SAP invoice has a discrepancy, creates a Jira ticket and notifies the buyer via Microsoft Teams.

naftiko: '0.5'
info:
  label: Vendor Invoice Discrepancy Handler
  description: When a SAP invoice has a discrepancy, creates a Jira ticket and notifies the buyer via Microsoft Teams.
  tags:
  - procurement
  - finance
  - sap
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: procurement-ops
    port: 8080
    tools:
    - name: handle-invoice-discrepancy
      description: Given an invoice number, create Jira ticket and notify buyer.
      inputParameters:
      - name: invoice_number
        in: body
        type: string
        description: SAP invoice number.
      - name: buyer_email
        in: body
        type: string
        description: Buyer email.
      steps:
      - name: get-invoice
        type: call
        call: sap.get-invoice
        with:
          invoice_number: '{{invoice_number}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: PROC
          issue_type: Task
          summary: 'Invoice discrepancy: {{invoice_number}}'
      - name: notify-buyer
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{buyer_email}}'
          text: 'Invoice {{invoice_number}} discrepancy: {{get-invoice.variance_amount}}. Jira: {{create-ticket.key}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://costco-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: jira
    baseUri: https://costco.atlassian.net/rest/api/3
    authentication:
      type: 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: chats
      path: /users/{{recipient_upn}}/chats
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → vendor-invoice-discrepancy-handler.yml

When a Salesforce B2B opportunity is marked Closed Won, creates a matching SAP S/4HANA sales order and notifies the account team in Teams.

naftiko: '0.5'
info:
  label: Salesforce Opportunity to SAP Sales Order Sync
  description: When a Salesforce B2B opportunity is marked Closed Won, creates a matching SAP S/4HANA sales order and notifies the account team in Teams.
  tags:
  - crm
  - sales
  - salesforce
  - sap
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: crm-opportunity
    port: 8080
    tools:
    - name: sync-closed-opportunity
      description: Given a Salesforce opportunity ID that closed Won, create an SAP S/4HANA sales order and notify the account team in Teams.
      inputParameters:
      - name: opportunity_id
        in: body
        type: string
        description: The Salesforce opportunity record ID.
      steps:
      - name: get-opportunity
        type: call
        call: salesforce.get-opportunity
        with:
          opportunity_id: '{{opportunity_id}}'
      - name: create-sales-order
        type: call
        call: sap-sd.create-sales-order
        with:
          customerName: '{{get-opportunity.AccountName}}'
          amount: '{{get-opportunity.Amount}}'
          currency: '{{get-opportunity.CurrencyIsoCode}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channelId: sales-team
          message: Opportunity {{get-opportunity.Name}} Closed Won. SAP Sales Order {{create-sales-order.salesOrderId}} created.
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://costco.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://costco-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/channels/{{channelId}}/messages
      inputParameters:
      - name: channelId
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → salesforce-opportunity-to-sap-sales-order-sync.yml

When an expense report is submitted in SAP Concur, retrieves the details and routes the approval request to the manager via Microsoft Teams.

naftiko: '0.5'
info:
  label: SAP Concur Expense Report Approval
  description: When an expense report is submitted in SAP Concur, retrieves the details and routes the approval request to the manager 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 and manager email, retrieve report details and send an approval request to the 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: The Microsoft Teams UPN 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}} 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
Open in Framework → View in Fleet → sap-concur-expense-report-approval.yml

Creates a safety incident in ServiceNow, files a Workday workers comp notification, notifies safety team via Slack, and creates a follow-up task in Jira.

naftiko: '0.5'
info:
  label: Warehouse Safety Incident Pipeline
  description: Creates a safety incident in ServiceNow, files a Workday workers comp notification, notifies safety team via Slack, and creates a follow-up task in Jira.
  tags:
  - safety
  - servicenow
  - workday
  - slack
  - jira
capability:
  exposes:
  - type: mcp
    namespace: safety-incident
    port: 8080
    tools:
    - name: report-safety-incident
      description: Orchestrate safety incident reporting and follow-up.
      inputParameters:
      - name: warehouse_id
        in: body
        type: string
        description: Warehouse ID.
      - name: employee_id
        in: body
        type: string
        description: Employee involved.
      - name: incident_description
        in: body
        type: string
        description: Description of the incident.
      steps:
      - name: create-incident
        type: call
        call: servicenow.create-record
        with:
          table: u_safety_incident
          warehouse_id: '{{warehouse_id}}'
          employee_id: '{{employee_id}}'
          description: '{{incident_description}}'
          urgency: '1'
      - name: notify-workday
        type: call
        call: workday.create-safety-event
        with:
          employee_id: '{{employee_id}}'
          event_type: workplace_incident
          description: '{{incident_description}}'
      - name: alert-safety-team
        type: call
        call: slack.post-message
        with:
          channel: safety-alerts
          text: 'SAFETY INCIDENT: Warehouse {{warehouse_id}}. Employee: {{employee_id}}. {{incident_description}}. ServiceNow: {{create-incident.number}}.'
      - name: create-followup
        type: call
        call: jira.create-issue
        with:
          project: SAFETY
          summary: 'Safety follow-up: Warehouse {{warehouse_id}} - {{create-incident.number}}'
          description: '{{incident_description}}. Root cause analysis required.'
          issuetype: Task
          priority: High
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://costco.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://wd5-impl-services1.workday.com/ccx/service/costco
    authentication:
      type: basic
      username: $secrets.workday_user
      password: $secrets.workday_password
    resources:
    - name: safety
      path: /Safety/Safety_Event
      operations:
      - name: create-safety-event
        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: jira
    baseUri: https://costco.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → warehouse-safety-incident-pipeline.yml

When an employee is promoted in Workday, updates Okta groups and creates ServiceNow access request.

naftiko: '0.5'
info:
  label: Workday Promotion to Okta Role Update
  description: When an employee is promoted in Workday, updates Okta groups and creates ServiceNow access request.
  tags:
  - hr
  - security
  - workday
  - okta
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: access-mgmt
    port: 8080
    tools:
    - name: sync-promotion-access
      description: Given a worker ID, update Okta groups and create access request.
      inputParameters:
      - name: worker_id
        in: body
        type: string
        description: Workday worker ID.
      steps:
      - name: get-worker
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{worker_id}}'
      - name: update-okta
        type: call
        call: okta.update-groups
        with:
          user_login: '{{get-worker.work_email}}'
          new_groups: '{{get-worker.role_groups}}'
      - name: create-request
        type: call
        call: servicenow.create-request
        with:
          category: access_management
          short_description: 'Access update: {{get-worker.full_name}} — {{get-worker.job_title}}'
  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: /costco/workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: okta
    baseUri: https://costco.okta.com/api/v1
    authentication:
      type: bearer
      token: $secrets.okta_token
    resources:
    - name: groups
      path: /users/{{user_login}}/groups
      inputParameters:
      - name: user_login
        in: path
      operations:
      - name: update-groups
        method: PUT
  - type: http
    namespace: servicenow
    baseUri: https://costco.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
Open in Framework → View in Fleet → workday-promotion-to-okta-role-update.yml

Retrieves Okta users with privileged group assignments for a quarterly access review and uploads the report to SharePoint.

naftiko: '0.5'
info:
  label: Okta User Access Review
  description: Retrieves Okta users with privileged group assignments for a quarterly access review and uploads 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 and SharePoint site ID, retrieve all active group members and upload the access review report to SharePoint.
      inputParameters:
      - name: group_id
        in: body
        type: string
        description: The Okta group ID to review for privileged access.
      - 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://costco.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
Open in Framework → View in Fleet → okta-user-access-review.yml

When a requisition is created, validates SAP budget, creates ServiceNow approval, and notifies hiring manager.

naftiko: '0.5'
info:
  label: Workday Job Requisition Approval
  description: When a requisition is created, validates SAP budget, creates ServiceNow approval, and notifies hiring manager.
  tags:
  - hr
  - workday
  - sap
  - servicenow
  - microsoft-teams
  - recruiting
capability:
  exposes:
  - type: mcp
    namespace: recruiting
    port: 8080
    tools:
    - name: process-requisition
      description: Given a requisition ID, validate budget and create approval.
      inputParameters:
      - name: requisition_id
        in: body
        type: string
        description: Requisition ID.
      steps:
      - name: get-req
        type: call
        call: workday.get-requisition
        with:
          requisition_id: '{{requisition_id}}'
      - name: check-budget
        type: call
        call: sap.get-cost-center-budget
        with:
          cost_center: '{{get-req.cost_center}}'
      - name: create-approval
        type: call
        call: servicenow.create-request
        with:
          category: hr_recruiting
          short_description: 'Requisition: {{get-req.job_title}}'
      - name: notify
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-req.hiring_manager_email}}'
          text: 'Requisition for {{get-req.job_title}} submitted. Budget: {{check-budget.remaining}}. Ticket: {{create-approval.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: requisitions
      path: /costco/jobRequisitions/{{requisition_id}}
      inputParameters:
      - name: requisition_id
        in: path
      operations:
      - name: get-requisition
        method: GET
  - type: http
    namespace: sap
    baseUri: https://costco-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: servicenow
    baseUri: https://costco.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-message
        method: POST
Open in Framework → View in Fleet → workday-job-requisition-approval.yml

When traffic drops, queries Snowflake, creates Jira ticket, and alerts digital team via Slack.

naftiko: '0.5'
info:
  label: Adobe Analytics Traffic Drop Investigation
  description: When traffic drops, queries Snowflake, creates Jira ticket, and alerts digital team via Slack.
  tags:
  - analytics
  - adobe-analytics
  - snowflake
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: digital-ops
    port: 8080
    tools:
    - name: investigate-traffic-drop
      description: Given report suite and date, investigate and alert.
      inputParameters:
      - name: report_suite
        in: body
        type: string
        description: Report suite.
      - name: drop_date
        in: body
        type: string
        description: Date.
      - name: drop_percentage
        in: body
        type: string
        description: Drop percentage.
      steps:
      - name: query-data
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT channel, SUM(sessions) as sessions FROM DIGITAL.WEB_ANALYTICS WHERE report_date = '{{drop_date}}' GROUP BY channel ORDER BY sessions DESC
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: DIGITAL
          issue_type: Task
          summary: 'Traffic drop: {{drop_percentage}}% on {{drop_date}}'
      - name: alert
        type: call
        call: slack.post-message
        with:
          channel: digital-alerts
          text: 'Traffic drop {{drop_percentage}}% on {{drop_date}}. Jira: {{create-ticket.key}}.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://costco.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://costco.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → adobe-analytics-traffic-drop-investigation.yml

When a pod enters CrashLoopBackOff, collects logs via Datadog, creates ServiceNow incident, and pages on-call.

naftiko: '0.5'
info:
  label: Kubernetes Pod CrashLoop Responder
  description: When a pod enters CrashLoopBackOff, collects logs via Datadog, creates ServiceNow incident, and pages on-call.
  tags:
  - infrastructure
  - kubernetes
  - datadog
  - servicenow
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: k8s-ops
    port: 8080
    tools:
    - name: handle-crashloop
      description: Given namespace and pod, collect logs, create incident, and page on-call.
      inputParameters:
      - name: namespace
        in: body
        type: string
        description: Namespace.
      - name: pod_name
        in: body
        type: string
        description: Pod name.
      - name: cluster
        in: body
        type: string
        description: Cluster.
      steps:
      - name: get-logs
        type: call
        call: datadog.search-logs
        with:
          query: kube_namespace:{{namespace}} pod_name:{{pod_name}}
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          category: infrastructure
          urgency: 1
          short_description: 'CrashLoop: {{pod_name}} in {{namespace}}/{{cluster}}'
      - name: page-oncall
        type: call
        call: pagerduty.create-incident
        with:
          service_id: '{{cluster}}-k8s'
          title: 'CrashLoop: {{pod_name}}'
          urgency: high
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: apiKey
      key: $secrets.datadog_api_key
    resources:
    - name: logs
      path: /logs/events/search
      operations:
      - name: search-logs
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://costco.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: incidents
      path: /incidents
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → kubernetes-pod-crashloop-responder.yml

When a Datadog monitor fires for a production infrastructure issue, creates a ServiceNow P1 incident and pages the on-call team in Teams.

naftiko: '0.5'
info:
  label: Datadog Infrastructure Alert to ServiceNow
  description: When a Datadog monitor fires for a production infrastructure issue, creates a ServiceNow P1 incident and pages the on-call team in Teams.
  tags:
  - observability
  - itsm
  - datadog
  - servicenow
  - microsoft-teams
  - incident-response
capability:
  exposes:
  - type: mcp
    namespace: infra-ops
    port: 8080
    tools:
    - name: handle-infra-alert
      description: Given a Datadog monitor ID and alert message, create a ServiceNow P1 incident and page the on-call team in Teams.
      inputParameters:
      - name: monitor_id
        in: body
        type: string
        description: The Datadog monitor ID that triggered.
      - 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: 'Infra alert: {{monitor_name}}'
          description: '{{alert_message}}

            Monitor: {{monitor_id}}

            State: {{get-monitor.overall_state}}'
          urgency: '1'
      - name: page-oncall
        type: call
        call: msteams.post-channel-message
        with:
          channelId: infra-oncall
          message: 'P1 Alert: {{monitor_name}} | ServiceNow: {{create-incident.number}} | {{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://costco.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
Open in Framework → View in Fleet → datadog-infrastructure-alert-to-servicenow.yml

Queries Snowflake for suspicious member transactions, creates a Salesforce case, flags the account in Okta, and notifies loss prevention via Microsoft Teams.

naftiko: '0.5'
info:
  label: Member Fraud Detection Pipeline
  description: Queries Snowflake for suspicious member transactions, creates a Salesforce case, flags the account in Okta, and notifies loss prevention via Microsoft Teams.
  tags:
  - fraud
  - snowflake
  - salesforce
  - okta
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: fraud-detection
    port: 8080
    tools:
    - name: investigate-fraud
      description: Orchestrate fraud detection and account flagging.
      inputParameters:
      - name: member_id
        in: body
        type: string
        description: Member ID.
      - name: alert_type
        in: body
        type: string
        description: Type of fraud alert.
      steps:
      - name: query-transactions
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT transaction_id, amount, warehouse_id, transaction_date FROM SECURITY.SUSPICIOUS_TRANSACTIONS WHERE member_id = '{{member_id}}' AND alert_type = '{{alert_type}}'
      - name: create-case
        type: call
        call: salesforce.create-case
        with:
          subject: 'Fraud alert: Member {{member_id}} - {{alert_type}}'
          description: 'Suspicious transactions: {{query-transactions.row_count}}.'
          priority: High
      - name: flag-account
        type: call
        call: okta.update-user
        with:
          user_id: '{{member_id}}'
          profile_status: fraud_review
      - name: notify-lp
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.loss_prevention_channel
          text: 'Fraud alert: Member {{member_id}} ({{alert_type}}). {{query-transactions.row_count}} suspicious transactions. Case: {{create-case.id}}.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://costco.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: salesforce
    baseUri: https://costco.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: okta
    baseUri: https://costco.okta.com/api/v1
    authentication:
      type: apiKey
      key: $secrets.okta_api_token
    resources:
    - name: users
      path: /users/{{user_id}}
      inputParameters:
      - name: user_id
        in: path
      operations:
      - name: update-user
        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: post-channel-message
        method: POST
Open in Framework → View in Fleet → member-fraud-detection-pipeline.yml

When AWS cost anomaly is detected, creates Jira ticket and alerts FinOps Slack.

naftiko: '0.5'
info:
  label: Cloud Cost Spike Investigation
  description: When AWS cost anomaly is detected, creates Jira ticket and alerts FinOps Slack.
  tags:
  - cloud
  - finops
  - aws
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: finops
    port: 8080
    tools:
    - name: investigate-cost-spike
      description: Given an AWS account and date, investigate and alert.
      inputParameters:
      - name: aws_account_id
        in: body
        type: string
        description: AWS account ID.
      - name: anomaly_date
        in: body
        type: string
        description: Date YYYY-MM-DD.
      steps:
      - name: get-cost
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT service, SUM(cost) as total FROM FINOPS.AWS_BILLING WHERE account_id = '{{aws_account_id}}' AND usage_date = '{{anomaly_date}}' GROUP BY service ORDER BY total DESC
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: FINOPS
          issue_type: Task
          summary: 'Cost anomaly: {{aws_account_id}} on {{anomaly_date}}'
      - name: alert
        type: call
        call: slack.post-message
        with:
          channel: finops-alerts
          text: 'Cost spike in {{aws_account_id}} on {{anomaly_date}}. Jira: {{create-ticket.key}}.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://costco.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://costco.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → cloud-cost-spike-investigation.yml

Retrieves vendor account details and contract status from Salesforce.

naftiko: '0.5'
info:
  label: Salesforce Vendor Account Lookup
  description: Retrieves vendor account details and contract status from Salesforce.
  tags:
  - vendor-management
  - salesforce
  - procurement
capability:
  exposes:
  - type: mcp
    namespace: vendor-account
    port: 8080
    tools:
    - name: get-vendor-account
      description: Look up vendor account details in Salesforce.
      inputParameters:
      - name: vendor_name
        in: body
        type: string
        description: Vendor name.
      call: salesforce.query-account
      with:
        query: SELECT Id, Name, Type, Contract_Status__c, Annual_Revenue__c FROM Account WHERE Name = '{{vendor_name}}' AND Type = 'Vendor'
      outputParameters:
      - name: account
        type: object
        mapping: $.records[0]
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://costco.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: queries
      path: /query
      operations:
      - name: query-account
        method: GET
Open in Framework → View in Fleet → salesforce-vendor-account-lookup.yml

Retrieves Zoom meeting details by ID.

naftiko: '0.5'
info:
  label: Zoom Meeting Details Lookup
  description: Retrieves Zoom meeting details by ID.
  tags:
  - communication
  - zoom
  - meetings
capability:
  exposes:
  - type: mcp
    namespace: communication
    port: 8080
    tools:
    - name: get-meeting
      description: Given a Zoom meeting ID, return topic and time.
      inputParameters:
      - name: meeting_id
        in: body
        type: string
        description: Meeting ID.
      call: zoom.get-meeting
      with:
        meeting_id: '{{meeting_id}}'
      outputParameters:
      - name: topic
        type: string
        mapping: $.topic
  consumes:
  - type: http
    namespace: zoom
    baseUri: https://api.zoom.us/v2
    authentication:
      type: bearer
      token: $secrets.zoom_token
    resources:
    - name: meetings
      path: /meetings/{{meeting_id}}
      inputParameters:
      - name: meeting_id
        in: path
      operations:
      - name: get-meeting
        method: GET
Open in Framework → View in Fleet → zoom-meeting-details-lookup.yml

Reads new hire data from Workday, creates Okta account, provisions ServiceNow assets, and sends welcome email via Microsoft Teams.

naftiko: '0.5'
info:
  label: New Hire IT Provisioning Pipeline
  description: Reads new hire data from Workday, creates Okta account, provisions ServiceNow assets, and sends welcome email via Microsoft Teams.
  tags:
  - onboarding
  - workday
  - okta
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: it-provisioning
    port: 8080
    tools:
    - name: provision-new-hire
      description: Orchestrate IT provisioning for new employees.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: Workday employee ID.
      steps:
      - name: get-employee
        type: call
        call: workday.get-worker
        with:
          employee_id: '{{employee_id}}'
      - name: create-okta-user
        type: call
        call: okta.create-user
        with:
          firstName: '{{get-employee.first_name}}'
          lastName: '{{get-employee.last_name}}'
          email: '{{get-employee.email}}'
          department: '{{get-employee.department}}'
      - name: provision-assets
        type: call
        call: servicenow.create-request
        with:
          short_description: IT setup for {{get-employee.first_name}} {{get-employee.last_name}}
          category: New Hire Provisioning
          department: '{{get-employee.department}}'
      - name: send-welcome
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.hr_onboarding_channel
          text: 'New hire provisioned: {{get-employee.first_name}} {{get-employee.last_name}} ({{get-employee.department}}). Okta: {{create-okta-user.id}}. IT Request: {{provision-assets.number}}.'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd5-impl-services1.workday.com/ccx/service/costco
    authentication:
      type: basic
      username: $secrets.workday_user
      password: $secrets.workday_password
    resources:
    - name: workers
      path: /Human_Resources/Worker/{{employee_id}}
      inputParameters:
      - name: employee_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: okta
    baseUri: https://costco.okta.com/api/v1
    authentication:
      type: apiKey
      key: $secrets.okta_api_token
    resources:
    - name: users
      path: /users
      operations:
      - name: create-user
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://costco.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: channel-messages
      path: /teams/{{channel_id}}/channels/general/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → new-hire-it-provisioning-pipeline.yml

Checks ServiceNow IT readiness, validates SAP inventory setup, verifies Okta access provisioning, and sends readiness report via Microsoft Teams.

naftiko: '0.5'
info:
  label: Store Opening Readiness Pipeline
  description: Checks ServiceNow IT readiness, validates SAP inventory setup, verifies Okta access provisioning, and sends readiness report via Microsoft Teams.
  tags:
  - store-operations
  - servicenow
  - sap
  - okta
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: store-readiness
    port: 8080
    tools:
    - name: check-readiness
      description: Orchestrate new store opening readiness checks.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: New store identifier.
      - name: opening_date
        in: body
        type: string
        description: Planned opening date.
      steps:
      - name: check-it-readiness
        type: call
        call: servicenow.get-checklist
        with:
          store_id: '{{store_id}}'
          category: IT_Readiness
      - name: check-inventory
        type: call
        call: sap.get-inventory-status
        with:
          plant: '{{store_id}}'
      - name: check-access
        type: call
        call: okta.get-group-members
        with:
          group_name: store-{{store_id}}-staff
      - name: send-report
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.store_ops_channel
          text: 'Store {{store_id}} readiness: IT: {{check-it-readiness.complete_pct}}%. Inventory: {{check-inventory.status}}. Staff provisioned: {{check-access.member_count}}. Opening: {{opening_date}}.'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://costco.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: checklists
      path: /table/sc_task
      operations:
      - name: get-checklist
        method: GET
  - type: http
    namespace: sap
    baseUri: https://costco-s4.sap.com/sap/opu/odata/sap/MM_INV_MGMT_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: inventory
      path: /A_PlantInventory
      operations:
      - name: get-inventory-status
        method: GET
  - type: http
    namespace: okta
    baseUri: https://costco.okta.com/api/v1
    authentication:
      type: apiKey
      key: $secrets.okta_api_token
    resources:
    - name: groups
      path: /groups/{{group_name}}/users
      inputParameters:
      - name: group_name
        in: path
      operations:
      - name: get-group-members
        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: post-channel-message
        method: POST
Open in Framework → View in Fleet → store-opening-readiness-pipeline.yml

When a GitHub release is published, creates a ServiceNow change request and notifies engineering via Slack.

naftiko: '0.5'
info:
  label: GitHub Release to ServiceNow Change
  description: When a GitHub release is published, creates a ServiceNow change request and notifies engineering via Slack.
  tags:
  - devops
  - github
  - servicenow
  - slack
  - change-management
capability:
  exposes:
  - type: mcp
    namespace: release-ops
    port: 8080
    tools:
    - name: process-release
      description: Given a repo and release tag, create change request and notify engineering.
      inputParameters:
      - name: repo_name
        in: body
        type: string
        description: Repository.
      - name: release_tag
        in: body
        type: string
        description: Release tag.
      steps:
      - name: get-release
        type: call
        call: github.get-release
        with:
          repo_name: '{{repo_name}}'
          tag: '{{release_tag}}'
      - name: create-change
        type: call
        call: servicenow.create-change
        with:
          short_description: Release {{release_tag}} for {{repo_name}}
          description: '{{get-release.body}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: engineering-releases
          text: 'Release {{release_tag}} for {{repo_name}}. Change: {{create-change.number}}.'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: releases
      path: /repos/{{repo_name}}/releases/tags/{{tag}}
      inputParameters:
      - name: repo_name
        in: path
      - name: tag
        in: path
      operations:
      - name: get-release
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://costco.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: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → github-release-to-servicenow-change.yml

Retrieves recent messages from a Slack channel.

naftiko: '0.5'
info:
  label: Slack Channel History Lookup
  description: Retrieves recent messages from a Slack channel.
  tags:
  - communication
  - slack
  - messaging
capability:
  exposes:
  - type: mcp
    namespace: messaging
    port: 8080
    tools:
    - name: get-channel-history
      description: Given a Slack channel ID, return recent messages.
      inputParameters:
      - name: channel_id
        in: body
        type: string
        description: Slack channel ID.
      call: slack.get-history
      with:
        channel_id: '{{channel_id}}'
      outputParameters:
      - name: messages
        type: array
        mapping: $.messages
  consumes:
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: conversations
      path: /conversations.history?channel={{channel_id}}&limit=20
      inputParameters:
      - name: channel_id
        in: query
      operations:
      - name: get-history
        method: GET
Open in Framework → View in Fleet → slack-channel-history-lookup.yml

Retrieves current on-call engineer for a PagerDuty schedule.

naftiko: '0.5'
info:
  label: PagerDuty On-Call Lookup
  description: Retrieves current on-call engineer for a PagerDuty schedule.
  tags:
  - operations
  - pagerduty
  - on-call
capability:
  exposes:
  - type: mcp
    namespace: operations
    port: 8080
    tools:
    - name: get-oncall
      description: Given a schedule ID, return on-call user.
      inputParameters:
      - name: schedule_id
        in: body
        type: string
        description: Schedule ID.
      call: pagerduty.get-oncall
      with:
        schedule_id: '{{schedule_id}}'
      outputParameters:
      - name: user_name
        type: string
        mapping: $.schedule.final_schedule.rendered_schedule_entries[0].user.summary
  consumes:
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: schedules
      path: /schedules/{{schedule_id}}
      inputParameters:
      - name: schedule_id
        in: path
      operations:
      - name: get-oncall
        method: GET
Open in Framework → View in Fleet → pagerduty-on-call-lookup.yml

Queries Snowflake for warehouse inventory levels by SKU.

naftiko: '0.5'
info:
  label: Snowflake Warehouse Inventory Query
  description: Queries Snowflake for warehouse inventory levels by SKU.
  tags:
  - supply-chain
  - snowflake
  - inventory
capability:
  exposes:
  - type: mcp
    namespace: inventory
    port: 8080
    tools:
    - name: query-warehouse-inventory
      description: Given a SKU and warehouse ID, return on-hand quantity and days of supply.
      inputParameters:
      - name: sku
        in: body
        type: string
        description: Product SKU.
      - name: warehouse_id
        in: body
        type: string
        description: Warehouse ID.
      call: snowflake.execute-query
      with:
        statement: SELECT sku, on_hand_qty, days_of_supply FROM SUPPLY_CHAIN.INVENTORY WHERE sku = '{{sku}}' AND warehouse_id = '{{warehouse_id}}'
      outputParameters:
      - name: on_hand_qty
        type: integer
        mapping: $.data[0][1]
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://costco.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: execute-query
        method: POST
Open in Framework → View in Fleet → snowflake-warehouse-inventory-query.yml

Initiates performance review cycle in Workday, creates tracking tasks in Jira, sends reminders via Slack, and refreshes HR dashboards in Power BI.

naftiko: '0.5'
info:
  label: Workday Performance Review Cycle Pipeline
  description: Initiates performance review cycle in Workday, creates tracking tasks in Jira, sends reminders via Slack, and refreshes HR dashboards in Power BI.
  tags:
  - hr
  - workday
  - jira
  - slack
  - power-bi
capability:
  exposes:
  - type: mcp
    namespace: performance-reviews
    port: 8080
    tools:
    - name: start-review-cycle
      description: Orchestrate performance review cycle initiation.
      inputParameters:
      - name: review_period
        in: body
        type: string
        description: Review period identifier.
      - name: department
        in: body
        type: string
        description: Department name.
      steps:
      - name: initiate-reviews
        type: call
        call: workday.create-review-cycle
        with:
          period: '{{review_period}}'
          department: '{{department}}'
      - name: create-tracker
        type: call
        call: jira.create-issue
        with:
          project: HR
          summary: 'Performance reviews: {{department}} - {{review_period}}'
          description: 'Review cycle initiated. Employees: {{initiate-reviews.employee_count}}.'
          issuetype: Epic
      - name: send-reminders
        type: call
        call: slack.post-message
        with:
          channel: hr-{{department}}
          text: 'Performance review cycle started for {{review_period}}. {{initiate-reviews.employee_count}} reviews to complete. Tracker: {{create-tracker.key}}.'
      - name: refresh-dashboard
        type: call
        call: powerbi.refresh-dataset
        with:
          group_id: $secrets.powerbi_workspace_id
          dataset_id: $secrets.hr_dataset_id
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd5-impl-services1.workday.com/ccx/service/costco
    authentication:
      type: basic
      username: $secrets.workday_user
      password: $secrets.workday_password
    resources:
    - name: reviews
      path: /Performance_Management/Review_Cycle
      operations:
      - name: create-review-cycle
        method: POST
  - type: http
    namespace: jira
    baseUri: https://costco.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: datasets
      path: /groups/{{group_id}}/datasets/{{dataset_id}}/refreshes
      inputParameters:
      - name: group_id
        in: path
      - name: dataset_id
        in: path
      operations:
      - name: refresh-dataset
        method: POST
Open in Framework → View in Fleet → workday-performance-review-cycle-pipeline.yml

When Snowflake stock forecasting detects a product approaching reorder threshold, creates a ServiceNow procurement request and notifies the buying team in Teams.

naftiko: '0.5'
info:
  label: Supply Chain Replenishment Alert
  description: When Snowflake stock forecasting detects a product approaching reorder threshold, creates a ServiceNow procurement request and notifies the buying team in Teams.
  tags:
  - supply-chain
  - inventory
  - snowflake
  - servicenow
  - microsoft-teams
  - replenishment
capability:
  exposes:
  - type: mcp
    namespace: replenishment-ops
    port: 8080
    tools:
    - name: handle-reorder-alert
      description: Given a product SKU and current stock level, query Snowflake demand forecast, create a ServiceNow procurement request, and alert the buying team in Teams.
      inputParameters:
      - name: sku
        in: body
        type: string
        description: The Costco product SKU number.
      - name: current_stock
        in: body
        type: integer
        description: The current on-hand inventory unit count.
      - name: warehouse_id
        in: body
        type: string
        description: The warehouse or distribution center ID.
      steps:
      - name: get-demand-forecast
        type: call
        call: snowflake.get-demand-forecast
        with:
          sku: '{{sku}}'
          warehouseId: '{{warehouse_id}}'
      - name: create-procurement-request
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Reorder alert: SKU {{sku}} at {{current_stock}} units'
          category: procurement
          description: 'SKU: {{sku}}

            Warehouse: {{warehouse_id}}

            Current stock: {{current_stock}}

            Forecast demand: {{get-demand-forecast.forecastedDemand}}'
      - name: notify-buying-team
        type: call
        call: msteams.post-channel-message
        with:
          channelId: buying-team
          message: 'Reorder alert: SKU {{sku}} has {{current_stock}} units remaining. Forecasted demand: {{get-demand-forecast.forecastedDemand}}. ServiceNow: {{create-procurement-request.number}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://costco.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: demand-forecast
      path: /statements
      operations:
      - name: get-demand-forecast
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://costco.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
Open in Framework → View in Fleet → supply-chain-replenishment-alert.yml

On a GitHub Actions workflow failure on a protected branch, creates a Jira bug, logs a Datadog event, and alerts the engineering team in Teams.

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, logs a Datadog event, and alerts the engineering team in Teams.
  tags:
  - devops
  - cicd
  - github
  - jira
  - datadog
  - microsoft-teams
  - incident-response
capability:
  exposes:
  - type: mcp
    namespace: devops-cicd
    port: 8080
    tools:
    - name: handle-pipeline-failure
      description: Given a GitHub Actions workflow failure, create a Jira bug, log a Datadog event, and alert the engineering Teams channel.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: GitHub repository 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}}

            Conclusion: {{get-run-details.conclusion}}'
      - name: log-datadog
        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://costco.atlassian.net/rest/api/3
    authentication:
      type: 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
Open in Framework → View in Fleet → github-ci-cd-pipeline-failure-handler.yml

Identifies eligible members in Snowflake, updates membership tier in Salesforce, sends upgrade notification via Slack, and logs in ServiceNow.

naftiko: '0.5'
info:
  label: Membership Tier Upgrade Pipeline
  description: Identifies eligible members in Snowflake, updates membership tier in Salesforce, sends upgrade notification via Slack, and logs in ServiceNow.
  tags:
  - membership
  - snowflake
  - salesforce
  - slack
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: tier-upgrade
    port: 8080
    tools:
    - name: process-upgrade
      description: Orchestrate membership tier upgrade for eligible members.
      inputParameters:
      - name: member_id
        in: body
        type: string
        description: Member ID.
      steps:
      - name: check-eligibility
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT current_tier, annual_spend, eligible_tier FROM MEMBERSHIP.TIER_ELIGIBILITY WHERE member_id = '{{member_id}}'
      - name: update-tier
        type: call
        call: salesforce.update-record
        with:
          object: Account
          member_id: '{{member_id}}'
          tier: '{{check-eligibility.results[0].eligible_tier}}'
      - name: log-upgrade
        type: call
        call: servicenow.create-record
        with:
          table: u_membership_changes
          member_id: '{{member_id}}'
          previous_tier: '{{check-eligibility.results[0].current_tier}}'
          new_tier: '{{check-eligibility.results[0].eligible_tier}}'
      - name: notify-team
        type: call
        call: slack.post-message
        with:
          channel: membership-ops
          text: 'Member {{member_id}} upgraded from {{check-eligibility.results[0].current_tier}} to {{check-eligibility.results[0].eligible_tier}}. Annual spend: {{check-eligibility.results[0].annual_spend}}.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://costco.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: salesforce
    baseUri: https://costco.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: records
      path: /sobjects/{{object}}
      inputParameters:
      - name: object
        in: path
      operations:
      - name: update-record
        method: PATCH
  - type: http
    namespace: servicenow
    baseUri: https://costco.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: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → membership-tier-upgrade-pipeline.yml

Retrieves PTO balance for a Costco employee.

naftiko: '0.5'
info:
  label: Workday Time Off Balance Check
  description: Retrieves PTO balance for a Costco employee.
  tags:
  - hr
  - workday
  - time-off
capability:
  exposes:
  - type: mcp
    namespace: hr
    port: 8080
    tools:
    - name: get-time-off-balance
      description: Given a worker ID, return PTO balance.
      inputParameters:
      - name: worker_id
        in: body
        type: string
        description: Worker ID.
      call: workday-pto.get-balance
      with:
        worker_id: '{{worker_id}}'
      outputParameters:
      - name: pto_balance
        type: number
        mapping: $.timeOffBalance.ptoHours
  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
      path: /costco/workers/{{worker_id}}/timeOffBalance
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-balance
        method: GET
Open in Framework → View in Fleet → workday-time-off-balance-check.yml

When a goods receipt is posted in SAP, updates Snowflake inventory and notifies the warehouse Slack channel.

naftiko: '0.5'
info:
  label: SAP Goods Receipt to Inventory Update
  description: When a goods receipt is posted in SAP, updates Snowflake inventory and notifies the warehouse Slack channel.
  tags:
  - supply-chain
  - sap
  - snowflake
  - slack
  - inventory
capability:
  exposes:
  - type: mcp
    namespace: warehouse-ops
    port: 8080
    tools:
    - name: process-goods-receipt
      description: Given a SAP goods receipt number, update Snowflake and notify warehouse.
      inputParameters:
      - name: gr_document
        in: body
        type: string
        description: SAP goods receipt number.
      - name: warehouse_id
        in: body
        type: string
        description: Warehouse ID.
      steps:
      - name: get-receipt
        type: call
        call: sap.get-goods-receipt
        with:
          gr_document: '{{gr_document}}'
      - name: update-inventory
        type: call
        call: snowflake.execute-statement
        with:
          statement: UPDATE SUPPLY_CHAIN.INVENTORY SET on_hand_qty = on_hand_qty + {{get-receipt.quantity}} WHERE sku = '{{get-receipt.material}}' AND warehouse_id = '{{warehouse_id}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: warehouse-{{warehouse_id}}
          text: 'Goods receipt {{gr_document}}: {{get-receipt.quantity}} units of {{get-receipt.material}} at warehouse {{warehouse_id}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://costco-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('{{gr_document}}')
      inputParameters:
      - name: gr_document
        in: path
      operations:
      - name: get-goods-receipt
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://costco.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: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → sap-goods-receipt-to-inventory-update.yml

When a GitHub security advisory is detected, creates a Jira ticket and alerts security Slack channel.

naftiko: '0.5'
info:
  label: Security Vulnerability Remediation Tracker
  description: When a GitHub security advisory is detected, creates a Jira ticket and alerts security Slack channel.
  tags:
  - security
  - github
  - jira
  - slack
  - vulnerability
capability:
  exposes:
  - type: mcp
    namespace: security-ops
    port: 8080
    tools:
    - name: track-vulnerability
      description: Given a repo and advisory ID, create ticket and alert security.
      inputParameters:
      - name: repo_name
        in: body
        type: string
        description: GitHub repository.
      - name: advisory_id
        in: body
        type: string
        description: Advisory ID.
      steps:
      - name: get-advisory
        type: call
        call: github.get-advisory
        with:
          repo_name: '{{repo_name}}'
          advisory_id: '{{advisory_id}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: SEC
          issue_type: Bug
          summary: '{{get-advisory.severity}}: {{get-advisory.summary}} in {{repo_name}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: security-alerts
          text: '{{get-advisory.severity}} in {{repo_name}}: {{get-advisory.summary}}. Jira: {{create-ticket.key}}.'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: advisories
      path: /repos/{{repo_name}}/security-advisories/{{advisory_id}}
      inputParameters:
      - name: repo_name
        in: path
      - name: advisory_id
        in: path
      operations:
      - name: get-advisory
        method: GET
  - type: http
    namespace: jira
    baseUri: https://costco.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → security-vulnerability-remediation-tracker.yml

Returns current vacation, PTO, and sick leave balances for a Costco employee from Workday for absence planning and manager approvals.

naftiko: '0.5'
info:
  label: Workday Time-Off Balance Lookup
  description: Returns current vacation, PTO, and sick leave balances for a Costco employee from Workday for 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 the employee's current accrued vacation, PTO, and sick leave balances. Use before approving a time-off 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: /costco/workers/{{worker_id}}/leaveBalance
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-leave-balance
        method: GET
Open in Framework → View in Fleet → workday-time-off-balance-lookup.yml

When an incident approaches SLA breach, pages on-call and notifies ops Slack.

naftiko: '0.5'
info:
  label: ServiceNow SLA Breach Escalation
  description: When an incident approaches SLA breach, pages on-call and notifies ops Slack.
  tags:
  - itsm
  - servicenow
  - pagerduty
  - slack
  - sla
capability:
  exposes:
  - type: mcp
    namespace: sla-mgmt
    port: 8080
    tools:
    - name: escalate-sla
      description: Given incident number, page on-call and notify ops.
      inputParameters:
      - name: incident_number
        in: body
        type: string
        description: Incident number.
      steps:
      - name: get-incident
        type: call
        call: servicenow.get-incident
        with:
          incident_number: '{{incident_number}}'
      - name: page
        type: call
        call: pagerduty.create-incident
        with:
          service_id: '{{get-incident.assignment_group}}'
          title: 'SLA breach risk: {{incident_number}}'
          urgency: high
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: ops-escalations
          text: 'SLA breach imminent: {{incident_number}}. On-call paged.'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://costco.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
  - 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
Open in Framework → View in Fleet → servicenow-sla-breach-escalation.yml

Scans GitHub Dependabot alerts for critical vulnerabilities, creates Jira security tickets, and notifies the security team in 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 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 alerts, create Jira security tickets, 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://costco.atlassian.net/rest/api/3
    authentication:
      type: 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
Open in Framework → View in Fleet → github-security-vulnerability-triage.yml

When AWS Cost Anomaly Detection flags an unexpected spend spike, creates a ServiceNow ticket and alerts the FinOps team in Teams.

naftiko: '0.5'
info:
  label: AWS Cost Anomaly Alert Handler
  description: When AWS Cost Anomaly Detection flags an unexpected spend spike, creates a ServiceNow ticket and alerts the FinOps team in Teams.
  tags:
  - cloud
  - finops
  - aws
  - servicenow
  - microsoft-teams
  - cost-management
capability:
  exposes:
  - type: mcp
    namespace: cloud-finops
    port: 8080
    tools:
    - name: handle-aws-cost-anomaly
      description: Given an AWS account ID, service name, and anomaly amount, create a ServiceNow cost ticket and alert the FinOps team in Teams.
      inputParameters:
      - name: aws_account_id
        in: body
        type: string
        description: The AWS account ID where the anomaly occurred.
      - name: anomaly_amount
        in: body
        type: number
        description: The anomalous incremental spend in USD.
      - name: aws_service
        in: body
        type: string
        description: The AWS service driving the spend spike.
      steps:
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'AWS cost anomaly: {{aws_service}} in {{aws_account_id}} +${{anomaly_amount}}'
          category: cloud_cost
          urgency: '2'
      - name: alert-finops
        type: call
        call: msteams.post-channel-message
        with:
          channelId: finops-team
          message: 'AWS cost spike: {{aws_service}} in {{aws_account_id}} +${{anomaly_amount}} | ServiceNow: {{create-ticket.number}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://costco.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
Open in Framework → View in Fleet → aws-cost-anomaly-alert-handler.yml

When a warehouse reports IT outage, creates P1 ServiceNow incident, pages on-call, and notifies ops Slack.

naftiko: '0.5'
info:
  label: Store IT Outage Response
  description: When a warehouse reports IT outage, creates P1 ServiceNow incident, pages on-call, and notifies ops Slack.
  tags:
  - operations
  - servicenow
  - pagerduty
  - slack
  - retail
capability:
  exposes:
  - type: mcp
    namespace: store-ops
    port: 8080
    tools:
    - name: handle-outage
      description: Given warehouse number and system, create incident and page on-call.
      inputParameters:
      - name: warehouse_number
        in: body
        type: string
        description: Warehouse number.
      - name: affected_system
        in: body
        type: string
        description: Affected system.
      - name: impact
        in: body
        type: string
        description: Impact.
      steps:
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          category: store_systems
          urgency: 1
          short_description: '[P1] Warehouse {{warehouse_number}} — {{affected_system}} outage'
      - name: page-oncall
        type: call
        call: pagerduty.create-incident
        with:
          service_id: warehouse-systems
          title: Warehouse {{warehouse_number}} {{affected_system}} outage
          urgency: high
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: warehouse-ops-critical
          text: 'P1 at Warehouse {{warehouse_number}}: {{affected_system}}. Incident: {{create-incident.number}}.'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://costco.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: incidents
      path: /incidents
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → store-it-outage-response.yml

Creates a ServiceNow incident for food safety reports, pulls affected product data from SAP, notifies store operations via Slack, and creates a Salesforce case for supplier follow-up.

naftiko: '0.5'
info:
  label: Food Safety Incident Pipeline
  description: Creates a ServiceNow incident for food safety reports, pulls affected product data from SAP, notifies store operations via Slack, and creates a Salesforce case for supplier follow-up.
  tags:
  - food-safety
  - servicenow
  - sap
  - slack
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: food-safety
    port: 8080
    tools:
    - name: report-incident
      description: Orchestrate food safety incident response.
      inputParameters:
      - name: product_code
        in: body
        type: string
        description: Product code.
      - name: warehouse_id
        in: body
        type: string
        description: Warehouse where issue found.
      - name: description
        in: body
        type: string
        description: Incident description.
      steps:
      - name: create-incident
        type: call
        call: servicenow.create-record
        with:
          table: incident
          short_description: 'Food safety: {{product_code}} at Warehouse {{warehouse_id}}'
          description: '{{description}}'
          urgency: '1'
      - name: get-product-info
        type: call
        call: sap.get-material
        with:
          material_number: '{{product_code}}'
      - name: notify-ops
        type: call
        call: slack.post-message
        with:
          channel: food-safety-alerts
          text: 'FOOD SAFETY ALERT: {{get-product-info.description}} ({{product_code}}) at Warehouse {{warehouse_id}}. Incident: {{create-incident.number}}.'
      - name: create-supplier-case
        type: call
        call: salesforce.create-case
        with:
          subject: 'Food safety: {{product_code}} - {{get-product-info.description}}'
          description: '{{description}}. Warehouse: {{warehouse_id}}.'
          priority: Critical
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://costco.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: sap
    baseUri: https://costco-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: materials
      path: /A_Material('{{material_number}}')
      inputParameters:
      - name: material_number
        in: path
      operations:
      - name: get-material
        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
  - type: http
    namespace: salesforce
    baseUri: https://costco.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: cases
      path: /sobjects/Case
      operations:
      - name: create-case
        method: POST
Open in Framework → View in Fleet → food-safety-incident-pipeline.yml

Detects travel policy violations in SAP Concur, creates a Workday notification, logs in Jira, and alerts the manager via Slack.

naftiko: '0.5'
info:
  label: SAP Concur Travel Policy Violation Pipeline
  description: Detects travel policy violations in SAP Concur, creates a Workday notification, logs in Jira, and alerts the manager via Slack.
  tags:
  - travel
  - sap-concur
  - workday
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: travel-violations
    port: 8080
    tools:
    - name: handle-violation
      description: Process travel policy violations.
      inputParameters:
      - name: report_id
        in: body
        type: string
        description: Concur expense report ID.
      steps:
      - name: get-report
        type: call
        call: concur.get-expense-report
        with:
          report_id: '{{report_id}}'
      - name: get-employee
        type: call
        call: workday.get-worker
        with:
          employee_id: '{{get-report.employee_id}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: TRAVEL
          summary: 'Policy violation: Report {{report_id}}'
          description: 'Employee: {{get-employee.name}}. Amount: {{get-report.total}}. Violation: {{get-report.violation_type}}.'
          issuetype: Task
      - name: notify-manager
        type: call
        call: slack.post-message
        with:
          channel: '{{get-employee.manager_slack}}'
          text: 'Travel policy violation by {{get-employee.name}}: {{get-report.violation_type}}. Amount: {{get-report.total}}. Jira: {{create-ticket.key}}.'
  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: workday
    baseUri: https://wd5-impl-services1.workday.com/ccx/service/costco
    authentication:
      type: basic
      username: $secrets.workday_user
      password: $secrets.workday_password
    resources:
    - name: workers
      path: /Human_Resources/Worker/{{employee_id}}
      inputParameters:
      - name: employee_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: jira
    baseUri: https://costco.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → sap-concur-travel-policy-violation-pipeline.yml

Checks a Datadog monitor status by ID.

naftiko: '0.5'
info:
  label: Datadog Monitor Status Check
  description: Checks a Datadog monitor status by ID.
  tags:
  - observability
  - datadog
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: monitoring
    port: 8080
    tools:
    - name: get-monitor-status
      description: Given a Datadog monitor ID, return status.
      inputParameters:
      - name: monitor_id
        in: body
        type: string
        description: Monitor ID.
      call: datadog.get-monitor
      with:
        monitor_id: '{{monitor_id}}'
      outputParameters:
      - name: overall_state
        type: string
        mapping: $.overall_state
  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_id}}
      inputParameters:
      - name: monitor_id
        in: path
      operations:
      - name: get-monitor
        method: GET
Open in Framework → View in Fleet → datadog-monitor-status-check.yml

Creates a product master in SAP, sets up a Salesforce marketing campaign, stores product data in Snowflake, and announces via Slack.

naftiko: '0.5'
info:
  label: Private Label Product Launch Pipeline
  description: Creates a product master in SAP, sets up a Salesforce marketing campaign, stores product data in Snowflake, and announces via Slack.
  tags:
  - product-launch
  - sap
  - salesforce
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: product-launch
    port: 8080
    tools:
    - name: launch-product
      description: Orchestrate Kirkland Signature product launch setup.
      inputParameters:
      - name: product_name
        in: body
        type: string
        description: Product name.
      - name: category
        in: body
        type: string
        description: Product category.
      - name: launch_date
        in: body
        type: string
        description: Planned launch date.
      steps:
      - name: create-material
        type: call
        call: sap.create-material-master
        with:
          description: '{{product_name}}'
          material_group: '{{category}}'
          brand: Kirkland Signature
      - name: create-campaign
        type: call
        call: salesforce.create-campaign
        with:
          name: 'Launch: {{product_name}}'
          start_date: '{{launch_date}}'
          type: Product Launch
      - name: store-product-data
        type: call
        call: snowflake.execute-statement
        with:
          statement: INSERT INTO PRODUCT.LAUNCHES (product_name, category, launch_date, sap_material, sf_campaign) VALUES ('{{product_name}}', '{{category}}', '{{launch_date}}', '{{create-material.material_number}}', '{{create-campaign.id}}')
      - name: announce-launch
        type: call
        call: slack.post-message
        with:
          channel: merchandising
          text: 'New Kirkland product launch: {{product_name}} ({{category}}). Launch date: {{launch_date}}. SAP: {{create-material.material_number}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://costco-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: materials
      path: /A_Material
      operations:
      - name: create-material-master
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://costco.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: snowflake
    baseUri: https://costco.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: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → private-label-product-launch-pipeline.yml

Looks up an SAP S/4HANA purchase order by number and returns structured header status, vendor name, and total value for procurement review.

naftiko: '0.5'
info:
  label: SAP Purchase Order Lookup
  description: Looks up an SAP S/4HANA purchase order by number and returns structured header status, vendor name, and total value for procurement review.
  tags:
  - procurement
  - finance
  - sap
  - erp
capability:
  exposes:
  - type: mcp
    namespace: procurement
    port: 8080
    tools:
    - name: get-purchase-order
      description: Given a PO number, retrieve the SAP purchase order status, vendor name, total value, and line items. Use for procurement approvals and spend visibility.
      inputParameters:
      - name: po_number
        in: body
        type: string
        description: The SAP purchase order number, e.g. 4500012345.
      call: sap-erp.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-erp
    baseUri: https://costco-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
Open in Framework → View in Fleet → sap-purchase-order-lookup.yml

Checks Azure resource health status.

naftiko: '0.5'
info:
  label: Azure Resource Health Check
  description: Checks Azure resource health status.
  tags:
  - cloud
  - azure
  - infrastructure
capability:
  exposes:
  - type: mcp
    namespace: cloud-ops
    port: 8080
    tools:
    - name: check-resource-health
      description: Given an Azure resource ID, return health status.
      inputParameters:
      - name: resource_id
        in: body
        type: string
        description: Azure resource ID.
      call: azure.get-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_token
    resources:
    - name: resource-health
      path: /{{resource_id}}/providers/Microsoft.ResourceHealth/availabilityStatuses/current?api-version=2023-07-01
      inputParameters:
      - name: resource_id
        in: path
      operations:
      - name: get-health
        method: GET
Open in Framework → View in Fleet → azure-resource-health-check.yml

Retrieves the current state and last run status of a Terraform Cloud workspace.

naftiko: '0.5'
info:
  label: Terraform Cloud Workspace Status
  description: Retrieves the current state and last run status of a Terraform Cloud workspace.
  tags:
  - infrastructure
  - terraform
  - cloud-ops
capability:
  exposes:
  - type: mcp
    namespace: terraform-status
    port: 8080
    tools:
    - name: get-workspace-status
      description: Look up Terraform workspace run status.
      inputParameters:
      - name: workspace_name
        in: body
        type: string
        description: Terraform workspace name.
      call: terraform.get-workspace
      with:
        workspace_name: '{{workspace_name}}'
      outputParameters:
      - name: current_run_status
        type: string
        mapping: $.data.attributes.current-run.status
      - name: resource_count
        type: number
        mapping: $.data.attributes.resource-count
  consumes:
  - type: http
    namespace: terraform
    baseUri: https://app.terraform.io/api/v2
    authentication:
      type: bearer
      token: $secrets.terraform_token
    resources:
    - name: workspaces
      path: /organizations/costco/workspaces/{{workspace_name}}
      inputParameters:
      - name: workspace_name
        in: path
      operations:
      - name: get-workspace
        method: GET
Open in Framework → View in Fleet → terraform-cloud-workspace-status.yml

Uses Anthropic Claude to summarize procurement contracts and policy documents from SharePoint and posts the key points to the relevant Teams channel.

naftiko: '0.5'
info:
  label: Intelligent Document Summarization
  description: Uses Anthropic Claude to summarize procurement contracts and policy documents from SharePoint and posts the key points to the relevant Teams channel.
  tags:
  - ai
  - automation
  - anthropic
  - sharepoint
  - microsoft-teams
  - document-management
capability:
  exposes:
  - type: mcp
    namespace: ai-docs
    port: 8080
    tools:
    - name: summarize-document
      description: Given a SharePoint file path and target Teams channel, retrieve the document, send to Claude for summarization, and post the summary to Teams.
      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 business 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
Open in Framework → View in Fleet → intelligent-document-summarization.yml

When Datadog fires a critical alert, creates a ServiceNow incident, pages on-call via PagerDuty, and notifies ops Slack.

naftiko: '0.5'
info:
  label: Datadog Alert to PagerDuty Escalation
  description: When Datadog fires a critical alert, creates a ServiceNow incident, pages on-call via PagerDuty, and notifies ops Slack.
  tags:
  - observability
  - datadog
  - pagerduty
  - servicenow
  - slack
capability:
  exposes:
  - type: mcp
    namespace: incident-ops
    port: 8080
    tools:
    - name: handle-critical-alert
      description: Given an alert ID, create incident, page on-call, and notify ops.
      inputParameters:
      - name: alert_id
        in: body
        type: string
        description: Datadog alert ID.
      - name: alert_title
        in: body
        type: string
        description: Alert title.
      - name: service_name
        in: body
        type: string
        description: Affected service.
      steps:
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          category: application
          urgency: 1
          short_description: '[P1] {{alert_title}} — {{service_name}}'
      - name: page-oncall
        type: call
        call: pagerduty.create-incident
        with:
          service_id: '{{service_name}}'
          title: '{{alert_title}}'
          urgency: high
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: oncall-alerts
          text: 'P1: {{alert_title}} on {{service_name}}. Incident: {{create-incident.number}}.'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://costco.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: incidents
      path: /incidents
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → datadog-alert-to-pagerduty-escalation.yml

Checks contract compliance in SAP Ariba, compares spend in Snowflake, creates a Jira compliance ticket, and notifies procurement via Slack.

naftiko: '0.5'
info:
  label: SAP Ariba Contract Compliance Pipeline
  description: Checks contract compliance in SAP Ariba, compares spend in Snowflake, creates a Jira compliance ticket, and notifies procurement via Slack.
  tags:
  - compliance
  - sap-ariba
  - snowflake
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: contract-compliance
    port: 8080
    tools:
    - name: check-compliance
      description: Audit vendor contract compliance against actual spend.
      inputParameters:
      - name: vendor_id
        in: body
        type: string
        description: Vendor ID.
      - name: contract_id
        in: body
        type: string
        description: Contract ID.
      steps:
      - name: get-contract
        type: call
        call: ariba.get-contract
        with:
          contract_id: '{{contract_id}}'
      - name: get-spend
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT SUM(amount) as total_spend, COUNT(*) as po_count FROM PROCUREMENT.VENDOR_SPEND WHERE vendor_id = '{{vendor_id}}' AND contract_id = '{{contract_id}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: PROC
          summary: 'Contract compliance: {{vendor_id}} - {{contract_id}}'
          description: 'Contract value: {{get-contract.total_value}}. Actual spend: {{get-spend.results[0].total_spend}}. PO count: {{get-spend.results[0].po_count}}.'
          issuetype: Task
      - name: notify-procurement
        type: call
        call: slack.post-message
        with:
          channel: procurement-compliance
          text: 'Contract compliance review: Vendor {{vendor_id}}. Spend: {{get-spend.results[0].total_spend}} vs contract: {{get-contract.total_value}}. Jira: {{create-ticket.key}}.'
  consumes:
  - type: http
    namespace: ariba
    baseUri: https://openapi.ariba.com/api/contract-compliance/v1
    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: snowflake
    baseUri: https://costco.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://costco.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → sap-ariba-contract-compliance-pipeline.yml

Queries Snowflake demand forecast, identifies SKUs below safety stock, and creates SAP replenishment POs.

naftiko: '0.5'
info:
  label: Demand Forecast to Replenishment Order
  description: Queries Snowflake demand forecast, identifies SKUs below safety stock, and creates SAP replenishment POs.
  tags:
  - supply-chain
  - snowflake
  - sap
  - slack
  - replenishment
capability:
  exposes:
  - type: mcp
    namespace: replenishment
    port: 8080
    tools:
    - name: trigger-replenishment
      description: Given a warehouse and category, check stock and create POs.
      inputParameters:
      - name: warehouse_id
        in: body
        type: string
        description: Warehouse ID.
      - name: category
        in: body
        type: string
        description: Product category.
      steps:
      - name: get-low-stock
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT sku, on_hand_qty, reorder_qty FROM SUPPLY_CHAIN.REPLENISHMENT_VIEW WHERE warehouse_id = '{{warehouse_id}}' AND category = '{{category}}' AND on_hand_qty < safety_stock
      - name: create-po
        type: call
        call: sap.create-purchase-order
        with:
          items: '{{get-low-stock.results}}'
          warehouse_id: '{{warehouse_id}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: supply-chain-ops
          text: 'Replenishment for warehouse {{warehouse_id}}: {{get-low-stock.row_count}} items. PO: {{create-po.po_number}}.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://costco.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: sap
    baseUri: https://costco-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: purchase-orders
      path: /A_PurchaseOrder
      operations:
      - name: create-purchase-order
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → demand-forecast-to-replenishment-order.yml

Retrieves a Jira issue by key and returns summary and status.

naftiko: '0.5'
info:
  label: Jira Issue Lookup
  description: Retrieves a Jira issue by key and returns summary and status.
  tags:
  - devops
  - jira
  - issue-tracking
capability:
  exposes:
  - type: mcp
    namespace: issue-tracking
    port: 8080
    tools:
    - name: get-issue
      description: Given a Jira issue key, return summary and status.
      inputParameters:
      - name: issue_key
        in: body
        type: string
        description: Jira issue key.
      call: jira.get-issue
      with:
        issue_key: '{{issue_key}}'
      outputParameters:
      - name: summary
        type: string
        mapping: $.fields.summary
  consumes:
  - type: http
    namespace: jira
    baseUri: https://costco.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
Open in Framework → View in Fleet → jira-issue-lookup.yml

When a member complaint is received, creates a Salesforce case, looks up the order in SAP, and notifies member services via Slack.

naftiko: '0.5'
info:
  label: Member Complaint to Case and Refund
  description: When a member complaint is received, creates a Salesforce case, looks up the order in SAP, and notifies member services via Slack.
  tags:
  - customer-service
  - salesforce
  - sap
  - slack
  - refund
capability:
  exposes:
  - type: mcp
    namespace: member-services
    port: 8080
    tools:
    - name: process-member-complaint
      description: Given member email and order number, create case, look up order, and notify team.
      inputParameters:
      - name: member_email
        in: body
        type: string
        description: Member email.
      - name: order_number
        in: body
        type: string
        description: Order number.
      - name: complaint
        in: body
        type: string
        description: Complaint description.
      steps:
      - name: lookup-order
        type: call
        call: sap.get-sales-order
        with:
          order_number: '{{order_number}}'
      - name: create-case
        type: call
        call: salesforce.create-case
        with:
          subject: 'Member complaint: Order {{order_number}}'
          description: '{{complaint}}'
          contact_email: '{{member_email}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: member-services
          text: New complaint case {{create-case.case_number}} for order {{order_number}}.
  consumes:
  - type: http
    namespace: sap
    baseUri: https://costco-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('{{order_number}}')
      inputParameters:
      - name: order_number
        in: path
      operations:
      - name: get-sales-order
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://costco.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: cases
      path: /sobjects/Case
      operations:
      - name: create-case
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → member-complaint-to-case-and-refund.yml

Looks up a GitHub repository and returns description and default branch.

naftiko: '0.5'
info:
  label: GitHub Repository Info
  description: Looks up a GitHub repository and returns description and default branch.
  tags:
  - devops
  - github
  - repository
capability:
  exposes:
  - type: mcp
    namespace: devops
    port: 8080
    tools:
    - name: get-repo-info
      description: Given a repo name, return description and branch.
      inputParameters:
      - name: repo_name
        in: body
        type: string
        description: Repository in org/repo format.
      call: github.get-repo
      with:
        repo_name: '{{repo_name}}'
      outputParameters:
      - name: description
        type: string
        mapping: $.description
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: repos
      path: /repos/{{repo_name}}
      inputParameters:
      - name: repo_name
        in: path
      operations:
      - name: get-repo
        method: GET
Open in Framework → View in Fleet → github-repository-info.yml

When a Snowflake task fails, creates Jira ticket and alerts data-ops Slack.

naftiko: '0.5'
info:
  label: Snowflake ETL Pipeline Failure Handler
  description: When a Snowflake task fails, creates Jira ticket and alerts data-ops Slack.
  tags:
  - data-engineering
  - snowflake
  - jira
  - slack
  - etl
capability:
  exposes:
  - type: mcp
    namespace: data-ops
    port: 8080
    tools:
    - name: handle-etl-failure
      description: Given a task name, query failure details, create ticket, and notify.
      inputParameters:
      - name: task_name
        in: body
        type: string
        description: Snowflake task.
      steps:
      - name: get-error
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT error_code, error_message FROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY(TASK_NAME=>'{{task_name}}', RESULT_LIMIT=>1)) WHERE state = 'FAILED'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: DATA
          issue_type: Bug
          summary: 'ETL failure: {{task_name}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: data-ops-alerts
          text: 'ETL {{task_name}} failed. Jira: {{create-ticket.key}}.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://costco.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://costco.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → snowflake-etl-pipeline-failure-handler.yml

Creates a ServiceNow standard change request for planned system maintenance, associates affected CIs, and notifies stakeholders in Teams.

naftiko: '0.5'
info:
  label: ServiceNow Change Request for System Maintenance
  description: Creates a ServiceNow standard change request for planned system maintenance, associates affected CIs, and notifies stakeholders in 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 CIs, and planned window, create a ServiceNow change request and notify IT operations 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 items.
      - name: planned_start
        in: body
        type: string
        description: Planned change start in ISO 8601 format.
      - name: planned_end
        in: body
        type: string
        description: Planned change end 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-it-ops
        type: call
        call: msteams.post-channel-message
        with:
          channelId: it-operations
          message: 'Change {{create-change.number}} scheduled: {{change_description}} | Window: {{planned_start}} to {{planned_end}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://costco.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
Open in Framework → View in Fleet → servicenow-change-request-for-system-maintenance.yml

When a SAP delivery is delayed, creates ServiceNow incident and notifies logistics via Slack.

naftiko: '0.5'
info:
  label: SAP Delivery Delay Escalation
  description: When a SAP delivery is delayed, creates ServiceNow incident and notifies logistics via Slack.
  tags:
  - logistics
  - sap
  - servicenow
  - slack
capability:
  exposes:
  - type: mcp
    namespace: logistics
    port: 8080
    tools:
    - name: escalate-delay
      description: Given a delivery number, check delay, create incident, and alert.
      inputParameters:
      - name: delivery_number
        in: body
        type: string
        description: SAP delivery number.
      steps:
      - name: get-delivery
        type: call
        call: sap.get-delivery
        with:
          delivery_number: '{{delivery_number}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          category: logistics
          urgency: 2
          short_description: 'Delivery delay: {{delivery_number}} — {{get-delivery.delay_days}} days'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: logistics-ops
          text: 'Delivery {{delivery_number}} delayed {{get-delivery.delay_days}} days. Incident: {{create-incident.number}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://costco-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: servicenow
    baseUri: https://costco.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → sap-delivery-delay-escalation.yml

Searches SharePoint for documents matching keywords.

naftiko: '0.5'
info:
  label: SharePoint Document Search
  description: Searches SharePoint for documents matching keywords.
  tags:
  - knowledge
  - sharepoint
  - document-management
capability:
  exposes:
  - type: mcp
    namespace: documents
    port: 8080
    tools:
    - name: search-documents
      description: Given keywords, return matching documents.
      inputParameters:
      - name: search_query
        in: body
        type: string
        description: Search keywords.
      call: sharepoint.search-docs
      with:
        search_query: '{{search_query}}'
      outputParameters:
      - name: results
        type: array
        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/costco.sharepoint.com/drive/root/search(q='{{search_query}}')
      inputParameters:
      - name: search_query
        in: query
      operations:
      - name: search-docs
        method: GET
Open in Framework → View in Fleet → sharepoint-document-search.yml

Triggers a Terraform Cloud workspace run to provision or update Costco cloud infrastructure and creates a ServiceNow change record.

naftiko: '0.5'
info:
  label: Terraform Cloud Infrastructure Provisioning
  description: Triggers a Terraform Cloud workspace run to provision or update Costco cloud infrastructure 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 change description, trigger a plan and apply run and create a ServiceNow change record.
      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.
      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}}'
  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://costco.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
Open in Framework → View in Fleet → terraform-cloud-infrastructure-provisioning.yml

When an employee is terminated in Workday, deactivates Okta account and creates a ServiceNow equipment retrieval ticket.

naftiko: '0.5'
info:
  label: Workday Termination to Okta Deprovisioning
  description: When an employee is terminated in Workday, deactivates Okta account and creates a ServiceNow equipment retrieval ticket.
  tags:
  - hr
  - security
  - workday
  - okta
  - servicenow
  - offboarding
capability:
  exposes:
  - type: mcp
    namespace: hr-offboarding
    port: 8080
    tools:
    - name: process-termination
      description: Given a worker ID, deactivate Okta and open equipment ticket.
      inputParameters:
      - name: worker_id
        in: body
        type: string
        description: Workday worker ID.
      - name: termination_date
        in: body
        type: string
        description: Termination date.
      steps:
      - name: get-worker
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{worker_id}}'
      - name: deactivate-okta
        type: call
        call: okta.deactivate-user
        with:
          user_login: '{{get-worker.work_email}}'
      - name: open-ticket
        type: call
        call: servicenow.create-incident
        with:
          category: hr_offboarding
          short_description: 'Equipment retrieval: {{get-worker.full_name}} — {{termination_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: workers
      path: /costco/workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: okta
    baseUri: https://costco.okta.com/api/v1
    authentication:
      type: bearer
      token: $secrets.okta_token
    resources:
    - name: users
      path: /users/{{user_login}}/lifecycle/deactivate
      inputParameters:
      - name: user_login
        in: path
      operations:
      - name: deactivate-user
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://costco.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → workday-termination-to-okta-deprovisioning.yml

Queries Snowflake for members approaching renewal, updates Salesforce contacts, and sends reminders via marketing automation.

naftiko: '0.5'
info:
  label: Membership Renewal Reminder Orchestrator
  description: Queries Snowflake for members approaching renewal, updates Salesforce contacts, and sends reminders via marketing automation.
  tags:
  - membership
  - snowflake
  - salesforce
  - slack
  - marketing
capability:
  exposes:
  - type: mcp
    namespace: membership-ops
    port: 8080
    tools:
    - name: send-renewal-reminders
      description: Given a renewal window, find expiring memberships and trigger reminders.
      inputParameters:
      - name: days_before_expiry
        in: body
        type: string
        description: Days before expiry to send reminder.
      steps:
      - name: get-expiring
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT member_id, email, membership_type, expiry_date FROM MEMBERSHIP.MEMBERS WHERE expiry_date = DATEADD(day, {{days_before_expiry}}, CURRENT_DATE()) AND renewal_status = 'PENDING'
      - name: update-salesforce
        type: call
        call: salesforce.update-contacts
        with:
          members: '{{get-expiring.results}}'
          renewal_reminder_sent: true
      - name: notify-marketing
        type: call
        call: slack.post-message
        with:
          channel: membership-marketing
          text: Renewal reminders sent to {{get-expiring.row_count}} members expiring in {{days_before_expiry}} days.
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://costco.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: salesforce
    baseUri: https://costco.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: contacts
      path: /composite/sobjects
      operations:
      - name: update-contacts
        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
Open in Framework → View in Fleet → membership-renewal-reminder-orchestrator.yml

Retrieves Costco Wholesale member account details from Salesforce given a member number, returning membership tier, status, and open cases.

naftiko: '0.5'
info:
  label: Salesforce Member Account Lookup
  description: Retrieves Costco Wholesale member account details from Salesforce given a member number, returning membership tier, status, and open cases.
  tags:
  - crm
  - member-management
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: member-ops
    port: 8080
    tools:
    - name: get-member-account
      description: Given a Costco member number, retrieve the member account details including membership tier, status, and open service cases from Salesforce.
      inputParameters:
      - name: member_number
        in: body
        type: string
        description: The Costco member number.
      call: salesforce.get-account
      with:
        memberNumber: '{{member_number}}'
      outputParameters:
      - name: account_id
        type: string
        mapping: $.records[0].Id
      - name: member_name
        type: string
        mapping: $.records[0].Name
      - name: membership_tier
        type: string
        mapping: $.records[0].MembershipTier__c
      - name: status
        type: string
        mapping: $.records[0].Status__c
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://costco.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /query
      inputParameters:
      - name: memberNumber
        in: query
      operations:
      - name: get-account
        method: GET
Open in Framework → View in Fleet → salesforce-member-account-lookup.yml

At month end, retrieves the SAP S/4HANA period close status for all company codes and posts the consolidated checklist to the finance Teams channel.

naftiko: '0.5'
info:
  label: SAP Finance Period Close Status Check
  description: At month end, retrieves the SAP S/4HANA period close status for all company codes and posts the consolidated checklist 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 Costco company codes and post the status 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 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://costco-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
Open in Framework → View in Fleet → sap-finance-period-close-status-check.yml

Detects fulfillment delays in Snowflake, creates a Jira issue, updates the Salesforce member case, and notifies logistics via Slack.

naftiko: '0.5'
info:
  label: E-Commerce Order Fulfillment Issue Pipeline
  description: Detects fulfillment delays in Snowflake, creates a Jira issue, updates the Salesforce member case, and notifies logistics via Slack.
  tags:
  - ecommerce
  - snowflake
  - jira
  - salesforce
  - slack
capability:
  exposes:
  - type: mcp
    namespace: fulfillment-issue
    port: 8080
    tools:
    - name: handle-delay
      description: Orchestrate fulfillment delay investigation and member notification.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: Order ID.
      - name: member_id
        in: body
        type: string
        description: Member ID.
      steps:
      - name: get-order-details
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT order_date, expected_delivery, current_status, warehouse_id FROM ECOMMERCE.ORDERS WHERE order_id = '{{order_id}}'
      - name: create-jira
        type: call
        call: jira.create-issue
        with:
          project: ECOM
          summary: 'Fulfillment delay: Order {{order_id}}'
          description: 'Order status: {{get-order-details.results[0].current_status}}. Expected delivery: {{get-order-details.results[0].expected_delivery}}.'
          issuetype: Bug
      - name: update-case
        type: call
        call: salesforce.create-case
        with:
          subject: Order {{order_id}} fulfillment delay
          member_id: '{{member_id}}'
          description: 'Investigating delay. Jira: {{create-jira.key}}.'
      - name: notify-logistics
        type: call
        call: slack.post-message
        with:
          channel: logistics-ops
          text: 'Fulfillment delay: Order {{order_id}} from Warehouse {{get-order-details.results[0].warehouse_id}}. Jira: {{create-jira.key}}.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://costco.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://costco.atlassian.net/rest/api/3
    authentication:
      type: 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://costco.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: cases
      path: /sobjects/Case
      operations:
      - name: create-case
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → e-commerce-order-fulfillment-issue-pipeline.yml

Detects Terraform drift, creates GitHub PR, and alerts platform engineering via Slack.

naftiko: '0.5'
info:
  label: Terraform Drift Detection Remediation
  description: Detects Terraform drift, creates GitHub PR, and alerts platform engineering via Slack.
  tags:
  - infrastructure
  - terraform
  - github
  - slack
capability:
  exposes:
  - type: mcp
    namespace: platform-eng
    port: 8080
    tools:
    - name: handle-drift
      description: Given workspace and drift details, create PR and notify.
      inputParameters:
      - name: workspace
        in: body
        type: string
        description: Terraform workspace.
      - name: resource_address
        in: body
        type: string
        description: Resource with drift.
      - name: drift_summary
        in: body
        type: string
        description: Drift summary.
      steps:
      - name: create-pr
        type: call
        call: github.create-pr
        with:
          repo: costco/infrastructure
          head: fix/drift-{{workspace}}
          base: main
          title: 'Fix drift: {{resource_address}}'
          body: '{{drift_summary}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: platform-engineering
          text: 'Terraform drift in {{workspace}}: {{resource_address}}. PR: {{create-pr.html_url}}.'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: pulls
      path: /repos/{{repo}}/pulls
      inputParameters:
      - name: repo
        in: path
      operations:
      - name: create-pr
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → terraform-drift-detection-remediation.yml

Retrieves current benefits enrollment details for an employee from Workday.

naftiko: '0.5'
info:
  label: Workday Employee Benefits Lookup
  description: Retrieves current benefits enrollment details for an employee from Workday.
  tags:
  - hr
  - workday
  - benefits
capability:
  exposes:
  - type: mcp
    namespace: employee-benefits
    port: 8080
    tools:
    - name: get-benefits
      description: Look up benefits enrollment for an employee.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: Workday employee ID.
      call: workday.get-benefits
      with:
        employee_id: '{{employee_id}}'
      outputParameters:
      - name: plans
        type: array
        mapping: $.Report_Entry[0].Benefit_Plans
      - name: coverage_begin
        type: string
        mapping: $.Report_Entry[0].Coverage_Begin_Date
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd5-impl-services1.workday.com/ccx/service/costco
    authentication:
      type: basic
      username: $secrets.workday_user
      password: $secrets.workday_password
    resources:
    - name: benefits
      path: /Benefits/Employee_Benefits/{{employee_id}}
      inputParameters:
      - name: employee_id
        in: path
      operations:
      - name: get-benefits
        method: GET
Open in Framework → View in Fleet → workday-employee-benefits-lookup.yml

Pulls current period payroll totals from Workday for finance period close and compensation reporting.

naftiko: '0.5'
info:
  label: Workday Payroll Results Export
  description: Pulls current period payroll totals from Workday for finance period close and compensation reporting.
  tags:
  - hr
  - finance
  - workday
  - payroll
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: payroll-reporting
    port: 8080
    tools:
    - name: get-payroll-results
      description: Returns current period payroll totals grouped by department from Workday. Use for finance period close, compensation analysis, and headcount cost reporting.
      call: workday.get-payroll-results
      outputParameters:
      - name: total_gross_pay
        type: number
        mapping: $.totals.grossPay
      - name: total_employees
        type: number
        mapping: $.totals.headcount
      - name: pay_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: /costco/payrollResults
      operations:
      - name: get-payroll-results
        method: GET
Open in Framework → View in Fleet → workday-payroll-results-export.yml

Queries Workday for employees with incomplete benefits enrollment and sends Teams reminders.

naftiko: '0.5'
info:
  label: Workday Benefits Enrollment Reminder
  description: Queries Workday for employees with incomplete benefits enrollment and sends Teams reminders.
  tags:
  - hr
  - workday
  - microsoft-teams
  - benefits
capability:
  exposes:
  - type: mcp
    namespace: hr-benefits
    port: 8080
    tools:
    - name: send-reminders
      description: Given a deadline, find incomplete enrollments and send reminders.
      inputParameters:
      - name: enrollment_deadline
        in: body
        type: string
        description: Deadline YYYY-MM-DD.
      steps:
      - name: get-pending
        type: call
        call: workday.get-pending-enrollments
        with:
          deadline: '{{enrollment_deadline}}'
      - name: send
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-pending.employee_emails}}'
          text: 'Reminder: Benefits enrollment due by {{enrollment_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: benefits
      path: /costco/benefits/pendingEnrollments
      operations:
      - name: get-pending-enrollments
        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-message
        method: POST
Open in Framework → View in Fleet → workday-benefits-enrollment-reminder.yml

When Snowflake DQ checks fail, creates a Jira ticket and posts to data-ops Slack.

naftiko: '0.5'
info:
  label: Snowflake Data Quality Alert to Jira
  description: When Snowflake DQ checks fail, creates a Jira ticket and posts to data-ops Slack.
  tags:
  - data-engineering
  - snowflake
  - jira
  - slack
  - data-quality
capability:
  exposes:
  - type: mcp
    namespace: data-quality
    port: 8080
    tools:
    - name: handle-dq-failure
      description: Given a table and check type, create ticket and notify.
      inputParameters:
      - name: table_name
        in: body
        type: string
        description: Table name.
      - name: check_type
        in: body
        type: string
        description: Check type.
      steps:
      - name: get-failures
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT check_name, actual_value FROM DATA_OPS.DQ_RESULTS WHERE table_name = '{{table_name}}' AND check_type = '{{check_type}}' AND status = 'FAIL' LIMIT 5
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: DATA
          issue_type: Bug
          summary: 'DQ failure: {{check_type}} on {{table_name}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: data-ops-alerts
          text: 'DQ {{check_type}} failed on {{table_name}}. Jira: {{create-ticket.key}}.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://costco.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://costco.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → snowflake-data-quality-alert-to-jira.yml

Forecasts staffing needs from Snowflake demand data, creates Workday shift requests, posts schedules to Microsoft Teams, and logs in Jira.

naftiko: '0.5'
info:
  label: Warehouse Staffing Adjustment Pipeline
  description: Forecasts staffing needs from Snowflake demand data, creates Workday shift requests, posts schedules to Microsoft Teams, and logs in Jira.
  tags:
  - workforce
  - snowflake
  - workday
  - microsoft-teams
  - jira
capability:
  exposes:
  - type: mcp
    namespace: staffing-adjustment
    port: 8080
    tools:
    - name: adjust-staffing
      description: Orchestrate warehouse staffing adjustments based on demand forecasts.
      inputParameters:
      - name: warehouse_id
        in: body
        type: string
        description: Warehouse ID.
      - name: week
        in: body
        type: string
        description: Target week in YYYY-WNN format.
      steps:
      - name: get-forecast
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT day_of_week, predicted_traffic, recommended_staff FROM WORKFORCE.DEMAND_FORECAST WHERE warehouse_id = '{{warehouse_id}}' AND week = '{{week}}'
      - name: create-shifts
        type: call
        call: workday.create-schedule
        with:
          warehouse_id: '{{warehouse_id}}'
          week: '{{week}}'
          schedule: '{{get-forecast.results}}'
      - name: post-schedule
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.warehouse_{{warehouse_id}}_channel
          text: 'Updated staffing schedule for week {{week}}: {{get-forecast.row_count}} shift adjustments. Schedule: {{create-shifts.url}}.'
      - name: track-change
        type: call
        call: jira.create-issue
        with:
          project: WHSE
          summary: 'Staffing adjustment: Warehouse {{warehouse_id}} - {{week}}'
          description: Demand-based adjustment. {{get-forecast.row_count}} days modified.
          issuetype: Task
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://costco.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: workday
    baseUri: https://wd5-impl-services1.workday.com/ccx/service/costco
    authentication:
      type: basic
      username: $secrets.workday_user
      password: $secrets.workday_password
    resources:
    - name: schedules
      path: /Staffing/Schedule
      operations:
      - name: create-schedule
        method: POST
  - 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: post-channel-message
        method: POST
  - type: http
    namespace: jira
    baseUri: https://costco.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → warehouse-staffing-adjustment-pipeline.yml

Retrieves pricing rules from Snowflake, updates SAP pricing conditions, refreshes Power BI pricing dashboard, and notifies merchandising via Slack.

naftiko: '0.5'
info:
  label: Seasonal Pricing Update Pipeline
  description: Retrieves pricing rules from Snowflake, updates SAP pricing conditions, refreshes Power BI pricing dashboard, and notifies merchandising via Slack.
  tags:
  - pricing
  - snowflake
  - sap
  - power-bi
  - slack
capability:
  exposes:
  - type: mcp
    namespace: seasonal-pricing
    port: 8080
    tools:
    - name: update-pricing
      description: Orchestrate seasonal pricing updates across systems.
      inputParameters:
      - name: season
        in: body
        type: string
        description: Season identifier.
      - name: category
        in: body
        type: string
        description: Product category.
      steps:
      - name: get-pricing-rules
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT sku, current_price, new_price, discount_pct FROM PRICING.SEASONAL_RULES WHERE season = '{{season}}' AND category = '{{category}}'
      - name: update-sap
        type: call
        call: sap.update-pricing-conditions
        with:
          season: '{{season}}'
          items: '{{get-pricing-rules.results}}'
      - name: refresh-dashboard
        type: call
        call: powerbi.refresh-dataset
        with:
          group_id: $secrets.powerbi_workspace_id
          dataset_id: $secrets.pricing_dataset_id
      - name: notify-merchandising
        type: call
        call: slack.post-message
        with:
          channel: merchandising
          text: 'Seasonal pricing updated: {{season}} / {{category}}. {{get-pricing-rules.row_count}} SKUs updated. Dashboard refreshing.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://costco.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: sap
    baseUri: https://costco-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: /A_PricingCondition
      operations:
      - name: update-pricing-conditions
        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: /groups/{{group_id}}/datasets/{{dataset_id}}/refreshes
      inputParameters:
      - name: group_id
        in: path
      - 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
Open in Framework → View in Fleet → seasonal-pricing-update-pipeline.yml

Queries Snowflake for seasonal demand, creates Workday requisitions, and notifies HR via Teams.

naftiko: '0.5'
info:
  label: Seasonal Workforce Planning
  description: Queries Snowflake for seasonal demand, creates Workday requisitions, and notifies HR via Teams.
  tags:
  - hr
  - workforce-planning
  - snowflake
  - workday
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: workforce-planning
    port: 8080
    tools:
    - name: plan-seasonal-hiring
      description: Given region and season, query demand and create requisitions.
      inputParameters:
      - name: region
        in: body
        type: string
        description: Region.
      - name: season
        in: body
        type: string
        description: Season.
      steps:
      - name: get-forecast
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT warehouse_id, AVG(peak_headcount) as avg_peak FROM HR.SEASONAL_DEMAND WHERE region = '{{region}}' AND season = '{{season}}' GROUP BY warehouse_id
      - name: create-requisitions
        type: call
        call: workday.create-requisition
        with:
          region: '{{region}}'
          job_profile: Seasonal Warehouse Worker
          positions: '{{get-forecast.total_positions}}'
      - name: notify
        type: call
        call: msteams.send-channel-message
        with:
          team_id: regional-hr
          channel: '{{region}}'
          text: 'Seasonal hiring for {{region}} ({{season}}): {{get-forecast.total_positions}} positions.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://costco.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: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: requisitions
      path: /costco/jobRequisitions
      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
Open in Framework → View in Fleet → seasonal-workforce-planning.yml

When a Workday termination is processed, deactivates Okta access, disables the Microsoft 365 account, and closes open ServiceNow tickets.

naftiko: '0.5'
info:
  label: Employee Offboarding Access Revocation
  description: When a Workday termination is processed, deactivates Okta access, disables the Microsoft 365 account, and closes open ServiceNow tickets.
  tags:
  - hr
  - offboarding
  - workday
  - okta
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: hr-offboarding
    port: 8080
    tools:
    - name: trigger-offboarding
      description: Given a Workday employee ID and termination date, deactivate Okta, disable the Microsoft Graph account, and resolve open ServiceNow tickets.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The Workday worker ID for the departing employee.
      - name: termination_date
        in: body
        type: string
        description: Termination date in YYYY-MM-DD format.
      steps:
      - name: get-worker
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{employee_id}}'
      - name: deactivate-okta
        type: call
        call: okta.deactivate-user
        with:
          login: '{{get-worker.work_email}}'
      - name: disable-m365
        type: call
        call: msgraph.update-user
        with:
          userPrincipalName: '{{get-worker.work_email}}'
          accountEnabled: 'false'
      - name: close-tickets
        type: call
        call: servicenow.close-user-tickets
        with:
          caller_id: '{{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: /costco/workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: okta
    baseUri: https://costco.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_api_token
      placement: header
    resources:
    - name: users
      path: /users/{{login}}/lifecycle/deactivate
      inputParameters:
      - name: login
        in: path
      operations:
      - name: deactivate-user
        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/{{userPrincipalName}}
      inputParameters:
      - name: userPrincipalName
        in: path
      operations:
      - name: update-user
        method: PATCH
  - type: http
    namespace: servicenow
    baseUri: https://costco.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-user-tickets
        method: PATCH
Open in Framework → View in Fleet → employee-offboarding-access-revocation.yml

When a new hire is created in Workday, opens a ServiceNow onboarding ticket, provisions Okta access, and sends a Microsoft Teams welcome message.

naftiko: '0.5'
info:
  label: New Employee Onboarding Orchestrator
  description: When a new hire is created in Workday, opens a ServiceNow onboarding ticket, provisions Okta access, and sends a Microsoft Teams welcome message.
  tags:
  - hr
  - onboarding
  - workday
  - servicenow
  - 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 Okta, and send a Teams welcome.'
      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: Employee start date in YYYY-MM-DD format.
      steps:
      - name: get-worker
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{employee_id}}'
      - name: create-snow-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'New hire onboarding: {{get-worker.full_name}}'
          category: hr_onboarding
      - name: activate-okta
        type: call
        call: okta.create-user
        with:
          login: '{{get-worker.work_email}}'
          firstName: '{{get-worker.first_name}}'
          lastName: '{{get-worker.last_name}}'
      - name: send-welcome
        type: call
        call: msteams.post-message
        with:
          recipient: '{{get-worker.work_email}}'
          message: 'Welcome to Costco, {{get-worker.first_name}}! Your onboarding ticket: {{create-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: /costco/workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://costco.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: okta
    baseUri: https://costco.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_api_token
      placement: header
    resources:
    - name: users
      path: /users
      operations:
      - name: create-user
        method: POST
  - 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
Open in Framework → View in Fleet → new-employee-onboarding-orchestrator.yml

When a recall is initiated, queries SAP for affected warehouses, creates Salesforce case, and broadcasts to warehouse managers via Teams.

naftiko: '0.5'
info:
  label: Product Recall Notification Orchestrator
  description: When a recall is initiated, queries SAP for affected warehouses, creates Salesforce case, and broadcasts to warehouse managers via Teams.
  tags:
  - compliance
  - sap
  - salesforce
  - microsoft-teams
  - product-safety
capability:
  exposes:
  - type: mcp
    namespace: product-safety
    port: 8080
    tools:
    - name: process-recall
      description: Given material number and recall reason, find affected warehouses and notify.
      inputParameters:
      - name: material_number
        in: body
        type: string
        description: SAP material number.
      - name: recall_reason
        in: body
        type: string
        description: Recall reason.
      steps:
      - name: get-affected
        type: call
        call: sap.get-stock-by-plant
        with:
          material_number: '{{material_number}}'
      - name: create-case
        type: call
        call: salesforce.create-case
        with:
          subject: 'Recall: {{material_number}}'
          description: '{{recall_reason}}. Warehouses: {{get-affected.plant_count}}.'
          priority: Critical
      - name: notify
        type: call
        call: msteams.send-channel-message
        with:
          team_id: warehouse-managers
          channel: recalls
          text: 'RECALL: {{material_number}}. {{recall_reason}}. {{get-affected.plant_count}} warehouses. Case: {{create-case.case_number}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://costco-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?$filter=Material eq '{{material_number}}'
      inputParameters:
      - name: material_number
        in: query
      operations:
      - name: get-stock-by-plant
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://costco.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/{{team_id}}/channels/{{channel}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → product-recall-notification-orchestrator.yml

Queries Snowflake for a member's recent purchase history including items, amounts, and warehouse locations.

naftiko: '0.5'
info:
  label: Snowflake Member Purchase History
  description: Queries Snowflake for a member's recent purchase history including items, amounts, and warehouse locations.
  tags:
  - analytics
  - snowflake
  - membership
capability:
  exposes:
  - type: mcp
    namespace: member-purchases
    port: 8080
    tools:
    - name: get-purchase-history
      description: Retrieve member purchase history from Snowflake.
      inputParameters:
      - name: member_id
        in: body
        type: string
        description: Costco member ID.
      - name: days_back
        in: body
        type: number
        description: Number of days to look back.
      call: snowflake.execute-statement
      with:
        statement: SELECT transaction_date, item_description, quantity, amount, warehouse_name FROM RETAIL.MEMBER_TRANSACTIONS WHERE member_id = '{{member_id}}' AND transaction_date >= DATEADD(day, -{{days_back}}, CURRENT_DATE()) ORDER BY transaction_date DESC
      outputParameters:
      - name: transactions
        type: array
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://costco.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: execute-statement
        method: POST
Open in Framework → View in Fleet → snowflake-member-purchase-history.yml

Checks Power BI dataset refresh status.

naftiko: '0.5'
info:
  label: Power BI Dataset Refresh Status
  description: Checks Power BI dataset refresh status.
  tags:
  - analytics
  - power-bi
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: analytics
    port: 8080
    tools:
    - name: get-refresh-status
      description: Given a dataset ID, return refresh status.
      inputParameters:
      - name: dataset_id
        in: body
        type: string
        description: Dataset GUID.
      call: power-bi.get-refresh
      with:
        dataset_id: '{{dataset_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.value[0].status
  consumes:
  - type: http
    namespace: power-bi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: datasets
      path: /datasets/{{dataset_id}}/refreshes?$top=1
      inputParameters:
      - name: dataset_id
        in: path
      operations:
      - name: get-refresh
        method: GET
Open in Framework → View in Fleet → power-bi-dataset-refresh-status.yml

Triggers a Power BI dataset refresh for the retail sales dashboard and notifies the analytics team in Teams when complete.

naftiko: '0.5'
info:
  label: Power BI Retail Sales Dashboard Refresh
  description: Triggers a Power BI dataset refresh for the retail sales dashboard and notifies the analytics team in Teams when complete.
  tags:
  - data
  - analytics
  - power-bi
  - microsoft-teams
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: bi-reporting
    port: 8080
    tools:
    - name: trigger-sales-dashboard-refresh
      description: Given a Power BI workspace ID and dataset ID, trigger a dataset refresh for the retail sales dashboard and notify the analytics team in Teams.
      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.
      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 retail sales 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
Open in Framework → View in Fleet → power-bi-retail-sales-dashboard-refresh.yml

Triggers a Power BI dataset refresh for warehouse operational KPI dashboards.

naftiko: '0.5'
info:
  label: Power BI Warehouse KPI Refresh
  description: Triggers a Power BI dataset refresh for warehouse operational KPI dashboards.
  tags:
  - analytics
  - power-bi
  - warehouse-operations
capability:
  exposes:
  - type: mcp
    namespace: warehouse-kpi
    port: 8080
    tools:
    - name: refresh-kpi-dashboard
      description: Trigger a Power BI refresh for warehouse KPIs.
      inputParameters:
      - name: dataset_id
        in: body
        type: string
        description: Power BI dataset ID.
      call: powerbi.refresh-dataset
      with:
        group_id: $secrets.powerbi_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: datasets
      path: /groups/{{group_id}}/datasets/{{dataset_id}}/refreshes
      inputParameters:
      - name: group_id
        in: path
      - name: dataset_id
        in: path
      operations:
      - name: refresh-dataset
        method: POST
Open in Framework → View in Fleet → power-bi-warehouse-kpi-refresh.yml

Queries SAP for period-close status, aggregates in Snowflake, and posts readiness to finance Teams channel.

naftiko: '0.5'
info:
  label: SAP Financial Close Readiness
  description: Queries SAP for period-close status, aggregates in Snowflake, and posts readiness to finance Teams channel.
  tags:
  - finance
  - sap
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finance-ops
    port: 8080
    tools:
    - name: check-close-readiness
      description: Given fiscal period, query close tasks and post readiness.
      inputParameters:
      - name: fiscal_period
        in: body
        type: string
        description: Fiscal period.
      - name: company_code
        in: body
        type: string
        description: Company code.
      steps:
      - name: get-tasks
        type: call
        call: sap.get-close-tasks
        with:
          fiscal_period: '{{fiscal_period}}'
          company_code: '{{company_code}}'
      - name: aggregate
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT task_category, COUNT(*) as total, SUM(CASE WHEN status='COMPLETE' THEN 1 ELSE 0 END) as done FROM FINANCE.CLOSE_TASKS WHERE fiscal_period = '{{fiscal_period}}' GROUP BY task_category
      - name: post
        type: call
        call: msteams.send-channel-message
        with:
          team_id: finance-team
          channel: period-close
          text: 'Close readiness for {{fiscal_period}}: {{aggregate.results}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://costco-s4.sap.com/sap/opu/odata/sap/API_FINANCIALPERIODCLOSE
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: close-tasks
      path: /A_FinPeriodCloseTask
      operations:
      - name: get-close-tasks
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://costco.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: 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
Open in Framework → View in Fleet → sap-financial-close-readiness.yml

Retrieves IT asset details from the ServiceNow CMDB for a specified warehouse location.

naftiko: '0.5'
info:
  label: ServiceNow Asset Inventory Lookup
  description: Retrieves IT asset details from the ServiceNow CMDB for a specified warehouse location.
  tags:
  - it-assets
  - servicenow
  - cmdb
capability:
  exposes:
  - type: mcp
    namespace: asset-inventory
    port: 8080
    tools:
    - name: get-assets
      description: Look up IT assets by warehouse location.
      inputParameters:
      - name: location
        in: body
        type: string
        description: Warehouse location name.
      call: servicenow.get-assets
      with:
        location: '{{location}}'
      outputParameters:
      - name: assets
        type: array
        mapping: $.result
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://costco.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: cmdb
      path: /table/alm_hardware
      operations:
      - name: get-assets
        method: GET
Open in Framework → View in Fleet → servicenow-asset-inventory-lookup.yml

Validates freshness and completeness of Costco retail sales data in Snowflake and creates ServiceNow incidents for datasets that fail quality thresholds.

naftiko: '0.5'
info:
  label: Snowflake Retail Analytics Data Quality Monitor
  description: Validates freshness and completeness of Costco retail sales data in Snowflake and creates ServiceNow incidents for datasets that fail quality thresholds.
  tags:
  - data
  - analytics
  - snowflake
  - servicenow
  - data-quality
capability:
  exposes:
  - type: mcp
    namespace: data-quality
    port: 8080
    tools:
    - name: check-sales-data-quality
      description: Given a Snowflake retail sales table and freshness threshold, validate data completeness and recency, and open a ServiceNow incident if checks fail.
      inputParameters:
      - name: table_name
        in: body
        type: string
        description: Fully qualified Snowflake table name in DATABASE.SCHEMA.TABLE format.
      - name: freshness_hours
        in: body
        type: integer
        description: Maximum acceptable data age in hours.
      steps:
      - name: get-table-metadata
        type: call
        call: snowflake.get-table-info
        with:
          tableName: '{{table_name}}'
      - name: create-dq-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Retail data quality failure: {{table_name}}'
          category: data_pipeline
          description: 'Table {{table_name}} failed freshness check. Last updated: {{get-table-metadata.last_altered}}.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://costco.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: tables
      path: /databases/tables
      inputParameters:
      - name: tableName
        in: query
      operations:
      - name: get-table-info
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://costco.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
Open in Framework → View in Fleet → snowflake-retail-analytics-data-quality-monitor.yml

Runs data quality checks in Snowflake, creates a Jira bug for failures, posts alerts to Slack, and logs the issue in ServiceNow.

naftiko: '0.5'
info:
  label: Snowflake ETL Data Quality Pipeline
  description: Runs data quality checks in Snowflake, creates a Jira bug for failures, posts alerts to Slack, and logs the issue in ServiceNow.
  tags:
  - data-quality
  - snowflake
  - jira
  - slack
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: etl-data-quality
    port: 8080
    tools:
    - name: check-data-quality
      description: Run data quality validation and alert on failures.
      inputParameters:
      - name: pipeline_name
        in: body
        type: string
        description: ETL pipeline name.
      - name: run_id
        in: body
        type: string
        description: Pipeline run ID.
      steps:
      - name: run-checks
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT check_name, status, row_count, failure_count FROM DATA_QUALITY.VALIDATION_RESULTS WHERE pipeline_name = '{{pipeline_name}}' AND run_id = '{{run_id}}' AND status = 'FAILED'
      - name: create-bug
        type: call
        call: jira.create-issue
        with:
          project: DATA
          summary: 'DQ failure: {{pipeline_name}} run {{run_id}}'
          description: 'Failed checks: {{run-checks.row_count}}. Details: {{run-checks.results}}.'
          issuetype: Bug
      - name: alert-team
        type: call
        call: slack.post-message
        with:
          channel: data-engineering
          text: 'Data quality failure: {{pipeline_name}} run {{run_id}}. {{run-checks.row_count}} checks failed. Jira: {{create-bug.key}}.'
      - name: log-incident
        type: call
        call: servicenow.create-record
        with:
          table: incident
          short_description: 'ETL data quality failure: {{pipeline_name}}'
          description: 'Run: {{run_id}}. Failed checks: {{run-checks.row_count}}. Jira: {{create-bug.key}}.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://costco.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://costco.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://costco.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
Open in Framework → View in Fleet → snowflake-etl-data-quality-pipeline.yml

Retrieves current inventory stock levels from SAP S/4HANA for a given product and warehouse, for use in replenishment planning and buyer reporting.

naftiko: '0.5'
info:
  label: SAP Inventory Stock Overview
  description: Retrieves current inventory stock levels from SAP S/4HANA for a given product and warehouse, for use in replenishment planning and buyer reporting.
  tags:
  - supply-chain
  - inventory
  - sap
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: inventory-ops
    port: 8080
    tools:
    - name: get-stock-overview
      description: Given a SAP material number and plant code, retrieve on-hand stock quantity, unit of measure, and warehouse location. Use for replenishment planning and buyer review.
      inputParameters:
      - name: material_number
        in: body
        type: string
        description: The SAP material number for the product.
      - name: plant_code
        in: body
        type: string
        description: The SAP plant (warehouse/location) code.
      call: sap-inventory.get-stock
      with:
        materialNumber: '{{material_number}}'
        plantCode: '{{plant_code}}'
      outputParameters:
      - name: unrestricted_stock
        type: number
        mapping: $.d.MatlStkInAcctMod.UnrestrictedWarehousingQuantity
      - name: unit_of_measure
        type: string
        mapping: $.d.MatlStkInAcctMod.BaseUnit
      - name: storage_location
        type: string
        mapping: $.d.MatlStkInAcctMod.StorageLocation
  consumes:
  - type: http
    namespace: sap-inventory
    baseUri: https://costco-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='{{materialNumber}}',Plant='{{plantCode}}')
      inputParameters:
      - name: materialNumber
        in: path
      - name: plantCode
        in: path
      operations:
      - name: get-stock
        method: GET
Open in Framework → View in Fleet → sap-inventory-stock-overview.yml

Compares SAP goods receipt with purchase order quantities, creates a Jira issue for variances, and notifies the receiving team via Slack.

naftiko: '0.5'
info:
  label: SAP Goods Receipt Discrepancy Pipeline
  description: Compares SAP goods receipt with purchase order quantities, creates a Jira issue for variances, and notifies the receiving team via Slack.
  tags:
  - receiving
  - sap
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: goods-receipt-discrepancy
    port: 8080
    tools:
    - name: check-receipt
      description: Validate goods receipt against purchase order.
      inputParameters:
      - name: po_number
        in: body
        type: string
        description: SAP purchase order number.
      - name: warehouse_id
        in: body
        type: string
        description: Receiving warehouse.
      steps:
      - name: get-po-details
        type: call
        call: sap.get-purchase-order
        with:
          po_number: '{{po_number}}'
      - name: get-receipt
        type: call
        call: sap.get-goods-receipt
        with:
          po_number: '{{po_number}}'
      - name: create-issue
        type: call
        call: jira.create-issue
        with:
          project: WHSE
          summary: 'Goods receipt discrepancy: PO {{po_number}}'
          description: 'PO items: {{get-po-details.item_count}}. Received items: {{get-receipt.item_count}}.'
          issuetype: Bug
      - name: notify-receiving
        type: call
        call: slack.post-message
        with:
          channel: warehouse-{{warehouse_id}}-receiving
          text: 'Receipt discrepancy for PO {{po_number}}. Jira: {{create-issue.key}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://costco-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
    - name: goods-receipts
      path: /A_PurchaseOrder('{{po_number}}')/to_GoodsReceipt
      inputParameters:
      - name: po_number
        in: path
      operations:
      - name: get-goods-receipt
        method: GET
  - type: http
    namespace: jira
    baseUri: https://costco.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → sap-goods-receipt-discrepancy-pipeline.yml

Pulls energy consumption data from Snowflake, compares against targets in Datadog, creates a Jira sustainability ticket, and reports to facilities via Slack.

naftiko: '0.5'
info:
  label: Warehouse Energy Monitoring Pipeline
  description: Pulls energy consumption data from Snowflake, compares against targets in Datadog, creates a Jira sustainability ticket, and reports to facilities via Slack.
  tags:
  - sustainability
  - snowflake
  - datadog
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: energy-monitoring
    port: 8080
    tools:
    - name: check-energy-usage
      description: Monitor warehouse energy consumption against sustainability targets.
      inputParameters:
      - name: warehouse_id
        in: body
        type: string
        description: Warehouse ID.
      - name: month
        in: body
        type: string
        description: Month in YYYY-MM format.
      steps:
      - name: get-consumption
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT total_kwh, target_kwh, variance_pct FROM SUSTAINABILITY.ENERGY_USAGE WHERE warehouse_id = '{{warehouse_id}}' AND month = '{{month}}'
      - name: get-realtime
        type: call
        call: datadog.query-metrics
        with:
          query: avg:warehouse.energy.kwh{warehouse:{{warehouse_id}}}
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: GREEN
          summary: 'Energy review: Warehouse {{warehouse_id}} - {{month}}'
          description: 'Consumption: {{get-consumption.results[0].total_kwh}} kWh. Target: {{get-consumption.results[0].target_kwh}} kWh. Variance: {{get-consumption.results[0].variance_pct}}%.'
          issuetype: Task
      - name: notify-facilities
        type: call
        call: slack.post-message
        with:
          channel: facilities-management
          text: 'Energy report: Warehouse {{warehouse_id}} ({{month}}). Variance: {{get-consumption.results[0].variance_pct}}%. Jira: {{create-ticket.key}}.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://costco.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: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apiKey
      key: $secrets.datadog_api_key
    resources:
    - name: metrics
      path: /query
      operations:
      - name: query-metrics
        method: GET
  - type: http
    namespace: jira
    baseUri: https://costco.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → warehouse-energy-monitoring-pipeline.yml

Retrieves recent Twitter mentions of Gap brand handles and hashtags via the Twitter API, returning tweet count, sentiment breakdown, and top-engaged posts.

naftiko: '0.5'
info:
  label: Twitter Brand Mention Monitor
  description: Retrieves recent Twitter mentions of Gap brand handles and hashtags via the Twitter API, returning tweet count, sentiment breakdown, and top-engaged posts.
  tags:
  - marketing
  - social-media
  - twitter
capability:
  exposes:
  - type: mcp
    namespace: social-listening
    port: 8080
    tools:
    - name: get-brand-mentions
      description: Search for recent Twitter mentions of a query string. Returns tweet count, top tweets by engagement, and sentiment distribution.
      inputParameters:
      - name: query
        in: body
        type: string
        description: 'The search query (e.g. @Gap OR #GapStyle).'
      - name: max_results
        in: body
        type: number
        description: Maximum number of tweets to return.
      call: twitter.search-tweets
      with:
        query: '{{query}}'
        max_results: '{{max_results}}'
  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-tweets
        method: GET
Open in Framework → View in Fleet → twitter-brand-mention-monitor.yml

When an employee role change is detected in PeopleSoft, assigns the appropriate Pluralsight learning path and notifies the employee and their manager via Microsoft Teams.

naftiko: '0.5'
info:
  label: Employee Learning Path Assignment
  description: When an employee role change is detected in PeopleSoft, assigns the appropriate Pluralsight learning path and notifies the employee and their manager via Microsoft Teams.
  tags:
  - hr
  - learning
  - peoplesoft
  - pluralsight
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: learning
    port: 8080
    tools:
    - name: assign-learning-path
      description: Given an employee ID and new role, look up the employee, assign the Pluralsight path, and notify both employee and manager.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The PeopleSoft employee ID.
      - name: new_role
        in: body
        type: string
        description: The new job role title.
      - name: learning_path_id
        in: body
        type: string
        description: The Pluralsight learning path ID.
      steps:
      - name: get-employee
        type: call
        call: peoplesoft.get-employee
        with:
          employee_id: '{{employee_id}}'
      - name: assign-path
        type: call
        call: pluralsight.assign-path
        with:
          user_email: '{{get-employee.email}}'
          path_id: '{{learning_path_id}}'
      - name: notify-employee
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-employee.email}}'
          text: 'Congratulations on your new role as {{new_role}}! A Pluralsight learning path has been assigned to help you get started: {{assign-path.path_url}}.'
      - name: notify-manager
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-employee.manager_email}}'
          text: '{{get-employee.name}} has been assigned the {{new_role}} learning path in Pluralsight. Track progress: {{assign-path.path_url}}.'
  consumes:
  - type: http
    namespace: peoplesoft
    baseUri: https://gap-hrms.peoplesoft.com/PSIGW/RESTListeningConnector
    authentication:
      type: basic
      username: $secrets.peoplesoft_user
      password: $secrets.peoplesoft_password
    resources:
    - name: employees
      path: /EMPLOYEE_CI.v1/{{employee_id}}
      inputParameters:
      - name: employee_id
        in: path
      operations:
      - name: get-employee
        method: GET
  - type: http
    namespace: pluralsight
    baseUri: https://api.pluralsight.com/api/v1
    authentication:
      type: bearer
      token: $secrets.pluralsight_token
    resources:
    - name: assignments
      path: /learning-paths/{{path_id}}/assignments
      inputParameters:
      - name: path_id
        in: path
      operations:
      - name: assign-path
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → employee-learning-path-assignment.yml

Analyzes slow-moving inventory from Oracle Cloud, cross-references sell-through rates from Google Analytics, recommends markdown pricing, and updates the Oracle price list and notifies merchandising via Microsoft Teams.

naftiko: '0.5'
info:
  label: Markdown Optimization Orchestrator
  description: Analyzes slow-moving inventory from Oracle Cloud, cross-references sell-through rates from Google Analytics, recommends markdown pricing, and updates the Oracle price list and notifies merchandising via Microsoft Teams.
  tags:
  - retail
  - merchandising
  - oracle-cloud
  - google-analytics
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: markdown-optimization
    port: 8080
    tools:
    - name: optimize-markdowns
      description: Given a product category and slow-mover threshold, identify candidates for markdown, recommend new prices, update Oracle, and notify the team.
      inputParameters:
      - name: category
        in: body
        type: string
        description: Product category to analyze.
      - name: sell_through_threshold
        in: body
        type: number
        description: Minimum sell-through rate threshold (e.g. 0.3 for 30%).
      steps:
      - name: get-slow-movers
        type: call
        call: oracle-cloud.get-inventory-aging
        with:
          category: '{{category}}'
          threshold: '{{sell_through_threshold}}'
      - name: get-web-performance
        type: call
        call: google-analytics.run-report
        with:
          dimension: productCategory
          filter: '{{category}}'
      - name: update-prices
        type: call
        call: oracle-cloud.update-price-list
        with:
          items: '{{get-slow-movers.items}}'
          markdown_pct: '30'
      - name: notify-merch
        type: call
        call: msteams.post-channel-message
        with:
          team_id: merchandising
          channel_id: markdowns
          text: 'Markdown applied to {{get-slow-movers.item_count}} items in {{category}}. Avg sell-through was {{get-slow-movers.avg_sell_through}}%. Web conversion for category: {{get-web-performance.conversion_rate}}%.'
  consumes:
  - type: http
    namespace: oracle-cloud
    baseUri: https://gap.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: bearer
      token: $secrets.oracle_cloud_token
    resources:
    - name: inventory-aging
      path: /inventoryAging
      operations:
      - name: get-inventory-aging
        method: GET
    - name: price-lists
      path: /priceLists
      operations:
      - name: update-price-list
        method: PATCH
  - 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: 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-message
        method: POST
Open in Framework → View in Fleet → markdown-optimization-orchestrator.yml

Searches Gap's Confluence knowledge base by keyword and returns matching pages with title, space, last updated date, and direct URL.

naftiko: '0.5'
info:
  label: Confluence Knowledge Base Search
  description: Searches Gap's Confluence knowledge base by keyword and returns matching pages with title, space, last updated date, and direct URL.
  tags:
  - knowledge-management
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: knowledge-base
    port: 8080
    tools:
    - name: search-knowledge-base
      description: Search Confluence by keyword. Returns matching page titles, spaces, and URLs.
      inputParameters:
      - name: query
        in: body
        type: string
        description: The search keyword or phrase.
      call: confluence.search
      with:
        cql: text~"{{query}}"
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://gap.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_token
    resources:
    - name: search
      path: /search
      operations:
      - name: search
        method: GET
Open in Framework → View in Fleet → confluence-knowledge-base-search.yml

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

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

Checks Okta user at Gap.

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

When a critical POS or network issue is reported at a Gap store, creates a ServiceNow incident, pages the on-call engineer via Microsoft Teams, and tracks the outage in Jira.

naftiko: '0.5'
info:
  label: Store IT Incident Escalation Pipeline
  description: When a critical POS or network issue is reported at a Gap store, creates a ServiceNow incident, pages the on-call engineer via Microsoft Teams, and tracks the outage in Jira.
  tags:
  - it-operations
  - incident-management
  - servicenow
  - microsoft-teams
  - jira
capability:
  exposes:
  - type: mcp
    namespace: store-incidents
    port: 8080
    tools:
    - name: escalate-store-incident
      description: Given store ID, issue category, and severity, create a ServiceNow incident, notify the on-call engineer, and create a Jira tracking issue.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: The Gap store location ID.
      - name: issue_category
        in: body
        type: string
        description: Category of the issue (e.g. POS, Network, HVAC).
      - name: severity
        in: body
        type: string
        description: Severity level (1-Critical, 2-High, 3-Medium).
      - name: description
        in: body
        type: string
        description: Detailed description of the issue.
      steps:
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: Store {{store_id}} — {{issue_category}} issue
          category: '{{issue_category}}'
          priority: '{{severity}}'
          description: '{{description}}'
      - name: page-oncall
        type: call
        call: msteams.post-channel-message
        with:
          team_id: store-it-support
          channel_id: critical-alerts
          text: 'CRITICAL: Store {{store_id}} {{issue_category}} issue. Severity: {{severity}}. Incident: {{create-incident.number}}. {{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project: STOREOPS
          summary: Store {{store_id}} {{issue_category}} outage
          description: 'ServiceNow: {{create-incident.number}}. Severity: {{severity}}. {{description}}'
          issue_type: Bug
          priority: '{{severity}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://gap.service-now.com/api/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
  - type: http
    namespace: jira
    baseUri: https://gap.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → store-it-incident-escalation-pipeline.yml

Routes changes at Gap through ServiceNow and CAB approval.

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

Retrieves SharePoint metadata at Gap.

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

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

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

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

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

Aggregates weekly sales data from Oracle E-Business Suite, correlates with web conversion from Google Analytics, creates a Power BI dataset refresh, and posts the summary to Microsoft Teams.

naftiko: '0.5'
info:
  label: Weekly Sales Reporting Pipeline
  description: Aggregates weekly sales data from Oracle E-Business Suite, correlates with web conversion from Google Analytics, creates a Power BI dataset refresh, and posts the summary to Microsoft Teams.
  tags:
  - retail
  - sales
  - reporting
  - oracle-e-business-suite
  - google-analytics
  - power-bi
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: sales-reporting
    port: 8080
    tools:
    - name: generate-weekly-sales-report
      description: Given a week ending date, pull sales from Oracle EBS, web data from GA, refresh the Power BI dataset, and post results to Teams.
      inputParameters:
      - name: week_ending
        in: body
        type: string
        description: Week ending date in YYYY-MM-DD format.
      steps:
      - name: get-sales-data
        type: call
        call: oracle-ebs.get-sales-summary
        with:
          week_ending: '{{week_ending}}'
      - name: get-web-conversions
        type: call
        call: google-analytics.run-report
        with:
          end_date: '{{week_ending}}'
      - name: refresh-dataset
        type: call
        call: powerbi.refresh-dataset
        with:
          dataset_id: weekly-sales-dashboard
      - name: post-summary
        type: call
        call: msteams.post-channel-message
        with:
          team_id: leadership
          channel_id: weekly-reports
          text: 'Weekly Sales Report (w/e {{week_ending}}): Total revenue: {{get-sales-data.total_revenue}}. Online conversions: {{get-web-conversions.conversion_rate}}%. Power BI dashboard refreshed.'
  consumes:
  - type: http
    namespace: oracle-ebs
    baseUri: https://gap-ebs.oraclecloud.com/webservices/rest/oe/v1
    authentication:
      type: basic
      username: $secrets.oracle_ebs_user
      password: $secrets.oracle_ebs_password
    resources:
    - name: sales-summary
      path: /salesSummary
      operations:
      - name: get-sales-summary
        method: GET
  - type: http
    namespace: google-analytics
    baseUri: https://analyticsdata.googleapis.com/v1beta
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: reports
      path: /properties/{{property_id}}:runReport
      inputParameters:
      - name: property_id
        in: path
      operations:
      - name: run-report
        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: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → weekly-sales-reporting-pipeline.yml

Plans capacity at Gap by collecting utilization and forecasting.

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

Checks SAP PO at Gap.

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

Invokes an Azure Function for serverless processing tasks like image resizing, data transformation, or batch calculations for Gap digital operations.

naftiko: '0.5'
info:
  label: Microsoft Azure Function Invocation
  description: Invokes an Azure Function for serverless processing tasks like image resizing, data transformation, or batch calculations for Gap digital operations.
  tags:
  - infrastructure
  - serverless
  - azure-functions
capability:
  exposes:
  - type: mcp
    namespace: serverless
    port: 8080
    tools:
    - name: invoke-function
      description: Invoke an Azure Function by name with a JSON payload.
      inputParameters:
      - name: function_name
        in: body
        type: string
        description: The Azure Function name.
      - name: payload
        in: body
        type: string
        description: JSON payload for the function.
      call: azure-functions.invoke
      with:
        function_name: '{{function_name}}'
        body: '{{payload}}'
  consumes:
  - type: http
    namespace: azure-functions
    baseUri: https://gap-functions.azurewebsites.net/api
    authentication:
      type: apiKey
      name: x-functions-key
      in: header
      value: $secrets.azure_functions_key
    resources:
    - name: functions
      path: /{{function_name}}
      inputParameters:
      - name: function_name
        in: path
      operations:
      - name: invoke
        method: POST
Open in Framework → View in Fleet → microsoft-azure-function-invocation.yml

Checks Power BI refresh at Gap.

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

Checks release readiness at Gap.

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

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

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

Checks GitHub repo at Gap.

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

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

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

Monitors SLAs at Gap via Datadog and Slack.

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

Retrieves an order by ID from Oracle E-Business Suite and returns shipment status, estimated delivery, and line-item details for store associates and customer service agents.

naftiko: '0.5'
info:
  label: Omnichannel Order Status Lookup
  description: Retrieves an order by ID from Oracle E-Business Suite and returns shipment status, estimated delivery, and line-item details for store associates and customer service agents.
  tags:
  - retail
  - order-management
  - oracle-e-business-suite
capability:
  exposes:
  - type: mcp
    namespace: retail-orders
    port: 8080
    tools:
    - name: get-order-status
      description: Look up an order by order number. Returns order status, shipment tracking, estimated delivery date, and line items.
      inputParameters:
      - name: order_number
        in: body
        type: string
        description: The Oracle E-Business Suite order number.
      call: oracle-ebs.get-order
      with:
        order_number: '{{order_number}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.OrderHeader.FlowStatusCode
      - name: tracking_number
        type: string
        mapping: $.OrderHeader.ShippingDetails.TrackingNumber
      - name: estimated_delivery
        type: string
        mapping: $.OrderHeader.ShippingDetails.EstimatedDelivery
  consumes:
  - type: http
    namespace: oracle-ebs
    baseUri: https://gap-ebs.oraclecloud.com/webservices/rest/oe/v1
    authentication:
      type: basic
      username: $secrets.oracle_ebs_user
      password: $secrets.oracle_ebs_password
    resources:
    - name: orders
      path: /orders/{{order_number}}
      inputParameters:
      - name: order_number
        in: path
      operations:
      - name: get-order
        method: GET
Open in Framework → View in Fleet → omnichannel-order-status-lookup.yml

Reviews vendors at Gap.

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

Pulls daily web traffic metrics from Google Analytics for Gap.com including sessions, conversion rate, and revenue summary.

naftiko: '0.5'
info:
  label: Google Analytics Storefront Report
  description: Pulls daily web traffic metrics from Google Analytics for Gap.com including sessions, conversion rate, and revenue summary.
  tags:
  - e-commerce
  - analytics
  - google-analytics
capability:
  exposes:
  - type: mcp
    namespace: web-analytics
    port: 8080
    tools:
    - name: get-daily-traffic
      description: Retrieve daily traffic summary from Google Analytics for a given date range. Returns sessions, bounce rate, conversion rate, and revenue.
      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.run-report
      with:
        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.google_analytics_token
    resources:
    - name: reports
      path: /properties/{{property_id}}:runReport
      inputParameters:
      - name: property_id
        in: path
      operations:
      - name: run-report
        method: POST
Open in Framework → View in Fleet → google-analytics-storefront-report.yml

Checks K8s pod health at Gap.

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

Searches Adobe Creative Cloud Libraries for brand assets by keyword, returning asset names, types, thumbnails, and download links for the design team.

naftiko: '0.5'
info:
  label: Adobe Creative Cloud Asset Search
  description: Searches Adobe Creative Cloud Libraries for brand assets by keyword, returning asset names, types, thumbnails, and download links for the design team.
  tags:
  - marketing
  - creative
  - adobe-creative-cloud
capability:
  exposes:
  - type: mcp
    namespace: creative-assets
    port: 8080
    tools:
    - name: search-cc-assets
      description: Search Adobe CC Libraries by keyword. Returns matching assets with metadata and URLs.
      inputParameters:
      - name: keyword
        in: body
        type: string
        description: Search keyword for creative assets.
      - name: library_id
        in: body
        type: string
        description: The Adobe CC Library ID.
      call: adobe-cc.search-assets
      with:
        query: '{{keyword}}'
        library_id: '{{library_id}}'
  consumes:
  - type: http
    namespace: adobe-cc
    baseUri: https://cc-libraries.adobe.io/api/v1
    authentication:
      type: bearer
      token: $secrets.adobe_cc_token
    resources:
    - name: libraries
      path: /libraries/{{library_id}}/elements
      inputParameters:
      - name: library_id
        in: path
      operations:
      - name: search-assets
        method: GET
Open in Framework → View in Fleet → adobe-creative-cloud-asset-search.yml

Searches Confluence at Gap.

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

Checks New Relic APM at Gap.

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

Retrieves an employee record from PeopleSoft HCM by employee ID, returning department, job title, hire date, and manager information.

naftiko: '0.5'
info:
  label: PeopleSoft Employee Record Lookup
  description: Retrieves an employee record from PeopleSoft HCM by employee ID, returning department, job title, hire date, and manager information.
  tags:
  - hr
  - peoplesoft
capability:
  exposes:
  - type: mcp
    namespace: hr
    port: 8080
    tools:
    - name: get-employee
      description: Look up an employee in PeopleSoft by employee ID. Returns name, department, title, hire date, and manager.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The PeopleSoft employee ID.
      call: peoplesoft.get-employee
      with:
        employee_id: '{{employee_id}}'
  consumes:
  - type: http
    namespace: peoplesoft
    baseUri: https://gap-hrms.peoplesoft.com/PSIGW/RESTListeningConnector
    authentication:
      type: basic
      username: $secrets.peoplesoft_user
      password: $secrets.peoplesoft_password
    resources:
    - name: employees
      path: /EMPLOYEE_CI.v1/{{employee_id}}
      inputParameters:
      - name: employee_id
        in: path
      operations:
      - name: get-employee
        method: GET
Open in Framework → View in Fleet → peoplesoft-employee-record-lookup.yml

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

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

Identifies end-of-season inventory in Oracle Cloud, applies clearance pricing, removes items from featured collections on BigCommerce, schedules a clearance email blast via MailChimp, and notifies store managers via Microsoft Teams.

naftiko: '0.5'
info:
  label: End-of-Season Clearance Orchestrator
  description: Identifies end-of-season inventory in Oracle Cloud, applies clearance pricing, removes items from featured collections on BigCommerce, schedules a clearance email blast via MailChimp, and notifies store managers via Microsoft Teams.
  tags:
  - retail
  - clearance
  - oracle-cloud
  - bigcommerce
  - mailchimp
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: clearance-ops
    port: 8080
    tools:
    - name: execute-clearance
      description: Given a season code and clearance discount, identify inventory, update pricing, adjust storefront, schedule email, and notify stores.
      inputParameters:
      - name: season_code
        in: body
        type: string
        description: The season code (e.g. FW24, SS25).
      - name: clearance_discount
        in: body
        type: number
        description: Clearance discount percentage.
      steps:
      - name: get-seasonal-inventory
        type: call
        call: oracle-cloud.get-inventory-by-season
        with:
          season: '{{season_code}}'
      - name: apply-clearance-pricing
        type: call
        call: oracle-cloud.update-price-list
        with:
          items: '{{get-seasonal-inventory.items}}'
          markdown_pct: '{{clearance_discount}}'
      - name: update-storefront
        type: call
        call: bigcommerce.update-products
        with:
          items: '{{get-seasonal-inventory.skus}}'
          sale_price_adjustment: '{{clearance_discount}}'
      - name: schedule-email
        type: call
        call: mailchimp.schedule-campaign
        with:
          subject: 'End of Season Clearance: Up to {{clearance_discount}}% Off!'
          segment: all-subscribers
      - name: notify-stores
        type: call
        call: msteams.post-channel-message
        with:
          team_id: store-managers
          channel_id: clearance
          text: 'Season {{season_code}} clearance initiated: {{clearance_discount}}% off on {{get-seasonal-inventory.item_count}} items. Pricing updated in Oracle and BigCommerce. Email blast scheduled.'
  consumes:
  - type: http
    namespace: oracle-cloud
    baseUri: https://gap.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: bearer
      token: $secrets.oracle_cloud_token
    resources:
    - name: inventory-season
      path: /inventoryBalances
      operations:
      - name: get-inventory-by-season
        method: GET
    - name: price-lists
      path: /priceLists
      operations:
      - name: update-price-list
        method: PATCH
  - 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: update-products
        method: PUT
  - type: http
    namespace: mailchimp
    baseUri: https://us1.api.mailchimp.com/3.0
    authentication:
      type: bearer
      token: $secrets.mailchimp_api_key
    resources:
    - name: campaigns
      path: /campaigns
      operations:
      - name: schedule-campaign
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → end-of-season-clearance-orchestrator.yml

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

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

Checks F5 load balancer pool member health for Gap e-commerce web servers, returning node status, active connections, and availability.

naftiko: '0.5'
info:
  label: F5 Load Balancer Health
  description: Checks F5 load balancer pool member health for Gap e-commerce web servers, returning node status, active connections, and availability.
  tags:
  - infrastructure
  - load-balancing
  - f5-networks
capability:
  exposes:
  - type: mcp
    namespace: lb-ops
    port: 8080
    tools:
    - name: get-pool-health
      description: Given an F5 pool name, return the health status of all pool members including active connections and availability.
      inputParameters:
      - name: pool_name
        in: body
        type: string
        description: The F5 pool name.
      call: f5.get-pool-members
      with:
        pool_name: '{{pool_name}}'
  consumes:
  - type: http
    namespace: f5
    baseUri: https://gap-f5.internal/mgmt/tm/ltm
    authentication:
      type: basic
      username: $secrets.f5_user
      password: $secrets.f5_password
    resources:
    - name: pool-members
      path: /pool/~Common~{{pool_name}}/members
      inputParameters:
      - name: pool_name
        in: path
      operations:
      - name: get-pool-members
        method: GET
Open in Framework → View in Fleet → f5-load-balancer-health.yml

Monitors cert expiry at Gap.

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

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

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

Retrieves employee profile from Workday for Gap.

naftiko: '0.5'
info:
  label: Workday Employee Profile Lookup
  description: Retrieves employee profile from Workday for Gap.
  tags:
  - hr
  - workday
  - employee-directory
capability:
  exposes:
  - type: mcp
    namespace: workday-profile
    port: 8080
    tools:
    - name: get-employee-profile
      description: Look up Gap employee in Workday.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: Employee ID.
      call: workday.get-worker
      with:
        employee_id: '{{employee_id}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.worker.name
      - name: title
        type: string
        mapping: $.worker.title
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd5.gap.com/api/v1
    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
Open in Framework → View in Fleet → workday-employee-profile-lookup.yml

Retrieves a customer profile from Salesforce by email or customer ID, including order history summary, loyalty tier, and contact preferences.

naftiko: '0.5'
info:
  label: Salesforce Customer Lookup
  description: Retrieves a customer profile from Salesforce by email or customer ID, including order history summary, loyalty tier, and contact preferences.
  tags:
  - customer-service
  - crm
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: crm
    port: 8080
    tools:
    - name: get-customer-profile
      description: Look up a customer in Salesforce by email. Returns name, loyalty tier, lifetime value, and recent order count.
      inputParameters:
      - name: customer_email
        in: body
        type: string
        description: The customer email address.
      call: salesforce.get-contact
      with:
        email: '{{customer_email}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://gap.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: contacts
      path: /query?q=SELECT+Id,Name,Loyalty_Tier__c,Lifetime_Value__c+FROM+Contact+WHERE+Email='{{email}}'
      inputParameters:
      - name: email
        in: query
      operations:
      - name: get-contact
        method: GET
Open in Framework → View in Fleet → salesforce-customer-lookup.yml

Queries Cisco DNA Center for network device health at Gap store locations, returning device uptime, connectivity status, and any active alerts.

naftiko: '0.5'
info:
  label: Cisco Network Health Check
  description: Queries Cisco DNA Center for network device health at Gap store locations, returning device uptime, connectivity status, and any active alerts.
  tags:
  - infrastructure
  - networking
  - cisco
capability:
  exposes:
  - type: mcp
    namespace: network-ops
    port: 8080
    tools:
    - name: check-network-health
      description: Check network device health for a specific store site via Cisco DNA Center. Returns device count, health score, and active issues.
      inputParameters:
      - name: site_name
        in: body
        type: string
        description: The site name in Cisco DNA Center (store location).
      call: cisco.get-site-health
      with:
        site_name: '{{site_name}}'
  consumes:
  - type: http
    namespace: cisco
    baseUri: https://gap-dnac.cisco.com/dna/intent/api/v1
    authentication:
      type: bearer
      token: $secrets.cisco_dnac_token
    resources:
    - name: site-health
      path: /site-health
      operations:
      - name: get-site-health
        method: GET
Open in Framework → View in Fleet → cisco-network-health-check.yml

Checks ES index at Gap.

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

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

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

When a customer initiates a return on Gap.com, retrieves the order from Oracle E-Business Suite, creates a return case in Salesforce, and sends a confirmation email via MailChimp transactional.

naftiko: '0.5'
info:
  label: E-Commerce Returns and Exchanges Orchestrator
  description: When a customer initiates a return on Gap.com, retrieves the order from Oracle E-Business Suite, creates a return case in Salesforce, and sends a confirmation email via MailChimp transactional.
  tags:
  - e-commerce
  - returns
  - oracle-e-business-suite
  - salesforce
  - mailchimp
capability:
  exposes:
  - type: mcp
    namespace: returns-processing
    port: 8080
    tools:
    - name: process-return
      description: Given an order number and customer email, look up the original order, create a return case in Salesforce, and send the customer a return label email.
      inputParameters:
      - name: order_number
        in: body
        type: string
        description: The original order number.
      - name: customer_email
        in: body
        type: string
        description: The customer email for return confirmation.
      - name: reason
        in: body
        type: string
        description: The reason for the return.
      steps:
      - name: get-order
        type: call
        call: oracle-ebs.get-order
        with:
          order_number: '{{order_number}}'
      - name: create-return-case
        type: call
        call: salesforce.create-case
        with:
          subject: 'Return request: Order {{order_number}}'
          description: 'Customer {{customer_email}} requested return for order {{order_number}}. Reason: {{reason}}. Order total: {{get-order.total_amount}}.'
          type: Return
          priority: Medium
      - name: send-confirmation
        type: call
        call: mailchimp.send-transactional
        with:
          to_email: '{{customer_email}}'
          template: return_confirmation
          merge_vars:
            order_number: '{{order_number}}'
            case_number: '{{create-return-case.CaseNumber}}'
  consumes:
  - type: http
    namespace: oracle-ebs
    baseUri: https://gap-ebs.oraclecloud.com/webservices/rest/oe/v1
    authentication:
      type: basic
      username: $secrets.oracle_ebs_user
      password: $secrets.oracle_ebs_password
    resources:
    - name: orders
      path: /orders/{{order_number}}
      inputParameters:
      - name: order_number
        in: path
      operations:
      - name: get-order
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://gap.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: mailchimp
    baseUri: https://us1.api.mailchimp.com/3.0
    authentication:
      type: bearer
      token: $secrets.mailchimp_api_key
    resources:
    - name: transactional
      path: /messages/send-template
      operations:
      - name: send-transactional
        method: POST
Open in Framework → View in Fleet → e-commerce-returns-and-exchanges-orchestrator.yml

Looks up a Gap gift card balance from Oracle E-Business Suite by card number and returns current balance, expiry date, and last transaction.

naftiko: '0.5'
info:
  label: Gift Card Balance Check
  description: Looks up a Gap gift card balance from Oracle E-Business Suite by card number and returns current balance, expiry date, and last transaction.
  tags:
  - retail
  - gift-cards
  - oracle-e-business-suite
capability:
  exposes:
  - type: mcp
    namespace: gift-cards
    port: 8080
    tools:
    - name: check-gift-card-balance
      description: Given a gift card number, return the current balance, expiry date, and last transaction details.
      inputParameters:
      - name: card_number
        in: body
        type: string
        description: The gift card number.
      call: oracle-ebs.get-gift-card
      with:
        card_number: '{{card_number}}'
  consumes:
  - type: http
    namespace: oracle-ebs
    baseUri: https://gap-ebs.oraclecloud.com/webservices/rest/gc/v1
    authentication:
      type: basic
      username: $secrets.oracle_ebs_user
      password: $secrets.oracle_ebs_password
    resources:
    - name: gift-cards
      path: /giftCards/{{card_number}}
      inputParameters:
      - name: card_number
        in: path
      operations:
      - name: get-gift-card
        method: GET
Open in Framework → View in Fleet → gift-card-balance-check.yml

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

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

Checks Terraform workspace at Gap.

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

Retrieves the latest GitLab CI/CD pipeline status for a given project, returning pipeline state, duration, and deployment environment.

naftiko: '0.5'
info:
  label: GitLab Deployment Status
  description: Retrieves the latest GitLab CI/CD pipeline status for a given project, returning pipeline state, duration, and deployment environment.
  tags:
  - engineering
  - cicd
  - gitlab
capability:
  exposes:
  - type: mcp
    namespace: cicd
    port: 8080
    tools:
    - name: get-pipeline-status
      description: Look up the latest GitLab pipeline for a project. Returns status, duration, stages, and deployed environment.
      inputParameters:
      - name: project_id
        in: body
        type: string
        description: The GitLab project ID.
      call: gitlab.get-latest-pipeline
      with:
        project_id: '{{project_id}}'
  consumes:
  - type: http
    namespace: gitlab
    baseUri: https://gitlab.gap.com/api/v4
    authentication:
      type: bearer
      token: $secrets.gitlab_token
    resources:
    - name: pipelines
      path: /projects/{{project_id}}/pipelines/latest
      inputParameters:
      - name: project_id
        in: path
      operations:
      - name: get-latest-pipeline
        method: GET
Open in Framework → View in Fleet → gitlab-deployment-status.yml

Checks Datadog monitor at Gap.

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

Retrieves sprint progress metrics from Jira including total stories, completed, in-progress, and remaining story points for engineering standup reports.

naftiko: '0.5'
info:
  label: Jira Sprint Progress Report
  description: Retrieves sprint progress metrics from Jira including total stories, completed, in-progress, and remaining story points for engineering standup reports.
  tags:
  - engineering
  - project-management
  - jira
capability:
  exposes:
  - type: mcp
    namespace: eng-reporting
    port: 8080
    tools:
    - name: get-sprint-progress
      description: Given a Jira board ID and sprint ID, return total stories, completed count, in-progress count, and remaining story points.
      inputParameters:
      - name: board_id
        in: body
        type: string
        description: The Jira board ID.
      - name: sprint_id
        in: body
        type: string
        description: The Jira sprint ID.
      call: jira.get-sprint
      with:
        board_id: '{{board_id}}'
        sprint_id: '{{sprint_id}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://gap.atlassian.net/rest/agile/1.0
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: sprints
      path: /board/{{board_id}}/sprint/{{sprint_id}}
      inputParameters:
      - name: board_id
        in: path
      - name: sprint_id
        in: path
      operations:
      - name: get-sprint
        method: GET
Open in Framework → View in Fleet → jira-sprint-progress-report.yml

Checks on-call at Gap.

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

Checks Redis at Gap.

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

Triggers a Terraform plan against Gap's Azure infrastructure state to detect configuration drift and posts any detected changes to Microsoft Teams.

naftiko: '0.5'
info:
  label: Terraform Infrastructure Drift Check
  description: Triggers a Terraform plan against Gap's Azure infrastructure state to detect configuration drift and posts any detected changes to Microsoft Teams.
  tags:
  - infrastructure
  - terraform
  - microsoft-azure
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: infra-ops
    port: 8080
    tools:
    - name: check-infra-drift
      description: Given a Terraform workspace, run a plan to detect drift and notify the infrastructure team of any changes.
      inputParameters:
      - name: workspace_id
        in: body
        type: string
        description: The Terraform Cloud workspace ID.
      steps:
      - name: create-run
        type: call
        call: terraform.create-run
        with:
          workspace_id: '{{workspace_id}}'
          is_destroy: false
          message: Automated drift check
      - name: notify-infra
        type: call
        call: msteams.post-channel-message
        with:
          team_id: infrastructure
          channel_id: drift-detection
          text: 'Terraform drift check initiated for workspace {{workspace_id}}. Run ID: {{create-run.id}}. Status: {{create-run.status}}.'
  consumes:
  - type: http
    namespace: terraform
    baseUri: https://app.terraform.io/api/v2
    authentication:
      type: bearer
      token: $secrets.terraform_token
    resources:
    - name: runs
      path: /runs
      operations:
      - name: create-run
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → terraform-infrastructure-drift-check.yml

Checks IT incident in ServiceNow for Gap.

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

Aggregates marketing metrics from Google Analytics, Adobe Analytics, Meta Ads, and MailChimp into a unified summary for weekly marketing review.

naftiko: '0.5'
info:
  label: Cross-Channel Marketing Performance Dashboard
  description: Aggregates marketing metrics from Google Analytics, Adobe Analytics, Meta Ads, and MailChimp into a unified summary for weekly marketing review.
  tags:
  - marketing
  - analytics
  - google-analytics
  - adobe-analytics
  - meta
  - mailchimp
capability:
  exposes:
  - type: mcp
    namespace: marketing-dashboard
    port: 8080
    tools:
    - name: generate-marketing-summary
      description: Given a date range, pull metrics from all marketing channels and produce a unified performance summary.
      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-web-traffic
        type: call
        call: google-analytics.run-report
        with:
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
      - name: get-adobe-data
        type: call
        call: adobe-analytics.get-report
        with:
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
      - name: get-social-metrics
        type: call
        call: meta.get-account-insights
        with:
          since: '{{start_date}}'
          until: '{{end_date}}'
      - name: get-email-metrics
        type: call
        call: mailchimp.get-summary
        with:
          since_send_time: '{{start_date}}'
  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: run-report
        method: POST
  - 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: 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
  - type: http
    namespace: mailchimp
    baseUri: https://us1.api.mailchimp.com/3.0
    authentication:
      type: bearer
      token: $secrets.mailchimp_api_key
    resources:
    - name: campaign-summary
      path: /campaigns
      operations:
      - name: get-summary
        method: GET
Open in Framework → View in Fleet → cross-channel-marketing-performance-dashboard.yml

On new store hire in PeopleSoft, creates a ServiceNow onboarding ticket, provisions a SharePoint training folder, and sends a Microsoft Teams welcome message to the store manager.

naftiko: '0.5'
info:
  label: Store Associate Onboarding Orchestrator
  description: On new store hire in PeopleSoft, creates a ServiceNow onboarding ticket, provisions a SharePoint training folder, and sends a Microsoft Teams welcome message to the store manager.
  tags:
  - hr
  - onboarding
  - peoplesoft
  - servicenow
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: store-onboarding
    port: 8080
    tools:
    - name: onboard-store-associate
      description: 'Given a PeopleSoft employee ID and store location, orchestrate onboarding: open IT ticket, create training folder, and notify the store manager.'
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The PeopleSoft employee ID for the new hire.
      - name: store_location
        in: body
        type: string
        description: The store location code.
      - name: start_date
        in: body
        type: string
        description: Start date in YYYY-MM-DD format.
      steps:
      - name: get-employee
        type: call
        call: peoplesoft.get-employee
        with:
          employee_id: '{{employee_id}}'
      - name: open-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'New store hire onboarding: {{get-employee.name}} at {{store_location}}'
          category: hr_onboarding
          assigned_group: Store_IT
          description: Onboard {{get-employee.name}} starting {{start_date}} at store {{store_location}}. Provision POS access and uniforms.
      - name: create-training-folder
        type: call
        call: sharepoint.create-folder
        with:
          site_id: store-training
          folder_path: NewHires/{{get-employee.name}}_{{start_date}}
      - name: notify-manager
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-employee.manager_email}}'
          text: 'New hire {{get-employee.name}} starts {{start_date}} at {{store_location}}. Onboarding ticket: {{open-ticket.number}}. Training materials: {{create-training-folder.url}}.'
  consumes:
  - type: http
    namespace: peoplesoft
    baseUri: https://gap-hrms.peoplesoft.com/PSIGW/RESTListeningConnector
    authentication:
      type: basic
      username: $secrets.peoplesoft_user
      password: $secrets.peoplesoft_password
    resources:
    - name: employees
      path: /EMPLOYEE_CI.v1/{{employee_id}}
      inputParameters:
      - name: employee_id
        in: path
      operations:
      - name: get-employee
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://gap.service-now.com/api/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: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → store-associate-onboarding-orchestrator.yml

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

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

Remediates vulnerabilities at Gap via scanning, Jira, and Slack.

naftiko: '0.5'
info:
  label: Security Vulnerability Remediation Pipeline
  description: Remediates vulnerabilities at Gap via scanning, Jira, and Slack.
  tags:
  - security
  - vulnerability-management
  - jira
capability:
  exposes:
  - type: mcp
    namespace: vuln-fix
    port: 8080
    tools:
    - name: remediate
      description: Fix vulnerabilities at Gap.
      inputParameters:
      - name: target
        in: body
        type: string
        description: Target.
      - name: policy
        in: body
        type: string
        description: Policy.
      steps:
      - name: scan
        type: call
        call: qualys.scan
        with:
          target: '{{target}}'
          policy: '{{policy}}'
      - name: prioritize
        type: call
        call: security.prioritize
        with:
          scan: '{{scan.id}}'
      - name: ticket
        type: call
        call: jira.create-issue
        with:
          project: SEC
          summary: 'Vulns: {{prioritize.critical}} critical'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: '#security'
          text: 'Scan: {{prioritize.critical}} critical'
  consumes:
  - type: http
    namespace: qualys
    baseUri: https://qualysapi.qualys.com/api/v2
    authentication:
      type: bearer
      token: $secrets.qualys_token
    resources:
    - name: scans
      path: /fo/scan
      operations:
      - name: scan
        method: POST
  - type: http
    namespace: security
    baseUri: https://security.gap.com/api/v1
    authentication:
      type: bearer
      token: $secrets.security_token
    resources:
    - name: vulns
      path: /prioritize
      operations:
      - name: prioritize
        method: POST
  - type: http
    namespace: jira
    baseUri: https://gap.com.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → security-vulnerability-remediation-pipeline.yml

Checks the status of a Mastercard payment transaction by reference ID, returning authorization status, amount, and settlement date.

naftiko: '0.5'
info:
  label: Mastercard Payment Gateway Status
  description: Checks the status of a Mastercard payment transaction by reference ID, returning authorization status, amount, and settlement date.
  tags:
  - payments
  - mastercard
capability:
  exposes:
  - type: mcp
    namespace: payments
    port: 8080
    tools:
    - name: get-payment-status
      description: Look up a Mastercard transaction by reference ID. Returns authorization status, amount, currency, and settlement date.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The Mastercard transaction reference ID.
      call: mastercard.get-transaction
      with:
        reference_id: '{{reference_id}}'
  consumes:
  - type: http
    namespace: mastercard
    baseUri: https://api.mastercard.com/gateway/v1
    authentication:
      type: bearer
      token: $secrets.mastercard_token
    resources:
    - name: transactions
      path: /transactions/{{reference_id}}
      inputParameters:
      - name: reference_id
        in: path
      operations:
      - name: get-transaction
        method: GET
Open in Framework → View in Fleet → mastercard-payment-gateway-status.yml

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

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

Verifies backups at Gap.

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

Reallocates costs at Gap.

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

Retrieves the current month Azure spend summary from Azure Cost Management for Gap's cloud infrastructure.

naftiko: '0.5'
info:
  label: Azure Cloud Cost Summary
  description: Retrieves the current month Azure spend summary from Azure Cost Management for Gap's cloud infrastructure.
  tags:
  - infrastructure
  - cloud
  - microsoft-azure
capability:
  exposes:
  - type: mcp
    namespace: cloud-cost
    port: 8080
    tools:
    - name: get-azure-cost-summary
      description: Retrieve current month Azure cost summary by resource group. Returns total spend, top resource groups, and month-over-month change.
      inputParameters:
      - name: subscription_id
        in: body
        type: string
        description: The Azure subscription ID.
      - name: billing_period
        in: body
        type: string
        description: Billing period in YYYYMM format.
      call: azure.get-cost-summary
      with:
        subscription_id: '{{subscription_id}}'
        billing_period: '{{billing_period}}'
  consumes:
  - type: http
    namespace: azure
    baseUri: https://management.azure.com
    authentication:
      type: bearer
      token: $secrets.azure_mgmt_token
    resources:
    - name: cost-management
      path: /subscriptions/{{subscription_id}}/providers/Microsoft.CostManagement/query
      inputParameters:
      - name: subscription_id
        in: path
      operations:
      - name: get-cost-summary
        method: POST
Open in Framework → View in Fleet → azure-cloud-cost-summary.yml

Retrieves performance metrics for a MailChimp email campaign including open rate, click rate, unsubscribes, and total recipients.

naftiko: '0.5'
info:
  label: MailChimp Email Campaign Metrics
  description: Retrieves performance metrics for a MailChimp email campaign including open rate, click rate, unsubscribes, and total recipients.
  tags:
  - marketing
  - email
  - mailchimp
capability:
  exposes:
  - type: mcp
    namespace: email-marketing
    port: 8080
    tools:
    - name: get-campaign-metrics
      description: Given a MailChimp campaign ID, return 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: bearer
      token: $secrets.mailchimp_api_key
    resources:
    - name: reports
      path: /reports/{{campaign_id}}
      inputParameters:
      - name: campaign_id
        in: path
      operations:
      - name: get-campaign-report
        method: GET
Open in Framework → View in Fleet → mailchimp-email-campaign-metrics.yml

Queries shipment status from Oracle Cloud logistics by tracking reference, returning carrier, estimated arrival, and current location for DC operations.

naftiko: '0.5'
info:
  label: Distribution Center Shipment Tracker
  description: Queries shipment status from Oracle Cloud logistics by tracking reference, returning carrier, estimated arrival, and current location for DC operations.
  tags:
  - supply-chain
  - logistics
  - oracle-cloud
capability:
  exposes:
  - type: mcp
    namespace: dc-logistics
    port: 8080
    tools:
    - name: track-shipment
      description: Look up a shipment by tracking reference in Oracle Cloud. Returns carrier, origin, destination, ETA, and current status.
      inputParameters:
      - name: tracking_ref
        in: body
        type: string
        description: The shipment tracking reference number.
      call: oracle-cloud.get-shipment
      with:
        tracking_ref: '{{tracking_ref}}'
  consumes:
  - type: http
    namespace: oracle-cloud
    baseUri: https://gap.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: bearer
      token: $secrets.oracle_cloud_token
    resources:
    - name: shipments
      path: /shipments?q=TrackingNumber={{tracking_ref}}
      inputParameters:
      - name: tracking_ref
        in: query
      operations:
      - name: get-shipment
        method: GET
Open in Framework → View in Fleet → distribution-center-shipment-tracker.yml

When a customer reaches a new loyalty tier, updates the tier in Salesforce, sends a congratulatory email via MailChimp, and posts an internal notification to Microsoft Teams for the CRM team.

naftiko: '0.5'
info:
  label: Loyalty Program Tier Update Orchestrator
  description: When a customer reaches a new loyalty tier, updates the tier in Salesforce, sends a congratulatory email via MailChimp, and posts an internal notification to Microsoft Teams for the CRM team.
  tags:
  - customer-service
  - loyalty
  - salesforce
  - mailchimp
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: loyalty
    port: 8080
    tools:
    - name: update-loyalty-tier
      description: Given a customer ID and new tier, update Salesforce, email the customer, and notify the CRM team.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The Salesforce contact ID.
      - name: new_tier
        in: body
        type: string
        description: The new loyalty tier name.
      - name: customer_email
        in: body
        type: string
        description: The customer email address.
      steps:
      - name: update-salesforce
        type: call
        call: salesforce.update-contact
        with:
          contact_id: '{{customer_id}}'
          loyalty_tier: '{{new_tier}}'
      - name: send-congrats
        type: call
        call: mailchimp.send-transactional
        with:
          to_email: '{{customer_email}}'
          template: loyalty_tier_upgrade
          merge_vars:
            new_tier: '{{new_tier}}'
      - name: notify-crm-team
        type: call
        call: msteams.post-channel-message
        with:
          team_id: crm-team
          channel_id: loyalty-updates
          text: Customer {{customer_id}} upgraded to {{new_tier}} tier.
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://gap.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: mailchimp
    baseUri: https://us1.api.mailchimp.com/3.0
    authentication:
      type: bearer
      token: $secrets.mailchimp_api_key
    resources:
    - name: transactional
      path: /messages/send-template
      operations:
      - name: send-transactional
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → loyalty-program-tier-update-orchestrator.yml

Retrieves sprint progress at Gap.

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

Coordinates a seasonal promotion by updating product pricing in Oracle Cloud, scheduling the email campaign in MailChimp, publishing Instagram ad creative via Meta, and notifying the merchandising team in Microsoft Teams.

naftiko: '0.5'
info:
  label: Seasonal Promotion Launch Orchestrator
  description: Coordinates a seasonal promotion by updating product pricing in Oracle Cloud, scheduling the email campaign in MailChimp, publishing Instagram ad creative via Meta, and notifying the merchandising team in Microsoft Teams.
  tags:
  - marketing
  - promotions
  - oracle-cloud
  - mailchimp
  - meta
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: promo-launch
    port: 8080
    tools:
    - name: launch-promotion
      description: Given a promotion ID, discount percentage, start date, and target audience, coordinate pricing update, email blast scheduling, social ad activation, and team notification.
      inputParameters:
      - name: promotion_id
        in: body
        type: string
        description: The internal promotion identifier.
      - name: discount_pct
        in: body
        type: number
        description: Discount percentage for the promotion.
      - name: start_date
        in: body
        type: string
        description: Promotion start date in YYYY-MM-DD format.
      - name: audience_segment
        in: body
        type: string
        description: Target customer segment for the promotion.
      steps:
      - name: update-pricing
        type: call
        call: oracle-cloud.update-price-list
        with:
          promotion_id: '{{promotion_id}}'
          discount_pct: '{{discount_pct}}'
          effective_date: '{{start_date}}'
      - name: schedule-email
        type: call
        call: mailchimp.schedule-campaign
        with:
          segment: '{{audience_segment}}'
          schedule_time: '{{start_date}}T08:00:00Z'
          subject: 'Gap Sale: {{discount_pct}}% Off — Starts Now!'
      - name: activate-social-ad
        type: call
        call: meta.create-ad
        with:
          campaign_name: Promo_{{promotion_id}}
          audience: '{{audience_segment}}'
          start_time: '{{start_date}}T00:00:00Z'
      - name: notify-merch-team
        type: call
        call: msteams.post-channel-message
        with:
          team_id: merchandising-team
          channel_id: promotions
          text: 'Promotion {{promotion_id}} launched: {{discount_pct}}% off starting {{start_date}}. Email scheduled: {{schedule-email.campaign_id}}. Social ad: {{activate-social-ad.ad_id}}.'
  consumes:
  - type: http
    namespace: oracle-cloud
    baseUri: https://gap.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: bearer
      token: $secrets.oracle_cloud_token
    resources:
    - name: price-lists
      path: /priceLists
      operations:
      - name: update-price-list
        method: PATCH
  - type: http
    namespace: mailchimp
    baseUri: https://us1.api.mailchimp.com/3.0
    authentication:
      type: bearer
      token: $secrets.mailchimp_api_key
    resources:
    - name: campaigns
      path: /campaigns
      operations:
      - name: schedule-campaign
        method: POST
  - type: http
    namespace: meta
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.meta_ads_token
    resources:
    - name: ads
      path: /act_{{ad_account_id}}/ads
      inputParameters:
      - name: ad_account_id
        in: path
      operations:
      - name: create-ad
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → seasonal-promotion-launch-orchestrator.yml

Triggers a store compliance check by pulling the store profile from Oracle Cloud, verifying open ServiceNow compliance tickets, and generating an audit summary document in SharePoint with notification to the compliance team.

naftiko: '0.5'
info:
  label: Store Compliance Audit Orchestrator
  description: Triggers a store compliance check by pulling the store profile from Oracle Cloud, verifying open ServiceNow compliance tickets, and generating an audit summary document in SharePoint with notification to the compliance team.
  tags:
  - compliance
  - retail
  - oracle-cloud
  - servicenow
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: store-compliance
    port: 8080
    tools:
    - name: run-compliance-audit
      description: Given a store ID, pull the store profile, check open compliance tickets, generate audit document, and notify the compliance team.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: The store location ID.
      - name: audit_type
        in: body
        type: string
        description: Type of compliance audit (e.g. safety, loss-prevention, ADA).
      steps:
      - name: get-store
        type: call
        call: oracle-cloud.get-location
        with:
          location_id: '{{store_id}}'
      - name: get-open-tickets
        type: call
        call: servicenow.query-incidents
        with:
          query: location={{store_id}}^category={{audit_type}}^stateNOT IN6,7
      - name: create-audit-doc
        type: call
        call: sharepoint.create-file
        with:
          site_id: compliance-hub
          folder_path: Audits/{{store_id}}/{{audit_type}}
          content: 'Store: {{get-store.name}}. Open tickets: {{get-open-tickets.count}}. Audit type: {{audit_type}}.'
      - name: notify-compliance
        type: call
        call: msteams.post-channel-message
        with:
          team_id: compliance-team
          channel_id: store-audits
          text: 'Compliance audit triggered for store {{store_id}} ({{get-store.name}}). Type: {{audit_type}}. Open tickets: {{get-open-tickets.count}}. Report: {{create-audit-doc.url}}.'
  consumes:
  - type: http
    namespace: oracle-cloud
    baseUri: https://gap.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: bearer
      token: $secrets.oracle_cloud_token
    resources:
    - name: locations
      path: /locations/{{location_id}}
      inputParameters:
      - name: location_id
        in: path
      operations:
      - name: get-location
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://gap.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: query-incidents
        method: GET
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: files
      path: /{{site_id}}/drive/root:/{{folder_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      operations:
      - name: 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/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → store-compliance-audit-orchestrator.yml

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

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

Checks Vault secret at Gap.

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

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

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

When Oracle Cloud detects a supplier delivery delay, creates a ServiceNow incident, notifies the supply chain team in Microsoft Teams, and updates the Jira backlog with impacted product lines.

naftiko: '0.5'
info:
  label: Supply Chain Disruption Alert Orchestrator
  description: When Oracle Cloud detects a supplier delivery delay, creates a ServiceNow incident, notifies the supply chain team in Microsoft Teams, and updates the Jira backlog with impacted product lines.
  tags:
  - supply-chain
  - oracle-cloud
  - servicenow
  - microsoft-teams
  - jira
capability:
  exposes:
  - type: mcp
    namespace: supply-chain-alerts
    port: 8080
    tools:
    - name: alert-supply-disruption
      description: Given a supplier ID and delay details, create a ServiceNow incident, notify the supply chain team, and log the disruption in Jira.
      inputParameters:
      - name: supplier_id
        in: body
        type: string
        description: The Oracle Cloud supplier identifier.
      - name: delay_days
        in: body
        type: number
        description: Number of days the shipment is delayed.
      - name: affected_skus
        in: body
        type: string
        description: Comma-separated list of affected SKUs.
      steps:
      - name: get-supplier
        type: call
        call: oracle-cloud.get-supplier
        with:
          supplier_id: '{{supplier_id}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Supply delay: {{get-supplier.supplier_name}} — {{delay_days}} days'
          category: supply_chain
          priority: '2'
          description: 'Supplier {{get-supplier.supplier_name}} delayed by {{delay_days}} days. Affected SKUs: {{affected_skus}}.'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          team_id: supply-chain-ops
          channel_id: disruptions
          text: 'ALERT: {{get-supplier.supplier_name}} shipment delayed {{delay_days}} days. Incident: {{create-incident.number}}. SKUs: {{affected_skus}}.'
      - name: log-in-jira
        type: call
        call: jira.create-issue
        with:
          project: SCM
          summary: 'Supply disruption: {{get-supplier.supplier_name}}'
          description: 'Delay: {{delay_days}} days. Incident: {{create-incident.number}}. Affected SKUs: {{affected_skus}}.'
          issue_type: Bug
  consumes:
  - type: http
    namespace: oracle-cloud
    baseUri: https://gap.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: bearer
      token: $secrets.oracle_cloud_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://gap.service-now.com/api/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
  - type: http
    namespace: jira
    baseUri: https://gap.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → supply-chain-disruption-alert-orchestrator.yml

Fetches recent Instagram ad campaign metrics from Meta for Gap brand accounts including impressions, reach, engagement, and spend.

naftiko: '0.5'
info:
  label: Instagram Campaign Performance
  description: Fetches recent Instagram ad campaign metrics from Meta for Gap brand accounts including impressions, reach, engagement, and spend.
  tags:
  - marketing
  - social-media
  - instagram
  - meta
capability:
  exposes:
  - type: mcp
    namespace: social-marketing
    port: 8080
    tools:
    - name: get-instagram-campaign
      description: Given a campaign ID, retrieve impressions, reach, engagement rate, and total spend from Meta Ads API.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: The Meta Ads campaign ID.
      call: meta.get-campaign-insights
      with:
        campaign_id: '{{campaign_id}}'
  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
Open in Framework → View in Fleet → instagram-campaign-performance.yml

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

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

Pulls A/B test results from Google Optimize, correlates with revenue data from Google Analytics, logs findings in Confluence, and notifies the UX team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Website A/B Test Results Aggregator
  description: Pulls A/B test results from Google Optimize, correlates with revenue data from Google Analytics, logs findings in Confluence, and notifies the UX team via Microsoft Teams.
  tags:
  - e-commerce
  - experimentation
  - google-optimize
  - google-analytics
  - confluence
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: ab-testing
    port: 8080
    tools:
    - name: aggregate-test-results
      description: Given an experiment ID, pull test results from Google Optimize, correlate with GA revenue, document findings, and notify the team.
      inputParameters:
      - name: experiment_id
        in: body
        type: string
        description: The Google Optimize experiment ID.
      - name: date_range
        in: body
        type: string
        description: Date range for the test period in YYYY-MM-DD/YYYY-MM-DD format.
      steps:
      - name: get-experiment
        type: call
        call: google-optimize.get-experiment
        with:
          experiment_id: '{{experiment_id}}'
      - name: get-revenue-data
        type: call
        call: google-analytics.run-report
        with:
          start_date: '{{date_range}}'
          experiment_id: '{{experiment_id}}'
      - name: document-findings
        type: call
        call: confluence.create-page
        with:
          space_key: UX
          title: 'A/B Test Results: {{get-experiment.name}}'
          body: 'Experiment: {{get-experiment.name}}. Winner: {{get-experiment.winner_variant}}. Revenue lift: {{get-revenue-data.revenue_delta}}%.'
      - name: notify-ux-team
        type: call
        call: msteams.post-channel-message
        with:
          team_id: ux-team
          channel_id: experiments
          text: 'A/B test {{get-experiment.name}} complete. Winner: {{get-experiment.winner_variant}}. Revenue lift: {{get-revenue-data.revenue_delta}}%. Full report: {{document-findings.url}}.'
  consumes:
  - type: http
    namespace: google-optimize
    baseUri: https://www.googleapis.com/analytics/v3
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: experiments
      path: /management/accounts/{{account_id}}/webproperties/{{property_id}}/experiments/{{experiment_id}}
      inputParameters:
      - name: experiment_id
        in: path
      operations:
      - name: get-experiment
        method: GET
  - type: http
    namespace: google-analytics
    baseUri: https://analyticsdata.googleapis.com/v1beta
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: reports
      path: /properties/{{property_id}}:runReport
      inputParameters:
      - name: property_id
        in: path
      operations:
      - name: run-report
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://gap.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: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → website-a-b-test-results-aggregator.yml

Sends a formatted notification message to a specified Microsoft Teams channel for operational alerts, promotions updates, or system announcements.

naftiko: '0.5'
info:
  label: Microsoft Teams Channel Notification
  description: Sends a formatted notification message to a specified Microsoft Teams channel for operational alerts, promotions updates, or system announcements.
  tags:
  - communications
  - notifications
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: team-notifications
    port: 8080
    tools:
    - name: send-channel-notification
      description: Post a message to a Microsoft Teams channel by team and channel name.
      inputParameters:
      - name: team_id
        in: body
        type: string
        description: The Microsoft Teams team ID.
      - name: channel_id
        in: body
        type: string
        description: The Microsoft Teams channel ID.
      - name: message_text
        in: body
        type: string
        description: The notification message body.
      call: msteams.post-channel-message
      with:
        team_id: '{{team_id}}'
        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/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → microsoft-teams-channel-notification.yml

Queries real-time inventory levels from Oracle Cloud for a given SKU across all Gap brand stores and distribution centers.

naftiko: '0.5'
info:
  label: Product Inventory Check
  description: Queries real-time inventory levels from Oracle Cloud for a given SKU across all Gap brand stores and distribution centers.
  tags:
  - retail
  - inventory
  - oracle-cloud
capability:
  exposes:
  - type: mcp
    namespace: inventory
    port: 8080
    tools:
    - name: check-inventory
      description: Given a SKU and optional location code, return current inventory quantity, reserved stock, and available-to-promise count.
      inputParameters:
      - name: sku
        in: body
        type: string
        description: The product SKU identifier.
      - name: location_code
        in: body
        type: string
        description: Optional store or DC location code.
      call: oracle-cloud.get-inventory
      with:
        sku: '{{sku}}'
        location_code: '{{location_code}}'
      outputParameters:
      - name: on_hand_quantity
        type: number
        mapping: $.InventoryBalance.OnHandQuantity
      - name: available_to_promise
        type: number
        mapping: $.InventoryBalance.AvailableToPromise
  consumes:
  - type: http
    namespace: oracle-cloud
    baseUri: https://gap.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: bearer
      token: $secrets.oracle_cloud_token
    resources:
    - name: inventory-balances
      path: /inventoryBalances?q=ItemNumber={{sku}};LocationCode={{location_code}}
      inputParameters:
      - name: sku
        in: query
      - name: location_code
        in: query
      operations:
      - name: get-inventory
        method: GET
Open in Framework → View in Fleet → product-inventory-check.yml

Checks Grafana dashboard at Gap.

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

Generates monthly security reports at Gap from Splunk and Qualys.

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

Retrieves Teams activity at Gap.

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

Enriches a business contact record using ZoomInfo by email, returning company name, title, industry, and direct phone number for the sales team.

naftiko: '0.5'
info:
  label: ZoomInfo Lead Enrichment
  description: Enriches a business contact record using ZoomInfo by email, returning company name, title, industry, and direct phone number for the sales team.
  tags:
  - sales
  - lead-enrichment
  - zoominfo
capability:
  exposes:
  - type: mcp
    namespace: sales-intelligence
    port: 8080
    tools:
    - name: enrich-contact
      description: Enrich a contact by email address via ZoomInfo. Returns company, title, industry, and phone.
      inputParameters:
      - name: email
        in: body
        type: string
        description: The contact email address to enrich.
      call: zoominfo.enrich-contact
      with:
        email: '{{email}}'
  consumes:
  - type: http
    namespace: zoominfo
    baseUri: https://api.zoominfo.com
    authentication:
      type: bearer
      token: $secrets.zoominfo_token
    resources:
    - name: contacts
      path: /enrich/contact
      operations:
      - name: enrich-contact
        method: POST
Open in Framework → View in Fleet → zoominfo-lead-enrichment.yml

Takes an approved creative brief from Jira, provisions an Adobe Creative Cloud project folder, uploads reference assets from SharePoint, and assigns the designer in Microsoft Teams.

naftiko: '0.5'
info:
  label: Creative Brief to Design Handoff
  description: Takes an approved creative brief from Jira, provisions an Adobe Creative Cloud project folder, uploads reference assets from SharePoint, and assigns the designer in Microsoft Teams.
  tags:
  - marketing
  - creative
  - jira
  - adobe-creative-cloud
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: creative-ops
    port: 8080
    tools:
    - name: handoff-creative-brief
      description: Given a Jira issue key for the creative brief, set up the Adobe CC project, pull reference assets, and assign the designer.
      inputParameters:
      - name: jira_issue_key
        in: body
        type: string
        description: The Jira issue key for the creative brief.
      - name: designer_email
        in: body
        type: string
        description: The designer's email for assignment.
      steps:
      - name: get-brief
        type: call
        call: jira.get-issue
        with:
          issue_key: '{{jira_issue_key}}'
      - name: get-reference-assets
        type: call
        call: sharepoint.search-files
        with:
          keyword: '{{get-brief.summary}}'
          site_id: brand-assets
      - name: notify-designer
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{designer_email}}'
          text: 'New creative brief assigned: {{get-brief.summary}}. Jira: {{jira_issue_key}}. Reference assets: {{get-reference-assets.count}} files found in SharePoint. Due: {{get-brief.due_date}}.'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://gap.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/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: search
      path: /{{site_id}}/drive/root/search(q='{{keyword}}')
      inputParameters:
      - name: site_id
        in: path
      - name: keyword
        in: path
      operations:
      - name: search-files
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → creative-brief-to-design-handoff.yml

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

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

Checks build at Gap.

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

Retrieves the status of a LinkedIn job posting for Gap Inc. including view count, applicant count, and days remaining.

naftiko: '0.5'
info:
  label: LinkedIn Job Posting Status
  description: Retrieves the status of a LinkedIn job posting for Gap Inc. including view count, applicant count, and days remaining.
  tags:
  - recruiting
  - linkedin
capability:
  exposes:
  - type: mcp
    namespace: recruiting
    port: 8080
    tools:
    - name: get-job-posting-status
      description: Look up a LinkedIn job posting by job ID. Returns status, views, applicants, and expiry date.
      inputParameters:
      - name: job_id
        in: body
        type: string
        description: The LinkedIn job posting ID.
      call: linkedin.get-job
      with:
        job_id: '{{job_id}}'
  consumes:
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: jobs
      path: /jobs/{{job_id}}
      inputParameters:
      - name: job_id
        in: path
      operations:
      - name: get-job
        method: GET
Open in Framework → View in Fleet → linkedin-job-posting-status.yml

Retrieves a financial journal entry from Navision by document number, returning posting date, account, amount, and description.

naftiko: '0.5'
info:
  label: Navision Financial Journal Entry
  description: Retrieves a financial journal entry from Navision by document number, returning posting date, account, amount, and description.
  tags:
  - finance
  - erp
  - navision
capability:
  exposes:
  - type: mcp
    namespace: finance-erp
    port: 8080
    tools:
    - name: get-journal-entry
      description: Look up a Navision journal entry by document number.
      inputParameters:
      - name: document_number
        in: body
        type: string
        description: The Navision document number.
      call: navision.get-entry
      with:
        document_number: '{{document_number}}'
  consumes:
  - type: http
    namespace: navision
    baseUri: https://gap-nav.dynamics.com/api/v2.0
    authentication:
      type: bearer
      token: $secrets.navision_token
    resources:
    - name: journal-entries
      path: /generalJournalEntries?$filter=documentNumber eq '{{document_number}}'
      inputParameters:
      - name: document_number
        in: query
      operations:
      - name: get-entry
        method: GET
Open in Framework → View in Fleet → navision-financial-journal-entry.yml

Creates postmortems at Gap.

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

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

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

Pulls new customer feedback from Salesforce cases, analyzes sentiment trends, logs product improvement suggestions in Jira, and sends a weekly digest to the product team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Customer Feedback to Product Insight Pipeline
  description: Pulls new customer feedback from Salesforce cases, analyzes sentiment trends, logs product improvement suggestions in Jira, and sends a weekly digest to the product team via Microsoft Teams.
  tags:
  - product-management
  - customer-feedback
  - salesforce
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: feedback-pipeline
    port: 8080
    tools:
    - name: process-feedback-digest
      description: Given a date range, pull recent customer feedback cases from Salesforce, create Jira stories for actionable suggestions, and notify the product team.
      inputParameters:
      - name: start_date
        in: body
        type: string
        description: Start date for feedback window in YYYY-MM-DD format.
      - name: end_date
        in: body
        type: string
        description: End date for feedback window in YYYY-MM-DD format.
      steps:
      - name: get-feedback-cases
        type: call
        call: salesforce.query-cases
        with:
          query: SELECT Id,Subject,Description,CreatedDate FROM Case WHERE Type='Feedback' AND CreatedDate>={{start_date}} AND CreatedDate<={{end_date}}
      - name: create-jira-stories
        type: call
        call: jira.create-issue
        with:
          project: PROD
          summary: 'Customer feedback digest: {{start_date}} to {{end_date}}'
          description: '{{get-feedback-cases.total_size}} feedback cases received. Top themes aggregated for product review.'
          issue_type: Story
      - name: notify-product-team
        type: call
        call: msteams.post-channel-message
        with:
          team_id: product-team
          channel_id: customer-insights
          text: 'Weekly feedback digest ({{start_date}} to {{end_date}}): {{get-feedback-cases.total_size}} cases. Jira story: {{create-jira-stories.key}}.'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://gap.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: query
      path: /query
      operations:
      - name: query-cases
        method: GET
  - type: http
    namespace: jira
    baseUri: https://gap.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → customer-feedback-to-product-insight-pipeline.yml

Searches SharePoint for brand creative assets by keyword and file type, returning download links and metadata for marketing and design teams.

naftiko: '0.5'
info:
  label: SharePoint Brand Asset Retrieval
  description: Searches SharePoint for brand creative assets by keyword and file type, returning download links and metadata for marketing and design teams.
  tags:
  - marketing
  - brand
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: brand-assets
    port: 8080
    tools:
    - name: search-brand-assets
      description: Search Gap SharePoint brand library by keyword and optional file type. Returns matching file names, URLs, and last-modified dates.
      inputParameters:
      - name: keyword
        in: body
        type: string
        description: Search keyword for brand assets.
      - name: file_type
        in: body
        type: string
        description: Optional file extension filter (e.g. png, psd, ai).
      call: sharepoint.search-files
      with:
        keyword: '{{keyword}}'
        file_type: '{{file_type}}'
  consumes:
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: search
      path: /gap-brand-hub/drive/root/search(q='{{keyword}}')
      inputParameters:
      - name: keyword
        in: path
      operations:
      - name: search-files
        method: GET
Open in Framework → View in Fleet → sharepoint-brand-asset-retrieval.yml

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

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

When a new online order is placed, validates inventory in SAP, creates a fulfillment task in ServiceNow, updates the Salesforce customer record, and notifies the warehouse team in Microsoft Teams.

naftiko: '0.5'
info:
  label: E-Commerce Order Fulfillment Orchestrator
  description: When a new online order is placed, validates inventory in SAP, creates a fulfillment task in ServiceNow, updates the Salesforce customer record, and notifies the warehouse team in Microsoft Teams.
  tags:
  - e-commerce
  - fulfillment
  - sap
  - servicenow
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: order-fulfillment
    port: 8080
    tools:
    - name: fulfill-order
      description: Orchestrate order fulfillment across SAP, ServiceNow, Salesforce, and Teams.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The e-commerce order ID.
      - name: customer_id
        in: body
        type: string
        description: The Salesforce customer ID.
      steps:
      - name: get-order
        type: call
        call: sap.get-sales-order
        with:
          order_id: '{{order_id}}'
      - name: check-inventory
        type: call
        call: sap.check-inventory
        with:
          items: '{{get-order.line_items}}'
      - name: create-fulfillment
        type: call
        call: servicenow.create-record
        with:
          table: u_fulfillment_tasks
          short_description: Fulfill order {{order_id}}
          description: 'Items: {{get-order.item_count}}. Warehouse: {{check-inventory.assigned_warehouse}}. Ship by: {{get-order.promised_date}}.'
      - name: update-customer
        type: call
        call: salesforce.update-contact
        with:
          contact_id: '{{customer_id}}'
          last_order_date: '{{get-order.order_date}}'
      - name: notify-warehouse
        type: call
        call: msteams.send-message
        with:
          channel_id: warehouse-ops
          text: 'New order {{order_id}}: {{get-order.item_count}} items. Warehouse: {{check-inventory.assigned_warehouse}}. ServiceNow: {{create-fulfillment.number}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://hm-s4.sap.com/sap/opu/odata/sap/ZRT_ORDER_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: orders
      path: /SalesOrderSet('{{order_id}}')
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-sales-order
        method: GET
    - name: inventory
      path: /InventoryCheckSet
      operations:
      - name: check-inventory
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://hm.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: salesforce
    baseUri: https://hm.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: 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
Open in Framework → View in Fleet → e-commerce-order-fulfillment-orchestrator.yml

Pulls real-time inventory from SAP for a store, pushes to Power BI, and alerts the merchandising team if stock is low.

naftiko: '0.5'
info:
  label: Store Inventory Monitor
  description: Pulls real-time inventory from SAP for a store, pushes to Power BI, and alerts the merchandising team if stock is low.
  tags:
  - retail
  - inventory
  - sap
  - power-bi
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: store-inventory
    port: 8080
    tools:
    - name: monitor-store-inventory
      description: Monitor store inventory and alert on low stock.
      inputParameters:
      - name: store_code
        in: body
        type: string
        description: The store code.
      steps:
      - name: get-inventory
        type: call
        call: sap.get-store-inventory
        with:
          store: '{{store_code}}'
      - name: push-to-bi
        type: call
        call: powerbi.push-rows
        with:
          dataset_id: store_inventory_ds
          table_name: Inventory
          rows:
          - store: '{{store_code}}'
            total_skus: '{{get-inventory.total_skus}}'
            low_stock_count: '{{get-inventory.low_stock_count}}'
      - name: alert-merch
        type: call
        call: msteams.send-message
        with:
          channel_id: merchandising
          text: 'Store {{store_code}}: {{get-inventory.low_stock_count}} SKUs below threshold.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://hm-s4.sap.com/sap/opu/odata/sap/ZRT_STORE_INV_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: inventory
      path: /StoreInventorySet('{{store}}')
      inputParameters:
      - name: store
        in: path
      operations:
      - name: get-store-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
Open in Framework → View in Fleet → store-inventory-monitor.yml

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
Open in Framework → View in Fleet → training-compliance-pipeline.yml

Pulls store KPIs from SAP and writes to Google Sheets.

naftiko: '0.5'
info:
  label: Google Sheets Store KPI Dashboard
  description: Pulls store KPIs from SAP and writes to Google Sheets.
  tags:
  - reporting
  - google-sheets
  - sap
capability:
  exposes:
  - type: mcp
    namespace: sheets-kpis
    port: 8080
    tools:
    - name: sync-store-kpis
      description: Sync SAP store KPIs to Google Sheets.
      inputParameters:
      - name: spreadsheet_id
        in: body
        type: string
        description: Google Sheets ID.
      - name: store_code
        in: body
        type: string
        description: Store code.
      steps:
      - name: get-kpis
        type: call
        call: sap.get-store-kpis
        with:
          store: '{{store_code}}'
      - name: update-sheet
        type: call
        call: gsheets.update-values
        with:
          spreadsheet_id: '{{spreadsheet_id}}'
          range: KPIs!A2:D2
          values:
          - - '{{store_code}}'
            - '{{get-kpis.revenue}}'
            - '{{get-kpis.footfall}}'
            - '{{get-kpis.conversion_rate}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://hm-s4.sap.com/sap/opu/odata/sap/ZRT_STORE_KPI_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: kpis
      path: /StoreKPISet('{{store}}')
      inputParameters:
      - name: store
        in: path
      operations:
      - name: get-store-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
Open in Framework → View in Fleet → google-sheets-store-kpi-dashboard.yml

Pulls material composition from SAP, calculates sustainability impact, and updates the product record with a Conscious Choice rating.

naftiko: '0.5'
info:
  label: Garment Sustainability Score Calculator
  description: Pulls material composition from SAP, calculates sustainability impact, and updates the product record with a Conscious Choice rating.
  tags:
  - sustainability
  - product
  - sap
capability:
  exposes:
  - type: mcp
    namespace: sustainability-scoring
    port: 8080
    tools:
    - name: calculate-sustainability-score
      description: Calculate sustainability score for a garment.
      inputParameters:
      - name: article_number
        in: body
        type: string
        description: The article number.
      call: sap.get-sustainability-score
      with:
        article_id: '{{article_number}}'
      outputParameters:
      - name: overall_score
        type: string
        mapping: $.d.OverallScore
      - name: recycled_pct
        type: string
        mapping: $.d.RecycledContentPct
      - name: water_usage
        type: string
        mapping: $.d.WaterUsageLiters
      - name: conscious_choice
        type: boolean
        mapping: $.d.ConsciousChoice
  consumes:
  - type: http
    namespace: sap
    baseUri: https://hm-s4.sap.com/sap/opu/odata/sap/ZRT_SUSTAINABILITY_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: scores
      path: /SustainabilityScoreSet('{{article_id}}')
      inputParameters:
      - name: article_id
        in: path
      operations:
      - name: get-sustainability-score
        method: GET
Open in Framework → View in Fleet → garment-sustainability-score-calculator.yml

Provisions Workday profile, creates Azure AD account, assigns Slack channels, and sends welcome via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Employee Onboarding Enhancement Pipeline
  description: Provisions Workday profile, creates Azure AD account, assigns Slack channels, and sends welcome via Microsoft Outlook.
  tags:
  - hr
  - workday
  - azure-active-directory
  - slack
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: employee-onboarding-enhancement-pipeline
    port: 8080
    tools:
    - name: execute
      description: Provisions Workday profile, creates Azure AD account, assigns Slack channels, 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: slack.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: 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: 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
Open in Framework → View in Fleet → employee-onboarding-enhancement-pipeline.yml

Pulls social media data from Instagram, analyzes trends via Azure ML, stores in Snowflake, and publishes insights to Confluence.

naftiko: '0.5'
info:
  label: Fashion Trend Analysis Pipeline
  description: Pulls social media data from Instagram, analyzes trends via Azure ML, stores in Snowflake, and publishes insights to Confluence.
  tags:
  - trends
  - instagram
  - azure-machine-learning
  - snowflake
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: fashion-trend-analysis-pipeline
    port: 8080
    tools:
    - name: execute
      description: Pulls social media data from Instagram, analyzes trends via Azure ML, stores in Snowflake, and publishes insights 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: instagram.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: 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: 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
Open in Framework → View in Fleet → fashion-trend-analysis-pipeline.yml

Tracks garment recycling and reuse metrics from SAP, calculates circularity scores, and publishes to the sustainability Confluence space.

naftiko: '0.5'
info:
  label: Circular Fashion Garment Tracker
  description: Tracks garment recycling and reuse metrics from SAP, calculates circularity scores, and publishes to the sustainability Confluence space.
  tags:
  - sustainability
  - circular-fashion
  - sap
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: circular-fashion
    port: 8080
    tools:
    - name: track-circularity
      description: Track garment circularity metrics and publish report.
      inputParameters:
      - name: collection
        in: body
        type: string
        description: Collection name.
      - name: period
        in: body
        type: string
        description: Reporting period.
      steps:
      - name: get-circularity
        type: call
        call: sap.get-circularity-metrics
        with:
          collection: '{{collection}}'
          period: '{{period}}'
      - name: publish-report
        type: call
        call: confluence.create-page
        with:
          space_key: ESG
          title: 'Circularity Report: {{collection}} - {{period}}'
          body: 'Recycled materials: {{get-circularity.recycled_pct}}%. Garments collected: {{get-circularity.garments_collected}}. Reused: {{get-circularity.reused_count}}. Recycled: {{get-circularity.recycled_count}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://hm-s4.sap.com/sap/opu/odata/sap/ZRT_CIRCULARITY_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: circularity
      path: /CircularityMetricSet(Collection='{{collection}}',Period='{{period}}')
      inputParameters:
      - name: collection
        in: path
      - name: period
        in: path
      operations:
      - name: get-circularity-metrics
        method: GET
  - type: http
    namespace: confluence
    baseUri: https://hm.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
Open in Framework → View in Fleet → circular-fashion-garment-tracker.yml

Queries SAP HANA for retail analytics by store and category.

naftiko: '0.5'
info:
  label: SAP HANA Retail Analytics
  description: Queries SAP HANA for retail analytics by store and category.
  tags:
  - analytics
  - sap-hana
  - retail
capability:
  exposes:
  - type: mcp
    namespace: retail-analytics
    port: 8080
    tools:
    - name: query-retail-analytics
      description: Query SAP HANA for retail performance.
      inputParameters:
      - name: store_code
        in: body
        type: string
        description: Store code.
      - name: category
        in: body
        type: string
        description: Product category.
      call: saphana.query-retail
      with:
        store: '{{store_code}}'
        category: '{{category}}'
      outputParameters:
      - name: revenue
        type: string
        mapping: $.d.Revenue
      - name: units_sold
        type: integer
        mapping: $.d.UnitsSold
      - name: avg_basket_size
        type: string
        mapping: $.d.AvgBasketSize
  consumes:
  - type: http
    namespace: saphana
    baseUri: https://hm-hana.sap.com/sap/opu/odata/sap/ZRT_ANALYTICS_SRV
    authentication:
      type: basic
      username: $secrets.sap_hana_user
      password: $secrets.sap_hana_password
    resources:
    - name: retail
      path: /RetailAnalyticsSet(Store='{{store}}',Category='{{category}}')
      inputParameters:
      - name: store
        in: path
      - name: category
        in: path
      operations:
      - name: query-retail
        method: GET
Open in Framework → View in Fleet → sap-hana-retail-analytics.yml

Retrieves a product from the SAP product catalog by article number, returning name, category, price, color, and sustainability rating.

naftiko: '0.5'
info:
  label: Product Catalog Lookup
  description: Retrieves a product from the SAP product catalog by article number, returning name, category, price, color, and sustainability rating.
  tags:
  - retail
  - product
  - sap
capability:
  exposes:
  - type: mcp
    namespace: product-catalog
    port: 8080
    tools:
    - name: get-product
      description: Look up an H&M product by article number.
      inputParameters:
      - name: article_number
        in: body
        type: string
        description: The SAP article number.
      call: sap.get-article
      with:
        article_id: '{{article_number}}'
      outputParameters:
      - name: product_name
        type: string
        mapping: $.d.ArticleName
      - name: category
        type: string
        mapping: $.d.Category
      - name: price
        type: string
        mapping: $.d.RetailPrice
      - name: sustainability_rating
        type: string
        mapping: $.d.SustainabilityRating
  consumes:
  - type: http
    namespace: sap
    baseUri: https://hm-s4.sap.com/sap/opu/odata/sap/ZRT_ARTICLE_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: articles
      path: /ArticleSet('{{article_id}}')
      inputParameters:
      - name: article_id
        in: path
      operations:
      - name: get-article
        method: GET
Open in Framework → View in Fleet → product-catalog-lookup.yml

Retrieves fashion collection project status from Asana.

naftiko: '0.5'
info:
  label: Asana Collection Project Lookup
  description: Retrieves fashion collection project status from Asana.
  tags:
  - project-management
  - asana
capability:
  exposes:
  - type: mcp
    namespace: asana-collections
    port: 8080
    tools:
    - name: get-data
      description: Retrieves fashion collection project status from Asana.
      inputParameters:
      - name: query_id
        in: body
        type: string
        description: The lookup identifier.
      call: asana-collections.get-data
      with:
        id: '{{query_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: asana-collections
    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
Open in Framework → View in Fleet → asana-collection-project-lookup.yml

Looks up a SAP purchase order and returns status, vendor, total value, and delivery date.

naftiko: '0.5'
info:
  label: SAP Purchase Order Status
  description: Looks up a SAP purchase order and returns status, vendor, total value, and delivery date.
  tags:
  - procurement
  - sap
  - supply-chain
capability:
  exposes:
  - type: mcp
    namespace: erp-procurement
    port: 8080
    tools:
    - name: get-purchase-order
      description: Look up a SAP purchase order.
      inputParameters:
      - name: po_number
        in: body
        type: string
        description: The SAP purchase order number.
      call: sap.get-po
      with:
        po_number: '{{po_number}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.d.OverallStatus
      - name: vendor
        type: string
        mapping: $.d.Supplier.CompanyName
      - name: total_value
        type: string
        mapping: $.d.TotalAmount
      - name: delivery_date
        type: string
        mapping: $.d.DeliveryDate
  consumes:
  - type: http
    namespace: sap
    baseUri: https://hm-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
Open in Framework → View in Fleet → sap-purchase-order-status.yml

Pulls supplier sustainability scores from SAP, validates against H&M standards, and publishes a compliance report to Confluence.

naftiko: '0.5'
info:
  label: Sustainability Supply Chain Tracker
  description: Pulls supplier sustainability scores from SAP, validates against H&M standards, and publishes a compliance report to Confluence.
  tags:
  - sustainability
  - supply-chain
  - sap
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: sustainability-tracking
    port: 8080
    tools:
    - name: track-supplier-sustainability
      description: Track supplier sustainability compliance.
      inputParameters:
      - name: supplier_id
        in: body
        type: string
        description: The SAP supplier ID.
      steps:
      - name: get-scores
        type: call
        call: sap.get-sustainability-scores
        with:
          supplier_id: '{{supplier_id}}'
      - name: publish-report
        type: call
        call: confluence.create-page
        with:
          space_key: ESG
          title: 'Sustainability: {{get-scores.supplier_name}}'
          body: 'Overall score: {{get-scores.overall_score}}. Water: {{get-scores.water_score}}. Carbon: {{get-scores.carbon_score}}. Labor: {{get-scores.labor_score}}. Chemicals: {{get-scores.chemical_score}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://hm-s4.sap.com/sap/opu/odata/sap/ZSC_SUSTAINABILITY_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: scores
      path: /SustainabilityScoreSet('{{supplier_id}}')
      inputParameters:
      - name: supplier_id
        in: path
      operations:
      - name: get-sustainability-scores
        method: GET
  - type: http
    namespace: confluence
    baseUri: https://hm.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
Open in Framework → View in Fleet → sustainability-supply-chain-tracker.yml

Retrieves content from SharePoint, translates via Azure, uploads to Google Drive, and notifies via Microsoft Teams.

naftiko: '0.5'
info:
  label: Content Localization Pipeline
  description: Retrieves content from SharePoint, translates via Azure, uploads to Google Drive, and notifies via Microsoft Teams.
  tags:
  - localization
  - sharepoint
  - microsoft-azure
  - google-drive
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: content-localization-pipeline
    port: 8080
    tools:
    - name: execute
      description: Retrieves content from SharePoint, translates via Azure, uploads to Google Drive, 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: sharepoint.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: microsoft-azure.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: google-drive.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: 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-azure
    baseUri: https://api.microsoftazure.com/v1
    authentication:
      type: bearer
      token: $secrets.microsoft_azure_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: 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
Open in Framework → View in Fleet → content-localization-pipeline.yml

Retrieves a ServiceNow incident by number.

naftiko: '0.5'
info:
  label: ServiceNow Ticket Status
  description: Retrieves a ServiceNow incident by number.
  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: 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
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://hm.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
Open in Framework → View in Fleet → servicenow-ticket-status.yml

Retrieves the status of a DocuSign supplier contract envelope by ID.

naftiko: '0.5'
info:
  label: DocuSign Supplier Contract Lookup
  description: Retrieves the status of a DocuSign supplier contract envelope by ID.
  tags:
  - legal
  - docusign
capability:
  exposes:
  - type: mcp
    namespace: docusign-contracts
    port: 8080
    tools:
    - name: get-data
      description: Retrieves the status of a DocuSign supplier contract envelope by ID.
      inputParameters:
      - name: query_id
        in: body
        type: string
        description: The lookup identifier.
      call: docusign-contracts.get-data
      with:
        id: '{{query_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: docusign-contracts
    baseUri: https://na4.docusign.net/restapi/v2.1/accounts/hm
    authentication:
      type: bearer
      token: $secrets.docusign_token
    resources:
    - name: data
      path: /{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-data
        method: GET
Open in Framework → View in Fleet → docusign-supplier-contract-lookup.yml

Posts jobs to LinkedIn, syncs applicants to Workday, schedules interviews via Zoom, and notifies managers via Slack.

naftiko: '0.5'
info:
  label: Talent Acquisition Pipeline
  description: Posts jobs to LinkedIn, syncs applicants to Workday, schedules interviews via Zoom, and notifies managers via Slack.
  tags:
  - recruiting
  - linkedin
  - workday
  - zoom
  - slack
capability:
  exposes:
  - type: mcp
    namespace: talent-acquisition-pipeline
    port: 8080
    tools:
    - name: execute
      description: Posts jobs to LinkedIn, syncs applicants to Workday, schedules interviews via Zoom, and notifies 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: linkedin.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: zoom.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: linkedin
    baseUri: https://api.linkedin.com/v1
    authentication:
      type: bearer
      token: $secrets.linkedin_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: zoom
    baseUri: https://api.zoom.com/v1
    authentication:
      type: bearer
      token: $secrets.zoom_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
Open in Framework → View in Fleet → talent-acquisition-pipeline.yml

Tracks garment lifecycle in SAP, logs recycling data in Snowflake, generates sustainability report in Google Sheets, and publishes to Confluence.

naftiko: '0.5'
info:
  label: Circular Fashion Tracking Pipeline
  description: Tracks garment lifecycle in SAP, logs recycling data in Snowflake, generates sustainability report in Google Sheets, and publishes to Confluence.
  tags:
  - sustainability
  - sap
  - snowflake
  - google-sheets
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: circular-fashion-tracking-pipeline
    port: 8080
    tools:
    - name: execute
      description: Tracks garment lifecycle in SAP, logs recycling data in Snowflake, generates sustainability report in Google Sheets, 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: 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: confluence.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: confluence
    baseUri: https://api.confluence.com/v1
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → circular-fashion-tracking-pipeline.yml

Retrieves Power BI fashion KPI dashboard refresh status.

naftiko: '0.5'
info:
  label: Power BI Fashion KPI Report
  description: Retrieves Power BI fashion KPI dashboard refresh status.
  tags:
  - analytics
  - power-bi
capability:
  exposes:
  - type: mcp
    namespace: powerbi-fashion
    port: 8080
    tools:
    - name: get-data
      description: Retrieves Power BI fashion KPI dashboard refresh status.
      inputParameters:
      - name: query_id
        in: body
        type: string
        description: The lookup identifier.
      call: powerbi-fashion.get-data
      with:
        id: '{{query_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: powerbi-fashion
    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
Open in Framework → View in Fleet → power-bi-fashion-kpi-report.yml

Creates campaign in HubSpot, sets up Facebook ads, tracks in Google Analytics, and reports in 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 in 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 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
Open in Framework → View in Fleet → digital-marketing-campaign-pipeline.yml

Retrieves a customer account from Salesforce.

naftiko: '0.5'
info:
  label: Salesforce Customer Account Lookup
  description: Retrieves a customer account from Salesforce.
  tags:
  - crm
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: crm-accounts
    port: 8080
    tools:
    - name: get-customer-account
      description: Look up a Salesforce customer account.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: Salesforce account ID.
      call: salesforce.get-account
      with:
        account_id: '{{account_id}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.Name
      - name: segment
        type: string
        mapping: $.Customer_Segment__c
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://hm.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
Open in Framework → View in Fleet → salesforce-customer-account-lookup.yml

Enrolls customer in Salesforce, creates Stripe customer record, triggers welcome email via MailChimp, and logs in Snowflake.

naftiko: '0.5'
info:
  label: Customer Loyalty Enrollment Pipeline
  description: Enrolls customer in Salesforce, creates Stripe customer record, triggers welcome email via MailChimp, 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 customer in Salesforce, creates Stripe customer record, triggers welcome email via MailChimp, 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
Open in Framework → View in Fleet → customer-loyalty-enrollment-pipeline.yml

Retrieves search performance data from Google Search Console for H&M properties.

naftiko: '0.5'
info:
  label: Google Search Console SEO Lookup
  description: Retrieves search performance data from Google Search Console for H&M 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 H&M 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
Open in Framework → View in Fleet → google-search-console-seo-lookup.yml

Collects supplier sustainability data from SAP Ariba, stores in Snowflake, generates reports in Google Sheets, and publishes to Confluence.

naftiko: '0.5'
info:
  label: Sustainability Audit Pipeline
  description: Collects supplier sustainability data from SAP Ariba, stores in Snowflake, generates reports in Google Sheets, and publishes to Confluence.
  tags:
  - sustainability
  - sap-ariba
  - snowflake
  - google-sheets
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: sustainability-audit-pipeline
    port: 8080
    tools:
    - name: execute
      description: Collects supplier sustainability data from SAP Ariba, stores in Snowflake, generates reports in Google Sheets, 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: sap-ariba.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: confluence.execute-step-4
        with:
          data: '{{step-3.result}}'
          id: '{{input_id}}'
  consumes:
  - type: http
    namespace: sap-ariba
    baseUri: https://api.sapariba.com/v1
    authentication:
      type: bearer
      token: $secrets.sap_ariba_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: confluence
    baseUri: https://api.confluence.com/v1
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → sustainability-audit-pipeline.yml

Creates a Confluence knowledge base page.

naftiko: '0.5'
info:
  label: Confluence Knowledge Base Publisher
  description: Creates a Confluence knowledge base page.
  tags:
  - knowledge-management
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: knowledge-base
    port: 8080
    tools:
    - name: publish-kb-article
      description: Publish a Confluence page.
      inputParameters:
      - name: space_key
        in: body
        type: string
        description: Space key.
      - name: title
        in: body
        type: string
        description: Title.
      - name: content
        in: body
        type: string
        description: Content.
      call: confluence.create-page
      with:
        space_key: '{{space_key}}'
        title: '{{title}}'
        body: '{{content}}'
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://hm.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
Open in Framework → View in Fleet → confluence-knowledge-base-publisher.yml

Matches a SAP invoice against a PO, creates a Jira approval task, and notifies finance in Teams.

naftiko: '0.5'
info:
  label: Supplier Invoice Processor
  description: Matches a SAP invoice against a PO, creates a Jira approval task, and notifies finance in Teams.
  tags:
  - finance
  - invoicing
  - sap
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: invoice-processing
    port: 8080
    tools:
    - name: process-invoice
      description: Match invoice to PO and route for approval.
      inputParameters:
      - name: invoice_number
        in: body
        type: string
        description: SAP invoice number.
      - name: po_number
        in: body
        type: string
        description: Related PO number.
      steps:
      - name: get-invoice
        type: call
        call: sap.get-invoice
        with:
          invoice_number: '{{invoice_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
      - name: notify-finance
        type: call
        call: msteams.send-message
        with:
          channel_id: finance-approvals
          text: 'Invoice {{invoice_number}} requires approval. Jira: {{create-approval.key}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://hm-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
  - type: http
    namespace: jira
    baseUri: https://hm.atlassian.net/rest/api/3
    authentication:
      type: 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
Open in Framework → View in Fleet → supplier-invoice-processor.yml

Uploads design assets to Google Drive.

naftiko: '0.5'
info:
  label: Google Drive Design Asset Upload
  description: Uploads design assets to Google Drive.
  tags:
  - document-management
  - google-drive
capability:
  exposes:
  - type: mcp
    namespace: gdrive-assets
    port: 8080
    tools:
    - name: upload-asset
      description: Upload a design asset.
      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
Open in Framework → View in Fleet → google-drive-design-asset-upload.yml

Creates task in Asana, uploads assets to Google Drive, publishes to BigCommerce, and updates Airtable tracker.

naftiko: '0.5'
info:
  label: Product Photography Pipeline
  description: Creates task in Asana, uploads assets to Google Drive, publishes to BigCommerce, and updates Airtable tracker.
  tags:
  - creative
  - asana
  - google-drive
  - bigcommerce
  - airtable
capability:
  exposes:
  - type: mcp
    namespace: product-photography-pipeline
    port: 8080
    tools:
    - name: execute
      description: Creates task in Asana, uploads assets to Google Drive, publishes to BigCommerce, and updates Airtable 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: 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: bigcommerce.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: 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: airtable
    baseUri: https://api.airtable.com/v1
    authentication:
      type: bearer
      token: $secrets.airtable_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → product-photography-pipeline.yml

Creates a social media campaign across Instagram, Facebook, and LinkedIn via HubSpot with product assets from SharePoint.

naftiko: '0.5'
info:
  label: Social Media Campaign Publisher
  description: Creates a social media campaign across Instagram, Facebook, and LinkedIn via HubSpot with product assets from SharePoint.
  tags:
  - marketing
  - social-media
  - hubspot
  - sharepoint
  - instagram
  - facebook
  - linkedin
capability:
  exposes:
  - type: mcp
    namespace: social-campaigns
    port: 8080
    tools:
    - name: publish-social-campaign
      description: Publish a social media campaign with product assets.
      inputParameters:
      - name: article_number
        in: body
        type: string
        description: Product article number.
      - name: campaign_message
        in: body
        type: string
        description: Campaign message.
      steps:
      - name: get-assets
        type: call
        call: sharepoint.get-folder
        with:
          site_id: marketing_site
          folder_path: ProductAssets/{{article_number}}
      - name: create-broadcast
        type: call
        call: hubspot.create-broadcast
        with:
          content: '{{campaign_message}}'
          channels:
          - instagram
          - facebook
          - linkedin
          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
Open in Framework → View in Fleet → social-media-campaign-publisher.yml

Publishes a branded post to the H&M LinkedIn page.

naftiko: '0.5'
info:
  label: LinkedIn Brand Post Publisher
  description: Publishes a branded post to the H&M LinkedIn page.
  tags:
  - marketing
  - social-media
  - linkedin
capability:
  exposes:
  - type: mcp
    namespace: linkedin-publishing
    port: 8080
    tools:
    - name: publish-linkedin-post
      description: Publish a LinkedIn post.
      inputParameters:
      - name: post_text
        in: body
        type: string
        description: Post content.
      call: linkedin.create-post
      with:
        author: urn:li:organization:hm
        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
Open in Framework → View in Fleet → linkedin-brand-post-publisher.yml

Queries SAP BW for sales analytics by region and product category.

naftiko: '0.5'
info:
  label: SAP BW Sales Analytics
  description: Queries SAP BW for sales analytics by region and product category.
  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.
      inputParameters:
      - name: region
        in: body
        type: string
        description: Sales region.
      - name: category
        in: body
        type: string
        description: Product category.
      call: sapbw.get-sales
      with:
        region: '{{region}}'
        category: '{{category}}'
      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://hm-bw.sap.com/sap/opu/odata/sap/ZRT_SALES_BW_SRV
    authentication:
      type: basic
      username: $secrets.sap_bw_user
      password: $secrets.sap_bw_password
    resources:
    - name: sales
      path: /SalesAnalyticsSet(Region='{{region}}',Category='{{category}}')
      inputParameters:
      - name: region
        in: path
      - name: category
        in: path
      operations:
      - name: get-sales
        method: GET
Open in Framework → View in Fleet → sap-bw-sales-analytics.yml

Retrieves retail employee details from Workday by employee ID.

naftiko: '0.5'
info:
  label: Workday Retail Employee Lookup
  description: Retrieves retail employee details from Workday by employee ID.
  tags:
  - hr
  - workday
capability:
  exposes:
  - type: mcp
    namespace: workday-retail
    port: 8080
    tools:
    - name: get-data
      description: Retrieves retail employee details from Workday by employee ID.
      inputParameters:
      - name: query_id
        in: body
        type: string
        description: The lookup identifier.
      call: workday-retail.get-data
      with:
        id: '{{query_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: workday-retail
    baseUri: https://wd5-impl-services1.workday.com/ccx/service/hm
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: data
      path: /{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-data
        method: GET
Open in Framework → View in Fleet → workday-retail-employee-lookup.yml

Retrieves headcount data from Workday by department.

naftiko: '0.5'
info:
  label: Workday Headcount Report
  description: Retrieves headcount data from Workday by department.
  tags:
  - hr
  - workforce
  - workday
capability:
  exposes:
  - type: mcp
    namespace: hr-reporting
    port: 8080
    tools:
    - name: get-headcount
      description: Get headcount metrics from Workday.
      inputParameters:
      - name: department_id
        in: body
        type: string
        description: 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
  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
Open in Framework → View in Fleet → workday-headcount-report.yml

Publishes a GTM container version for H&M web properties.

naftiko: '0.5'
info:
  label: Google Tag Manager Container Publish
  description: Publishes a GTM container version for H&M web properties.
  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.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: GTM account ID.
      - name: container_id
        in: body
        type: string
        description: GTM container ID.
      - name: version_id
        in: body
        type: string
        description: 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
Open in Framework → View in Fleet → google-tag-manager-container-publish.yml

Pulls sales velocity from SAP, analyzes markdown candidates using Azure Machine Learning, and publishes pricing recommendations to Confluence.

naftiko: '0.5'
info:
  label: Markdown Pricing Optimizer
  description: Pulls sales velocity from SAP, analyzes markdown candidates using Azure Machine Learning, and publishes pricing recommendations to Confluence.
  tags:
  - retail
  - pricing
  - sap
  - azure-machine-learning
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: markdown-optimization
    port: 8080
    tools:
    - name: optimize-markdowns
      description: Generate markdown pricing recommendations.
      inputParameters:
      - name: category
        in: body
        type: string
        description: Product category.
      - name: season
        in: body
        type: string
        description: Season code.
      steps:
      - name: get-velocity
        type: call
        call: sap.get-sales-velocity
        with:
          category: '{{category}}'
          season: '{{season}}'
      - name: run-model
        type: call
        call: azml.run-inference
        with:
          model_name: markdown_optimizer
          input_data: '{{get-velocity.data}}'
      - name: publish-report
        type: call
        call: confluence.create-page
        with:
          space_key: MERCH
          title: 'Markdown Recommendations: {{category}} - {{season}}'
          body: 'Articles to mark down: {{run-model.markdown_count}}. Projected sell-through improvement: {{run-model.improvement_pct}}%.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://hm-s4.sap.com/sap/opu/odata/sap/ZRT_VELOCITY_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: velocity
      path: /VelocitySet(Category='{{category}}',Season='{{season}}')
      inputParameters:
      - name: category
        in: path
      - name: season
        in: path
      operations:
      - name: get-sales-velocity
        method: GET
  - type: http
    namespace: azml
    baseUri: https://hm-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://hm.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
Open in Framework → View in Fleet → markdown-pricing-optimizer.yml

Retrieves real-time inventory data from SAP HANA for H&M stores.

naftiko: '0.5'
info:
  label: SAP HANA Inventory Lookup
  description: Retrieves real-time inventory data from SAP HANA for H&M stores.
  tags:
  - inventory
  - sap-hana
capability:
  exposes:
  - type: mcp
    namespace: sap-hana-inv
    port: 8080
    tools:
    - name: get-data
      description: Retrieves real-time inventory data from SAP HANA for H&M stores.
      inputParameters:
      - name: query_id
        in: body
        type: string
        description: The lookup identifier.
      call: sap-hana-inv.get-data
      with:
        id: '{{query_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: sap-hana-inv
    baseUri: https://hm-hana.sap.com/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_hana_token
    resources:
    - name: data
      path: /{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-data
        method: GET
Open in Framework → View in Fleet → sap-hana-inventory-lookup.yml

Retrieves a Zendesk customer support ticket by ID, returning status and resolution.

naftiko: '0.5'
info:
  label: Zendesk Customer Support Lookup
  description: Retrieves a Zendesk customer support ticket by ID, returning status and resolution.
  tags:
  - support
  - zendesk
capability:
  exposes:
  - type: mcp
    namespace: zendesk-support
    port: 8080
    tools:
    - name: get-data
      description: Retrieves a Zendesk customer support ticket by ID, returning status and resolution.
      inputParameters:
      - name: query_id
        in: body
        type: string
        description: The lookup identifier.
      call: zendesk-support.get-data
      with:
        id: '{{query_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: zendesk-support
    baseUri: https://hm.zendesk.com/api/v2
    authentication:
      type: bearer
      token: $secrets.zendesk_token
    resources:
    - name: data
      path: /{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-data
        method: GET
Open in Framework → View in Fleet → zendesk-customer-support-lookup.yml

Retrieves APM metrics from Dynatrace for the H&M e-commerce platform.

naftiko: '0.5'
info:
  label: Dynatrace E-Commerce APM
  description: Retrieves APM metrics from Dynatrace for the H&M e-commerce platform.
  tags:
  - it-operations
  - apm
  - dynatrace
capability:
  exposes:
  - type: mcp
    namespace: ecommerce-apm
    port: 8080
    tools:
    - name: get-ecommerce-health
      description: Get Dynatrace APM metrics for e-commerce.
      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://hm.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
Open in Framework → View in Fleet → dynatrace-e-commerce-apm.yml

Queries the Teradata data warehouse for historical retail sales by region.

naftiko: '0.5'
info:
  label: Teradata Retail Data Warehouse Query
  description: Queries the Teradata data warehouse for historical retail sales by region.
  tags:
  - analytics
  - data-warehouse
  - teradata
capability:
  exposes:
  - type: mcp
    namespace: retail-dwh
    port: 8080
    tools:
    - name: query-retail-history
      description: Query Teradata for historical retail data.
      inputParameters:
      - name: region
        in: body
        type: string
        description: Sales region.
      - name: period
        in: body
        type: string
        description: Analysis period.
      call: teradata.query-retail
      with:
        region: '{{region}}'
        period: '{{period}}'
      outputParameters:
      - name: total_revenue
        type: string
        mapping: $.results.total_revenue
      - name: store_count
        type: integer
        mapping: $.results.store_count
  consumes:
  - type: http
    namespace: teradata
    baseUri: https://hm-td.teradata.com/api/query/v1
    authentication:
      type: bearer
      token: $secrets.teradata_token
    resources:
    - name: queries
      path: /execute
      operations:
      - name: query-retail
        method: POST
Open in Framework → View in Fleet → teradata-retail-data-warehouse-query.yml

Retrieves a Figma fashion design mockup by file key.

naftiko: '0.5'
info:
  label: Figma Fashion Design Lookup
  description: Retrieves a Figma fashion design mockup by file key.
  tags:
  - design
  - figma
capability:
  exposes:
  - type: mcp
    namespace: figma-fashion
    port: 8080
    tools:
    - name: get-data
      description: Retrieves a Figma fashion design mockup by file key.
      inputParameters:
      - name: query_id
        in: body
        type: string
        description: The lookup identifier.
      call: figma-fashion.get-data
      with:
        id: '{{query_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: figma-fashion
    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
Open in Framework → View in Fleet → figma-fashion-design-lookup.yml

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
Open in Framework → View in Fleet → data-privacy-compliance-pipeline.yml

Creates collaboration record in Salesforce, generates contract via DocuSign, tracks deliverables in Asana, and announces via Instagram.

naftiko: '0.5'
info:
  label: Brand Collaboration Pipeline
  description: Creates collaboration record in Salesforce, generates contract via DocuSign, tracks deliverables in Asana, and announces via Instagram.
  tags:
  - partnerships
  - salesforce
  - docusign
  - asana
  - instagram
capability:
  exposes:
  - type: mcp
    namespace: brand-collaboration-pipeline
    port: 8080
    tools:
    - name: execute
      description: Creates collaboration record in Salesforce, generates contract via DocuSign, tracks deliverables in Asana, and announces via 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: 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: 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: 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: 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
Open in Framework → View in Fleet → brand-collaboration-pipeline.yml

Pulls search data from Google Search Console, identifies opportunities, updates BigCommerce, and reports via Google Sheets.

naftiko: '0.5'
info:
  label: SEO Optimization Pipeline
  description: Pulls search data from Google Search Console, identifies opportunities, 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 search data from Google Search Console, identifies opportunities, 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
Open in Framework → View in Fleet → seo-optimization-pipeline.yml

Retrieves spend from SAP, builds forecasts in Snowflake, creates templates in Google Sheets, and submits via Microsoft Teams.

naftiko: '0.5'
info:
  label: Annual Budget Planning Pipeline
  description: Retrieves spend from SAP, builds forecasts in Snowflake, creates templates in Google Sheets, and submits via Microsoft Teams.
  tags:
  - finance
  - sap
  - snowflake
  - google-sheets
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: annual-budget-planning-pipeline
    port: 8080
    tools:
    - name: execute
      description: Retrieves spend from SAP, builds forecasts in Snowflake, creates templates in Google Sheets, and submits 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: 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-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: 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-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
Open in Framework → View in Fleet → annual-budget-planning-pipeline.yml

Retrieves quality test results from SAP, creates inspection report in Confluence, updates compliance tracker in Airtable, and notifies quality team via Slack.

naftiko: '0.5'
info:
  label: Garment Quality Inspection Pipeline
  description: Retrieves quality test results from SAP, creates inspection report in Confluence, updates compliance tracker in Airtable, and notifies quality team via Slack.
  tags:
  - quality
  - sap
  - confluence
  - airtable
  - slack
capability:
  exposes:
  - type: mcp
    namespace: garment-quality-inspection-pipeline
    port: 8080
    tools:
    - name: execute
      description: Retrieves quality test results from SAP, creates inspection report in Confluence, updates compliance tracker in Airtable, and notifies quality team 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
Open in Framework → View in Fleet → garment-quality-inspection-pipeline.yml

Retrieves search performance from Google Search Console for H&M web properties.

naftiko: '0.5'
info:
  label: Google Search Console SEO Tracker
  description: Retrieves search performance from Google Search Console for H&M web properties.
  tags:
  - marketing
  - seo
  - google-search-console
capability:
  exposes:
  - type: mcp
    namespace: seo-tracking
    port: 8080
    tools:
    - name: get-search-performance
      description: Get search performance data.
      inputParameters:
      - name: site_url
        in: body
        type: string
        description: 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
Open in Framework → View in Fleet → google-search-console-seo-tracker.yml

Tracks garment shipments from factory to distribution center using SAP, updates delivery status, and alerts logistics in Microsoft Teams.

naftiko: '0.5'
info:
  label: Supply Chain Shipment Tracker
  description: Tracks garment shipments from factory to distribution center using SAP, updates delivery status, and alerts logistics in Microsoft Teams.
  tags:
  - supply-chain
  - logistics
  - sap
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: shipment-tracking
    port: 8080
    tools:
    - name: track-shipment
      description: Track a garment shipment and notify logistics.
      inputParameters:
      - name: shipment_id
        in: body
        type: string
        description: SAP shipment ID.
      steps:
      - name: get-shipment
        type: call
        call: sap.get-shipment
        with:
          shipment_id: '{{shipment_id}}'
      - name: notify-logistics
        type: call
        call: msteams.send-message
        with:
          channel_id: logistics-tracking
          text: 'Shipment {{shipment_id}}: Status {{get-shipment.status}}. ETA: {{get-shipment.eta}}. Origin: {{get-shipment.origin}}. Destination: {{get-shipment.destination}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://hm-s4.sap.com/sap/opu/odata/sap/ZSC_SHIPMENT_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: shipments
      path: /ShipmentSet('{{shipment_id}}')
      inputParameters:
      - name: shipment_id
        in: path
      operations:
      - name: get-shipment
        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
Open in Framework → View in Fleet → supply-chain-shipment-tracker.yml

Retrieves fashion collection calendar entries from Airtable by season.

naftiko: '0.5'
info:
  label: Airtable Collection Calendar Lookup
  description: Retrieves fashion collection calendar entries from Airtable by season.
  tags:
  - product
  - airtable
capability:
  exposes:
  - type: mcp
    namespace: airtable-collections
    port: 8080
    tools:
    - name: get-data
      description: Retrieves fashion collection calendar entries from Airtable by season.
      inputParameters:
      - name: query_id
        in: body
        type: string
        description: The lookup identifier.
      call: airtable-collections.get-data
      with:
        id: '{{query_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: airtable-collections
    baseUri: https://api.airtable.com/v0/appHM
    authentication:
      type: bearer
      token: $secrets.airtable_token
    resources:
    - name: data
      path: /{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-data
        method: GET
Open in Framework → View in Fleet → airtable-collection-calendar-lookup.yml

Retrieves New Relic performance data for the H&M e-commerce application.

naftiko: '0.5'
info:
  label: New Relic E-Commerce Monitor
  description: Retrieves New Relic performance data for the H&M e-commerce application.
  tags:
  - it-operations
  - monitoring
  - new-relic
capability:
  exposes:
  - type: mcp
    namespace: newrelic-monitoring
    port: 8080
    tools:
    - name: get-newrelic-metrics
      description: Get New Relic metrics.
      inputParameters:
      - name: app_id
        in: body
        type: string
        description: New Relic app 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
Open in Framework → View in Fleet → new-relic-e-commerce-monitor.yml

Retrieves project status from Jira.

naftiko: '0.5'
info:
  label: Jira Project Tracker
  description: Retrieves project status from Jira.
  tags:
  - project-management
  - jira
capability:
  exposes:
  - type: mcp
    namespace: project-tracking
    port: 8080
    tools:
    - name: get-project-status
      description: Get Jira project status.
      inputParameters:
      - name: project_key
        in: body
        type: string
        description: 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://hm.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
Open in Framework → View in Fleet → jira-project-tracker.yml

Retrieves e-commerce performance metrics from Google Analytics.

naftiko: '0.5'
info:
  label: Google Analytics E-Commerce Performance
  description: Retrieves e-commerce performance metrics from Google Analytics.
  tags:
  - e-commerce
  - analytics
  - google-analytics
capability:
  exposes:
  - type: mcp
    namespace: ecommerce-analytics
    port: 8080
    tools:
    - name: get-ecommerce-metrics
      description: Get e-commerce metrics from Google Analytics.
      inputParameters:
      - name: property_id
        in: body
        type: string
        description: GA property ID.
      call: ga.get-ecommerce
      with:
        property_id: '{{property_id}}'
      outputParameters:
      - name: revenue
        type: string
        mapping: $.rows[0].metricValues[0].value
      - name: transactions
        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-ecommerce
        method: POST
Open in Framework → View in Fleet → google-analytics-e-commerce-performance.yml

Aggregates sales from Snowflake, generates Power BI reports, creates Confluence summaries, and distributes via Slack.

naftiko: '0.5'
info:
  label: Weekly Sales Digest Pipeline
  description: Aggregates sales from Snowflake, generates Power BI reports, creates Confluence summaries, and distributes via Slack.
  tags:
  - sales
  - snowflake
  - power-bi
  - confluence
  - slack
capability:
  exposes:
  - type: mcp
    namespace: weekly-sales-digest-pipeline
    port: 8080
    tools:
    - name: execute
      description: Aggregates sales from Snowflake, generates Power BI reports, creates Confluence summaries, and distributes 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: power-bi.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: 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: 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: 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
Open in Framework → View in Fleet → weekly-sales-digest-pipeline.yml

Captures a lead in HubSpot, enriches with Salesforce data, and notifies the marketing team.

naftiko: '0.5'
info:
  label: HubSpot Customer Lead Capture
  description: Captures a lead in HubSpot, enriches with Salesforce data, and notifies the marketing team.
  tags:
  - marketing
  - lead-management
  - hubspot
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: lead-capture
    port: 8080
    tools:
    - name: capture-lead
      description: Capture and enrich a customer lead.
      inputParameters:
      - name: lead_email
        in: body
        type: string
        description: Lead email.
      - name: source
        in: body
        type: string
        description: Lead source.
      steps:
      - name: create-contact
        type: call
        call: hubspot.create-contact
        with:
          email: '{{lead_email}}'
          lead_source: '{{source}}'
      - name: search-sf
        type: call
        call: salesforce.search-contact
        with:
          email: '{{lead_email}}'
      - name: notify-marketing
        type: call
        call: msteams.send-message
        with:
          channel_id: marketing-leads
          text: 'New lead: {{lead_email}} from {{source}}. HubSpot: {{create-contact.id}}.'
  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://hm.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: search
      path: /parameterizedSearch/?q={{email}}&sobject=Contact
      inputParameters:
      - name: email
        in: query
      operations:
      - name: search-contact
        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
Open in Framework → View in Fleet → hubspot-customer-lead-capture.yml

Detects abandoned carts in BigCommerce, sends recovery emails via MailChimp, logs in Snowflake, and tracks 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 in Snowflake, and tracks in Google Analytics.
  tags:
  - e-commerce
  - bigcommerce
  - mailchimp
  - snowflake
  - google-analytics
capability:
  exposes:
  - type: mcp
    namespace: ecommerce-cart-abandonment-pipeline
    port: 8080
    tools:
    - name: execute
      description: Detects abandoned carts in BigCommerce, sends recovery emails via MailChimp, 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
Open in Framework → View in Fleet → e-commerce-cart-abandonment-pipeline.yml

Retrieves a Concur expense report and creates a Jira approval task.

naftiko: '0.5'
info:
  label: SAP Concur Travel Expense Processor
  description: Retrieves a Concur expense report 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 Concur expense report.
      inputParameters:
      - name: report_id
        in: body
        type: string
        description: 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: {{get-report.employee_name}} - {{get-report.total_amount}}'
          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://hm.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → sap-concur-travel-expense-processor.yml

On Datadog alert, creates ServiceNow incident, pages on-call via Slack, and opens Zoom bridge.

naftiko: '0.5'
info:
  label: IT Incident Response Pipeline
  description: On Datadog alert, creates ServiceNow incident, pages on-call via Slack, and opens Zoom bridge.
  tags:
  - incident
  - datadog
  - servicenow
  - slack
  - zoom
capability:
  exposes:
  - type: mcp
    namespace: it-incident-response-pipeline
    port: 8080
    tools:
    - name: execute
      description: On Datadog alert, creates ServiceNow incident, pages on-call 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: datadog.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: datadog
    baseUri: https://api.datadog.com/v1
    authentication:
      type: bearer
      token: $secrets.datadog_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
Open in Framework → View in Fleet → it-incident-response-pipeline.yml

Detects disruption in SAP, creates ServiceNow incident, notifies procurement via Slack, and updates risk tracker in Google Sheets.

naftiko: '0.5'
info:
  label: Supply Chain Disruption Pipeline
  description: Detects disruption in SAP, creates ServiceNow incident, notifies procurement via Slack, and updates risk tracker in Google Sheets.
  tags:
  - supply-chain
  - sap
  - servicenow
  - slack
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: supply-chain-disruption-pipeline
    port: 8080
    tools:
    - name: execute
      description: Detects disruption in SAP, creates ServiceNow incident, notifies procurement via Slack, and updates risk tracker 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: 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
Open in Framework → View in Fleet → supply-chain-disruption-pipeline.yml

Executes a query against Snowflake to retrieve retail sales analytics by region and product category.

naftiko: '0.5'
info:
  label: Snowflake Retail Analytics Query
  description: Executes a query against Snowflake to retrieve retail sales analytics by region and product category.
  tags:
  - analytics
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: snowflake-retail
    port: 8080
    tools:
    - name: get-data
      description: Executes a query against Snowflake to retrieve retail sales analytics by region and product category.
      inputParameters:
      - name: query_id
        in: body
        type: string
        description: The lookup identifier.
      call: snowflake-retail.get-data
      with:
        id: '{{query_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-retail
    baseUri: https://hm.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
Open in Framework → View in Fleet → snowflake-retail-analytics-query.yml

Validates inventory in SAP, creates shipment, updates BigCommerce order status, and sends confirmation via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Online Order Fulfillment Pipeline
  description: Validates inventory in SAP, creates shipment, updates BigCommerce order status, and sends confirmation via Microsoft Outlook.
  tags:
  - fulfillment
  - sap
  - bigcommerce
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: online-order-fulfillment-pipeline
    port: 8080
    tools:
    - name: execute
      description: Validates inventory in SAP, creates shipment, updates BigCommerce order status, and sends confirmation 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: bigcommerce.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: 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: 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: 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
Open in Framework → View in Fleet → online-order-fulfillment-pipeline.yml

Pulls new collection data from SAP and sends a newsletter via MailChimp.

naftiko: '0.5'
info:
  label: MailChimp Fashion Newsletter
  description: Pulls new collection data from SAP and sends a newsletter via MailChimp.
  tags:
  - marketing
  - newsletter
  - mailchimp
  - sap
capability:
  exposes:
  - type: mcp
    namespace: fashion-newsletter
    port: 8080
    tools:
    - name: send-collection-newsletter
      description: Send a new collection newsletter.
      inputParameters:
      - name: list_id
        in: body
        type: string
        description: MailChimp list ID.
      - name: collection
        in: body
        type: string
        description: Collection name.
      steps:
      - name: get-collection
        type: call
        call: sap.get-collection-highlights
        with:
          collection: '{{collection}}'
      - name: create-campaign
        type: call
        call: mailchimp.create-campaign
        with:
          list_id: '{{list_id}}'
          subject: 'New Collection: {{collection}} | H&M'
          body: 'Discover {{get-collection.item_count}} new styles! Featured: {{get-collection.hero_product}}.'
      - name: send-campaign
        type: call
        call: mailchimp.send-campaign
        with:
          campaign_id: '{{create-campaign.id}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://hm-s4.sap.com/sap/opu/odata/sap/ZRT_COLLECTION_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: collections
      path: /CollectionHighlightSet('{{collection}}')
      inputParameters:
      - name: collection
        in: path
      operations:
      - name: get-collection-highlights
        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
Open in Framework → View in Fleet → mailchimp-fashion-newsletter.yml

Archives documents from SharePoint to Box.

naftiko: '0.5'
info:
  label: Box Document Archive
  description: Archives 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
Open in Framework → View in Fleet → box-document-archive.yml

Retrieves a Tableau store performance dashboard view.

naftiko: '0.5'
info:
  label: Tableau Store Performance Lookup
  description: Retrieves a Tableau store performance dashboard view.
  tags:
  - analytics
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: tableau-stores
    port: 8080
    tools:
    - name: get-data
      description: Retrieves a Tableau store performance dashboard view.
      inputParameters:
      - name: query_id
        in: body
        type: string
        description: The lookup identifier.
      call: tableau-stores.get-data
      with:
        id: '{{query_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: tableau-stores
    baseUri: https://tableau.hm.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
Open in Framework → View in Fleet → tableau-store-performance-lookup.yml

Retrieves e-commerce platform health metrics from New Relic.

naftiko: '0.5'
info:
  label: New Relic E-Commerce Health Lookup
  description: Retrieves e-commerce platform health metrics 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 metrics 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
Open in Framework → View in Fleet → new-relic-e-commerce-health-lookup.yml

Retrieves payroll summary from ADP.

naftiko: '0.5'
info:
  label: ADP Payroll Summary
  description: Retrieves payroll summary from ADP.
  tags:
  - hr
  - payroll
  - adp
capability:
  exposes:
  - type: mcp
    namespace: hr-payroll
    port: 8080
    tools:
    - name: get-payroll-summary
      description: Get payroll summary.
      inputParameters:
      - name: pay_period
        in: body
        type: string
        description: Pay period.
      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
  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
Open in Framework → View in Fleet → adp-payroll-summary.yml

Retrieves engagement metrics for an H&M Instagram fashion post.

naftiko: '0.5'
info:
  label: Instagram Fashion Metrics Lookup
  description: Retrieves engagement metrics for an H&M Instagram fashion post.
  tags:
  - social-media
  - instagram
capability:
  exposes:
  - type: mcp
    namespace: instagram-fashion
    port: 8080
    tools:
    - name: get-data
      description: Retrieves engagement metrics for an H&M Instagram fashion post.
      inputParameters:
      - name: query_id
        in: body
        type: string
        description: The lookup identifier.
      call: instagram-fashion.get-data
      with:
        id: '{{query_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: instagram-fashion
    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
Open in Framework → View in Fleet → instagram-fashion-metrics-lookup.yml

Detects issues via Cloudflare, creates Jira tickets, alerts security team via Slack, and triggers Azure DevOps patches.

naftiko: '0.5'
info:
  label: Security Vulnerability Pipeline
  description: Detects issues via Cloudflare, creates Jira tickets, alerts security team via Slack, and triggers Azure DevOps patches.
  tags:
  - security
  - cloudflare
  - jira
  - slack
  - azure-devops
capability:
  exposes:
  - type: mcp
    namespace: security-vulnerability-pipeline
    port: 8080
    tools:
    - name: execute
      description: Detects issues via Cloudflare, creates Jira tickets, alerts security 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: cloudflare.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: cloudflare
    baseUri: https://api.cloudflare.com/v1
    authentication:
      type: bearer
      token: $secrets.cloudflare_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
Open in Framework → View in Fleet → security-vulnerability-pipeline.yml

Updates pricing in SAP, syncs to BigCommerce, logs changes in Snowflake, and notifies sales via Microsoft Teams.

naftiko: '0.5'
info:
  label: Global Pricing Update Pipeline
  description: Updates pricing in SAP, syncs to BigCommerce, logs changes in Snowflake, and notifies sales via Microsoft Teams.
  tags:
  - pricing
  - sap
  - bigcommerce
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: global-pricing-update-pipeline
    port: 8080
    tools:
    - name: execute
      description: Updates pricing in SAP, syncs to BigCommerce, logs changes 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: bigcommerce.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: 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: 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
Open in Framework → View in Fleet → global-pricing-update-pipeline.yml

Checks Cloudflare zone performance for H&M web properties.

naftiko: '0.5'
info:
  label: Cloudflare Web Performance Monitor
  description: Checks Cloudflare zone performance for H&M web properties.
  tags:
  - performance
  - cdn
  - cloudflare
capability:
  exposes:
  - type: mcp
    namespace: web-performance
    port: 8080
    tools:
    - name: check-cdn-performance
      description: Check CDN performance.
      inputParameters:
      - name: zone_id
        in: body
        type: string
        description: Cloudflare zone ID.
      call: cloudflare.get-zone-analytics
      with:
        zone_id: '{{zone_id}}'
      outputParameters:
      - name: cache_hit_rate
        type: string
        mapping: $.result.totals.requests.cached
      - name: total_requests
        type: integer
        mapping: $.result.totals.requests.all
  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-zone-analytics
        method: GET
Open in Framework → View in Fleet → cloudflare-web-performance-monitor.yml

On collection launch, updates SAP product catalog, publishes to BigCommerce, promotes on Instagram, and notifies stores via Microsoft Teams.

naftiko: '0.5'
info:
  label: New Collection Launch Pipeline
  description: On collection launch, updates SAP product catalog, publishes to BigCommerce, promotes on Instagram, and notifies stores via Microsoft Teams.
  tags:
  - fashion
  - sap
  - bigcommerce
  - instagram
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: new-collection-launch-pipeline
    port: 8080
    tools:
    - name: execute
      description: On collection launch, updates SAP product catalog, publishes to BigCommerce, promotes on Instagram, and notifies stores 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: bigcommerce.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: 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: 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: 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: 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
Open in Framework → View in Fleet → new-collection-launch-pipeline.yml

Builds segments in Snowflake, syncs to Salesforce, creates campaigns in MailChimp, and tracks in Google Analytics.

naftiko: '0.5'
info:
  label: Customer Segment Targeting Pipeline
  description: Builds segments in Snowflake, syncs to Salesforce, creates campaigns in MailChimp, and tracks in Google Analytics.
  tags:
  - marketing
  - snowflake
  - salesforce
  - mailchimp
  - google-analytics
capability:
  exposes:
  - type: mcp
    namespace: customer-segment-targeting-pipeline
    port: 8080
    tools:
    - name: execute
      description: Builds segments in Snowflake, syncs to Salesforce, creates campaigns in MailChimp, 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: 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-analytics.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-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
Open in Framework → View in Fleet → customer-segment-targeting-pipeline.yml

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
Open in Framework → View in Fleet → financial-close-pipeline.yml

Retrieves a Stripe payment intent by ID for H&M online orders.

naftiko: '0.5'
info:
  label: Stripe E-Commerce Payment Lookup
  description: Retrieves a Stripe payment intent by ID for H&M online orders.
  tags:
  - payments
  - stripe
capability:
  exposes:
  - type: mcp
    namespace: stripe-payments
    port: 8080
    tools:
    - name: get-data
      description: Retrieves a Stripe payment intent by ID for H&M online 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
Open in Framework → View in Fleet → stripe-e-commerce-payment-lookup.yml

When a customer complaint arrives via Zendesk, retrieves order details from SAP, creates a Salesforce case, and notifies customer service 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 customer service 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.
      inputParameters:
      - name: ticket_id
        in: body
        type: string
        description: Zendesk ticket ID.
      - name: order_number
        in: body
        type: string
        description: SAP order number.
      steps:
      - name: get-ticket
        type: call
        call: zendesk.get-ticket
        with:
          ticket_id: '{{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 #{{ticket_id}}: {{get-ticket.description}}. Order: {{order_number}}.'
      - name: notify-cs
        type: call
        call: msteams.send-message
        with:
          channel_id: customer-service
          text: 'Complaint for order {{order_number}}: {{get-ticket.subject}}. SF Case: {{create-case.CaseNumber}}.'
  consumes:
  - type: http
    namespace: zendesk
    baseUri: https://hm.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://hm-s4.sap.com/sap/opu/odata/sap/ZRT_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://hm.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
Open in Framework → View in Fleet → customer-complaint-handler.yml

Creates campaign in HubSpot, generates contract via DocuSign, tracks deliverables in Asana, and monitors Instagram metrics.

naftiko: '0.5'
info:
  label: Influencer Campaign 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-campaign-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
Open in Framework → View in Fleet → influencer-campaign-pipeline.yml

Syncs calendar from Airtable, creates posts in HubSpot, schedules on Instagram and Facebook, and tracks in Google Sheets.

naftiko: '0.5'
info:
  label: Social Media Content Calendar Pipeline
  description: Syncs calendar from Airtable, creates posts in HubSpot, schedules on Instagram and Facebook, and tracks in Google Sheets.
  tags:
  - social-media
  - airtable
  - hubspot
  - instagram
  - facebook
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: social-media-content-calendar-pipeline
    port: 8080
    tools:
    - name: execute
      description: Syncs calendar from Airtable, creates posts in HubSpot, schedules on Instagram and Facebook, 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: airtable.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: instagram.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: 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: 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-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
Open in Framework → View in Fleet → social-media-content-calendar-pipeline.yml

Triggers a Qlik Sense reload for retail analytics and notifies the team.

naftiko: '0.5'
info:
  label: Qlik Sense Retail Dashboard Refresh
  description: Triggers a Qlik Sense reload for retail 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 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: retail-analytics
          text: 'Qlik dashboard {{app_id}} reloaded. ID: {{trigger-reload.reloadId}}.'
  consumes:
  - type: http
    namespace: qlik
    baseUri: https://hm.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
Open in Framework → View in Fleet → qlik-sense-retail-dashboard-refresh.yml

Retrieves a Salesforce customer order by ID, returning order status, total, and shipping details.

naftiko: '0.5'
info:
  label: Salesforce Customer Order Lookup
  description: Retrieves a Salesforce customer order by ID, returning order status, total, and shipping details.
  tags:
  - sales
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: sf-orders
    port: 8080
    tools:
    - name: get-data
      description: Retrieves a Salesforce customer order by ID, returning order status, total, and shipping details.
      inputParameters:
      - name: query_id
        in: body
        type: string
        description: The lookup identifier.
      call: sf-orders.get-data
      with:
        id: '{{query_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: sf-orders
    baseUri: https://hm.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
Open in Framework → View in Fleet → salesforce-customer-order-lookup.yml

Retrieves supplier sourcing data from SAP Ariba for garment manufacturing partners.

naftiko: '0.5'
info:
  label: SAP Ariba Supplier Sourcing
  description: Retrieves supplier sourcing data from SAP Ariba for garment manufacturing partners.
  tags:
  - procurement
  - supply-chain
  - sap-ariba
capability:
  exposes:
  - type: mcp
    namespace: supplier-sourcing
    port: 8080
    tools:
    - name: get-supplier-sourcing
      description: Get supplier sourcing data from Ariba.
      inputParameters:
      - name: supplier_id
        in: body
        type: string
        description: SAP Ariba supplier ID.
      call: ariba.get-supplier
      with:
        supplier_id: '{{supplier_id}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.supplierName
      - name: country
        type: string
        mapping: $.country
      - name: sustainability_cert
        type: string
        mapping: $.sustainabilityCertification
      - name: capacity_utilization
        type: string
        mapping: $.capacityUtilization
  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
Open in Framework → View in Fleet → sap-ariba-supplier-sourcing.yml

Pulls store data from SAP, analyzes in Snowflake, generates Power BI reports, and shares via Microsoft Teams.

naftiko: '0.5'
info:
  label: Store Performance Review Pipeline
  description: Pulls store data from SAP, analyzes in Snowflake, generates Power BI reports, and shares via Microsoft Teams.
  tags:
  - retail
  - sap
  - snowflake
  - power-bi
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: store-performance-review-pipeline
    port: 8080
    tools:
    - name: execute
      description: Pulls store data from SAP, analyzes in Snowflake, generates Power BI reports, and shares 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: 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: 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: 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: 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
Open in Framework → View in Fleet → store-performance-review-pipeline.yml

Processes return in Zendesk, initiates refund via Stripe, updates inventory in SAP, and logs in Snowflake.

naftiko: '0.5'
info:
  label: Customer Returns Pipeline
  description: Processes return in Zendesk, initiates refund via Stripe, updates inventory in SAP, 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 in Zendesk, initiates refund via Stripe, updates inventory in SAP, 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
Open in Framework → View in Fleet → customer-returns-pipeline.yml

Retrieves procurement request status from SAP Ariba by request ID.

naftiko: '0.5'
info:
  label: SAP Ariba Procurement Lookup
  description: Retrieves procurement request status from SAP Ariba by request ID.
  tags:
  - procurement
  - sap-ariba
capability:
  exposes:
  - type: mcp
    namespace: sap-ariba
    port: 8080
    tools:
    - name: get-data
      description: Retrieves procurement request status from SAP Ariba by request ID.
      inputParameters:
      - name: query_id
        in: body
        type: string
        description: The lookup identifier.
      call: sap-ariba.get-data
      with:
        id: '{{query_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: sap-ariba
    baseUri: https://api.ariba.com/v2
    authentication:
      type: bearer
      token: $secrets.ariba_token
    resources:
    - name: data
      path: /{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-data
        method: GET
Open in Framework → View in Fleet → sap-ariba-procurement-lookup.yml

Calculates markdowns in Snowflake, updates pricing in SAP, syncs to BigCommerce, and notifies stores via Slack.

naftiko: '0.5'
info:
  label: Seasonal Markdown Pipeline
  description: Calculates markdowns in Snowflake, updates pricing in SAP, syncs to BigCommerce, and notifies stores via Slack.
  tags:
  - pricing
  - snowflake
  - sap
  - bigcommerce
  - slack
capability:
  exposes:
  - type: mcp
    namespace: seasonal-markdown-pipeline
    port: 8080
    tools:
    - name: execute
      description: Calculates markdowns in Snowflake, updates pricing in SAP, syncs to BigCommerce, and notifies stores 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: sap.execute-step-2
        with:
          data: '{{step-1.result}}'
      - name: step-3
        type: call
        call: bigcommerce.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: 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: slack
    baseUri: https://api.slack.com/v1
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: resources
      path: /{{id}}
      operations:
      - name: execute
        method: POST
Open in Framework → View in Fleet → seasonal-markdown-pipeline.yml

Sends a message to a Slack store operations channel.

naftiko: '0.5'
info:
  label: Slack Store Ops Message Sender
  description: Sends a message to a Slack store operations channel.
  tags:
  - communications
  - slack
capability:
  exposes:
  - type: mcp
    namespace: slack-storeops
    port: 8080
    tools:
    - name: get-data
      description: Sends a message to a Slack store operations channel.
      inputParameters:
      - name: query_id
        in: body
        type: string
        description: The lookup identifier.
      call: slack-storeops.get-data
      with:
        id: '{{query_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: slack-storeops
    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
Open in Framework → View in Fleet → slack-store-ops-message-sender.yml

Processes an online return by retrieving order from SAP, creating a ServiceNow task for warehouse processing, issuing a refund via Salesforce, and notifying the customer via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Garment Return Processor
  description: Processes an online return by retrieving order from SAP, creating a ServiceNow task for warehouse processing, issuing a refund via Salesforce, and notifying the customer via Microsoft Outlook.
  tags:
  - e-commerce
  - returns
  - sap
  - servicenow
  - salesforce
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: returns-processing
    port: 8080
    tools:
    - name: process-return
      description: Process an online garment return.
      inputParameters:
      - name: order_number
        in: body
        type: string
        description: Original order number.
      - name: return_reason
        in: body
        type: string
        description: Reason for return.
      - name: customer_email
        in: body
        type: string
        description: Customer email.
      steps:
      - name: get-order
        type: call
        call: sap.get-order
        with:
          order_number: '{{order_number}}'
      - name: create-return-task
        type: call
        call: servicenow.create-record
        with:
          table: u_return_tasks
          short_description: 'Return: order {{order_number}}'
          description: 'Reason: {{return_reason}}. Items: {{get-order.item_count}}. Value: {{get-order.total_amount}}.'
      - name: initiate-refund
        type: call
        call: salesforce.create-refund
        with:
          order_ref: '{{order_number}}'
          amount: '{{get-order.total_amount}}'
      - name: notify-customer
        type: call
        call: outlook.send-email
        with:
          to: '{{customer_email}}'
          subject: H&M Return Confirmation - Order {{order_number}}
          body: Your return for order {{order_number}} has been processed. Refund of {{get-order.total_amount}} will be issued within 5-10 business days.
  consumes:
  - type: http
    namespace: sap
    baseUri: https://hm-s4.sap.com/sap/opu/odata/sap/ZRT_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: servicenow
    baseUri: https://hm.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: salesforce
    baseUri: https://hm.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: refunds
      path: /sobjects/Refund__c
      operations:
      - name: create-refund
        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
Open in Framework → View in Fleet → garment-return-processor.yml

Analyzes supplier data from SAP Ariba, scores alternatives in Snowflake, updates procurement in SAP, and reports via Google Sheets.

naftiko: '0.5'
info:
  label: Fabric Sourcing Optimization Pipeline
  description: Analyzes supplier data from SAP Ariba, scores alternatives in Snowflake, updates procurement in SAP, and reports via Google Sheets.
  tags:
  - sourcing
  - sap-ariba
  - snowflake
  - sap
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: fabric-sourcing-optimization-pipeline
    port: 8080
    tools:
    - name: execute
      description: Analyzes supplier data from SAP Ariba, scores alternatives in Snowflake, updates procurement in SAP, 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-ariba.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: sap.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-ariba
    baseUri: https://api.sapariba.com/v1
    authentication:
      type: bearer
      token: $secrets.sap_ariba_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: 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
Open in Framework → View in Fleet → fabric-sourcing-optimization-pipeline.yml

Aggregates 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 Pipeline
  description: Aggregates 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-performance-pipeline
    port: 8080
    tools:
    - name: execute
      description: Aggregates delivery data from SAP, calculates scores in Snowflake, generates scorecards in Google Sheets, 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
Open in Framework → View in Fleet → supplier-performance-pipeline.yml

Aggregates vendor performance data from SAP, delivery metrics from Oracle Retail, and quality incidents from ServiceNow, then publishes a quarterly scorecard to Confluence and notifies the procurement team.

naftiko: '0.5'
info:
  label: Vendor Scorecard Generation
  description: Aggregates vendor performance data from SAP, delivery metrics from Oracle Retail, and quality incidents from ServiceNow, then publishes a quarterly scorecard to Confluence and notifies the procurement team.
  tags:
  - supply-chain
  - vendor-management
  - sap
  - oracle-cloud
  - servicenow
  - confluence
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: vendor-scorecard
    port: 8080
    tools:
    - name: generate-vendor-scorecard
      description: Given a vendor ID and quarter, aggregate performance data across systems and publish the scorecard.
      inputParameters:
      - name: vendor_id
        in: body
        type: string
        description: The SAP vendor ID.
      - name: quarter
        in: body
        type: string
        description: The reporting quarter (e.g. Q1_2026).
      steps:
      - name: get-vendor-pos
        type: call
        call: sap.get-vendor-orders
        with:
          vendor_id: '{{vendor_id}}'
          quarter: '{{quarter}}'
      - name: get-delivery-metrics
        type: call
        call: oracle-retail.get-vendor-delivery-stats
        with:
          vendor_id: '{{vendor_id}}'
          quarter: '{{quarter}}'
      - name: get-quality-incidents
        type: call
        call: servicenow.get-vendor-incidents
        with:
          vendor_id: '{{vendor_id}}'
          quarter: '{{quarter}}'
      - name: publish-scorecard
        type: call
        call: confluence.create-page
        with:
          space_key: PROCUREMENT
          title: 'Vendor Scorecard: {{vendor_id}} - {{quarter}}'
          body: 'PO Count: {{get-vendor-pos.total_orders}}. On-time delivery: {{get-delivery-metrics.on_time_pct}}%. Fill rate: {{get-delivery-metrics.fill_rate_pct}}%. Quality incidents: {{get-quality-incidents.count}}. Overall score: {{get-delivery-metrics.composite_score}}.'
      - name: notify-procurement
        type: call
        call: msteams.post-channel
        with:
          channel_id: procurement-scorecards
          text: 'Vendor scorecard published for {{vendor_id}} ({{quarter}}). On-time: {{get-delivery-metrics.on_time_pct}}%. Quality incidents: {{get-quality-incidents.count}}. Full report: {{publish-scorecard.url}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://homedepot-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-orders
      path: /A_PurchaseOrder?$filter=Supplier eq '{{vendor_id}}'
      inputParameters:
      - name: vendor_id
        in: path
      operations:
      - name: get-vendor-orders
        method: GET
  - type: http
    namespace: oracle-retail
    baseUri: https://homedepot.retail.oracle.com/rgbu-rms-rse/api/v1
    authentication:
      type: bearer
      token: $secrets.oracle_retail_token
    resources:
    - name: vendor-stats
      path: /vendors/{{vendor_id}}/delivery-stats
      inputParameters:
      - name: vendor_id
        in: path
      operations:
      - name: get-vendor-delivery-stats
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://homedepot.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: path
      operations:
      - name: get-vendor-incidents
        method: GET
  - type: http
    namespace: confluence
    baseUri: https://homedepot.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: pages
      path: /content
      operations:
      - name: create-page
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel
        method: POST
Open in Framework → View in Fleet → vendor-scorecard-generation.yml

Pulls daily sales from Teradata, foot traffic from Google Analytics, and open incidents from ServiceNow, then compiles a digest and posts it to the store's Microsoft Teams channel every morning.

naftiko: '0.5'
info:
  label: Store Performance Daily Digest
  description: Pulls daily sales from Teradata, foot traffic from Google Analytics, and open incidents from ServiceNow, then compiles a digest and posts it to the store's Microsoft Teams channel every morning.
  tags:
  - store-ops
  - reporting
  - teradata
  - google-analytics
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: store-digest
    port: 8080
    tools:
    - name: generate-daily-digest
      description: Given a store ID and date, compile sales, traffic, and incident data into a daily digest and post to Teams.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: The store number.
      - name: report_date
        in: body
        type: string
        description: The date for the digest in YYYY-MM-DD format.
      steps:
      - name: get-sales
        type: call
        call: teradata.run-query
        with:
          query: SELECT SUM(net_sales) as total_sales, COUNT(DISTINCT txn_id) as txn_count FROM daily_sales WHERE store_id='{{store_id}}' AND sale_date='{{report_date}}'
      - name: get-traffic
        type: call
        call: ga.run-report
        with:
          store_id: '{{store_id}}'
          start_date: '{{report_date}}'
          end_date: '{{report_date}}'
      - name: get-incidents
        type: call
        call: servicenow.get-store-incidents
        with:
          store_id: '{{store_id}}'
          date: '{{report_date}}'
      - name: post-digest
        type: call
        call: msteams.post-channel
        with:
          channel_id: store-{{store_id}}-ops
          text: 'Daily Digest for Store #{{store_id}} ({{report_date}}): Sales: ${{get-sales.total_sales}} across {{get-sales.txn_count}} transactions. Online traffic: {{get-traffic.page_views}} page views. Open incidents: {{get-incidents.count}}.'
  consumes:
  - type: http
    namespace: teradata
    baseUri: https://teradata.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.teradata_token
    resources:
    - name: queries
      path: /queries
      operations:
      - name: run-query
        method: POST
  - 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: servicenow
    baseUri: https://homedepot.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: store-incidents
      path: /table/incident?sysparm_query=location={{store_id}}^opened_at={{date}}
      inputParameters:
      - name: store_id
        in: path
      - name: date
        in: path
      operations:
      - name: get-store-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
        method: POST
Open in Framework → View in Fleet → store-performance-daily-digest.yml

Processes associate recognition nominations by creating a record in Workday, adding reward points in the recognition platform, and sending a congratulatory email via Outlook.

naftiko: '0.5'
info:
  label: Associate Recognition Award Processor
  description: Processes associate recognition nominations by creating a record in Workday, adding reward points in the recognition platform, and sending a congratulatory email via Outlook.
  tags:
  - hr
  - recognition
  - workday
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: recognition
    port: 8080
    tools:
    - name: process-recognition
      description: Process an associate recognition award.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The recognized employee Workday ID.
      - name: award_type
        in: body
        type: string
        description: Award type (homer, quarterly, annual).
      - name: nominator_name
        in: body
        type: string
        description: Name of the person nominating.
      - name: reason
        in: body
        type: string
        description: Recognition reason.
      steps:
      - name: get-employee
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{employee_id}}'
      - name: add-award-points
        type: call
        call: recognition-platform.add-points
        with:
          employee_id: '{{employee_id}}'
          award_type: '{{award_type}}'
          reason: '{{reason}}'
      - name: send-congratulations
        type: call
        call: outlook.send-email
        with:
          to: '{{get-employee.work_email}}'
          subject: Congratulations on Your {{award_type}} Award!
          body: '{{get-employee.first_name}}, you have been recognized by {{nominator_name}} for: {{reason}}. Points awarded: {{add-award-points.points_added}}.'
  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: recognition-platform
    baseUri: https://recognition.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.recognition_token
    resources:
    - name: awards
      path: /awards
      operations:
      - name: add-points
        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
Open in Framework → View in Fleet → associate-recognition-award-processor.yml

Sends formatted operational notifications to store-specific Slack channels for time-sensitive alerts and updates.

naftiko: '0.5'
info:
  label: Slack Store Operations Notifier
  description: Sends formatted operational notifications to store-specific Slack channels for time-sensitive alerts and updates.
  tags:
  - communications
  - store-operations
  - slack
capability:
  exposes:
  - type: mcp
    namespace: store-notifications
    port: 8080
    tools:
    - name: send-store-notification
      description: Send an operational notification to a store Slack channel.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: The store number.
      - name: message
        in: body
        type: string
        description: The notification message.
      call: slack.post-message
      with:
        channel: store-{{store_id}}-ops
        text: '{{message}}'
      outputParameters:
      - name: message_ts
        type: string
        mapping: $.ts
  consumes:
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → slack-store-operations-notifier.yml

Pulls Azure resource usage from CloudWatch-equivalent Azure Cost Management, compares against budgets in the FinOps dashboard, identifies idle resources via Datadog, and creates a Jira ticket for the engineering team to remediate.

naftiko: '0.5'
info:
  label: Azure Cloud Cost Optimization
  description: Pulls Azure resource usage from CloudWatch-equivalent Azure Cost Management, compares against budgets in the FinOps dashboard, identifies idle resources via Datadog, and creates a Jira ticket for the engineering team to remediate.
  tags:
  - cloud-ops
  - finops
  - microsoft-azure
  - datadog
  - jira
capability:
  exposes:
  - type: mcp
    namespace: cloud-cost
    port: 8080
    tools:
    - name: analyze-cloud-costs
      description: Given a subscription ID and month, pull costs, compare to budget, identify waste, and create remediation tickets.
      inputParameters:
      - name: subscription_id
        in: body
        type: string
        description: The Azure subscription ID.
      - name: month
        in: body
        type: string
        description: The reporting month in YYYY-MM format.
      steps:
      - name: get-costs
        type: call
        call: azure-cost.get-usage
        with:
          subscription_id: '{{subscription_id}}'
          month: '{{month}}'
      - name: get-idle-resources
        type: call
        call: datadog.query-metrics
        with:
          service_name: azure-{{subscription_id}}
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: CLOUDOPS
          issue_type: Task
          summary: 'Azure cost optimization: {{subscription_id}} - {{month}}'
          description: 'Total spend: ${{get-costs.total_cost}}. Budget: ${{get-costs.budget_amount}}. Utilization: {{get-costs.utilization_pct}}%. Idle resources detected: {{get-idle-resources.idle_count}}. Top cost driver: {{get-costs.top_service}}.'
  consumes:
  - type: http
    namespace: azure-cost
    baseUri: https://management.azure.com/subscriptions
    authentication:
      type: bearer
      token: $secrets.azure_mgmt_token
    resources:
    - name: usage
      path: /{{subscription_id}}/providers/Microsoft.CostManagement/query
      inputParameters:
      - name: subscription_id
        in: path
      operations:
      - name: get-usage
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apiKey
      key: $secrets.datadog_api_key
    inputParameters:
    - name: DD-APPLICATION-KEY
      in: header
      value: $secrets.datadog_app_key
    resources:
    - name: metrics
      path: /query
      operations:
      - name: query-metrics
        method: GET
  - type: http
    namespace: jira
    baseUri: https://homedepot.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → azure-cloud-cost-optimization.yml

When a store safety incident is reported, creates a ServiceNow incident, logs the details in Workday for the affected associate, notifies store management via Microsoft Teams, and uploads incident photos to SharePoint.

naftiko: '0.5'
info:
  label: Safety Incident Reporting
  description: When a store safety incident is reported, creates a ServiceNow incident, logs the details in Workday for the affected associate, notifies store management via Microsoft Teams, and uploads incident photos to SharePoint.
  tags:
  - safety
  - store-ops
  - servicenow
  - workday
  - microsoft-teams
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: safety-reporting
    port: 8080
    tools:
    - name: report-safety-incident
      description: Given incident details, create tickets, update HR records, notify management, and archive documentation.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: The store number where the incident occurred.
      - name: employee_id
        in: body
        type: string
        description: The Workday employee ID of the affected associate.
      - name: incident_type
        in: body
        type: string
        description: Type of incident (e.g. SLIP_FALL, EQUIPMENT, CHEMICAL, ERGONOMIC).
      - name: description
        in: body
        type: string
        description: Description of the incident.
      - name: store_manager_email
        in: body
        type: string
        description: The store manager email for notification.
      steps:
      - name: get-associate
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{employee_id}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Safety incident: {{incident_type}} at Store #{{store_id}}'
          category: safety
          priority: '2'
          assigned_group: EHS_Safety
          description: '{{description}} Associate: {{get-associate.full_name}}. Store #{{store_id}}. Type: {{incident_type}}.'
      - name: create-doc-folder
        type: call
        call: sharepoint.create-folder
        with:
          site_id: safety_incidents_site
          folder_path: Incidents/Store{{store_id}}/{{create-incident.number}}
      - name: notify-manager
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{store_manager_email}}'
          text: 'SAFETY ALERT: {{incident_type}} incident at Store #{{store_id}} involving {{get-associate.full_name}}. ServiceNow ticket: {{create-incident.number}}. Documentation folder: {{create-doc-folder.url}}. Please upload photos and witness statements.'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1/homedepot
    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://homedepot.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: drive-items
      path: /{{site_id}}/drive/root:/{{folder_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      operations:
      - name: create-folder
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → safety-incident-reporting.yml

Fetches product page data from SAP Commerce Cloud, pulls search performance from Google Analytics, checks keyword rankings via Google Tag Manager events, and creates a Jira ticket for the content team with optimization recommendations.

naftiko: '0.5'
info:
  label: SEO Product Page Optimization
  description: Fetches product page data from SAP Commerce Cloud, pulls search performance from Google Analytics, checks keyword rankings via Google Tag Manager events, and creates a Jira ticket for the content team with optimization recommendations.
  tags:
  - marketing
  - seo
  - sap
  - google-analytics
  - google-tag-manager
  - jira
capability:
  exposes:
  - type: mcp
    namespace: seo-optimization
    port: 8080
    tools:
    - name: analyze-product-seo
      description: Given a SKU and page path, pull product data, search analytics, and create an optimization ticket.
      inputParameters:
      - name: sku
        in: body
        type: string
        description: The product SKU.
      - name: page_path
        in: body
        type: string
        description: The product page URL path.
      steps:
      - name: get-product
        type: call
        call: sap-commerce.get-product
        with:
          sku: '{{sku}}'
      - name: get-search-metrics
        type: call
        call: ga.run-report
        with:
          page_path: '{{page_path}}'
          start_date: '2026-02-25'
          end_date: '2026-03-27'
      - name: create-seo-ticket
        type: call
        call: jira.create-issue
        with:
          project: CONTENT
          issue_type: Task
          summary: 'SEO optimization: {{get-product.product_name}} ({{sku}})'
          description: 'Product: {{get-product.product_name}}. Page: {{page_path}}. Last 30d views: {{get-search-metrics.page_views}}. Bounce rate: {{get-search-metrics.bounce_rate}}. Current title: {{get-product.meta_title}}. Recommendation: Review title tags, meta description, and H1 structure.'
  consumes:
  - type: http
    namespace: sap-commerce
    baseUri: https://homedepot-commerce.sap.com/occ/v2/homedepot
    authentication:
      type: bearer
      token: $secrets.sap_commerce_token
    resources:
    - name: products
      path: /products/{{sku}}
      inputParameters:
      - name: sku
        in: path
      operations:
      - name: get-product
        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: jira
    baseUri: https://homedepot.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → seo-product-page-optimization.yml

When an associate requests a schedule change, fetches their current schedule from Workday, checks store staffing levels in the workforce management system, and routes the request to the department head via Microsoft Teams for approval.

naftiko: '0.5'
info:
  label: Associate Schedule Change Request
  description: When an associate requests a schedule change, fetches their current schedule from Workday, checks store staffing levels in the workforce management system, and routes the request to the department head via Microsoft Teams for approval.
  tags:
  - hr
  - scheduling
  - workday
  - microsoft-teams
  - workforce-management
capability:
  exposes:
  - type: mcp
    namespace: schedule-management
    port: 8080
    tools:
    - name: request-schedule-change
      description: Given an employee ID, requested date, and shift preference, validate staffing and route the approval.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The Workday employee ID.
      - name: requested_date
        in: body
        type: string
        description: The date for the schedule change in YYYY-MM-DD format.
      - name: requested_shift
        in: body
        type: string
        description: The preferred shift (e.g. MORNING, AFTERNOON, EVENING).
      - name: reason
        in: body
        type: string
        description: The reason for the schedule change.
      steps:
      - name: get-associate
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{employee_id}}'
      - name: check-staffing
        type: call
        call: wfm.get-staffing-levels
        with:
          store_id: '{{get-associate.home_store}}'
          department: '{{get-associate.department}}'
          date: '{{requested_date}}'
          shift: '{{requested_shift}}'
      - name: notify-manager
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-associate.manager_email}}'
          text: 'Schedule change request from {{get-associate.full_name}}: {{requested_date}}, {{requested_shift}} shift. Reason: {{reason}}. Current staffing for that shift: {{check-staffing.current_count}}/{{check-staffing.required_count}}. Please approve or deny.'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1/homedepot
    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: wfm
    baseUri: https://wfm.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.wfm_token
    resources:
    - name: staffing
      path: /stores/{{store_id}}/departments/{{department}}/staffing
      inputParameters:
      - name: store_id
        in: path
      - name: department
        in: path
      operations:
      - name: get-staffing-levels
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → associate-schedule-change-request.yml

When a new e-commerce order is placed, validates inventory in Oracle Retail, creates a pick task in the warehouse management system, and sends an order confirmation via MailChimp transactional email.

naftiko: '0.5'
info:
  label: Online Order Fulfillment Orchestrator
  description: When a new e-commerce order is placed, validates inventory in Oracle Retail, creates a pick task in the warehouse management system, and sends an order confirmation via MailChimp transactional email.
  tags:
  - e-commerce
  - fulfillment
  - oracle-cloud
  - mailchimp
  - order-management
capability:
  exposes:
  - type: mcp
    namespace: order-fulfillment
    port: 8080
    tools:
    - name: process-new-order
      description: Given an order ID, customer email, store ID, and SKU list, validate inventory, create pick tasks, and send order confirmation.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The e-commerce order ID.
      - name: customer_email
        in: body
        type: string
        description: The customer email address.
      - name: store_id
        in: body
        type: string
        description: The fulfillment store number.
      - name: sku_list
        in: body
        type: string
        description: Comma-separated list of SKUs in the order.
      steps:
      - name: check-inventory
        type: call
        call: oracle-retail.get-stock
        with:
          store_id: '{{store_id}}'
          sku: '{{sku_list}}'
      - name: create-pick-task
        type: call
        call: wms.create-task
        with:
          order_id: '{{order_id}}'
          store_id: '{{store_id}}'
          items: '{{sku_list}}'
          priority: standard
      - name: send-confirmation
        type: call
        call: mailchimp.send-transactional
        with:
          template_name: order_confirmation
          to_email: '{{customer_email}}'
          merge_vars:
            order_id: '{{order_id}}'
            pick_task_id: '{{create-pick-task.task_id}}'
  consumes:
  - type: http
    namespace: oracle-retail
    baseUri: https://homedepot.retail.oracle.com/rgbu-rms-rse/api/v1
    authentication:
      type: bearer
      token: $secrets.oracle_retail_token
    resources:
    - name: stock
      path: /stores/{{store_id}}/items/{{sku}}/stock
      inputParameters:
      - name: store_id
        in: path
      - name: sku
        in: path
      operations:
      - name: get-stock
        method: GET
  - type: http
    namespace: wms
    baseUri: https://wms.homedepot.com/api/v2
    authentication:
      type: bearer
      token: $secrets.wms_token
    resources:
    - name: tasks
      path: /pick-tasks
      operations:
      - name: create-task
        method: POST
  - type: http
    namespace: mailchimp
    baseUri: https://mandrillapp.com/api/1.0
    authentication:
      type: apiKey
      key: $secrets.mailchimp_transactional_key
    resources:
    - name: transactional
      path: /messages/send-template
      operations:
      - name: send-transactional
        method: POST
Open in Framework → View in Fleet → online-order-fulfillment-orchestrator.yml

When Dynatrace detects a synthetic monitor failure for homedepot.com, fetches the failure details, creates a PagerDuty-style ServiceNow incident, and posts an alert to the SRE Microsoft Teams channel with diagnostic links.

naftiko: '0.5'
info:
  label: Dynatrace Synthetic Monitor Alert Handler
  description: When Dynatrace detects a synthetic monitor failure for homedepot.com, fetches the failure details, creates a PagerDuty-style ServiceNow incident, and posts an alert to the SRE Microsoft Teams channel with diagnostic links.
  tags:
  - monitoring
  - e-commerce
  - dynatrace
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: synthetic-alerts
    port: 8080
    tools:
    - name: handle-synthetic-failure
      description: Given a Dynatrace monitor ID and failure timestamp, fetch details, create an incident, and alert SRE.
      inputParameters:
      - name: monitor_id
        in: body
        type: string
        description: The Dynatrace synthetic monitor ID.
      - name: failure_timestamp
        in: body
        type: string
        description: The failure timestamp in ISO 8601 format.
      steps:
      - name: get-failure-details
        type: call
        call: dynatrace.get-monitor-result
        with:
          monitor_id: '{{monitor_id}}'
          timestamp: '{{failure_timestamp}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Synthetic monitor failure: {{get-failure-details.monitor_name}}'
          priority: '1'
          category: website_availability
          assigned_group: SRE_Team
          description: 'Monitor: {{get-failure-details.monitor_name}}. Location: {{get-failure-details.location}}. Error: {{get-failure-details.error_message}}. Response time: {{get-failure-details.response_time_ms}}ms.'
      - name: alert-sre
        type: call
        call: msteams.post-channel
        with:
          channel_id: sre-alerts
          text: 'SITE ALERT: Synthetic monitor ''{{get-failure-details.monitor_name}}'' FAILED at {{failure_timestamp}}. Location: {{get-failure-details.location}}. Error: {{get-failure-details.error_message}}. Incident: {{create-incident.number}}. Dashboard: {{get-failure-details.dashboard_url}}'
  consumes:
  - type: http
    namespace: dynatrace
    baseUri: https://homedepot.live.dynatrace.com/api/v2
    authentication:
      type: bearer
      token: $secrets.dynatrace_token
    resources:
    - name: monitors
      path: /synthetic/monitors/{{monitor_id}}/results
      inputParameters:
      - name: monitor_id
        in: path
      operations:
      - name: get-monitor-result
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://homedepot.service-now.com/api/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
Open in Framework → View in Fleet → dynatrace-synthetic-monitor-alert-handler.yml

Collects A/B test results from Google Optimize, enriches with revenue data from Google Analytics, and publishes findings to Confluence.

naftiko: '0.5'
info:
  label: E-Commerce A/B Test Results Pipeline
  description: Collects A/B test results from Google Optimize, enriches with revenue data from Google Analytics, and publishes findings to Confluence.
  tags:
  - e-commerce
  - experimentation
  - google-analytics
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: ab-test-results
    port: 8080
    tools:
    - name: collect-ab-results
      description: Collect and publish A/B test results.
      inputParameters:
      - name: experiment_id
        in: body
        type: string
        description: The Google Optimize experiment ID.
      steps:
      - name: get-experiment-results
        type: call
        call: google-optimize.get-experiment
        with:
          id: '{{experiment_id}}'
      - name: get-revenue-impact
        type: call
        call: google-analytics.get-report
        with:
          experiment_id: '{{experiment_id}}'
          metric: revenue
      - name: publish-findings
        type: call
        call: confluence.create-page
        with:
          space: ECOMM
          title: 'A/B Test Results: {{get-experiment-results.name}}'
          body: 'Winner: {{get-experiment-results.winner}}. Conversion lift: {{get-experiment-results.lift_pct}}%. Revenue impact: ${{get-revenue-impact.incremental_revenue}}.'
  consumes:
  - type: http
    namespace: google-optimize
    baseUri: https://www.googleapis.com/analytics/v3/management
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: experiments
      path: /accounts/homedepot/experiments/{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-experiment
        method: GET
  - type: http
    namespace: google-analytics
    baseUri: https://analyticsdata.googleapis.com/v1beta
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: reports
      path: /properties/homedepot:runReport
      operations:
      - name: get-report
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://homedepot.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
Open in Framework → View in Fleet → e-commerce-a-b-test-results-pipeline.yml

Retrieves the current status and assigned responder for a PagerDuty incident related to homedepot.com e-commerce platform.

naftiko: '0.5'
info:
  label: PagerDuty E-Commerce Incident Lookup
  description: Retrieves the current status and assigned responder for a PagerDuty incident related to homedepot.com e-commerce platform.
  tags:
  - operations
  - e-commerce
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: ecommerce-incidents
    port: 8080
    tools:
    - name: get-incident
      description: Look up an e-commerce PagerDuty incident.
      inputParameters:
      - name: incident_id
        in: body
        type: string
        description: The PagerDuty incident ID.
      call: pagerduty.get-incident
      with:
        id: '{{incident_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.incident.status
      - name: urgency
        type: string
        mapping: $.incident.urgency
      - name: responder
        type: string
        mapping: $.incident.assignments[0].assignee.summary
  consumes:
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: incidents
      path: /incidents/{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-incident
        method: GET
Open in Framework → View in Fleet → pagerduty-e-commerce-incident-lookup.yml

Triggers a refresh of the district-level sales performance Power BI dataset to update dashboards with the latest transaction data.

naftiko: '0.5'
info:
  label: Power BI District Sales Dashboard Refresh
  description: Triggers a refresh of the district-level sales performance Power BI dataset to update dashboards with the latest transaction data.
  tags:
  - analytics
  - sales
  - power-bi
capability:
  exposes:
  - type: mcp
    namespace: district-dashboard
    port: 8080
    tools:
    - name: refresh-district-dashboard
      description: Trigger Power BI district sales dashboard refresh.
      inputParameters:
      - name: dataset_id
        in: body
        type: string
        description: The Power BI dataset ID.
      call: powerbi.refresh-dataset
      with:
        id: '{{dataset_id}}'
      outputParameters:
      - name: refresh_id
        type: string
        mapping: $.requestId
  consumes:
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: datasets
      path: /datasets/{{id}}/refreshes
      inputParameters:
      - name: id
        in: path
      operations:
      - name: refresh-dataset
        method: POST
Open in Framework → View in Fleet → power-bi-district-sales-dashboard-refresh.yml

Processes tool rental returns by updating the rental system, inspecting equipment status in ServiceNow, and charging damage fees via the payment gateway.

naftiko: '0.5'
info:
  label: Rental Equipment Return Processor
  description: Processes tool rental returns by updating the rental system, inspecting equipment status in ServiceNow, and charging damage fees via the payment gateway.
  tags:
  - rental
  - equipment
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: rental-returns
    port: 8080
    tools:
    - name: process-rental-return
      description: Process a tool rental equipment return.
      inputParameters:
      - name: rental_id
        in: body
        type: string
        description: The rental contract ID.
      - name: condition
        in: body
        type: string
        description: Equipment condition (good, damaged, missing_parts).
      steps:
      - name: close-rental
        type: call
        call: rental-system.close-contract
        with:
          rental_id: '{{rental_id}}'
          return_condition: '{{condition}}'
      - name: create-inspection
        type: call
        call: servicenow.create-task
        with:
          short_description: 'Equipment inspection: Rental {{rental_id}}'
          category: equipment_inspection
          condition: '{{condition}}'
      - name: process-charges
        type: call
        call: payment-gateway.charge
        with:
          rental_id: '{{rental_id}}'
          charge_type: return
          damage_assessment: '{{condition}}'
  consumes:
  - type: http
    namespace: rental-system
    baseUri: https://rental.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.rental_system_token
    resources:
    - name: contracts
      path: /contracts/{{rental_id}}/close
      inputParameters:
      - name: rental_id
        in: path
      operations:
      - name: close-contract
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://homedepot.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: payment-gateway
    baseUri: https://payments.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.payment_gateway_token
    resources:
    - name: charges
      path: /charges
      operations:
      - name: charge
        method: POST
Open in Framework → View in Fleet → rental-equipment-return-processor.yml

When a customer checks in for curbside pickup, retrieves the order from SAP Commerce Cloud, dispatches an associate via the workforce management system, and sends a real-time SMS update to the customer.

naftiko: '0.5'
info:
  label: Curbside Pickup Orchestrator
  description: When a customer checks in for curbside pickup, retrieves the order from SAP Commerce Cloud, dispatches an associate via the workforce management system, and sends a real-time SMS update to the customer.
  tags:
  - e-commerce
  - curbside-pickup
  - sap
  - workforce-management
  - customer-notification
capability:
  exposes:
  - type: mcp
    namespace: curbside
    port: 8080
    tools:
    - name: process-curbside-checkin
      description: Given an order ID and parking spot, retrieve the order, dispatch an associate, and notify the customer.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The curbside pickup order ID.
      - name: parking_spot
        in: body
        type: string
        description: The customer parking spot identifier.
      - name: customer_phone
        in: body
        type: string
        description: The customer phone for SMS updates.
      - name: store_id
        in: body
        type: string
        description: The store number.
      steps:
      - name: get-order
        type: call
        call: sap-commerce.get-order
        with:
          order_id: '{{order_id}}'
      - name: dispatch-associate
        type: call
        call: wfm.dispatch-task
        with:
          store_id: '{{store_id}}'
          task_type: curbside_delivery
          order_id: '{{order_id}}'
          location: Parking spot {{parking_spot}}
          item_count: '{{get-order.item_count}}'
      - name: notify-customer
        type: call
        call: notification-svc.send-sms
        with:
          phone: '{{customer_phone}}'
          message: 'An associate is on the way to spot {{parking_spot}} with your order {{order_id}} ({{get-order.item_count}} items). ETA: {{dispatch-associate.estimated_minutes}} minutes.'
  consumes:
  - type: http
    namespace: sap-commerce
    baseUri: https://homedepot-commerce.sap.com/occ/v2/homedepot
    authentication:
      type: bearer
      token: $secrets.sap_commerce_token
    resources:
    - name: orders
      path: /orders/{{order_id}}
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-order
        method: GET
  - type: http
    namespace: wfm
    baseUri: https://wfm.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.wfm_token
    resources:
    - name: tasks
      path: /dispatch
      operations:
      - name: dispatch-task
        method: POST
  - type: http
    namespace: notification-svc
    baseUri: https://notifications.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.notification_svc_token
    resources:
    - name: sms
      path: /sms/send
      operations:
      - name: send-sms
        method: POST
Open in Framework → View in Fleet → curbside-pickup-orchestrator.yml

When a customer requests an installation quote (flooring, countertops, HVAC), captures the lead in HubSpot, finds the nearest certified installer via Google Maps, creates a Salesforce opportunity, and schedules the consultation via ServiceNow.

naftiko: '0.5'
info:
  label: Installation Services Lead Router
  description: When a customer requests an installation quote (flooring, countertops, HVAC), captures the lead in HubSpot, finds the nearest certified installer via Google Maps, creates a Salesforce opportunity, and schedules the consultation via ServiceNow.
  tags:
  - sales
  - installation-services
  - hubspot
  - google-maps
  - salesforce
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: install-services
    port: 8080
    tools:
    - name: route-install-lead
      description: Given customer details and installation type, create the lead, find an installer, create an opportunity, and schedule the consultation.
      inputParameters:
      - name: customer_name
        in: body
        type: string
        description: The customer full name.
      - name: customer_email
        in: body
        type: string
        description: The customer email.
      - name: customer_address
        in: body
        type: string
        description: The customer address for installation.
      - name: install_type
        in: body
        type: string
        description: Type of installation (e.g. FLOORING, COUNTERTOP, HVAC, ROOFING).
      - name: estimated_budget
        in: body
        type: number
        description: The customer estimated budget.
      steps:
      - name: create-lead
        type: call
        call: hubspot.create-contact
        with:
          name: '{{customer_name}}'
          email: '{{customer_email}}'
          address: '{{customer_address}}'
          lead_source: Installation_Request
          install_type: '{{install_type}}'
      - name: find-installer
        type: call
        call: gmaps.nearby-search
        with:
          query: '{{install_type}} installer near {{customer_address}}'
      - name: create-opportunity
        type: call
        call: salesforce.create-opportunity
        with:
          name: Install - {{install_type}} - {{customer_name}}
          amount: '{{estimated_budget}}'
          stage: Lead
          contact_email: '{{customer_email}}'
      - name: schedule-consultation
        type: call
        call: servicenow.create-work-order
        with:
          short_description: 'Installation consultation: {{install_type}} - {{customer_name}}'
          assigned_group: Installation_Services
          description: 'Customer: {{customer_name}}. Address: {{customer_address}}. Type: {{install_type}}. Budget: ${{estimated_budget}}. Nearest installer: {{find-installer.stores[0].name}}. Opportunity: {{create-opportunity.id}}.'
  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: gmaps
    baseUri: https://maps.googleapis.com/maps/api/place
    authentication:
      type: apiKey
      key: $secrets.google_maps_key
    resources:
    - name: nearby
      path: /textsearch/json
      operations:
      - name: nearby-search
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://homedepot.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: servicenow
    baseUri: https://homedepot.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
Open in Framework → View in Fleet → installation-services-lead-router.yml

Checks Black Friday inventory readiness by comparing promotional item stock in SAP against demand forecast in Snowflake, and alerting replenishment via Microsoft Teams.

naftiko: '0.5'
info:
  label: Black Friday Inventory Readiness Checker
  description: Checks Black Friday inventory readiness by comparing promotional item stock in SAP against demand forecast in Snowflake, and alerting replenishment via Microsoft Teams.
  tags:
  - merchandising
  - seasonal
  - sap
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: bf-readiness
    port: 8080
    tools:
    - name: check-bf-readiness
      description: Check Black Friday inventory readiness for a store.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: The store number.
      - name: promo_event_id
        in: body
        type: string
        description: The promotional event ID.
      steps:
      - name: get-current-stock
        type: call
        call: sap.get-promo-stock
        with:
          store: '{{store_id}}'
          event: '{{promo_event_id}}'
      - name: get-demand-forecast
        type: call
        call: snowflake.execute-query
        with:
          statement: SELECT sku, forecast_units FROM promo_demand_forecast WHERE store_id = '{{store_id}}' AND event_id = '{{promo_event_id}}'
      - name: alert-replenishment
        type: call
        call: msteams.send-message
        with:
          channel_id: replenishment-alerts
          text: 'BF Readiness - Store {{store_id}}: {{get-current-stock.items_in_stock}} of {{get-demand-forecast.data.length}} promo items stocked. Review gaps immediately.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://homedepot-s4.sap.com/sap/opu/odata/sap/ZMM_STOCK_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: promo-stock
      path: /PromoStockSet(Store='{{store}}',Event='{{event}}')
      inputParameters:
      - name: store
        in: path
      - name: event
        in: path
      operations:
      - name: get-promo-stock
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://homedepot.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
Open in Framework → View in Fleet → black-friday-inventory-readiness-checker.yml

Recovers abandoned carts by pulling cart data from the e-commerce platform, enriching with customer profile from Salesforce, and sending recovery emails via MailChimp.

naftiko: '0.5'
info:
  label: Omnichannel Cart Abandonment Recovery
  description: Recovers abandoned carts by pulling cart data from the e-commerce platform, enriching with customer profile from Salesforce, and sending recovery emails via MailChimp.
  tags:
  - e-commerce
  - marketing
  - salesforce
  - mailchimp
capability:
  exposes:
  - type: mcp
    namespace: cart-recovery
    port: 8080
    tools:
    - name: recover-abandoned-cart
      description: Send cart abandonment recovery communication.
      inputParameters:
      - name: cart_id
        in: body
        type: string
        description: The abandoned cart ID.
      steps:
      - name: get-cart-details
        type: call
        call: ecommerce.get-cart
        with:
          id: '{{cart_id}}'
      - name: get-customer-profile
        type: call
        call: salesforce.get-contact
        with:
          email: '{{get-cart-details.customer_email}}'
      - name: send-recovery-email
        type: call
        call: mailchimp.send-transactional
        with:
          template_name: cart_abandonment_recovery
          to_email: '{{get-cart-details.customer_email}}'
          merge_vars:
            first_name: '{{get-customer-profile.FirstName}}'
            cart_items: '{{get-cart-details.items_summary}}'
            cart_total: '{{get-cart-details.total}}'
  consumes:
  - type: http
    namespace: ecommerce
    baseUri: https://api.homedepot.com/ecommerce/v2
    authentication:
      type: bearer
      token: $secrets.ecommerce_token
    resources:
    - name: carts
      path: /carts/{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-cart
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://homedepot.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: contacts
      path: /sobjects/Contact/email/{{email}}
      inputParameters:
      - name: email
        in: path
      operations:
      - name: get-contact
        method: GET
  - type: http
    namespace: mailchimp
    baseUri: https://mandrillapp.com/api/1.0
    authentication:
      type: apiKey
      key: $secrets.mailchimp_transactional_key
    resources:
    - name: transactional
      path: /messages/send-template
      operations:
      - name: send-transactional
        method: POST
Open in Framework → View in Fleet → omnichannel-cart-abandonment-recovery.yml

Searches Splunk for point-of-sale system error logs by store number and time range, returning error codes and frequency counts.

naftiko: '0.5'
info:
  label: Splunk POS Error Log Search
  description: Searches Splunk for point-of-sale system error logs by store number and time range, returning error codes and frequency counts.
  tags:
  - operations
  - pos
  - splunk
capability:
  exposes:
  - type: mcp
    namespace: pos-logs
    port: 8080
    tools:
    - name: search-pos-errors
      description: Search for POS error logs in Splunk by store.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: The store number.
      - name: hours_back
        in: body
        type: integer
        description: Number of hours to search back.
      call: splunk.search
      with:
        search: search index=pos store={{store_id}} level=ERROR earliest=-{{hours_back}}h | stats count by error_code
      outputParameters:
      - name: error_summary
        type: array
        mapping: $.results
  consumes:
  - type: http
    namespace: splunk
    baseUri: https://splunk.homedepot.com:8089/services
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - name: search-jobs
      path: /search/jobs
      operations:
      - name: search
        method: POST
Open in Framework → View in Fleet → splunk-pos-error-log-search.yml

Looks up a Jira issue by key and returns the current status, assignee, sprint, and story points for engineering and store technology teams.

naftiko: '0.5'
info:
  label: Jira Ticket Status
  description: Looks up a Jira issue by key and returns the current status, assignee, sprint, and story points for engineering and store technology teams.
  tags:
  - development
  - project-management
  - jira
capability:
  exposes:
  - type: mcp
    namespace: dev-tracking
    port: 8080
    tools:
    - name: get-jira-issue
      description: Given a Jira issue key, return the issue summary, status, assignee, sprint name, and story points.
      inputParameters:
      - name: issue_key
        in: body
        type: string
        description: The Jira issue key (e.g. STORE-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: sprint
        type: string
        mapping: $.fields.sprint.name
  consumes:
  - type: http
    namespace: jira
    baseUri: https://homedepot.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
Open in Framework → View in Fleet → jira-ticket-status.yml

Provisions IT infrastructure for new store openings by creating Azure AD groups, setting up ServiceNow CMDB entries, and configuring network devices via the network management platform.

naftiko: '0.5'
info:
  label: New Store Opening IT Provisioning
  description: Provisions IT infrastructure for new store openings by creating Azure AD groups, setting up ServiceNow CMDB entries, and configuring network devices via the network management platform.
  tags:
  - it
  - store-opening
  - azure-active-directory
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: store-it-provision
    port: 8080
    tools:
    - name: provision-new-store-it
      description: Provision IT infrastructure for a new store.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: The new store number.
      - name: store_address
        in: body
        type: string
        description: Store physical address.
      - name: district
        in: body
        type: string
        description: District code.
      steps:
      - name: create-ad-groups
        type: call
        call: azure-ad.create-group
        with:
          display_name: Store_{{store_id}}_Associates
          mail_nickname: store{{store_id}}
      - name: create-cmdb-entries
        type: call
        call: servicenow.create-ci
        with:
          name: Store_{{store_id}}_Infrastructure
          location: '{{store_address}}'
          category: store_network
      - name: configure-network
        type: call
        call: network-mgmt.provision-site
        with:
          site_id: store_{{store_id}}
          address: '{{store_address}}'
          template: standard_store
  consumes:
  - type: http
    namespace: azure-ad
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: groups
      path: /groups
      operations:
      - name: create-group
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://homedepot.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: cis
      path: /table/cmdb_ci
      operations:
      - name: create-ci
        method: POST
  - type: http
    namespace: network-mgmt
    baseUri: https://network.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.network_mgmt_token
    resources:
    - name: sites
      path: /sites
      operations:
      - name: provision-site
        method: POST
Open in Framework → View in Fleet → new-store-opening-it-provisioning.yml

Processes customer credit applications by submitting to the credit bureau, creating the account in SAP, and sending approval notification via email.

naftiko: '0.5'
info:
  label: Customer Credit Application Processor
  description: Processes customer credit applications by submitting to the credit bureau, creating the account in SAP, and sending approval notification via email.
  tags:
  - finance
  - credit
  - sap
capability:
  exposes:
  - type: mcp
    namespace: credit-application
    port: 8080
    tools:
    - name: process-credit-application
      description: Process a new customer credit card application.
      inputParameters:
      - name: applicant_name
        in: body
        type: string
        description: Applicant full name.
      - name: applicant_email
        in: body
        type: string
        description: Applicant email.
      - name: ssn_last_four
        in: body
        type: string
        description: Last four digits of SSN.
      steps:
      - name: submit-credit-check
        type: call
        call: credit-bureau.check-credit
        with:
          name: '{{applicant_name}}'
          ssn_last_four: '{{ssn_last_four}}'
      - name: create-account
        type: call
        call: sap.create-customer
        with:
          name: '{{applicant_name}}'
          email: '{{applicant_email}}'
          credit_limit: '{{submit-credit-check.approved_limit}}'
      - name: send-notification
        type: call
        call: sendgrid.send-email
        with:
          to: '{{applicant_email}}'
          template_id: credit_approval
          dynamic_data:
            name: '{{applicant_name}}'
            credit_limit: '{{submit-credit-check.approved_limit}}'
  consumes:
  - type: http
    namespace: credit-bureau
    baseUri: https://creditservices.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.credit_bureau_token
    resources:
    - name: checks
      path: /credit-checks
      operations:
      - name: check-credit
        method: POST
  - type: http
    namespace: sap
    baseUri: https://homedepot-s4.sap.com/sap/opu/odata/sap/ZFI_CUSTOMER_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: customers
      path: /CustomerSet
      operations:
      - name: create-customer
        method: POST
  - type: http
    namespace: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: mail
      path: /mail/send
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → customer-credit-application-processor.yml

Retrieves an associate profile from Workday by employee ID, returning name, job title, home store, department, and hire date.

naftiko: '0.5'
info:
  label: Workday Associate Profile
  description: Retrieves an associate profile from Workday by employee ID, returning name, job title, home store, department, and hire date.
  tags:
  - hr
  - workforce
  - workday
capability:
  exposes:
  - type: mcp
    namespace: hr-profiles
    port: 8080
    tools:
    - name: get-associate
      description: Given a Workday employee ID, return the associate profile including name, title, home store, department, and hire date.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The Workday employee ID for the associate.
      call: workday.get-worker
      with:
        worker_id: '{{employee_id}}'
      outputParameters:
      - name: full_name
        type: string
        mapping: $.worker.descriptor
      - name: job_title
        type: string
        mapping: $.worker.primaryJob.jobTitle
      - name: home_store
        type: string
        mapping: $.worker.primaryJob.location
      - name: department
        type: string
        mapping: $.worker.primaryJob.department
      - name: hire_date
        type: string
        mapping: $.worker.hireDate
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1/homedepot
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
Open in Framework → View in Fleet → workday-associate-profile.yml

Retrieves a pre-built Tableau view as a PNG image for a given dashboard name, used for embedding store performance visuals in Slack and email reports.

naftiko: '0.5'
info:
  label: Tableau Dashboard Snapshot
  description: Retrieves a pre-built Tableau view as a PNG image for a given dashboard name, used for embedding store performance visuals in Slack and email reports.
  tags:
  - analytics
  - reporting
  - tableau
capability:
  exposes:
  - type: mcp
    namespace: analytics-dashboards
    port: 8080
    tools:
    - name: get-dashboard-image
      description: Given a Tableau workbook and view name, return a PNG image URL of the rendered dashboard.
      inputParameters:
      - name: workbook_id
        in: body
        type: string
        description: The Tableau workbook ID.
      - name: view_id
        in: body
        type: string
        description: The Tableau view ID within the workbook.
      call: tableau.get-view-image
      with:
        workbook_id: '{{workbook_id}}'
        view_id: '{{view_id}}'
      outputParameters:
      - name: image_url
        type: string
        mapping: $.view.imageUrl
  consumes:
  - type: http
    namespace: tableau
    baseUri: https://tableau.homedepot.com/api/3.21
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: views
      path: /sites/{{site_id}}/workbooks/{{workbook_id}}/views/{{view_id}}/image
      inputParameters:
      - name: site_id
        in: path
      - name: workbook_id
        in: path
      - name: view_id
        in: path
      operations:
      - name: get-view-image
        method: GET
Open in Framework → View in Fleet → tableau-dashboard-snapshot.yml

Retrieves the warehouse bin location for a product in the distribution center warehouse management system, returning aisle, rack, and bin number.

naftiko: '0.5'
info:
  label: WMS Bin Location Lookup
  description: Retrieves the warehouse bin location for a product in the distribution center warehouse management system, returning aisle, rack, and bin number.
  tags:
  - warehouse
  - fulfillment
  - wms
capability:
  exposes:
  - type: mcp
    namespace: bin-location
    port: 8080
    tools:
    - name: get-bin-location
      description: Look up the bin location for a SKU in a distribution center.
      inputParameters:
      - name: sku
        in: body
        type: string
        description: The product SKU.
      - name: dc_id
        in: body
        type: string
        description: The distribution center ID.
      call: wms.get-location
      with:
        sku: '{{sku}}'
        facility: '{{dc_id}}'
      outputParameters:
      - name: aisle
        type: string
        mapping: $.location.aisle
      - name: rack
        type: string
        mapping: $.location.rack
      - name: bin
        type: string
        mapping: $.location.bin
  consumes:
  - type: http
    namespace: wms
    baseUri: https://wms.homedepot.com/api/v2
    authentication:
      type: bearer
      token: $secrets.wms_token
    resources:
    - name: locations
      path: /facilities/{{facility}}/items/{{sku}}/location
      inputParameters:
      - name: facility
        in: path
      - name: sku
        in: path
      operations:
      - name: get-location
        method: GET
Open in Framework → View in Fleet → wms-bin-location-lookup.yml

Converts home services leads by enriching in Salesforce, checking installer availability, and scheduling the consultation appointment via the field service platform.

naftiko: '0.5'
info:
  label: Home Services Lead to Appointment Pipeline
  description: Converts home services leads by enriching in Salesforce, checking installer availability, and scheduling the consultation appointment via the field service platform.
  tags:
  - home-services
  - sales
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: services-leads
    port: 8080
    tools:
    - name: convert-services-lead
      description: Convert a home services lead into a scheduled appointment.
      inputParameters:
      - name: lead_id
        in: body
        type: string
        description: The Salesforce lead ID.
      - name: service_type
        in: body
        type: string
        description: Service type (roofing, flooring, hvac, etc.).
      - name: zip_code
        in: body
        type: string
        description: Customer zip code.
      steps:
      - name: get-lead
        type: call
        call: salesforce.get-lead
        with:
          id: '{{lead_id}}'
      - name: find-installer
        type: call
        call: field-service.check-availability
        with:
          service_type: '{{service_type}}'
          zip_code: '{{zip_code}}'
      - name: schedule-appointment
        type: call
        call: field-service.create-appointment
        with:
          lead_name: '{{get-lead.Name}}'
          phone: '{{get-lead.Phone}}'
          service_type: '{{service_type}}'
          installer_id: '{{find-installer.installer_id}}'
          preferred_date: '{{find-installer.next_available}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://homedepot.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: leads
      path: /sobjects/Lead/{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-lead
        method: GET
  - type: http
    namespace: field-service
    baseUri: https://fieldservice.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.field_service_token
    resources:
    - name: availability
      path: /installers/availability
      operations:
      - name: check-availability
        method: POST
    - name: appointments
      path: /appointments
      operations:
      - name: create-appointment
        method: POST
Open in Framework → View in Fleet → home-services-lead-to-appointment-pipeline.yml

On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint document folder with store SOPs, and sends a Microsoft Teams welcome message to the new associate and their manager.

naftiko: '0.5'
info:
  label: Store Associate Onboarding
  description: On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint document folder with store SOPs, and sends a Microsoft Teams welcome message to the new associate and their manager.
  tags:
  - hr
  - onboarding
  - workday
  - servicenow
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-onboarding
    port: 8080
    tools:
    - name: trigger-associate-onboarding
      description: Given a Workday employee ID and start date, orchestrate the full associate onboarding sequence across ServiceNow, SharePoint, and Microsoft Teams.
      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 associate start date in YYYY-MM-DD format.
      - name: store_id
        in: body
        type: string
        description: The store number the associate is joining.
      steps:
      - name: get-associate
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{employee_id}}'
      - name: open-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'New associate onboarding: {{get-associate.full_name}} - Store #{{store_id}}'
          category: hr_onboarding
          assigned_group: Store_IT_Onboarding
          description: 'Onboarding for {{get-associate.full_name}} starting {{start_date}} at Store #{{store_id}}. Provision POS access, locker assignment, and safety training enrollment.'
      - name: provision-folder
        type: call
        call: sharepoint.create-folder
        with:
          site_id: store_onboarding_site
          folder_path: Associates/{{get-associate.full_name}}_Store{{store_id}}_{{start_date}}
      - name: send-welcome
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-associate.work_email}}'
          text: 'Welcome to The Home Depot, {{get-associate.first_name}}! Your onboarding ticket is {{open-ticket.number}}. Store #{{store_id}} orientation docs: {{provision-folder.url}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1/homedepot
    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://homedepot.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: drive-items
      path: /{{site_id}}/drive/root:/{{folder_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      operations:
      - name: create-folder
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → store-associate-onboarding.yml

Generates vendor compliance scorecards by pulling on-time delivery metrics from SAP, quality data from Snowflake, and publishing to the vendor portal via Salesforce.

naftiko: '0.5'
info:
  label: Vendor Compliance Scorecard Generator
  description: Generates vendor compliance scorecards by pulling on-time delivery metrics from SAP, quality data from Snowflake, and publishing to the vendor portal via Salesforce.
  tags:
  - procurement
  - vendor
  - sap
  - snowflake
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: vendor-scorecard
    port: 8080
    tools:
    - name: generate-scorecard
      description: Generate a vendor compliance scorecard.
      inputParameters:
      - name: vendor_id
        in: body
        type: string
        description: The vendor ID.
      - name: period
        in: body
        type: string
        description: Reporting period in YYYY-Q format.
      steps:
      - name: get-delivery-metrics
        type: call
        call: sap.get-vendor-otif
        with:
          vendor: '{{vendor_id}}'
          period: '{{period}}'
      - name: get-quality-metrics
        type: call
        call: snowflake.execute-query
        with:
          statement: SELECT defect_rate, return_rate, avg_quality_score FROM vendor_quality WHERE vendor_id = '{{vendor_id}}' AND period = '{{period}}'
      - name: publish-scorecard
        type: call
        call: salesforce.update-account
        with:
          vendor_id: '{{vendor_id}}'
          otif_score: '{{get-delivery-metrics.otif_percentage}}'
          quality_score: '{{get-quality-metrics.data[0].avg_quality_score}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://homedepot-s4.sap.com/sap/opu/odata/sap/ZMM_VENDOR_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: otif
      path: /VendorOTIFSet(Vendor='{{vendor}}',Period='{{period}}')
      inputParameters:
      - name: vendor
        in: path
      - name: period
        in: path
      operations:
      - name: get-vendor-otif
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://homedepot.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://homedepot.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /sobjects/Vendor_Account__c/{{vendor_id}}
      inputParameters:
      - name: vendor_id
        in: path
      operations:
      - name: update-account
        method: PATCH
Open in Framework → View in Fleet → vendor-compliance-scorecard-generator.yml

Pulls page view metrics and bounce rate from Google Analytics for a given product page URL over a specified date range.

naftiko: '0.5'
info:
  label: Google Analytics Page Performance
  description: Pulls page view metrics and bounce rate from Google Analytics for a given product page URL over a specified date range.
  tags:
  - marketing
  - analytics
  - google-analytics
capability:
  exposes:
  - type: mcp
    namespace: web-analytics
    port: 8080
    tools:
    - name: get-page-metrics
      description: Given a page path and date range, return page views, unique visitors, bounce rate, and average session duration from Google Analytics.
      inputParameters:
      - name: page_path
        in: body
        type: string
        description: The URL path of the product page (e.g. /p/product-name/123456).
      - 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.run-report
      with:
        page_path: '{{page_path}}'
        start_date: '{{start_date}}'
        end_date: '{{end_date}}'
      outputParameters:
      - name: page_views
        type: number
        mapping: $.rows[0].metricValues[0].value
      - name: bounce_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/{{property_id}}:runReport
      inputParameters:
      - name: property_id
        in: path
      operations:
      - name: run-report
        method: POST
Open in Framework → View in Fleet → google-analytics-page-performance.yml

Queries Oracle Retail inventory for a specific product at a given store location, returning on-hand quantity, on-order quantity, and next expected delivery date.

naftiko: '0.5'
info:
  label: Store Inventory Check
  description: Queries Oracle Retail inventory for a specific product at a given store location, returning on-hand quantity, on-order quantity, and next expected delivery date.
  tags:
  - inventory
  - store-ops
  - oracle-cloud
capability:
  exposes:
  - type: mcp
    namespace: store-inventory
    port: 8080
    tools:
    - name: check-store-stock
      description: Given a store number and SKU, return on-hand inventory, on-order quantity, and next delivery date.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: The Home Depot store number.
      - name: sku
        in: body
        type: string
        description: The product SKU to check.
      call: oracle-retail.get-stock
      with:
        store_id: '{{store_id}}'
        sku: '{{sku}}'
      outputParameters:
      - name: on_hand
        type: number
        mapping: $.inventory.onHandQty
      - name: on_order
        type: number
        mapping: $.inventory.onOrderQty
      - name: next_delivery
        type: string
        mapping: $.inventory.nextDeliveryDate
  consumes:
  - type: http
    namespace: oracle-retail
    baseUri: https://homedepot.retail.oracle.com/rgbu-rms-rse/api/v1
    authentication:
      type: bearer
      token: $secrets.oracle_retail_token
    resources:
    - name: stock
      path: /stores/{{store_id}}/items/{{sku}}/stock
      inputParameters:
      - name: store_id
        in: path
      - name: sku
        in: path
      operations:
      - name: get-stock
        method: GET
Open in Framework → View in Fleet → store-inventory-check.yml

Processes paint color match requests by querying the formula database, creating a mix order in the store system, and notifying the paint desk associate via Slack.

naftiko: '0.5'
info:
  label: Paint Color Match Order Pipeline
  description: Processes paint color match requests by querying the formula database, creating a mix order in the store system, and notifying the paint desk associate via Slack.
  tags:
  - paint
  - store-operations
  - slack
capability:
  exposes:
  - type: mcp
    namespace: paint-orders
    port: 8080
    tools:
    - name: process-color-match
      description: Process a paint color match and create a mix order.
      inputParameters:
      - name: color_code
        in: body
        type: string
        description: The color code from spectrophotometer.
      - name: store_id
        in: body
        type: string
        description: The store number.
      - name: base_product_sku
        in: body
        type: string
        description: The paint base SKU.
      steps:
      - name: get-formula
        type: call
        call: paint-system.match-color
        with:
          color_code: '{{color_code}}'
          base_sku: '{{base_product_sku}}'
      - name: create-mix-order
        type: call
        call: paint-system.create-order
        with:
          store_id: '{{store_id}}'
          formula_id: '{{get-formula.formula_id}}'
          base_sku: '{{base_product_sku}}'
      - name: notify-paint-desk
        type: call
        call: slack.post-message
        with:
          channel: store-{{store_id}}-paint
          text: 'Paint mix order ready: {{get-formula.color_name}} ({{color_code}}). Order #{{create-mix-order.order_number}}. Base: {{base_product_sku}}.'
  consumes:
  - type: http
    namespace: paint-system
    baseUri: https://paint.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.paint_system_token
    resources:
    - name: colors
      path: /colors/match
      operations:
      - name: match-color
        method: POST
    - name: orders
      path: /mix-orders
      operations:
      - name: create-order
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → paint-color-match-order-pipeline.yml

Coordinates emergency store closures by updating the store locator via Google Maps API, notifying associates via Microsoft Teams, and creating a ServiceNow major incident.

naftiko: '0.5'
info:
  label: Store Emergency Closure Coordinator
  description: Coordinates emergency store closures by updating the store locator via Google Maps API, notifying associates via Microsoft Teams, and creating a ServiceNow major incident.
  tags:
  - operations
  - emergency
  - google-maps
  - microsoft-teams
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: emergency-closure
    port: 8080
    tools:
    - name: coordinate-closure
      description: Coordinate an emergency store closure.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: The store number.
      - name: reason
        in: body
        type: string
        description: Closure reason.
      - name: expected_reopen
        in: body
        type: string
        description: Expected reopen date.
      steps:
      - name: update-store-hours
        type: call
        call: google-maps.update-hours
        with:
          location_id: store_{{store_id}}
          status: temporarily_closed
          message: '{{reason}}. Expected reopen: {{expected_reopen}}.'
      - name: notify-associates
        type: call
        call: msteams.send-message
        with:
          channel_id: store-{{store_id}}-all
          text: 'URGENT: Store {{store_id}} emergency closure effective immediately. Reason: {{reason}}. Expected reopen: {{expected_reopen}}.'
      - name: create-major-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Emergency closure: Store {{store_id}}'
          urgency: '1'
          impact: '1'
          description: 'Reason: {{reason}}. Expected reopen: {{expected_reopen}}.'
  consumes:
  - type: http
    namespace: google-maps
    baseUri: https://mybusiness.googleapis.com/v4
    authentication:
      type: bearer
      token: $secrets.google_mybusiness_token
    resources:
    - name: locations
      path: /accounts/homedepot/locations/{{location_id}}
      inputParameters:
      - name: location_id
        in: path
      operations:
      - name: update-hours
        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/{{channel_id}}/channels/general/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://homedepot.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → store-emergency-closure-coordinator.yml

When a customer requests a kitchen design consultation, creates the lead in HubSpot, checks designer availability in the workforce management system, books the appointment in ServiceNow, and sends a confirmation via MailChimp with preparation tips.

naftiko: '0.5'
info:
  label: Kitchen Design Consultation Scheduler
  description: When a customer requests a kitchen design consultation, creates the lead in HubSpot, checks designer availability in the workforce management system, books the appointment in ServiceNow, and sends a confirmation via MailChimp with preparation tips.
  tags:
  - sales
  - kitchen-design
  - hubspot
  - workforce-management
  - servicenow
  - mailchimp
capability:
  exposes:
  - type: mcp
    namespace: kitchen-design
    port: 8080
    tools:
    - name: schedule-kitchen-consultation
      description: Given customer details and preferred store, create the lead, find an available designer, book the appointment, and confirm.
      inputParameters:
      - name: customer_name
        in: body
        type: string
        description: The customer full name.
      - name: customer_email
        in: body
        type: string
        description: The customer email.
      - name: store_id
        in: body
        type: string
        description: The preferred store for the consultation.
      - name: preferred_date
        in: body
        type: string
        description: Preferred consultation date in YYYY-MM-DD format.
      - name: project_scope
        in: body
        type: string
        description: Description of the kitchen project scope.
      steps:
      - name: create-lead
        type: call
        call: hubspot.create-contact
        with:
          name: '{{customer_name}}'
          email: '{{customer_email}}'
          lead_source: Kitchen_Design
          notes: '{{project_scope}}'
      - name: find-designer
        type: call
        call: wfm.get-available-specialist
        with:
          store_id: '{{store_id}}'
          specialty: kitchen_design
          date: '{{preferred_date}}'
      - name: book-appointment
        type: call
        call: servicenow.create-work-order
        with:
          short_description: 'Kitchen design consultation: {{customer_name}}'
          assigned_to: '{{find-designer.designer_id}}'
          scheduled_date: '{{find-designer.available_slot}}'
          description: 'Customer: {{customer_name}}. Project: {{project_scope}}. Store #{{store_id}}.'
      - name: send-confirmation
        type: call
        call: mailchimp.send-transactional
        with:
          template_name: kitchen_design_confirm
          to_email: '{{customer_email}}'
          merge_vars:
            customer_name: '{{customer_name}}'
            designer_name: '{{find-designer.designer_name}}'
            appointment_date: '{{find-designer.available_slot}}'
            store_id: '{{store_id}}'
  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: wfm
    baseUri: https://wfm.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.wfm_token
    resources:
    - name: specialists
      path: /stores/{{store_id}}/specialists/availability
      inputParameters:
      - name: store_id
        in: path
      operations:
      - name: get-available-specialist
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://homedepot.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: mailchimp
    baseUri: https://mandrillapp.com/api/1.0
    authentication:
      type: apiKey
      key: $secrets.mailchimp_transactional_key
    resources:
    - name: transactional
      path: /messages/send-template
      operations:
      - name: send-transactional
        method: POST
Open in Framework → View in Fleet → kitchen-design-consultation-scheduler.yml

Processes digital coupon redemptions by validating the coupon, applying the discount in the POS system, and recording the redemption in Snowflake for analytics.

naftiko: '0.5'
info:
  label: Digital Coupon Redemption Orchestrator
  description: Processes digital coupon redemptions by validating the coupon, applying the discount in the POS system, and recording the redemption in Snowflake for analytics.
  tags:
  - marketing
  - promotions
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: coupon-redemption
    port: 8080
    tools:
    - name: redeem-digital-coupon
      description: Process a digital coupon redemption.
      inputParameters:
      - name: coupon_code
        in: body
        type: string
        description: The digital coupon code.
      - name: transaction_id
        in: body
        type: string
        description: The POS transaction ID.
      - name: store_id
        in: body
        type: string
        description: The store number.
      steps:
      - name: validate-coupon
        type: call
        call: promotions.validate-coupon
        with:
          code: '{{coupon_code}}'
      - name: apply-discount
        type: call
        call: pos-system.apply-discount
        with:
          transaction_id: '{{transaction_id}}'
          discount_amount: '{{validate-coupon.discount_value}}'
          coupon_code: '{{coupon_code}}'
      - name: record-redemption
        type: call
        call: snowflake.execute-query
        with:
          statement: INSERT INTO coupon_redemptions (coupon_code, store_id, transaction_id, discount_amount, redeemed_at) VALUES ('{{coupon_code}}', '{{store_id}}', '{{transaction_id}}', {{validate-coupon.discount_value}}, CURRENT_TIMESTAMP())
  consumes:
  - type: http
    namespace: promotions
    baseUri: https://promotions.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.promotions_token
    resources:
    - name: coupons
      path: /coupons/validate
      operations:
      - name: validate-coupon
        method: POST
  - type: http
    namespace: pos-system
    baseUri: https://pos.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.pos_token
    resources:
    - name: discounts
      path: /transactions/{{transaction_id}}/discounts
      inputParameters:
      - name: transaction_id
        in: path
      operations:
      - name: apply-discount
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://homedepot.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: execute-query
        method: POST
Open in Framework → View in Fleet → digital-coupon-redemption-orchestrator.yml

When a new Pro Xtra lead comes in through HubSpot, enriches the contact with ZoomInfo firmographic data, creates a Salesforce opportunity, and alerts the assigned sales rep in Microsoft Teams.

naftiko: '0.5'
info:
  label: Pro Customer Lead Qualification
  description: When a new Pro Xtra lead comes in through HubSpot, enriches the contact with ZoomInfo firmographic data, creates a Salesforce opportunity, and alerts the assigned sales rep in Microsoft Teams.
  tags:
  - sales
  - lead-management
  - hubspot
  - zoominfo
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: pro-sales
    port: 8080
    tools:
    - name: qualify-pro-lead
      description: Given a HubSpot contact ID, enrich with ZoomInfo data, create a Salesforce opportunity, and notify the sales rep.
      inputParameters:
      - name: hubspot_contact_id
        in: body
        type: string
        description: The HubSpot contact ID for the new Pro lead.
      - name: estimated_annual_spend
        in: body
        type: number
        description: The estimated annual spend for the Pro customer.
      steps:
      - name: get-contact
        type: call
        call: hubspot.get-contact
        with:
          contact_id: '{{hubspot_contact_id}}'
      - name: enrich-company
        type: call
        call: zoominfo.enrich-company
        with:
          company_name: '{{get-contact.company}}'
          domain: '{{get-contact.website}}'
      - name: create-opportunity
        type: call
        call: salesforce.create-opportunity
        with:
          name: Pro Xtra - {{get-contact.company}}
          amount: '{{estimated_annual_spend}}'
          stage: Qualification
          account_name: '{{get-contact.company}}'
          employees: '{{enrich-company.employee_count}}'
          industry: '{{enrich-company.industry}}'
      - name: notify-rep
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-contact.owner_email}}'
          text: 'New Pro lead qualified: {{get-contact.company}} ({{enrich-company.industry}}, {{enrich-company.employee_count}} employees). Est. annual spend: ${{estimated_annual_spend}}. Opportunity: {{create-opportunity.id}}'
  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: zoominfo
    baseUri: https://api.zoominfo.com
    authentication:
      type: bearer
      token: $secrets.zoominfo_token
    resources:
    - name: company-enrich
      path: /enrich/company
      operations:
      - name: enrich-company
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://homedepot.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
Open in Framework → View in Fleet → pro-customer-lead-qualification.yml

Retrieves campaign performance metrics from Google Ads including impressions, clicks, conversions, and cost per acquisition.

naftiko: '0.5'
info:
  label: Google Ads Campaign Performance Report
  description: Retrieves campaign performance metrics from Google Ads including impressions, clicks, conversions, and cost per acquisition.
  tags:
  - marketing
  - advertising
  - google-ads
capability:
  exposes:
  - type: mcp
    namespace: google-ads
    port: 8080
    tools:
    - name: get-campaign-performance
      description: Fetch Google Ads campaign performance metrics.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: The Google Ads campaign ID.
      - name: date_range
        in: body
        type: string
        description: Date range in YYYY-MM-DD_YYYY-MM-DD format.
      call: google-ads.get-report
      with:
        campaign: '{{campaign_id}}'
        dates: '{{date_range}}'
      outputParameters:
      - name: impressions
        type: integer
        mapping: $.metrics.impressions
      - name: clicks
        type: integer
        mapping: $.metrics.clicks
      - name: conversions
        type: number
        mapping: $.metrics.conversions
      - name: cpa
        type: number
        mapping: $.metrics.costPerConversion
  consumes:
  - type: http
    namespace: google-ads
    baseUri: https://googleads.googleapis.com/v15
    authentication:
      type: bearer
      token: $secrets.google_ads_token
    resources:
    - name: reports
      path: /customers/homedepot/campaigns/{{campaign}}/metrics
      inputParameters:
      - name: campaign
        in: path
      operations:
      - name: get-report
        method: GET
Open in Framework → View in Fleet → google-ads-campaign-performance-report.yml

Retrieves product reviews and ratings from Azure Cosmos DB by SKU, returning average rating, review count, and most recent review text.

naftiko: '0.5'
info:
  label: Azure Cosmos DB Product Review Lookup
  description: Retrieves product reviews and ratings from Azure Cosmos DB by SKU, returning average rating, review count, and most recent review text.
  tags:
  - e-commerce
  - reviews
  - microsoft-azure
capability:
  exposes:
  - type: mcp
    namespace: product-reviews
    port: 8080
    tools:
    - name: get-reviews
      description: Look up product reviews by SKU.
      inputParameters:
      - name: sku
        in: body
        type: string
        description: The product SKU.
      call: cosmos-db.query-reviews
      with:
        query: SELECT * FROM reviews r WHERE r.sku = '{{sku}}' ORDER BY r.created_at DESC
      outputParameters:
      - name: avg_rating
        type: number
        mapping: $.Documents[0].avg_rating
      - name: review_count
        type: integer
        mapping: $.Documents[0].count
  consumes:
  - type: http
    namespace: cosmos-db
    baseUri: https://homedepot-reviews.documents.azure.com
    authentication:
      type: apiKey
      key: $secrets.cosmos_db_key
    resources:
    - name: documents
      path: /dbs/reviews/colls/product_reviews/docs
      operations:
      - name: query-reviews
        method: POST
Open in Framework → View in Fleet → azure-cosmos-db-product-review-lookup.yml

Initiates loss prevention investigations by pulling transaction anomalies from Snowflake, creating a case in ServiceNow, and alerting the LP team via Slack.

naftiko: '0.5'
info:
  label: Loss Prevention Investigation Pipeline
  description: Initiates loss prevention investigations by pulling transaction anomalies from Snowflake, creating a case in ServiceNow, and alerting the LP team via Slack.
  tags:
  - loss-prevention
  - security
  - snowflake
  - servicenow
  - slack
capability:
  exposes:
  - type: mcp
    namespace: loss-prevention
    port: 8080
    tools:
    - name: initiate-investigation
      description: Initiate a loss prevention investigation.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: The store number.
      - name: anomaly_type
        in: body
        type: string
        description: Type of anomaly detected.
      - name: transaction_ids
        in: body
        type: string
        description: Comma-separated suspicious transaction IDs.
      steps:
      - name: get-transaction-details
        type: call
        call: snowflake.execute-query
        with:
          statement: SELECT transaction_id, amount, cashier_id, timestamp FROM transactions WHERE transaction_id IN ('{{transaction_ids}}') AND store_id = '{{store_id}}'
      - name: create-lp-case
        type: call
        call: servicenow.create-case
        with:
          short_description: 'LP Investigation: Store {{store_id}} - {{anomaly_type}}'
          category: loss_prevention
          description: 'Anomaly: {{anomaly_type}}. Transactions: {{transaction_ids}}.'
      - name: alert-lp-team
        type: call
        call: slack.post-message
        with:
          channel: loss-prevention-alerts
          text: 'LP Investigation opened for Store {{store_id}}: {{anomaly_type}}. Case: {{create-lp-case.number}}. Transactions flagged: {{transaction_ids}}.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://homedepot.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://homedepot.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: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → loss-prevention-investigation-pipeline.yml

Retrieves IT asset details for a store location from ServiceNow CMDB, returning device type, serial number, and warranty status.

naftiko: '0.5'
info:
  label: ServiceNow Store IT Asset Lookup
  description: Retrieves IT asset details for a store location from ServiceNow CMDB, returning device type, serial number, and warranty status.
  tags:
  - it
  - asset-management
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: store-assets
    port: 8080
    tools:
    - name: get-store-asset
      description: Look up IT asset details at a store location.
      inputParameters:
      - name: asset_tag
        in: body
        type: string
        description: The asset tag number.
      call: servicenow.get-asset
      with:
        asset_tag: '{{asset_tag}}'
      outputParameters:
      - name: device_type
        type: string
        mapping: $.result.model_category.display_value
      - name: serial_number
        type: string
        mapping: $.result.serial_number
      - name: warranty_expiry
        type: string
        mapping: $.result.warranty_expiration
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://homedepot.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
Open in Framework → View in Fleet → servicenow-store-it-asset-lookup.yml

When an inventory discrepancy is detected, pulls the variance report from Oracle Retail, cross-references with POS transaction data in Teradata, creates a ServiceNow loss prevention case, and notifies the asset protection team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Shrinkage Alert Investigation
  description: When an inventory discrepancy is detected, pulls the variance report from Oracle Retail, cross-references with POS transaction data in Teradata, creates a ServiceNow loss prevention case, and notifies the asset protection team via Microsoft Teams.
  tags:
  - loss-prevention
  - inventory
  - oracle-cloud
  - teradata
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: shrinkage-alert
    port: 8080
    tools:
    - name: investigate-shrinkage
      description: Given a store ID, SKU, and variance amount, pull transaction data, create a loss prevention case, and notify asset protection.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: The store number.
      - name: sku
        in: body
        type: string
        description: The SKU with the inventory discrepancy.
      - name: variance_qty
        in: body
        type: number
        description: The number of units in the variance (negative = shrinkage).
      steps:
      - name: get-inventory-detail
        type: call
        call: oracle-retail.get-stock
        with:
          store_id: '{{store_id}}'
          sku: '{{sku}}'
      - name: get-transactions
        type: call
        call: teradata.run-query
        with:
          query: SELECT txn_id, txn_type, qty, associate_id, txn_timestamp FROM pos_transactions WHERE store_id='{{store_id}}' AND sku='{{sku}}' AND txn_date >= CURRENT_DATE - INTERVAL '7' DAY ORDER BY txn_timestamp DESC
      - name: create-lp-case
        type: call
        call: servicenow.create-case
        with:
          short_description: 'Shrinkage alert: {{sku}} at Store #{{store_id}} ({{variance_qty}} units)'
          category: loss_prevention
          priority: '2'
          assigned_group: Asset_Protection
          description: 'Inventory variance of {{variance_qty}} units for SKU {{sku}} at Store #{{store_id}}. System on-hand: {{get-inventory-detail.on_hand}}. Recent transactions: {{get-transactions.row_count}} in last 7 days.'
      - name: notify-ap
        type: call
        call: msteams.post-channel
        with:
          channel_id: asset-protection-alerts
          text: 'SHRINKAGE ALERT: SKU {{sku}} at Store #{{store_id}}. Variance: {{variance_qty}} units. Case: {{create-lp-case.number}}. {{get-transactions.row_count}} POS transactions in last 7 days flagged for review.'
  consumes:
  - type: http
    namespace: oracle-retail
    baseUri: https://homedepot.retail.oracle.com/rgbu-rms-rse/api/v1
    authentication:
      type: bearer
      token: $secrets.oracle_retail_token
    resources:
    - name: stock
      path: /stores/{{store_id}}/items/{{sku}}/stock
      inputParameters:
      - name: store_id
        in: path
      - name: sku
        in: path
      operations:
      - name: get-stock
        method: GET
  - type: http
    namespace: teradata
    baseUri: https://teradata.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.teradata_token
    resources:
    - name: queries
      path: /queries
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://homedepot.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: cases
      path: /table/sn_customerservice_case
      operations:
      - name: create-case
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel
        method: POST
Open in Framework → View in Fleet → shrinkage-alert-investigation.yml

Aggregates campaign performance from Facebook (Meta) Ads and Instagram, pulls conversion data from Google Analytics, and posts a weekly performance summary to the marketing Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Social Media Campaign Performance
  description: Aggregates campaign performance from Facebook (Meta) Ads and Instagram, pulls conversion data from Google Analytics, and posts a weekly performance summary to the marketing Microsoft Teams channel.
  tags:
  - marketing
  - social-media
  - meta
  - google-analytics
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: social-performance
    port: 8080
    tools:
    - name: compile-social-report
      description: Given a campaign ID and date range, aggregate social metrics and post the performance summary.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: The Meta Ads campaign ID.
      - 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-meta-metrics
        type: call
        call: meta-ads.get-insights
        with:
          campaign_id: '{{campaign_id}}'
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
      - name: get-conversions
        type: call
        call: ga.run-report
        with:
          campaign_source: facebook
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
      - name: post-summary
        type: call
        call: msteams.post-channel
        with:
          channel_id: marketing-performance
          text: 'Social Campaign Report ({{start_date}} to {{end_date}}): Reach: {{get-meta-metrics.reach}}. Impressions: {{get-meta-metrics.impressions}}. Clicks: {{get-meta-metrics.clicks}}. Spend: ${{get-meta-metrics.spend}}. Conversions: {{get-conversions.goal_completions}}. ROAS: {{get-conversions.revenue_per_spend}}.'
  consumes:
  - type: http
    namespace: meta-ads
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.meta_ads_token
    resources:
    - name: insights
      path: /{{campaign_id}}/insights
      inputParameters:
      - name: campaign_id
        in: path
      operations:
      - name: get-insights
        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
Open in Framework → View in Fleet → social-media-campaign-performance.yml

Retrieves the current planogram from SharePoint, compares against actual shelf data from the store IoT system, logs discrepancies in Jira, and notifies the department manager via Microsoft Teams.

naftiko: '0.5'
info:
  label: Store Planogram Compliance Audit
  description: Retrieves the current planogram from SharePoint, compares against actual shelf data from the store IoT system, logs discrepancies in Jira, and notifies the department manager via Microsoft Teams.
  tags:
  - store-ops
  - planogram
  - sharepoint
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: planogram-audit
    port: 8080
    tools:
    - name: audit-planogram
      description: Given a store ID and department, compare the planogram against shelf reality and report discrepancies.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: The store number to audit.
      - name: department
        in: body
        type: string
        description: The department to audit (e.g. PAINT, ELECTRICAL, PLUMBING).
      - name: manager_email
        in: body
        type: string
        description: The department manager email for notifications.
      steps:
      - name: get-planogram
        type: call
        call: sharepoint.get-file
        with:
          site_id: store_ops_site
          file_path: Planograms/Store{{store_id}}/{{department}}_current.json
      - name: get-shelf-data
        type: call
        call: store-iot.get-shelf-scan
        with:
          store_id: '{{store_id}}'
          department: '{{department}}'
      - name: log-discrepancy
        type: call
        call: jira.create-issue
        with:
          project: STOREOPS
          issue_type: Task
          summary: 'Planogram discrepancy: Store #{{store_id}} - {{department}}'
          description: 'Planogram audit found discrepancies in {{department}} at Store #{{store_id}}. Expected SKU positions: {{get-planogram.sku_count}}. Actual matches: {{get-shelf-data.match_count}}.'
      - name: notify-manager
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{manager_email}}'
          text: 'Planogram audit completed for {{department}} at Store #{{store_id}}. Discrepancies found and logged as {{log-discrepancy.key}}. Please review and correct shelf placement.'
  consumes:
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: files
      path: /{{site_id}}/drive/root:/{{file_path}}:/content
      inputParameters:
      - name: site_id
        in: path
      - name: file_path
        in: path
      operations:
      - name: get-file
        method: GET
  - type: http
    namespace: store-iot
    baseUri: https://iot.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.store_iot_token
    resources:
    - name: shelf-scans
      path: /stores/{{store_id}}/departments/{{department}}/shelf-scan
      inputParameters:
      - name: store_id
        in: path
      - name: department
        in: path
      operations:
      - name: get-shelf-scan
        method: GET
  - type: http
    namespace: jira
    baseUri: https://homedepot.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → store-planogram-compliance-audit.yml

Tracks store associate training completion by pulling records from Cornerstone LMS, comparing against required courses in Workday, and sending gap reports via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Associate Training Completion Tracker
  description: Tracks store associate training completion by pulling records from Cornerstone LMS, comparing against required courses in Workday, and sending gap reports via Microsoft Outlook.
  tags:
  - hr
  - training
  - workday
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: training-tracker
    port: 8080
    tools:
    - name: track-training-completion
      description: Track and report training completion gaps for a store.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: The store number.
      steps:
      - name: get-completions
        type: call
        call: cornerstone.get-store-completions
        with:
          location: store_{{store_id}}
      - name: get-requirements
        type: call
        call: workday.get-training-requirements
        with:
          location: store_{{store_id}}
      - name: send-gap-report
        type: call
        call: outlook.send-email
        with:
          to: storemanager_{{store_id}}@homedepot.com
          subject: 'Training Completion Report: Store {{store_id}}'
          body: 'Completed: {{get-completions.total_completed}}. Required: {{get-requirements.total_required}}. Gap: {{get-requirements.total_required}} - {{get-completions.total_completed}} courses.'
  consumes:
  - type: http
    namespace: cornerstone
    baseUri: https://homedepot.csod.com/services/api/x/v2
    authentication:
      type: bearer
      token: $secrets.cornerstone_token
    resources:
    - name: completions
      path: /reports/completions?location={{location}}
      inputParameters:
      - name: location
        in: query
      operations:
      - name: get-store-completions
        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: training
      path: /training/requirements?location={{location}}
      inputParameters:
      - name: location
        in: query
      operations:
      - name: get-training-requirements
        method: GET
  - type: http
    namespace: outlook
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: mail
      path: /me/sendMail
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → associate-training-completion-tracker.yml

When a store associate reports an equipment issue, creates a ServiceNow work order, checks the equipment warranty in SAP, notifies the facilities team via Microsoft Teams, and logs the event in the asset management system.

naftiko: '0.5'
info:
  label: Store Equipment Maintenance Request
  description: When a store associate reports an equipment issue, creates a ServiceNow work order, checks the equipment warranty in SAP, notifies the facilities team via Microsoft Teams, and logs the event in the asset management system.
  tags:
  - store-ops
  - maintenance
  - servicenow
  - sap
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: equipment-maintenance
    port: 8080
    tools:
    - name: submit-maintenance-request
      description: Given store ID, equipment details, and issue description, create a work order, check warranty, and notify facilities.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: The store number.
      - name: equipment_id
        in: body
        type: string
        description: The asset ID of the equipment.
      - name: issue_description
        in: body
        type: string
        description: Description of the equipment issue.
      - name: priority
        in: body
        type: string
        description: Request priority (LOW, MEDIUM, HIGH, CRITICAL).
      steps:
      - name: check-warranty
        type: call
        call: sap.get-asset
        with:
          asset_id: '{{equipment_id}}'
      - name: create-work-order
        type: call
        call: servicenow.create-work-order
        with:
          short_description: 'Equipment repair: {{equipment_id}} at Store #{{store_id}}'
          priority: '{{priority}}'
          assigned_group: Facilities_Maintenance
          description: '{{issue_description}} Asset: {{equipment_id}}. Warranty status: {{check-warranty.warranty_status}}. Warranty expiry: {{check-warranty.warranty_end_date}}.'
      - name: notify-facilities
        type: call
        call: msteams.post-channel
        with:
          channel_id: facilities-maintenance
          text: 'Maintenance request: Store #{{store_id}}, Equipment {{equipment_id}}. Priority: {{priority}}. Warranty: {{check-warranty.warranty_status}}. Work order: {{create-work-order.number}}. Issue: {{issue_description}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://homedepot-s4.sap.com/sap/opu/odata/sap/API_FIXEDASSET_0002
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: assets
      path: /A_FixedAsset('{{asset_id}}')
      inputParameters:
      - name: asset_id
        in: path
      operations:
      - name: get-asset
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://homedepot.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: 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
Open in Framework → View in Fleet → store-equipment-maintenance-request.yml

Collects energy consumption data from the building management system, compares against targets in Snowflake, and publishes the report to SharePoint.

naftiko: '0.5'
info:
  label: Store Energy Management Reporter
  description: Collects energy consumption data from the building management system, compares against targets in Snowflake, and publishes the report to SharePoint.
  tags:
  - sustainability
  - energy
  - snowflake
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: energy-management
    port: 8080
    tools:
    - name: report-energy-usage
      description: Generate energy management report for a store.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: The store number.
      - name: month
        in: body
        type: string
        description: Reporting month in YYYY-MM format.
      steps:
      - name: get-consumption
        type: call
        call: bms.get-energy-data
        with:
          facility: store_{{store_id}}
          period: '{{month}}'
      - name: get-target
        type: call
        call: snowflake.execute-query
        with:
          statement: SELECT energy_target_kwh FROM store_energy_targets WHERE store_id = '{{store_id}}' AND month = '{{month}}'
      - name: publish-report
        type: call
        call: sharepoint.upload-document
        with:
          site_id: sustainability
          folder_path: EnergyReports/{{month}}
          file_name: store_{{store_id}}_energy.json
  consumes:
  - type: http
    namespace: bms
    baseUri: https://bms.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.bms_token
    resources:
    - name: energy
      path: /facilities/{{facility}}/energy?period={{period}}
      inputParameters:
      - name: facility
        in: path
      - name: period
        in: query
      operations:
      - name: get-energy-data
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://homedepot.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: 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
Open in Framework → View in Fleet → store-energy-management-reporter.yml

Processes appliance warranty claims by verifying purchase in Oracle Retail, creating a ServiceNow case, and scheduling a technician visit via the field service platform.

naftiko: '0.5'
info:
  label: Appliance Warranty Claim Processor
  description: Processes appliance warranty claims by verifying purchase in Oracle Retail, creating a ServiceNow case, and scheduling a technician visit via the field service platform.
  tags:
  - customer-service
  - warranty
  - oracle-cloud
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: warranty-claims
    port: 8080
    tools:
    - name: process-warranty-claim
      description: Process an appliance warranty claim.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The original purchase order ID.
      - name: sku
        in: body
        type: string
        description: The appliance SKU.
      - name: issue_description
        in: body
        type: string
        description: Description of the issue.
      - name: customer_address
        in: body
        type: string
        description: Customer service address.
      steps:
      - name: verify-purchase
        type: call
        call: oracle-retail.get-order
        with:
          order_id: '{{order_id}}'
      - name: create-service-case
        type: call
        call: servicenow.create-case
        with:
          short_description: 'Warranty claim: {{sku}} - Order {{order_id}}'
          description: '{{issue_description}}'
          category: warranty_claim
          purchase_date: '{{verify-purchase.order_date}}'
      - name: schedule-technician
        type: call
        call: field-service.create-work-order
        with:
          case_ref: '{{create-service-case.number}}'
          sku: '{{sku}}'
          address: '{{customer_address}}'
          issue: '{{issue_description}}'
  consumes:
  - type: http
    namespace: oracle-retail
    baseUri: https://homedepot.retail.oracle.com/rgbu-rms-rse/api/v1
    authentication:
      type: bearer
      token: $secrets.oracle_retail_token
    resources:
    - name: orders
      path: /orders/{{order_id}}
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-order
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://homedepot.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: field-service
    baseUri: https://fieldservice.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.field_service_token
    resources:
    - name: work-orders
      path: /work-orders
      operations:
      - name: create-work-order
        method: POST
Open in Framework → View in Fleet → appliance-warranty-claim-processor.yml

Generates project quotes for Pro customers by pulling product pricing from SAP, calculating volume discounts, and creating the quote in Salesforce.

naftiko: '0.5'
info:
  label: Pro Customer Project Quote Generator
  description: Generates project quotes for Pro customers by pulling product pricing from SAP, calculating volume discounts, and creating the quote in Salesforce.
  tags:
  - pro-services
  - sales
  - sap
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: pro-quotes
    port: 8080
    tools:
    - name: generate-project-quote
      description: Generate a project quote for a Pro customer.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The Salesforce Pro account ID.
      - name: sku_list
        in: body
        type: string
        description: Comma-separated SKUs with quantities.
      - name: project_name
        in: body
        type: string
        description: The project name.
      steps:
      - name: get-pricing
        type: call
        call: sap.get-pricing
        with:
          items: '{{sku_list}}'
          customer_group: pro
      - name: get-customer-tier
        type: call
        call: salesforce.get-account
        with:
          id: '{{customer_id}}'
      - name: create-quote
        type: call
        call: salesforce.create-quote
        with:
          account_id: '{{customer_id}}'
          name: '{{project_name}}'
          line_items: '{{get-pricing.priced_items}}'
          discount_tier: '{{get-customer-tier.Pro_Tier__c}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://homedepot-s4.sap.com/sap/opu/odata/sap/ZSD_PRICING_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: pricing
      path: /PricingSimulation
      operations:
      - name: get-pricing
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://homedepot.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /sobjects/Account/{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-account
        method: GET
    - name: quotes
      path: /sobjects/Quote
      operations:
      - name: create-quote
        method: POST
Open in Framework → View in Fleet → pro-customer-project-quote-generator.yml

Generates a daily store briefing by pulling yesterday's sales from Snowflake, open incidents from ServiceNow, and staffing status from Workday, then emailing via Outlook.

naftiko: '0.5'
info:
  label: Store Manager Daily Briefing Generator
  description: Generates a daily store briefing by pulling yesterday's sales from Snowflake, open incidents from ServiceNow, and staffing status from Workday, then emailing via Outlook.
  tags:
  - operations
  - reporting
  - snowflake
  - servicenow
  - workday
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: daily-briefing
    port: 8080
    tools:
    - name: generate-briefing
      description: Generate the daily store manager briefing.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: The store number.
      steps:
      - name: get-sales-summary
        type: call
        call: snowflake.execute-query
        with:
          statement: SELECT total_revenue, transaction_count, avg_basket_size FROM daily_store_sales WHERE store_id = '{{store_id}}' AND sale_date = CURRENT_DATE - 1
      - name: get-open-incidents
        type: call
        call: servicenow.get-incidents
        with:
          query: assignment_group.name=Store_{{store_id}}^state!=6
      - name: get-staffing
        type: call
        call: workday.get-daily-schedule
        with:
          location: store_{{store_id}}
      - name: send-briefing
        type: call
        call: outlook.send-email
        with:
          to: storemanager_{{store_id}}@homedepot.com
          subject: 'Daily Briefing: Store {{store_id}}'
          body: 'Sales: ${{get-sales-summary.data[0].total_revenue}} ({{get-sales-summary.data[0].transaction_count}} transactions). Open incidents: {{get-open-incidents.count}}. Scheduled associates: {{get-staffing.total_scheduled}}.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://homedepot.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://homedepot.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident?sysparm_query={{query}}
      inputParameters:
      - name: query
        in: query
      operations:
      - name: get-incidents
        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: schedules
      path: /schedules?location={{location}}&date=today
      inputParameters:
      - name: location
        in: query
      operations:
      - name: get-daily-schedule
        method: GET
  - type: http
    namespace: outlook
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: mail
      path: /me/sendMail
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → store-manager-daily-briefing-generator.yml

When a customer reserves a tool rental online, validates availability in the rental management system, creates the reservation in SAP Commerce Cloud, charges the deposit via Square, and sends a confirmation email via MailChimp.

naftiko: '0.5'
info:
  label: Tool Rental Reservation Processor
  description: When a customer reserves a tool rental online, validates availability in the rental management system, creates the reservation in SAP Commerce Cloud, charges the deposit via Square, and sends a confirmation email via MailChimp.
  tags:
  - e-commerce
  - tool-rental
  - sap
  - square
  - mailchimp
capability:
  exposes:
  - type: mcp
    namespace: tool-rental
    port: 8080
    tools:
    - name: process-rental-reservation
      description: Given a tool ID, store ID, customer details, and rental dates, validate availability, create reservation, charge deposit, and confirm.
      inputParameters:
      - name: tool_id
        in: body
        type: string
        description: The rental tool inventory ID.
      - name: store_id
        in: body
        type: string
        description: The store number for pickup.
      - name: customer_email
        in: body
        type: string
        description: The customer email.
      - name: start_date
        in: body
        type: string
        description: Rental start date in YYYY-MM-DD format.
      - name: end_date
        in: body
        type: string
        description: Rental end date in YYYY-MM-DD format.
      - name: deposit_amount
        in: body
        type: number
        description: The deposit amount in dollars.
      steps:
      - name: check-availability
        type: call
        call: rental-svc.check-tool
        with:
          tool_id: '{{tool_id}}'
          store_id: '{{store_id}}'
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
      - name: create-reservation
        type: call
        call: sap-commerce.create-rental
        with:
          tool_id: '{{tool_id}}'
          store_id: '{{store_id}}'
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
          customer_email: '{{customer_email}}'
      - name: charge-deposit
        type: call
        call: square.create-payment
        with:
          amount: '{{deposit_amount}}'
          currency: USD
          reference_id: '{{create-reservation.reservation_id}}'
      - name: send-confirmation
        type: call
        call: mailchimp.send-transactional
        with:
          template_name: rental_confirmation
          to_email: '{{customer_email}}'
          merge_vars:
            reservation_id: '{{create-reservation.reservation_id}}'
            tool_name: '{{check-availability.tool_name}}'
            store_id: '{{store_id}}'
            start_date: '{{start_date}}'
            end_date: '{{end_date}}'
            deposit: '{{deposit_amount}}'
  consumes:
  - type: http
    namespace: rental-svc
    baseUri: https://rentals.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.rental_svc_token
    resources:
    - name: tools
      path: /tools/{{tool_id}}/availability
      inputParameters:
      - name: tool_id
        in: path
      operations:
      - name: check-tool
        method: GET
  - type: http
    namespace: sap-commerce
    baseUri: https://homedepot-commerce.sap.com/occ/v2/homedepot
    authentication:
      type: bearer
      token: $secrets.sap_commerce_token
    resources:
    - name: rentals
      path: /rentals
      operations:
      - name: create-rental
        method: POST
  - type: http
    namespace: square
    baseUri: https://connect.squareup.com/v2
    authentication:
      type: bearer
      token: $secrets.square_token
    resources:
    - name: payments
      path: /payments
      operations:
      - name: create-payment
        method: POST
  - type: http
    namespace: mailchimp
    baseUri: https://mandrillapp.com/api/1.0
    authentication:
      type: apiKey
      key: $secrets.mailchimp_transactional_key
    resources:
    - name: transactional
      path: /messages/send-template
      operations:
      - name: send-transactional
        method: POST
Open in Framework → View in Fleet → tool-rental-reservation-processor.yml

Queries New Relic for application response time, throughput, and error rate for a given application name, providing real-time performance visibility for the e-commerce platform.

naftiko: '0.5'
info:
  label: New Relic Application Performance
  description: Queries New Relic for application response time, throughput, and error rate for a given application name, providing real-time performance visibility for the e-commerce platform.
  tags:
  - monitoring
  - e-commerce
  - new-relic
capability:
  exposes:
  - type: mcp
    namespace: apm
    port: 8080
    tools:
    - name: get-app-performance
      description: Given a New Relic application ID, return response time, throughput, and error rate 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_ms
        type: number
        mapping: $.application.application_summary.response_time
      - name: throughput_rpm
        type: number
        mapping: $.application.application_summary.throughput
      - name: error_rate
        type: number
        mapping: $.application.application_summary.error_rate
  consumes:
  - type: http
    namespace: newrelic
    baseUri: https://api.newrelic.com/v2
    authentication:
      type: apiKey
      key: $secrets.newrelic_api_key
    resources:
    - name: applications
      path: /applications/{{app_id}}.json
      inputParameters:
      - name: app_id
        in: path
      operations:
      - name: get-app-metrics
        method: GET
Open in Framework → View in Fleet → new-relic-application-performance.yml

Processes inbound shipments at distribution centers by validating ASN in SAP, creating receiving tasks in WMS, and updating vendor delivery metrics in Snowflake.

naftiko: '0.5'
info:
  label: DC Inbound Shipment Receiving Pipeline
  description: Processes inbound shipments at distribution centers by validating ASN in SAP, creating receiving tasks in WMS, and updating vendor delivery metrics in Snowflake.
  tags:
  - supply-chain
  - warehouse
  - sap
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: dc-receiving
    port: 8080
    tools:
    - name: receive-inbound-shipment
      description: Process inbound shipment receiving at a distribution center.
      inputParameters:
      - name: asn_number
        in: body
        type: string
        description: The advance ship notice number.
      - name: dc_id
        in: body
        type: string
        description: The distribution center ID.
      steps:
      - name: validate-asn
        type: call
        call: sap.get-asn
        with:
          asn: '{{asn_number}}'
      - name: create-receiving-task
        type: call
        call: wms.create-receipt
        with:
          dc_id: '{{dc_id}}'
          po_number: '{{validate-asn.po_number}}'
          vendor: '{{validate-asn.vendor_id}}'
          items: '{{validate-asn.line_items}}'
      - name: update-vendor-metrics
        type: call
        call: snowflake.execute-query
        with:
          statement: INSERT INTO vendor_delivery_metrics (vendor_id, asn_number, dc_id, on_time, in_full, received_at) VALUES ('{{validate-asn.vendor_id}}', '{{asn_number}}', '{{dc_id}}', true, true, CURRENT_TIMESTAMP())
  consumes:
  - type: http
    namespace: sap
    baseUri: https://homedepot-s4.sap.com/sap/opu/odata/sap/ZMM_ASN_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: asns
      path: /ASNSet('{{asn}}')
      inputParameters:
      - name: asn
        in: path
      operations:
      - name: get-asn
        method: GET
  - type: http
    namespace: wms
    baseUri: https://wms.homedepot.com/api/v2
    authentication:
      type: bearer
      token: $secrets.wms_token
    resources:
    - name: receipts
      path: /receipts
      operations:
      - name: create-receipt
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://homedepot.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: execute-query
        method: POST
Open in Framework → View in Fleet → dc-inbound-shipment-receiving-pipeline.yml

Optimizes last-mile delivery routes by pulling pending deliveries from SAP, calculating optimal routes via Google Maps, and assigning to drivers in the dispatch system.

naftiko: '0.5'
info:
  label: Delivery Route Optimization Orchestrator
  description: Optimizes last-mile delivery routes by pulling pending deliveries from SAP, calculating optimal routes via Google Maps, and assigning to drivers in the dispatch system.
  tags:
  - logistics
  - delivery
  - sap
  - google-maps
capability:
  exposes:
  - type: mcp
    namespace: route-optimization
    port: 8080
    tools:
    - name: optimize-delivery-routes
      description: Optimize delivery routes for a distribution center.
      inputParameters:
      - name: dc_id
        in: body
        type: string
        description: The distribution center ID.
      - name: delivery_date
        in: body
        type: string
        description: Delivery date in YYYY-MM-DD.
      steps:
      - name: get-pending-deliveries
        type: call
        call: sap.get-delivery-list
        with:
          facility: '{{dc_id}}'
          date: '{{delivery_date}}'
      - name: calculate-routes
        type: call
        call: google-maps.optimize-routes
        with:
          origin: '{{dc_id}}'
          waypoints: '{{get-pending-deliveries.addresses}}'
      - name: assign-drivers
        type: call
        call: dispatch.assign-routes
        with:
          dc_id: '{{dc_id}}'
          routes: '{{calculate-routes.optimized_routes}}'
          date: '{{delivery_date}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://homedepot-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?$filter=Facility eq '{{facility}}' and Date eq '{{date}}'
      inputParameters:
      - name: facility
        in: query
      - name: date
        in: query
      operations:
      - name: get-delivery-list
        method: GET
  - type: http
    namespace: google-maps
    baseUri: https://routes.googleapis.com/distanceMatrix/v2
    authentication:
      type: apiKey
      key: $secrets.google_maps_key
    resources:
    - name: routes
      path: /computeRoutes
      operations:
      - name: optimize-routes
        method: POST
  - type: http
    namespace: dispatch
    baseUri: https://dispatch.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.dispatch_token
    resources:
    - name: routes
      path: /route-assignments
      operations:
      - name: assign-routes
        method: POST
Open in Framework → View in Fleet → delivery-route-optimization-orchestrator.yml

Retrieves email campaign performance metrics from MailChimp including open rate, click rate, unsubscribes, and revenue attributed for a given campaign ID.

naftiko: '0.5'
info:
  label: MailChimp Campaign Metrics
  description: Retrieves email campaign performance metrics from MailChimp including open rate, click rate, unsubscribes, and revenue attributed for a given campaign ID.
  tags:
  - marketing
  - email
  - mailchimp
capability:
  exposes:
  - type: mcp
    namespace: email-marketing
    port: 8080
    tools:
    - name: get-campaign-report
      description: Given a MailChimp campaign ID, return open rate, click rate, unsubscribes, and attributed revenue.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: The MailChimp campaign ID.
      call: mailchimp.get-report
      with:
        campaign_id: '{{campaign_id}}'
      outputParameters:
      - name: open_rate
        type: number
        mapping: $.opens.open_rate
      - name: click_rate
        type: number
        mapping: $.clicks.click_rate
      - name: unsubscribes
        type: number
        mapping: $.unsubscribed
  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-report
        method: GET
Open in Framework → View in Fleet → mailchimp-campaign-metrics.yml

When a product recall is initiated, pulls affected order data from SAP Commerce Cloud, identifies impacted customers in Salesforce, sends recall notification emails via MailChimp, and creates a Jira epic to track the recall response.

naftiko: '0.5'
info:
  label: Product Recall Notification Workflow
  description: When a product recall is initiated, pulls affected order data from SAP Commerce Cloud, identifies impacted customers in Salesforce, sends recall notification emails via MailChimp, and creates a Jira epic to track the recall response.
  tags:
  - customer-service
  - product-safety
  - sap
  - salesforce
  - mailchimp
  - jira
capability:
  exposes:
  - type: mcp
    namespace: product-recall
    port: 8080
    tools:
    - name: execute-recall-notification
      description: Given a SKU and recall reason, identify affected customers, send notifications, and create a tracking epic.
      inputParameters:
      - name: sku
        in: body
        type: string
        description: The recalled product SKU.
      - name: recall_reason
        in: body
        type: string
        description: The reason for the recall.
      - name: recall_id
        in: body
        type: string
        description: The CPSC or internal recall identifier.
      - name: date_range_start
        in: body
        type: string
        description: Start of the affected sale date range.
      - name: date_range_end
        in: body
        type: string
        description: End of the affected sale date range.
      steps:
      - name: get-affected-orders
        type: call
        call: sap-commerce.search-orders
        with:
          sku: '{{sku}}'
          date_from: '{{date_range_start}}'
          date_to: '{{date_range_end}}'
      - name: get-customer-list
        type: call
        call: salesforce.get-contacts-by-product
        with:
          sku: '{{sku}}'
          order_ids: '{{get-affected-orders.order_ids}}'
      - name: send-recall-emails
        type: call
        call: mailchimp.create-campaign
        with:
          list_id: recall_notification_list
          subject: Important Safety Recall Notice - {{sku}}
          template_id: product_recall
          segment_conditions:
            sku: '{{sku}}'
      - name: create-recall-epic
        type: call
        call: jira.create-issue
        with:
          project: SAFETY
          issue_type: Epic
          summary: 'Product Recall: {{recall_id}} - SKU {{sku}}'
          description: 'Recall ID: {{recall_id}}. SKU: {{sku}}. Reason: {{recall_reason}}. Affected orders: {{get-affected-orders.count}}. Customers notified: {{get-customer-list.count}}. Email campaign: {{send-recall-emails.campaign_id}}.'
  consumes:
  - type: http
    namespace: sap-commerce
    baseUri: https://homedepot-commerce.sap.com/occ/v2/homedepot
    authentication:
      type: bearer
      token: $secrets.sap_commerce_token
    resources:
    - name: orders
      path: /orders/search
      operations:
      - name: search-orders
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://homedepot.my.salesforce.com/services/data/v59.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: contacts
      path: /query
      operations:
      - name: get-contacts-by-product
        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
  - type: http
    namespace: jira
    baseUri: https://homedepot.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → product-recall-notification-workflow.yml

Schedules fleet vehicle maintenance by checking mileage from the telematics system, creating a work order in ServiceNow, and booking the appointment with the service provider.

naftiko: '0.5'
info:
  label: Fleet Vehicle Maintenance Scheduler
  description: Schedules fleet vehicle maintenance by checking mileage from the telematics system, creating a work order in ServiceNow, and booking the appointment with the service provider.
  tags:
  - fleet
  - maintenance
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: fleet-maintenance
    port: 8080
    tools:
    - name: schedule-maintenance
      description: Schedule preventive maintenance for a fleet vehicle.
      inputParameters:
      - name: vehicle_id
        in: body
        type: string
        description: The fleet vehicle ID.
      steps:
      - name: get-vehicle-status
        type: call
        call: telematics.get-vehicle
        with:
          id: '{{vehicle_id}}'
      - name: create-work-order
        type: call
        call: servicenow.create-task
        with:
          short_description: 'PM: Vehicle {{vehicle_id}} at {{get-vehicle-status.mileage}} miles'
          category: fleet_maintenance
          assignment_group: Fleet_Operations
      - name: book-service
        type: call
        call: fleet-service.book-appointment
        with:
          vehicle_id: '{{vehicle_id}}'
          mileage: '{{get-vehicle-status.mileage}}'
          service_type: preventive_maintenance
  consumes:
  - type: http
    namespace: telematics
    baseUri: https://telematics.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.telematics_token
    resources:
    - name: vehicles
      path: /vehicles/{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-vehicle
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://homedepot.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: fleet-service
    baseUri: https://fleet.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.fleet_service_token
    resources:
    - name: appointments
      path: /appointments
      operations:
      - name: book-appointment
        method: POST
Open in Framework → View in Fleet → fleet-vehicle-maintenance-scheduler.yml

Sends delivery status SMS notifications to customers via Twilio for appliance and special order deliveries.

naftiko: '0.5'
info:
  label: Twilio Customer Delivery SMS Sender
  description: Sends delivery status SMS notifications to customers via Twilio for appliance and special order deliveries.
  tags:
  - fulfillment
  - notifications
  - twilio
capability:
  exposes:
  - type: mcp
    namespace: delivery-sms
    port: 8080
    tools:
    - name: send-delivery-sms
      description: Send a delivery status SMS to a customer.
      inputParameters:
      - name: phone_number
        in: body
        type: string
        description: Customer phone number.
      - name: message
        in: body
        type: string
        description: The SMS message text.
      call: twilio.send-sms
      with:
        to: '{{phone_number}}'
        body: '{{message}}'
      outputParameters:
      - name: message_sid
        type: string
        mapping: $.sid
  consumes:
  - type: http
    namespace: twilio
    baseUri: https://api.twilio.com/2010-04-01
    authentication:
      type: basic
      username: $secrets.twilio_account_sid
      password: $secrets.twilio_auth_token
    resources:
    - name: messages
      path: /Accounts/$secrets.twilio_account_sid/Messages.json
      operations:
      - name: send-sms
        method: POST
Open in Framework → View in Fleet → twilio-customer-delivery-sms-sender.yml

Manages the flooring installation workflow by capturing measurements in the field service system, generating a materials quote in SAP, and scheduling the installation appointment.

naftiko: '0.5'
info:
  label: Flooring Measurement to Install Pipeline
  description: Manages the flooring installation workflow by capturing measurements in the field service system, generating a materials quote in SAP, and scheduling the installation appointment.
  tags:
  - home-services
  - flooring
  - sap
capability:
  exposes:
  - type: mcp
    namespace: flooring-install
    port: 8080
    tools:
    - name: process-flooring-measurement
      description: Convert a flooring measurement into an installation appointment.
      inputParameters:
      - name: measurement_id
        in: body
        type: string
        description: The field measurement ID.
      - name: customer_id
        in: body
        type: string
        description: The customer account ID.
      steps:
      - name: get-measurements
        type: call
        call: field-service.get-measurement
        with:
          id: '{{measurement_id}}'
      - name: generate-quote
        type: call
        call: sap.create-quote
        with:
          customer: '{{customer_id}}'
          square_footage: '{{get-measurements.total_sqft}}'
          product_sku: '{{get-measurements.selected_product}}'
      - name: schedule-install
        type: call
        call: field-service.create-appointment
        with:
          customer_id: '{{customer_id}}'
          service_type: flooring_installation
          quote_ref: '{{generate-quote.quote_number}}'
  consumes:
  - type: http
    namespace: field-service
    baseUri: https://fieldservice.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.field_service_token
    resources:
    - name: measurements
      path: /measurements/{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-measurement
        method: GET
    - name: appointments
      path: /appointments
      operations:
      - name: create-appointment
        method: POST
  - type: http
    namespace: sap
    baseUri: https://homedepot-s4.sap.com/sap/opu/odata/sap/ZSD_QUOTE_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: quotes
      path: /QuoteSet
      operations:
      - name: create-quote
        method: POST
Open in Framework → View in Fleet → flooring-measurement-to-install-pipeline.yml

Optimizes store labor scheduling by pulling traffic forecasts from Snowflake, current staffing from Workday, and publishing optimized schedules back to the workforce management system.

naftiko: '0.5'
info:
  label: Store Labor Scheduling Optimizer
  description: Optimizes store labor scheduling by pulling traffic forecasts from Snowflake, current staffing from Workday, and publishing optimized schedules back to the workforce management system.
  tags:
  - hr
  - scheduling
  - snowflake
  - workday
capability:
  exposes:
  - type: mcp
    namespace: labor-scheduling
    port: 8080
    tools:
    - name: optimize-schedule
      description: Optimize store labor schedule based on traffic forecast.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: The store number.
      - name: week_start
        in: body
        type: string
        description: Week start date in YYYY-MM-DD.
      steps:
      - name: get-traffic-forecast
        type: call
        call: snowflake.execute-query
        with:
          statement: SELECT day_of_week, hourly_traffic_forecast FROM store_traffic_forecast WHERE store_id = '{{store_id}}' AND week_start = '{{week_start}}'
      - name: get-current-staffing
        type: call
        call: workday.get-store-headcount
        with:
          location: store_{{store_id}}
      - name: publish-schedule
        type: call
        call: wfm.create-schedule
        with:
          store_id: '{{store_id}}'
          week_start: '{{week_start}}'
          traffic_data: '{{get-traffic-forecast.data}}'
          headcount: '{{get-current-staffing.count}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://homedepot.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: 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-store-headcount
        method: GET
  - type: http
    namespace: wfm
    baseUri: https://wfm.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.wfm_token
    resources:
    - name: schedules
      path: /schedules
      operations:
      - name: create-schedule
        method: POST
Open in Framework → View in Fleet → store-labor-scheduling-optimizer.yml

Monitors competitor prices by pulling data from the pricing intelligence platform, comparing against internal pricing in SAP, and alerting category managers via Slack.

naftiko: '0.5'
info:
  label: Competitive Price Monitoring Pipeline
  description: Monitors competitor prices by pulling data from the pricing intelligence platform, comparing against internal pricing in SAP, and alerting category managers via Slack.
  tags:
  - pricing
  - competitive-intelligence
  - sap
  - slack
capability:
  exposes:
  - type: mcp
    namespace: price-monitoring
    port: 8080
    tools:
    - name: monitor-competitor-prices
      description: Monitor and alert on competitive price changes.
      inputParameters:
      - name: sku
        in: body
        type: string
        description: The product SKU to monitor.
      - name: category_code
        in: body
        type: string
        description: The merchandising category code.
      steps:
      - name: get-competitor-prices
        type: call
        call: pricing-intel.get-prices
        with:
          sku: '{{sku}}'
      - name: get-our-price
        type: call
        call: sap.get-price
        with:
          material: '{{sku}}'
      - name: alert-category-manager
        type: call
        call: slack.post-message
        with:
          channel: category-{{category_code}}-pricing
          text: 'Price alert for SKU {{sku}}: Our price ${{get-our-price.list_price}}. Lowest competitor: ${{get-competitor-prices.lowest_price}} ({{get-competitor-prices.lowest_retailer}}).'
  consumes:
  - type: http
    namespace: pricing-intel
    baseUri: https://pricing-intelligence.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.pricing_intel_token
    resources:
    - name: prices
      path: /products/{{sku}}/competitor-prices
      inputParameters:
      - name: sku
        in: path
      operations:
      - name: get-prices
        method: GET
  - type: http
    namespace: sap
    baseUri: https://homedepot-s4.sap.com/sap/opu/odata/sap/ZSD_PRICING_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: prices
      path: /PriceSet('{{material}}')
      inputParameters:
      - name: material
        in: path
      operations:
      - name: get-price
        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
Open in Framework → View in Fleet → competitive-price-monitoring-pipeline.yml

Conducts store safety audits by pulling checklist from ServiceNow, verifying training completion in Cornerstone LMS, and publishing results to SharePoint.

naftiko: '0.5'
info:
  label: Store Safety Compliance Auditor
  description: Conducts store safety audits by pulling checklist from ServiceNow, verifying training completion in Cornerstone LMS, and publishing results to SharePoint.
  tags:
  - safety
  - compliance
  - servicenow
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: safety-audit
    port: 8080
    tools:
    - name: conduct-safety-audit
      description: Conduct a store safety compliance audit.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: The store number.
      - name: audit_date
        in: body
        type: string
        description: Audit date in YYYY-MM-DD.
      steps:
      - name: get-checklist
        type: call
        call: servicenow.get-checklist
        with:
          template: store_safety_audit
          location: store_{{store_id}}
      - name: verify-training
        type: call
        call: cornerstone.get-compliance-report
        with:
          location: store_{{store_id}}
          course_category: safety
      - name: publish-results
        type: call
        call: sharepoint.upload-document
        with:
          site_id: safety_compliance
          folder_path: Audits/{{audit_date}}
          file_name: store_{{store_id}}_safety_audit.json
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://homedepot.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: checklists
      path: /table/checklist_template?sysparm_query=name={{template}}^location={{location}}
      inputParameters:
      - name: template
        in: query
      - name: location
        in: query
      operations:
      - name: get-checklist
        method: GET
  - type: http
    namespace: cornerstone
    baseUri: https://homedepot.csod.com/services/api/x/v2
    authentication:
      type: bearer
      token: $secrets.cornerstone_token
    resources:
    - name: compliance
      path: /reports/compliance?location={{location}}&category={{course_category}}
      inputParameters:
      - name: location
        in: query
      - name: course_category
        in: query
      operations:
      - name: get-compliance-report
        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
Open in Framework → View in Fleet → store-safety-compliance-auditor.yml

At store opening time, verifies POS system status via ServiceNow, checks associate clock-ins from Workday, reviews overnight receiving in Oracle Retail, and posts the morning readiness summary to the store manager's Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Store Opening Checklist Orchestrator
  description: At store opening time, verifies POS system status via ServiceNow, checks associate clock-ins from Workday, reviews overnight receiving in Oracle Retail, and posts the morning readiness summary to the store manager's Microsoft Teams channel.
  tags:
  - store-ops
  - daily-operations
  - servicenow
  - workday
  - oracle-cloud
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: store-opening
    port: 8080
    tools:
    - name: run-opening-checklist
      description: Given a store ID and date, verify POS, staffing, and receiving status, then post the morning readiness report.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: The store number.
      - name: date
        in: body
        type: string
        description: The date in YYYY-MM-DD format.
      - name: manager_email
        in: body
        type: string
        description: The store manager email.
      steps:
      - name: check-pos-status
        type: call
        call: servicenow.get-ci-status
        with:
          ci_name: POS_Store_{{store_id}}
      - name: check-staffing
        type: call
        call: workday.get-attendance
        with:
          location: Store_{{store_id}}
          date: '{{date}}'
          shift: opening
      - name: check-receiving
        type: call
        call: oracle-retail.get-overnight-receipts
        with:
          store_id: '{{store_id}}'
          date: '{{date}}'
      - name: post-readiness
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{manager_email}}'
          text: 'Morning Readiness - Store #{{store_id}} ({{date}}): POS Status: {{check-pos-status.status}}. Associates clocked in: {{check-staffing.present_count}}/{{check-staffing.scheduled_count}}. Overnight receipts processed: {{check-receiving.receipt_count}} ({{check-receiving.units_received}} units).'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://homedepot.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: ci
      path: /table/cmdb_ci?sysparm_query=name={{ci_name}}
      inputParameters:
      - name: ci_name
        in: path
      operations:
      - name: get-ci-status
        method: GET
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1/homedepot
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: attendance
      path: /attendance/{{location}}/{{date}}
      inputParameters:
      - name: location
        in: path
      - name: date
        in: path
      operations:
      - name: get-attendance
        method: GET
  - type: http
    namespace: oracle-retail
    baseUri: https://homedepot.retail.oracle.com/rgbu-rms-rse/api/v1
    authentication:
      type: bearer
      token: $secrets.oracle_retail_token
    resources:
    - name: receipts
      path: /stores/{{store_id}}/receipts
      inputParameters:
      - name: store_id
        in: path
      operations:
      - name: get-overnight-receipts
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → store-opening-checklist-orchestrator.yml

Tracks private label product development by pulling milestones from Jira, verifying lab test results from the testing platform, and updating the product record in SAP.

naftiko: '0.5'
info:
  label: Private Label Product Development Tracker
  description: Tracks private label product development by pulling milestones from Jira, verifying lab test results from the testing platform, and updating the product record in SAP.
  tags:
  - product-development
  - private-label
  - jira
  - sap
capability:
  exposes:
  - type: mcp
    namespace: private-label
    port: 8080
    tools:
    - name: track-development
      description: Track private label product development progress.
      inputParameters:
      - name: project_key
        in: body
        type: string
        description: The Jira project key.
      - name: material_number
        in: body
        type: string
        description: The SAP material number.
      steps:
      - name: get-milestones
        type: call
        call: jira.get-issues
        with:
          jql: project = '{{project_key}}' AND type = Milestone ORDER BY dueDate
      - name: get-test-results
        type: call
        call: testing-platform.get-results
        with:
          product_ref: '{{material_number}}'
      - name: update-product-status
        type: call
        call: sap.update-material
        with:
          material_id: '{{material_number}}'
          development_status: '{{get-milestones.current_phase}}'
          test_status: '{{get-test-results.overall_result}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://homedepot.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: search
      path: /search?jql={{jql}}
      inputParameters:
      - name: jql
        in: query
      operations:
      - name: get-issues
        method: GET
  - type: http
    namespace: testing-platform
    baseUri: https://testing.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.testing_platform_token
    resources:
    - name: results
      path: /products/{{product_ref}}/results
      inputParameters:
      - name: product_ref
        in: path
      operations:
      - name: get-results
        method: GET
  - type: http
    namespace: sap
    baseUri: https://homedepot-s4.sap.com/sap/opu/odata/sap/ZMM_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: update-material
        method: PATCH
Open in Framework → View in Fleet → private-label-product-development-tracker.yml

Tracks special orders by querying SAP for order status, retrieving carrier tracking from FedEx, and sending customer updates via Twilio SMS.

naftiko: '0.5'
info:
  label: Special Order Tracking Orchestrator
  description: Tracks special orders by querying SAP for order status, retrieving carrier tracking from FedEx, and sending customer updates via Twilio SMS.
  tags:
  - fulfillment
  - special-orders
  - sap
  - twilio
capability:
  exposes:
  - type: mcp
    namespace: special-order-tracking
    port: 8080
    tools:
    - name: track-special-order
      description: Track and notify customer on special order status.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The special order ID.
      - name: customer_phone
        in: body
        type: string
        description: Customer phone number.
      steps:
      - name: get-order-status
        type: call
        call: sap.get-order
        with:
          order_number: '{{order_id}}'
      - name: get-carrier-tracking
        type: call
        call: fedex.track-shipment
        with:
          tracking_number: '{{get-order-status.tracking_number}}'
      - name: notify-customer
        type: call
        call: twilio.send-sms
        with:
          to: '{{customer_phone}}'
          body: 'Home Depot Order {{order_id}}: {{get-carrier-tracking.status}}. ETA: {{get-carrier-tracking.estimated_delivery}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://homedepot-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: /OrderSet('{{order_number}}')
      inputParameters:
      - name: order_number
        in: path
      operations:
      - name: get-order
        method: GET
  - type: http
    namespace: fedex
    baseUri: https://apis.fedex.com/track/v1
    authentication:
      type: bearer
      token: $secrets.fedex_token
    resources:
    - name: tracking
      path: /trackingnumbers
      operations:
      - name: track-shipment
        method: POST
  - type: http
    namespace: twilio
    baseUri: https://api.twilio.com/2010-04-01
    authentication:
      type: basic
      username: $secrets.twilio_account_sid
      password: $secrets.twilio_auth_token
    resources:
    - name: messages
      path: /Accounts/$secrets.twilio_account_sid/Messages.json
      operations:
      - name: send-sms
        method: POST
Open in Framework → View in Fleet → special-order-tracking-orchestrator.yml

When a SAP purchase order ships, fetches carrier tracking details, updates Oracle Retail with the expected arrival, and posts a supply chain update to the Microsoft Teams logistics channel.

naftiko: '0.5'
info:
  label: Vendor Shipment Tracking Pipeline
  description: When a SAP purchase order ships, fetches carrier tracking details, updates Oracle Retail with the expected arrival, and posts a supply chain update to the Microsoft Teams logistics channel.
  tags:
  - supply-chain
  - logistics
  - sap
  - oracle-cloud
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: shipment-tracking
    port: 8080
    tools:
    - name: track-vendor-shipment
      description: Given a PO number and tracking number, fetch carrier details, update Oracle Retail ETA, and notify the logistics team in Microsoft Teams.
      inputParameters:
      - name: po_number
        in: body
        type: string
        description: The SAP purchase order number.
      - name: tracking_number
        in: body
        type: string
        description: The carrier tracking number.
      - name: carrier
        in: body
        type: string
        description: The shipping carrier (e.g. UPS, FedEx, XPO).
      steps:
      - name: get-po
        type: call
        call: sap.get-po
        with:
          po_number: '{{po_number}}'
      - name: get-tracking
        type: call
        call: carrier-api.track-shipment
        with:
          carrier: '{{carrier}}'
          tracking_number: '{{tracking_number}}'
      - name: update-eta
        type: call
        call: oracle-retail.update-delivery
        with:
          po_number: '{{po_number}}'
          eta: '{{get-tracking.estimated_delivery}}'
          status: '{{get-tracking.status}}'
      - name: notify-logistics
        type: call
        call: msteams.post-channel
        with:
          channel_id: supply-chain-updates
          text: 'PO {{po_number}} from {{get-po.vendor}}: {{get-tracking.status}}. ETA: {{get-tracking.estimated_delivery}}. Tracking: {{tracking_number}} via {{carrier}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://homedepot-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: carrier-api
    baseUri: https://logistics.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.logistics_token
    resources:
    - name: tracking
      path: /carriers/{{carrier}}/track/{{tracking_number}}
      inputParameters:
      - name: carrier
        in: path
      - name: tracking_number
        in: path
      operations:
      - name: track-shipment
        method: GET
  - type: http
    namespace: oracle-retail
    baseUri: https://homedepot.retail.oracle.com/rgbu-rms-rse/api/v1
    authentication:
      type: bearer
      token: $secrets.oracle_retail_token
    resources:
    - name: deliveries
      path: /purchase-orders/{{po_number}}/delivery
      inputParameters:
      - name: po_number
        in: path
      operations:
      - name: update-delivery
        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
        method: POST
Open in Framework → View in Fleet → vendor-shipment-tracking-pipeline.yml

When a negative product review is posted, fetches the review from the e-commerce platform, creates a Salesforce case for customer outreach, and alerts the product manager via Microsoft Teams.

naftiko: '0.5'
info:
  label: Customer Review Escalation
  description: When a negative product review is posted, fetches the review from the e-commerce platform, creates a Salesforce case for customer outreach, and alerts the product manager via Microsoft Teams.
  tags:
  - customer-service
  - reviews
  - sap
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: review-escalation
    port: 8080
    tools:
    - name: escalate-negative-review
      description: Given a review ID and product SKU, fetch the review, create a customer service case, and notify the product manager.
      inputParameters:
      - name: review_id
        in: body
        type: string
        description: The product review ID.
      - name: sku
        in: body
        type: string
        description: The product SKU.
      - name: product_manager_email
        in: body
        type: string
        description: The product manager email for notification.
      steps:
      - name: get-review
        type: call
        call: sap-commerce.get-review
        with:
          review_id: '{{review_id}}'
          sku: '{{sku}}'
      - name: create-case
        type: call
        call: salesforce.create-case
        with:
          subject: 'Negative review escalation: {{sku}} - Rating {{get-review.rating}}/5'
          description: 'Review by {{get-review.author}}: {{get-review.text}}. Rating: {{get-review.rating}}/5. SKU: {{sku}}.'
          type: Customer_Feedback
          priority: High
      - name: notify-pm
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{product_manager_email}}'
          text: 'Negative review alert for SKU {{sku}}: {{get-review.rating}}/5 stars by {{get-review.author}}. Case {{create-case.case_number}} created. Review: "{{get-review.text}}"'
  consumes:
  - type: http
    namespace: sap-commerce
    baseUri: https://homedepot-commerce.sap.com/occ/v2/homedepot
    authentication:
      type: bearer
      token: $secrets.sap_commerce_token
    resources:
    - name: reviews
      path: /products/{{sku}}/reviews/{{review_id}}
      inputParameters:
      - name: sku
        in: path
      - name: review_id
        in: path
      operations:
      - name: get-review
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://homedepot.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: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → customer-review-escalation.yml

Launches a new promotional campaign by creating the offer in SAP Commerce Cloud, scheduling the MailChimp email blast, publishing a Facebook ad through Meta, and tagging the campaign in Google Analytics.

naftiko: '0.5'
info:
  label: Promotional Campaign Launch Orchestrator
  description: Launches a new promotional campaign by creating the offer in SAP Commerce Cloud, scheduling the MailChimp email blast, publishing a Facebook ad through Meta, and tagging the campaign in Google Analytics.
  tags:
  - marketing
  - promotions
  - sap
  - mailchimp
  - meta
  - google-analytics
capability:
  exposes:
  - type: mcp
    namespace: campaign-launch
    port: 8080
    tools:
    - name: launch-promo-campaign
      description: Given campaign details, create the promotion, schedule email, launch social ads, and set up analytics tracking.
      inputParameters:
      - name: campaign_name
        in: body
        type: string
        description: The promotional campaign name.
      - name: discount_percent
        in: body
        type: number
        description: The discount percentage.
      - name: category_id
        in: body
        type: string
        description: The product category for the promotion.
      - 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.
      - name: audience_list_id
        in: body
        type: string
        description: The MailChimp audience list ID for email targeting.
      steps:
      - name: create-promotion
        type: call
        call: sap-commerce.create-promotion
        with:
          name: '{{campaign_name}}'
          discount: '{{discount_percent}}'
          category: '{{category_id}}'
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
      - name: schedule-email
        type: call
        call: mailchimp.create-campaign
        with:
          list_id: '{{audience_list_id}}'
          subject: '{{campaign_name}} - Save {{discount_percent}}%!'
          send_time: '{{start_date}}T08:00:00Z'
      - name: create-ad
        type: call
        call: meta-ads.create-ad
        with:
          campaign_name: '{{campaign_name}}'
          objective: CONVERSIONS
          start_time: '{{start_date}}T00:00:00Z'
          end_time: '{{end_date}}T23:59:59Z'
      - name: tag-analytics
        type: call
        call: ga.create-annotation
        with:
          description: 'Campaign launch: {{campaign_name}} ({{start_date}} to {{end_date}})'
  consumes:
  - type: http
    namespace: sap-commerce
    baseUri: https://homedepot-commerce.sap.com/occ/v2/homedepot
    authentication:
      type: bearer
      token: $secrets.sap_commerce_token
    resources:
    - name: promotions
      path: /promotions
      operations:
      - name: create-promotion
        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: create-campaign
        method: POST
  - type: http
    namespace: meta-ads
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.meta_ads_token
    resources:
    - name: ads
      path: /act_{{ad_account_id}}/campaigns
      inputParameters:
      - name: ad_account_id
        in: path
      operations:
      - name: create-ad
        method: POST
  - type: http
    namespace: ga
    baseUri: https://www.googleapis.com/analytics/v3
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: annotations
      path: /management/accounts/{{account_id}}/webproperties/{{property_id}}/customDataSources
      inputParameters:
      - name: account_id
        in: path
      - name: property_id
        in: path
      operations:
      - name: create-annotation
        method: POST
Open in Framework → View in Fleet → promotional-campaign-launch-orchestrator.yml

Retrieves a pre-signed URL for a product image or document stored in Amazon S3, used by content teams to share assets across marketing channels.

naftiko: '0.5'
info:
  label: Amazon S3 Asset Retrieval
  description: Retrieves a pre-signed URL for a product image or document stored in Amazon S3, used by content teams to share assets across marketing channels.
  tags:
  - content
  - storage
  - amazon-s3
capability:
  exposes:
  - type: mcp
    namespace: asset-storage
    port: 8080
    tools:
    - name: get-asset-url
      description: Given an S3 bucket and object key, return a pre-signed URL valid for one hour.
      inputParameters:
      - name: bucket
        in: body
        type: string
        description: The S3 bucket name.
      - name: object_key
        in: body
        type: string
        description: The S3 object key (path to the file).
      call: s3.get-presigned-url
      with:
        bucket: '{{bucket}}'
        key: '{{object_key}}'
      outputParameters:
      - name: presigned_url
        type: string
        mapping: $.url
  consumes:
  - type: http
    namespace: s3
    baseUri: https://s3.amazonaws.com
    authentication:
      type: aws
      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: get-presigned-url
        method: GET
Open in Framework → View in Fleet → amazon-s3-asset-retrieval.yml

Retrieves the payment status and expected payment date for a vendor invoice from SAP Accounts Payable.

naftiko: '0.5'
info:
  label: SAP Vendor Payment Status
  description: Retrieves the payment status and expected payment date for a vendor invoice from SAP Accounts Payable.
  tags:
  - finance
  - accounts-payable
  - sap
capability:
  exposes:
  - type: mcp
    namespace: vendor-payments
    port: 8080
    tools:
    - name: get-payment-status
      description: Check payment status for a vendor invoice.
      inputParameters:
      - name: invoice_number
        in: body
        type: string
        description: The SAP invoice number.
      call: sap.get-invoice-status
      with:
        doc_number: '{{invoice_number}}'
      outputParameters:
      - name: payment_status
        type: string
        mapping: $.d.PaymentStatus
      - name: expected_date
        type: string
        mapping: $.d.ExpectedPaymentDate
      - name: amount
        type: number
        mapping: $.d.InvoiceAmount
  consumes:
  - type: http
    namespace: sap
    baseUri: https://homedepot-s4.sap.com/sap/opu/odata/sap/ZFI_AP_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: invoices
      path: /InvoiceSet('{{doc_number}}')
      inputParameters:
      - name: doc_number
        in: path
      operations:
      - name: get-invoice-status
        method: GET
Open in Framework → View in Fleet → sap-vendor-payment-status.yml

Fetches invoices from SAP, matches against goods receipts in Oracle Retail, flags discrepancies in ServiceNow for accounts payable review, and sends a summary to the finance team in Microsoft Teams.

naftiko: '0.5'
info:
  label: Supplier Invoice Reconciliation
  description: Fetches invoices from SAP, matches against goods receipts in Oracle Retail, flags discrepancies in ServiceNow for accounts payable review, and sends a summary to the finance team in Microsoft Teams.
  tags:
  - finance
  - accounts-payable
  - sap
  - oracle-cloud
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: invoice-reconciliation
    port: 8080
    tools:
    - name: reconcile-invoice
      description: Given a SAP invoice number, match against goods receipts and flag discrepancies.
      inputParameters:
      - name: invoice_number
        in: body
        type: string
        description: The SAP invoice number.
      - name: vendor_id
        in: body
        type: string
        description: The SAP vendor ID.
      steps:
      - name: get-invoice
        type: call
        call: sap.get-invoice
        with:
          invoice_number: '{{invoice_number}}'
      - name: get-goods-receipt
        type: call
        call: oracle-retail.get-receipt
        with:
          po_number: '{{get-invoice.po_reference}}'
          vendor_id: '{{vendor_id}}'
      - name: flag-discrepancy
        type: call
        call: servicenow.create-task
        with:
          short_description: 'Invoice discrepancy: {{invoice_number}} vs GR {{get-goods-receipt.receipt_id}}'
          assigned_group: Accounts_Payable
          description: 'Invoice {{invoice_number}} amount: ${{get-invoice.total_amount}}. GR amount: ${{get-goods-receipt.received_value}}. Variance: ${{get-invoice.total_amount}} - ${{get-goods-receipt.received_value}}. Vendor: {{vendor_id}}.'
      - name: notify-finance
        type: call
        call: msteams.post-channel
        with:
          channel_id: accounts-payable
          text: 'Invoice reconciliation: {{invoice_number}} for vendor {{vendor_id}}. Invoice: ${{get-invoice.total_amount}}. GR: ${{get-goods-receipt.received_value}}. Task: {{flag-discrepancy.number}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://homedepot-s4.sap.com/sap/opu/odata/sap/MM_INVOICE_MAINT_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-retail
    baseUri: https://homedepot.retail.oracle.com/rgbu-rms-rse/api/v1
    authentication:
      type: bearer
      token: $secrets.oracle_retail_token
    resources:
    - name: receipts
      path: /purchase-orders/{{po_number}}/receipts
      inputParameters:
      - name: po_number
        in: path
      operations:
      - name: get-receipt
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://homedepot.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
Open in Framework → View in Fleet → supplier-invoice-reconciliation.yml

Retrieves the current credit balance and payment terms for a Pro Xtra customer account in Salesforce.

naftiko: '0.5'
info:
  label: Salesforce Pro Account Balance Lookup
  description: Retrieves the current credit balance and payment terms for a Pro Xtra customer account in Salesforce.
  tags:
  - pro-services
  - crm
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: pro-account
    port: 8080
    tools:
    - name: get-pro-balance
      description: Look up Pro customer account balance and credit terms.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: The Salesforce Pro account ID.
      call: salesforce.get-account
      with:
        id: '{{account_id}}'
      outputParameters:
      - name: credit_balance
        type: number
        mapping: $.Credit_Balance__c
      - name: payment_terms
        type: string
        mapping: $.Payment_Terms__c
      - name: account_status
        type: string
        mapping: $.Account_Status__c
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://homedepot.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /sobjects/Account/{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-account
        method: GET
Open in Framework → View in Fleet → salesforce-pro-account-balance-lookup.yml

Retrieves the current planogram assignment for a product at a specific store from Oracle Retail, returning bay, shelf, and facing count.

naftiko: '0.5'
info:
  label: Oracle Retail Planogram Lookup
  description: Retrieves the current planogram assignment for a product at a specific store from Oracle Retail, returning bay, shelf, and facing count.
  tags:
  - merchandising
  - planogram
  - oracle-cloud
capability:
  exposes:
  - type: mcp
    namespace: planogram
    port: 8080
    tools:
    - name: get-planogram
      description: Look up planogram placement for a product at a store.
      inputParameters:
      - name: sku
        in: body
        type: string
        description: The product SKU.
      - name: store_id
        in: body
        type: string
        description: The store number.
      call: oracle-retail.get-planogram
      with:
        sku: '{{sku}}'
        store: '{{store_id}}'
      outputParameters:
      - name: bay
        type: string
        mapping: $.planogram.bay
      - name: shelf
        type: string
        mapping: $.planogram.shelf
      - name: facings
        type: integer
        mapping: $.planogram.facings
  consumes:
  - type: http
    namespace: oracle-retail
    baseUri: https://homedepot.retail.oracle.com/rgbu-msm/api/v1
    authentication:
      type: bearer
      token: $secrets.oracle_retail_token
    resources:
    - name: planograms
      path: /stores/{{store}}/planograms/{{sku}}
      inputParameters:
      - name: store
        in: path
      - name: sku
        in: path
      operations:
      - name: get-planogram
        method: GET
Open in Framework → View in Fleet → oracle-retail-planogram-lookup.yml

When a customer purchases a major appliance, checks delivery slot availability, creates the delivery order in SAP, schedules the installation crew in ServiceNow, and sends confirmation via MailChimp transactional email.

naftiko: '0.5'
info:
  label: Appliance Delivery Scheduling
  description: When a customer purchases a major appliance, checks delivery slot availability, creates the delivery order in SAP, schedules the installation crew in ServiceNow, and sends confirmation via MailChimp transactional email.
  tags:
  - fulfillment
  - delivery
  - sap
  - servicenow
  - mailchimp
  - appliances
capability:
  exposes:
  - type: mcp
    namespace: appliance-delivery
    port: 8080
    tools:
    - name: schedule-appliance-delivery
      description: Given an order ID, customer details, and preferred date, schedule delivery, book installation, and confirm with the customer.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The appliance order ID.
      - name: customer_email
        in: body
        type: string
        description: The customer email address.
      - name: customer_address
        in: body
        type: string
        description: The delivery address.
      - name: preferred_date
        in: body
        type: string
        description: Preferred delivery date in YYYY-MM-DD format.
      - name: appliance_type
        in: body
        type: string
        description: Type of appliance (e.g. WASHER, REFRIGERATOR, DISHWASHER).
      steps:
      - name: check-availability
        type: call
        call: delivery-svc.check-slots
        with:
          address: '{{customer_address}}'
          date: '{{preferred_date}}'
          type: '{{appliance_type}}'
      - name: create-delivery-order
        type: call
        call: sap-commerce.create-delivery
        with:
          order_id: '{{order_id}}'
          delivery_date: '{{check-availability.confirmed_date}}'
          time_window: '{{check-availability.time_window}}'
          address: '{{customer_address}}'
      - name: schedule-installation
        type: call
        call: servicenow.create-work-order
        with:
          short_description: 'Appliance install: {{appliance_type}} - Order {{order_id}}'
          scheduled_date: '{{check-availability.confirmed_date}}'
          assigned_group: Appliance_Install_Crew
          description: 'Install {{appliance_type}} at {{customer_address}}. Delivery order: {{create-delivery-order.delivery_id}}.'
      - name: send-confirmation
        type: call
        call: mailchimp.send-transactional
        with:
          template_name: appliance_delivery_confirm
          to_email: '{{customer_email}}'
          merge_vars:
            order_id: '{{order_id}}'
            delivery_date: '{{check-availability.confirmed_date}}'
            time_window: '{{check-availability.time_window}}'
            appliance_type: '{{appliance_type}}'
  consumes:
  - type: http
    namespace: delivery-svc
    baseUri: https://delivery.homedepot.com/api/v2
    authentication:
      type: bearer
      token: $secrets.delivery_svc_token
    resources:
    - name: slots
      path: /availability
      operations:
      - name: check-slots
        method: POST
  - type: http
    namespace: sap-commerce
    baseUri: https://homedepot-commerce.sap.com/occ/v2/homedepot
    authentication:
      type: bearer
      token: $secrets.sap_commerce_token
    resources:
    - name: deliveries
      path: /orders/{{order_id}}/delivery
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: create-delivery
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://homedepot.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: mailchimp
    baseUri: https://mandrillapp.com/api/1.0
    authentication:
      type: apiKey
      key: $secrets.mailchimp_transactional_key
    resources:
    - name: transactional
      path: /messages/send-template
      operations:
      - name: send-transactional
        method: POST
Open in Framework → View in Fleet → appliance-delivery-scheduling.yml

When a GitHub deployment completes, fetches the deployment details, checks Datadog for post-deploy error spikes, and posts the deployment summary to the engineering Microsoft Teams channel.

naftiko: '0.5'
info:
  label: GitHub Deployment Notification
  description: When a GitHub deployment completes, fetches the deployment details, checks Datadog for post-deploy error spikes, and posts the deployment summary to the engineering Microsoft Teams channel.
  tags:
  - development
  - ci-cd
  - github
  - datadog
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: deploy-notify
    port: 8080
    tools:
    - name: notify-deployment
      description: Given a GitHub repo and deployment ID, fetch details, check for error spikes, and notify the team.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: The GitHub repository (org/repo format).
      - name: deployment_id
        in: body
        type: string
        description: The GitHub deployment ID.
      - name: service_name
        in: body
        type: string
        description: The Datadog service name to monitor post-deploy.
      steps:
      - name: get-deployment
        type: call
        call: github.get-deployment
        with:
          repo: '{{repo}}'
          deployment_id: '{{deployment_id}}'
      - name: check-errors
        type: call
        call: datadog.query-metrics
        with:
          service_name: '{{service_name}}'
      - name: notify-team
        type: call
        call: msteams.post-channel
        with:
          channel_id: engineering-deploys
          text: 'Deployment {{deployment_id}} to {{get-deployment.environment}}: {{get-deployment.status}}. Ref: {{get-deployment.ref}}. Creator: {{get-deployment.creator}}. Post-deploy error rate: {{check-errors.error_rate}}%.'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com/repos
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: deployments
      path: /{{repo}}/deployments/{{deployment_id}}
      inputParameters:
      - name: repo
        in: path
      - name: deployment_id
        in: path
      operations:
      - name: get-deployment
        method: GET
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apiKey
      key: $secrets.datadog_api_key
    inputParameters:
    - name: DD-APPLICATION-KEY
      in: header
      value: $secrets.datadog_app_key
    resources:
    - name: metrics
      path: /query
      operations:
      - name: query-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
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel
        method: POST
Open in Framework → View in Fleet → github-deployment-notification.yml

Retrieves the current week schedule for a store associate from Workday, returning shift times, department, and manager.

naftiko: '0.5'
info:
  label: Workday Associate Schedule Lookup
  description: Retrieves the current week schedule for a store associate from Workday, returning shift times, department, and manager.
  tags:
  - hr
  - scheduling
  - workday
capability:
  exposes:
  - type: mcp
    namespace: associate-schedule
    port: 8080
    tools:
    - name: get-schedule
      description: Look up a store associate's weekly schedule.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The Workday employee ID.
      call: workday.get-schedule
      with:
        worker_id: '{{employee_id}}'
      outputParameters:
      - name: shifts
        type: array
        mapping: $.schedule.shifts
      - name: department
        type: string
        mapping: $.schedule.department
      - name: manager
        type: string
        mapping: $.schedule.manager
  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: /workers/{{worker_id}}/schedule
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-schedule
        method: GET
Open in Framework → View in Fleet → workday-associate-schedule-lookup.yml

Retrieves the current sprint status for the e-commerce development team in Jira, returning sprint goal, completion percentage, and blockers.

naftiko: '0.5'
info:
  label: Jira E-Commerce Sprint Status
  description: Retrieves the current sprint status for the e-commerce development team in Jira, returning sprint goal, completion percentage, and blockers.
  tags:
  - engineering
  - e-commerce
  - jira
capability:
  exposes:
  - type: mcp
    namespace: ecommerce-sprints
    port: 8080
    tools:
    - name: get-sprint-status
      description: Get current sprint status for e-commerce team.
      inputParameters:
      - name: board_id
        in: body
        type: string
        description: The Jira board ID.
      call: jira.get-active-sprint
      with:
        board: '{{board_id}}'
      outputParameters:
      - name: sprint_name
        type: string
        mapping: $.values[0].name
      - name: goal
        type: string
        mapping: $.values[0].goal
      - name: start_date
        type: string
        mapping: $.values[0].startDate
  consumes:
  - type: http
    namespace: jira
    baseUri: https://homedepot.atlassian.net/rest/agile/1.0
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: sprints
      path: /board/{{board}}/sprint?state=active
      inputParameters:
      - name: board
        in: path
      operations:
      - name: get-active-sprint
        method: GET
Open in Framework → View in Fleet → jira-e-commerce-sprint-status.yml

Enrolls customers in the Pro Xtra loyalty program by creating the profile in Salesforce, provisioning the loyalty account, and sending a welcome email via SendGrid.

naftiko: '0.5'
info:
  label: Customer Loyalty Program Enrollment Orchestrator
  description: Enrolls customers in the Pro Xtra loyalty program by creating the profile in Salesforce, provisioning the loyalty account, and sending a welcome email via SendGrid.
  tags:
  - loyalty
  - pro-services
  - salesforce
  - sendgrid
capability:
  exposes:
  - type: mcp
    namespace: loyalty-enrollment
    port: 8080
    tools:
    - name: enroll-loyalty-member
      description: Enroll a new customer in the Pro Xtra loyalty program.
      inputParameters:
      - name: customer_name
        in: body
        type: string
        description: Customer full name.
      - name: email
        in: body
        type: string
        description: Customer email.
      - name: business_name
        in: body
        type: string
        description: Business name.
      - name: trade
        in: body
        type: string
        description: Trade specialty.
      steps:
      - name: create-sf-contact
        type: call
        call: salesforce.create-contact
        with:
          name: '{{customer_name}}'
          email: '{{email}}'
          company: '{{business_name}}'
          trade: '{{trade}}'
      - name: create-loyalty-account
        type: call
        call: loyalty-platform.create-member
        with:
          contact_id: '{{create-sf-contact.id}}'
          program: pro_xtra
          tier: silver
      - name: send-welcome
        type: call
        call: sendgrid.send-email
        with:
          to: '{{email}}'
          template_id: pro_xtra_welcome
          dynamic_data:
            name: '{{customer_name}}'
            member_id: '{{create-loyalty-account.member_id}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://homedepot.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: loyalty-platform
    baseUri: https://loyalty.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.loyalty_token
    resources:
    - name: members
      path: /members
      operations:
      - name: create-member
        method: POST
  - type: http
    namespace: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: mail
      path: /mail/send
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → customer-loyalty-program-enrollment-orchestrator.yml

Coordinates seasonal garden center resets by updating planograms in Oracle Retail, generating purchase orders in SAP, and notifying store teams via Microsoft Teams.

naftiko: '0.5'
info:
  label: Garden Center Seasonal Reset Orchestrator
  description: Coordinates seasonal garden center resets by updating planograms in Oracle Retail, generating purchase orders in SAP, and notifying store teams via Microsoft Teams.
  tags:
  - merchandising
  - garden
  - oracle-cloud
  - sap
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: garden-reset
    port: 8080
    tools:
    - name: execute-seasonal-reset
      description: Execute a seasonal garden center reset.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: The store number.
      - name: season
        in: body
        type: string
        description: The season (spring, summer, fall, holiday).
      steps:
      - name: update-planogram
        type: call
        call: oracle-retail.update-planogram
        with:
          store: '{{store_id}}'
          department: garden
          template: garden_{{season}}
      - name: generate-po
        type: call
        call: sap.create-purchase-order
        with:
          store: '{{store_id}}'
          category: garden_seasonal_{{season}}
      - name: notify-store
        type: call
        call: msteams.send-message
        with:
          channel_id: store-{{store_id}}-merchandising
          text: Garden center {{season}} reset initiated. New planogram deployed. PO {{generate-po.po_number}} created for seasonal inventory.
  consumes:
  - type: http
    namespace: oracle-retail
    baseUri: https://homedepot.retail.oracle.com/rgbu-msm/api/v1
    authentication:
      type: bearer
      token: $secrets.oracle_retail_token
    resources:
    - name: planograms
      path: /stores/{{store}}/planograms/{{department}}
      inputParameters:
      - name: store
        in: path
      - name: department
        in: path
      operations:
      - name: update-planogram
        method: PUT
  - type: http
    namespace: sap
    baseUri: https://homedepot-s4.sap.com/sap/opu/odata/sap/ZMM_PO_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: purchase-orders
      path: /PurchaseOrderSet
      operations:
      - name: create-purchase-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
Open in Framework → View in Fleet → garden-center-seasonal-reset-orchestrator.yml

When Oracle Retail detects stock falling below reorder point, creates a purchase requisition in SAP, notifies the category merchant via Microsoft Teams, and logs the auto-reorder event in Confluence.

naftiko: '0.5'
info:
  label: Inventory Reorder Automation
  description: When Oracle Retail detects stock falling below reorder point, creates a purchase requisition in SAP, notifies the category merchant via Microsoft Teams, and logs the auto-reorder event in Confluence.
  tags:
  - inventory
  - supply-chain
  - oracle-cloud
  - sap
  - microsoft-teams
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: auto-reorder
    port: 8080
    tools:
    - name: trigger-auto-reorder
      description: Given a SKU, store ID, and current on-hand quantity, create a purchase requisition and notify the merchant.
      inputParameters:
      - name: sku
        in: body
        type: string
        description: The product SKU that is low on stock.
      - name: store_id
        in: body
        type: string
        description: The store number where stock is low.
      - name: on_hand_qty
        in: body
        type: number
        description: The current on-hand quantity.
      - name: reorder_qty
        in: body
        type: number
        description: The recommended reorder quantity.
      - name: merchant_email
        in: body
        type: string
        description: The category merchant email.
      steps:
      - name: get-product
        type: call
        call: sap-commerce.get-product
        with:
          sku: '{{sku}}'
      - name: create-requisition
        type: call
        call: sap.create-requisition
        with:
          material: '{{sku}}'
          plant: Store_{{store_id}}
          quantity: '{{reorder_qty}}'
          description: 'Auto-reorder: {{get-product.product_name}} (on-hand: {{on_hand_qty}})'
      - name: notify-merchant
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{merchant_email}}'
          text: 'Auto-reorder triggered: {{get-product.product_name}} ({{sku}}) at Store #{{store_id}}. On-hand: {{on_hand_qty}}. Reorder qty: {{reorder_qty}}. Requisition: {{create-requisition.req_number}}.'
      - name: log-event
        type: call
        call: confluence.create-page
        with:
          space_key: INVENTORY
          title: 'Auto-Reorder: {{sku}} - Store #{{store_id}} - {{create-requisition.req_number}}'
          body: 'Product: {{get-product.product_name}}. On-hand: {{on_hand_qty}}. Reorder qty: {{reorder_qty}}. Requisition: {{create-requisition.req_number}}.'
  consumes:
  - type: http
    namespace: sap-commerce
    baseUri: https://homedepot-commerce.sap.com/occ/v2/homedepot
    authentication:
      type: bearer
      token: $secrets.sap_commerce_token
    resources:
    - name: products
      path: /products/{{sku}}
      inputParameters:
      - name: sku
        in: path
      operations:
      - name: get-product
        method: GET
  - type: http
    namespace: sap
    baseUri: https://homedepot-s4.sap.com/sap/opu/odata/sap/MM_PUR_REQ_MAINT_V2_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: 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: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://homedepot.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: pages
      path: /content
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → inventory-reorder-automation.yml

When a price match request comes in, retrieves the product price from SAP Commerce Cloud, fetches competitor pricing from Circana market data, and updates the price if the policy allows, logging the decision in Salesforce.

naftiko: '0.5'
info:
  label: Price Match Competitor Analysis
  description: When a price match request comes in, retrieves the product price from SAP Commerce Cloud, fetches competitor pricing from Circana market data, and updates the price if the policy allows, logging the decision in Salesforce.
  tags:
  - pricing
  - competitive-intelligence
  - sap
  - circana
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: price-matching
    port: 8080
    tools:
    - name: evaluate-price-match
      description: Given a SKU and competitor URL, fetch current pricing, validate competitor price, and process the match decision.
      inputParameters:
      - name: sku
        in: body
        type: string
        description: The product SKU.
      - name: competitor_name
        in: body
        type: string
        description: The competitor retailer name.
      - name: competitor_price
        in: body
        type: number
        description: The competitor advertised price.
      - name: customer_id
        in: body
        type: string
        description: The Salesforce customer ID requesting the match.
      steps:
      - name: get-current-price
        type: call
        call: sap-commerce.get-product
        with:
          sku: '{{sku}}'
      - name: get-market-data
        type: call
        call: circana.get-product-pricing
        with:
          sku: '{{sku}}'
          competitor: '{{competitor_name}}'
      - name: log-decision
        type: call
        call: salesforce.create-case
        with:
          subject: 'Price Match: {{sku}} vs {{competitor_name}}'
          description: 'SKU: {{sku}}. Our price: ${{get-current-price.price}}. Competitor ({{competitor_name}}): ${{competitor_price}}. Market avg: ${{get-market-data.market_avg}}. Customer: {{customer_id}}.'
          type: Price_Match
          account_id: '{{customer_id}}'
  consumes:
  - type: http
    namespace: sap-commerce
    baseUri: https://homedepot-commerce.sap.com/occ/v2/homedepot
    authentication:
      type: bearer
      token: $secrets.sap_commerce_token
    resources:
    - name: products
      path: /products/{{sku}}
      inputParameters:
      - name: sku
        in: path
      operations:
      - name: get-product
        method: GET
  - type: http
    namespace: circana
    baseUri: https://api.circana.com/v1
    authentication:
      type: bearer
      token: $secrets.circana_token
    resources:
    - name: pricing
      path: /products/{{sku}}/competitive-pricing
      inputParameters:
      - name: sku
        in: path
      operations:
      - name: get-product-pricing
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://homedepot.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
Open in Framework → View in Fleet → price-match-competitor-analysis.yml

Coordinates store remodel projects by creating a Jira project, generating a budget in SAP, and distributing the project plan via SharePoint.

naftiko: '0.5'
info:
  label: Store Remodel Project Coordinator
  description: Coordinates store remodel projects by creating a Jira project, generating a budget in SAP, and distributing the project plan via SharePoint.
  tags:
  - operations
  - store-remodel
  - jira
  - sap
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: store-remodel
    port: 8080
    tools:
    - name: initiate-remodel
      description: Initiate and coordinate a store remodel project.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: The store number.
      - name: remodel_type
        in: body
        type: string
        description: Remodel type (full, partial, department).
      - name: budget_amount
        in: body
        type: number
        description: Allocated budget.
      steps:
      - name: create-project
        type: call
        call: jira.create-project
        with:
          name: Store {{store_id}} Remodel - {{remodel_type}}
          key: REM{{store_id}}
          template: store_remodel
      - name: create-budget
        type: call
        call: sap.create-wbs
        with:
          project_name: Remodel_{{store_id}}
          budget: '{{budget_amount}}'
      - name: distribute-plan
        type: call
        call: sharepoint.upload-document
        with:
          site_id: store_operations
          folder_path: Remodels/Store_{{store_id}}
          file_name: remodel_plan_{{store_id}}.xlsx
  consumes:
  - type: http
    namespace: jira
    baseUri: https://homedepot.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: projects
      path: /project
      operations:
      - name: create-project
        method: POST
  - type: http
    namespace: sap
    baseUri: https://homedepot-s4.sap.com/sap/opu/odata/sap/ZPS_WBS_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: wbs
      path: /WBSElementSet
      operations:
      - name: create-wbs
        method: POST
  - 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
Open in Framework → View in Fleet → store-remodel-project-coordinator.yml

When a Buy Online Pick Up In Store order is picked and staged, updates the order status in SAP Commerce Cloud and sends a pickup-ready SMS via the customer notification service.

naftiko: '0.5'
info:
  label: BOPIS Ready Notification
  description: When a Buy Online Pick Up In Store order is picked and staged, updates the order status in SAP Commerce Cloud and sends a pickup-ready SMS via the customer notification service.
  tags:
  - e-commerce
  - bopis
  - sap
  - customer-notification
capability:
  exposes:
  - type: mcp
    namespace: bopis
    port: 8080
    tools:
    - name: notify-pickup-ready
      description: Given an order ID and customer phone number, update the order status to ready and send a pickup-ready SMS notification.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The BOPIS order ID.
      - name: customer_phone
        in: body
        type: string
        description: The customer phone number for SMS notification.
      - name: store_id
        in: body
        type: string
        description: The pickup store number.
      steps:
      - name: update-order-status
        type: call
        call: sap-commerce.update-order
        with:
          order_id: '{{order_id}}'
          status: READY_FOR_PICKUP
      - name: send-sms
        type: call
        call: notification-svc.send-sms
        with:
          phone: '{{customer_phone}}'
          message: 'Your Home Depot order {{order_id}} is ready for pickup at Store #{{store_id}}. Please bring your order confirmation and valid ID.'
  consumes:
  - type: http
    namespace: sap-commerce
    baseUri: https://homedepot-commerce.sap.com/occ/v2/homedepot
    authentication:
      type: bearer
      token: $secrets.sap_commerce_token
    resources:
    - name: orders
      path: /orders/{{order_id}}/status
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: update-order
        method: PUT
  - type: http
    namespace: notification-svc
    baseUri: https://notifications.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.notification_svc_token
    resources:
    - name: sms
      path: /sms/send
      operations:
      - name: send-sms
        method: POST
Open in Framework → View in Fleet → bopis-ready-notification.yml

Sets up a new vendor product by creating the item in SAP, syncing product content to the e-commerce platform, and notifying merchandising via Microsoft Teams.

naftiko: '0.5'
info:
  label: Vendor New Item Setup Pipeline
  description: Sets up a new vendor product by creating the item in SAP, syncing product content to the e-commerce platform, and notifying merchandising via Microsoft Teams.
  tags:
  - merchandising
  - vendor
  - sap
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: new-item-setup
    port: 8080
    tools:
    - name: setup-new-item
      description: Orchestrate new vendor item setup across systems.
      inputParameters:
      - name: vendor_id
        in: body
        type: string
        description: The vendor ID.
      - name: item_name
        in: body
        type: string
        description: Product name.
      - name: category
        in: body
        type: string
        description: Product category.
      - name: cost_price
        in: body
        type: number
        description: Vendor cost price.
      steps:
      - name: create-sap-material
        type: call
        call: sap.create-material
        with:
          vendor: '{{vendor_id}}'
          description: '{{item_name}}'
          category: '{{category}}'
          cost: '{{cost_price}}'
      - name: sync-to-ecommerce
        type: call
        call: sap-commerce.create-product
        with:
          sku: '{{create-sap-material.material_number}}'
          name: '{{item_name}}'
          category: '{{category}}'
      - name: notify-merchandising
        type: call
        call: msteams.send-message
        with:
          channel_id: merchandising-new-items
          text: 'New item setup: {{item_name}} (SKU: {{create-sap-material.material_number}}) from vendor {{vendor_id}}. Category: {{category}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://homedepot-s4.sap.com/sap/opu/odata/sap/ZMM_MATERIAL_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: materials
      path: /MaterialSet
      operations:
      - name: create-material
        method: POST
  - type: http
    namespace: sap-commerce
    baseUri: https://homedepot-commerce.sap.com/occ/v2/homedepot
    authentication:
      type: bearer
      token: $secrets.sap_commerce_token
    resources:
    - name: products
      path: /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: messages
      path: /teams/{{channel_id}}/channels/general/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → vendor-new-item-setup-pipeline.yml

Processes store property damage claims by creating a ServiceNow incident, documenting in SharePoint, and notifying the risk management team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Store Damage Claim Orchestrator
  description: Processes store property damage claims by creating a ServiceNow incident, documenting in SharePoint, and notifying the risk management team via Microsoft Teams.
  tags:
  - operations
  - risk
  - servicenow
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: damage-claims
    port: 8080
    tools:
    - name: file-damage-claim
      description: File and track a store property damage claim.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: The store number.
      - name: damage_description
        in: body
        type: string
        description: Description of the damage.
      - name: estimated_cost
        in: body
        type: number
        description: Estimated repair cost.
      steps:
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Property damage: Store {{store_id}}'
          description: '{{damage_description}}'
          category: property_damage
          estimated_cost: '{{estimated_cost}}'
      - name: create-documentation
        type: call
        call: sharepoint.create-folder
        with:
          site_id: risk_management
          folder_path: DamageClaims/Store_{{store_id}}/{{create-incident.number}}
      - name: notify-risk-team
        type: call
        call: msteams.send-message
        with:
          channel_id: risk-management
          text: 'Damage claim filed for Store {{store_id}}: {{damage_description}}. Estimated cost: ${{estimated_cost}}. Incident: {{create-incident.number}}.'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://homedepot.service-now.com/api/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: messages
      path: /teams/{{channel_id}}/channels/general/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → store-damage-claim-orchestrator.yml

Queries Snowflake for customer lifetime value metrics by customer segment, returning average CLV, purchase frequency, and retention rate.

naftiko: '0.5'
info:
  label: Snowflake Customer Lifetime Value Query
  description: Queries Snowflake for customer lifetime value metrics by customer segment, returning average CLV, purchase frequency, and retention rate.
  tags:
  - analytics
  - customer
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: clv-analytics
    port: 8080
    tools:
    - name: query-clv
      description: Query customer lifetime value by segment.
      inputParameters:
      - name: segment
        in: body
        type: string
        description: Customer segment (pro, diy, online).
      call: snowflake.execute-query
      with:
        statement: SELECT avg_clv, purchase_frequency, retention_rate FROM customer_clv WHERE segment = '{{segment}}'
      outputParameters:
      - name: results
        type: array
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://homedepot.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: execute-query
        method: POST
Open in Framework → View in Fleet → snowflake-customer-lifetime-value-query.yml

Fetches product data from SAP Commerce Cloud, retrieves marketing images from Amazon S3, publishes to Facebook Shops via Meta API, and updates Google Tag Manager with product feed events.

naftiko: '0.5'
info:
  label: Product Content Syndication
  description: Fetches product data from SAP Commerce Cloud, retrieves marketing images from Amazon S3, publishes to Facebook Shops via Meta API, and updates Google Tag Manager with product feed events.
  tags:
  - e-commerce
  - content-syndication
  - sap
  - amazon-s3
  - meta
  - google-tag-manager
capability:
  exposes:
  - type: mcp
    namespace: content-syndication
    port: 8080
    tools:
    - name: syndicate-product
      description: Given a SKU, pull product data and images, publish to social commerce channels, and update tracking.
      inputParameters:
      - name: sku
        in: body
        type: string
        description: The product SKU to syndicate.
      steps:
      - name: get-product
        type: call
        call: sap-commerce.get-product
        with:
          sku: '{{sku}}'
      - name: get-images
        type: call
        call: s3.get-presigned-url
        with:
          bucket: homedepot-product-images
          key: products/{{sku}}/hero.jpg
      - name: publish-to-shops
        type: call
        call: meta-catalog.create-product
        with:
          name: '{{get-product.product_name}}'
          price: '{{get-product.price}}'
          image_url: '{{get-images.presigned_url}}'
          description: '{{get-product.description}}'
          sku: '{{sku}}'
      - name: update-gtm
        type: call
        call: gtm.push-event
        with:
          event: product_syndicated
          sku: '{{sku}}'
          channel: facebook_shops
          catalog_id: '{{publish-to-shops.catalog_product_id}}'
  consumes:
  - type: http
    namespace: sap-commerce
    baseUri: https://homedepot-commerce.sap.com/occ/v2/homedepot
    authentication:
      type: bearer
      token: $secrets.sap_commerce_token
    resources:
    - name: products
      path: /products/{{sku}}
      inputParameters:
      - name: sku
        in: path
      operations:
      - name: get-product
        method: GET
  - type: http
    namespace: s3
    baseUri: https://s3.amazonaws.com
    authentication:
      type: aws
      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: get-presigned-url
        method: GET
  - type: http
    namespace: meta-catalog
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.meta_ads_token
    resources:
    - name: catalog-products
      path: /{{catalog_id}}/products
      inputParameters:
      - name: catalog_id
        in: path
      operations:
      - name: create-product
        method: POST
  - type: http
    namespace: gtm
    baseUri: https://www.googletagmanager.com/api/v2
    authentication:
      type: bearer
      token: $secrets.gtm_token
    resources:
    - name: events
      path: /accounts/{{account_id}}/containers/{{container_id}}/events
      inputParameters:
      - name: account_id
        in: path
      - name: container_id
        in: path
      operations:
      - name: push-event
        method: POST
Open in Framework → View in Fleet → product-content-syndication.yml

Generates a quarterly Pro Xtra rewards statement by pulling purchase history from Teradata, reward points from Salesforce, and sending a branded statement PDF via MailChimp transactional email.

naftiko: '0.5'
info:
  label: Contractor Pro Rewards Statement
  description: Generates a quarterly Pro Xtra rewards statement by pulling purchase history from Teradata, reward points from Salesforce, and sending a branded statement PDF via MailChimp transactional email.
  tags:
  - loyalty
  - pro-xtra
  - teradata
  - salesforce
  - mailchimp
capability:
  exposes:
  - type: mcp
    namespace: pro-rewards
    port: 8080
    tools:
    - name: generate-rewards-statement
      description: Given a Pro customer ID and quarter, compile purchase and rewards data and send the statement.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The Salesforce Pro Xtra customer ID.
      - name: quarter
        in: body
        type: string
        description: The statement quarter (e.g. Q1_2026).
      - name: customer_email
        in: body
        type: string
        description: The customer email for statement delivery.
      steps:
      - name: get-purchases
        type: call
        call: teradata.run-query
        with:
          query: SELECT SUM(net_sales) as total_spend, COUNT(*) as txn_count, SUM(rewards_earned) as points_earned FROM pro_transactions WHERE customer_id='{{customer_id}}' AND fiscal_quarter='{{quarter}}'
      - name: get-rewards-balance
        type: call
        call: salesforce.get-account
        with:
          account_id: '{{customer_id}}'
      - name: send-statement
        type: call
        call: mailchimp.send-transactional
        with:
          template_name: pro_xtra_statement
          to_email: '{{customer_email}}'
          merge_vars:
            customer_name: '{{get-rewards-balance.company_name}}'
            quarter: '{{quarter}}'
            total_spend: '{{get-purchases.total_spend}}'
            txn_count: '{{get-purchases.txn_count}}'
            points_earned: '{{get-purchases.points_earned}}'
            points_balance: '{{get-rewards-balance.pro_tier}}'
  consumes:
  - type: http
    namespace: teradata
    baseUri: https://teradata.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.teradata_token
    resources:
    - name: queries
      path: /queries
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://homedepot.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: mailchimp
    baseUri: https://mandrillapp.com/api/1.0
    authentication:
      type: apiKey
      key: $secrets.mailchimp_transactional_key
    resources:
    - name: transactional
      path: /messages/send-template
      operations:
      - name: send-transactional
        method: POST
Open in Framework → View in Fleet → contractor-pro-rewards-statement.yml

Responds to store HVAC emergencies by pulling BMS alerts, creating an urgent ServiceNow work order, and dispatching the nearest HVAC technician via field service.

naftiko: '0.5'
info:
  label: Store HVAC Emergency Response Orchestrator
  description: Responds to store HVAC emergencies by pulling BMS alerts, creating an urgent ServiceNow work order, and dispatching the nearest HVAC technician via field service.
  tags:
  - facilities
  - emergency
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: hvac-emergency
    port: 8080
    tools:
    - name: respond-hvac-emergency
      description: Respond to a store HVAC emergency.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: The store number.
      - name: alert_type
        in: body
        type: string
        description: HVAC alert type (no_cooling, no_heating, refrigerant_leak).
      steps:
      - name: get-bms-data
        type: call
        call: bms.get-hvac-status
        with:
          facility: store_{{store_id}}
      - name: create-urgent-wo
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'HVAC Emergency: Store {{store_id}} - {{alert_type}}'
          urgency: '1'
          category: facilities
          description: 'Current temp: {{get-bms-data.current_temp}}F. Set point: {{get-bms-data.set_point}}F. Alert: {{alert_type}}.'
      - name: dispatch-technician
        type: call
        call: field-service.dispatch
        with:
          store_id: '{{store_id}}'
          service_type: hvac_emergency
          reference: '{{create-urgent-wo.number}}'
  consumes:
  - type: http
    namespace: bms
    baseUri: https://bms.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.bms_token
    resources:
    - name: hvac
      path: /facilities/{{facility}}/hvac/status
      inputParameters:
      - name: facility
        in: path
      operations:
      - name: get-hvac-status
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://homedepot.service-now.com/api/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: field-service
    baseUri: https://fieldservice.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.field_service_token
    resources:
    - name: dispatch
      path: /dispatch
      operations:
      - name: dispatch
        method: POST
Open in Framework → View in Fleet → store-hvac-emergency-response-orchestrator.yml

Pulls clearance candidates from Oracle Retail based on aging inventory, calculates optimal markdown percentage via the pricing engine, updates SAP Commerce Cloud pricing, and logs the markdown in Confluence for merchant review.

naftiko: '0.5'
info:
  label: Merchandise Markdown Processor
  description: Pulls clearance candidates from Oracle Retail based on aging inventory, calculates optimal markdown percentage via the pricing engine, updates SAP Commerce Cloud pricing, and logs the markdown in Confluence for merchant review.
  tags:
  - pricing
  - merchandising
  - oracle-cloud
  - sap
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: markdown-processor
    port: 8080
    tools:
    - name: process-markdowns
      description: Given a department and aging threshold, identify candidates, calculate markdowns, update prices, and document.
      inputParameters:
      - name: department
        in: body
        type: string
        description: The department to evaluate for markdowns.
      - name: aging_days
        in: body
        type: number
        description: The minimum days on shelf to qualify for markdown.
      - name: max_markdown_pct
        in: body
        type: number
        description: The maximum markdown percentage allowed.
      steps:
      - name: get-aging-inventory
        type: call
        call: oracle-retail.get-aging-items
        with:
          department: '{{department}}'
          min_days: '{{aging_days}}'
      - name: calculate-markdown
        type: call
        call: pricing-engine.calculate-markdown
        with:
          items: '{{get-aging-inventory.items}}'
          max_markdown: '{{max_markdown_pct}}'
      - name: update-prices
        type: call
        call: sap-commerce.bulk-price-update
        with:
          price_updates: '{{calculate-markdown.recommendations}}'
      - name: log-markdowns
        type: call
        call: confluence.create-page
        with:
          space_key: MERCH
          title: 'Markdowns: {{department}} - Aging >{{aging_days}} days'
          body: 'Items marked down: {{calculate-markdown.item_count}}. Average markdown: {{calculate-markdown.avg_markdown_pct}}%. Total inventory value reduced: ${{calculate-markdown.total_value_reduction}}. Updated in SAP Commerce: {{update-prices.success_count}} SKUs.'
  consumes:
  - type: http
    namespace: oracle-retail
    baseUri: https://homedepot.retail.oracle.com/rgbu-rms-rse/api/v1
    authentication:
      type: bearer
      token: $secrets.oracle_retail_token
    resources:
    - name: aging
      path: /departments/{{department}}/aging-inventory
      inputParameters:
      - name: department
        in: path
      operations:
      - name: get-aging-items
        method: GET
  - type: http
    namespace: pricing-engine
    baseUri: https://pricing.homedepot.com/api/v1
    authentication:
      type: bearer
      token: $secrets.pricing_engine_token
    resources:
    - name: markdowns
      path: /markdowns/calculate
      operations:
      - name: calculate-markdown
        method: POST
  - type: http
    namespace: sap-commerce
    baseUri: https://homedepot-commerce.sap.com/occ/v2/homedepot
    authentication:
      type: bearer
      token: $secrets.sap_commerce_token
    resources:
    - name: prices
      path: /products/prices/bulk
      operations:
      - name: bulk-price-update
        method: PUT
  - type: http
    namespace: confluence
    baseUri: https://homedepot.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: pages
      path: /content
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → merchandise-markdown-processor.yml

Handles website performance issues by pulling metrics from Datadog, checking CDN status in Cloudflare, and creating an incident in PagerDuty.

naftiko: '0.5'
info:
  label: Website Performance Degradation Handler
  description: Handles website performance issues by pulling metrics from Datadog, checking CDN status in Cloudflare, and creating an incident in PagerDuty.
  tags:
  - e-commerce
  - performance
  - datadog
  - cloudflare
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: web-performance
    port: 8080
    tools:
    - name: handle-performance-issue
      description: Respond to website performance degradation.
      inputParameters:
      - name: service_name
        in: body
        type: string
        description: The affected service name.
      - name: threshold_breach
        in: body
        type: string
        description: Description of the threshold breach.
      steps:
      - name: get-metrics
        type: call
        call: datadog.get-service-metrics
        with:
          service: '{{service_name}}'
      - name: check-cdn
        type: call
        call: cloudflare.get-zone-analytics
        with:
          zone: homedepot.com
      - name: create-incident
        type: call
        call: pagerduty.create-incident
        with:
          service_id: ecommerce_platform
          title: 'Performance degradation: {{service_name}} - {{threshold_breach}}'
          details: 'P99 latency: {{get-metrics.p99_latency}}ms. Error rate: {{get-metrics.error_rate}}%. CDN cache hit ratio: {{check-cdn.cache_hit_ratio}}%.'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apiKey
      key: $secrets.datadog_api_key
    resources:
    - name: metrics
      path: /metrics/query?query=avg:trace.{{service}}.request.duration
      inputParameters:
      - name: service
        in: query
      operations:
      - name: get-service-metrics
        method: GET
  - type: http
    namespace: cloudflare
    baseUri: https://api.cloudflare.com/client/v4
    authentication:
      type: bearer
      token: $secrets.cloudflare_token
    resources:
    - name: analytics
      path: /zones/{{zone}}/analytics/dashboard
      inputParameters:
      - name: zone
        in: path
      operations:
      - name: get-zone-analytics
        method: GET
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: incidents
      path: /incidents
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → website-performance-degradation-handler.yml

Processes online order returns by validating the return in Oracle Retail, issuing store credit in SAP, and sending confirmation via SendGrid email.

naftiko: '0.5'
info:
  label: Online Return to Store Credit Pipeline
  description: Processes online order returns by validating the return in Oracle Retail, issuing store credit in SAP, and sending confirmation via SendGrid email.
  tags:
  - e-commerce
  - returns
  - oracle-cloud
  - sap
  - sendgrid
capability:
  exposes:
  - type: mcp
    namespace: online-returns
    port: 8080
    tools:
    - name: process-online-return
      description: Process an online return and issue store credit.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The original order ID.
      - name: return_sku
        in: body
        type: string
        description: SKU being returned.
      - name: customer_email
        in: body
        type: string
        description: Customer email.
      steps:
      - name: validate-return
        type: call
        call: oracle-retail.validate-return
        with:
          order_id: '{{order_id}}'
          sku: '{{return_sku}}'
      - name: issue-credit
        type: call
        call: sap.create-credit-memo
        with:
          order_ref: '{{order_id}}'
          amount: '{{validate-return.refund_amount}}'
      - name: send-confirmation
        type: call
        call: sendgrid.send-email
        with:
          to: '{{customer_email}}'
          template_id: return_confirmation
          dynamic_data:
            order_id: '{{order_id}}'
            credit_amount: '{{validate-return.refund_amount}}'
  consumes:
  - type: http
    namespace: oracle-retail
    baseUri: https://homedepot.retail.oracle.com/rgbu-rms-rse/api/v1
    authentication:
      type: bearer
      token: $secrets.oracle_retail_token
    resources:
    - name: returns
      path: /returns/validate
      operations:
      - name: validate-return
        method: POST
  - type: http
    namespace: sap
    baseUri: https://homedepot-s4.sap.com/sap/opu/odata/sap/ZFI_CREDIT_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: credits
      path: /CreditMemoSet
      operations:
      - name: create-credit-memo
        method: POST
  - type: http
    namespace: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: mail
      path: /mail/send
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → online-return-to-store-credit-pipeline.yml

Posts employer brand content to LinkedIn, tracks engagement via LinkedIn Analytics, cross-references with career page traffic in Google Analytics, and summarizes results in a Confluence page for the talent acquisition team.

naftiko: '0.5'
info:
  label: LinkedIn Employer Brand Campaign
  description: Posts employer brand content to LinkedIn, tracks engagement via LinkedIn Analytics, cross-references with career page traffic in Google Analytics, and summarizes results in a Confluence page for the talent acquisition team.
  tags:
  - hr
  - employer-brand
  - linkedin
  - google-analytics
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: employer-brand
    port: 8080
    tools:
    - name: run-employer-brand-campaign
      description: Given post content and tracking parameters, publish to LinkedIn, monitor engagement, pull career page analytics, and summarize.
      inputParameters:
      - name: post_content
        in: body
        type: string
        description: The LinkedIn post content.
      - name: campaign_name
        in: body
        type: string
        description: The internal campaign name for tracking.
      steps:
      - name: publish-post
        type: call
        call: linkedin.create-post
        with:
          text: '{{post_content}}'
          visibility: PUBLIC
      - name: get-engagement
        type: call
        call: linkedin.get-post-stats
        with:
          post_id: '{{publish-post.id}}'
      - name: get-career-traffic
        type: call
        call: ga.run-report
        with:
          page_path: /careers
          start_date: '2026-03-20'
          end_date: '2026-03-27'
      - name: publish-summary
        type: call
        call: confluence.create-page
        with:
          space_key: TALENT
          title: 'Employer Brand: {{campaign_name}}'
          body: 'LinkedIn post: {{publish-post.id}}. Impressions: {{get-engagement.impressions}}. Clicks: {{get-engagement.clicks}}. Career page views: {{get-career-traffic.page_views}}. Bounce rate: {{get-career-traffic.bounce_rate}}.'
  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
    - name: stats
      path: /socialActions/{{post_id}}
      inputParameters:
      - name: post_id
        in: path
      operations:
      - name: get-post-stats
        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: confluence
    baseUri: https://homedepot.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: pages
      path: /content
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → linkedin-employer-brand-campaign.yml

Triggers a GitHub Actions deployment workflow for an IKEA digital application and returns the run status.

naftiko: '0.5'
info:
  label: GitHub Actions Build Pipeline Trigger
  description: Triggers a GitHub Actions deployment workflow for an IKEA digital application and returns the run status.
  tags:
  - it-operations
  - cicd
  - github-actions
capability:
  exposes:
  - type: mcp
    namespace: deployments
    port: 8080
    tools:
    - name: trigger-deployment
      description: Trigger a GitHub Actions deployment workflow.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: GitHub repository (org/repo).
      - name: workflow_id
        in: body
        type: string
        description: Workflow file name or ID.
      - name: ref
        in: body
        type: string
        description: Git ref to deploy.
      call: github.trigger-workflow
      with:
        repo: '{{repo}}'
        workflow_id: '{{workflow_id}}'
        ref: '{{ref}}'
  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_id}}/dispatches
      inputParameters:
      - name: repo
        in: path
      - name: workflow_id
        in: path
      operations:
      - name: trigger-workflow
        method: POST
Open in Framework → View in Fleet → github-actions-build-pipeline-trigger.yml

Assigns a Pluralsight learning path to an IKEA co-worker and notifies them via Microsoft Teams.

naftiko: '0.5'
info:
  label: Pluralsight Learning Path Assigner
  description: Assigns a Pluralsight learning path to an IKEA co-worker and notifies them via Microsoft Teams.
  tags:
  - hr
  - training
  - pluralsight
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: training
    port: 8080
    tools:
    - name: assign-training
      description: Assign a Pluralsight learning path and notify the co-worker.
      inputParameters:
      - name: employee_email
        in: body
        type: string
        description: Co-worker email address.
      - name: channel_id
        in: body
        type: string
        description: Pluralsight channel ID.
      steps:
      - name: assign-channel
        type: call
        call: pluralsight.assign-channel
        with:
          email: '{{employee_email}}'
          channel_id: '{{channel_id}}'
      - name: notify
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{employee_email}}'
          text: 'You have a new training assignment on Pluralsight. Start learning: {{assign-channel.channel_url}}'
  consumes:
  - type: http
    namespace: pluralsight
    baseUri: https://api.pluralsight.com/api/v1
    authentication:
      type: bearer
      token: $secrets.pluralsight_token
    resources:
    - name: channels
      path: /channels/{{channel_id}}/assignments
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: assign-channel
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → pluralsight-learning-path-assigner.yml

Processes a damaged flat-pack claim by looking up the order in SAP, creating a returns case in ServiceNow, checking replacement availability, and scheduling a new delivery or store pickup.

naftiko: '0.5'
info:
  label: Flat Pack Damage Claim Orchestrator
  description: Processes a damaged flat-pack claim by looking up the order in SAP, creating a returns case in ServiceNow, checking replacement availability, and scheduling a new delivery or store pickup.
  tags:
  - customer-service
  - retail
  - sap
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: returns
    port: 8080
    tools:
    - name: process-damage-claim
      description: 'Orchestrate flat-pack damage claim: lookup order, create case, check replacement stock, and schedule.'
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The original order identifier.
      - name: article_number
        in: body
        type: string
        description: The damaged article number.
      - name: damage_description
        in: body
        type: string
        description: Description of the damage.
      steps:
      - name: get-order
        type: call
        call: sap.get-order-details
        with:
          order_id: '{{order_id}}'
      - name: create-claim
        type: call
        call: servicenow.create-case
        with:
          category: damage_claim
          short_description: 'Damaged item: {{article_number}} from order {{order_id}}'
          description: '{{damage_description}}'
      - name: check-replacement
        type: call
        call: sap.check-availability
        with:
          article: '{{article_number}}'
          store: '{{get-order.fulfillment_store}}'
      - name: schedule-replacement
        type: call
        call: sap.create-replacement-order
        with:
          original_order: '{{order_id}}'
          article: '{{article_number}}'
          store: '{{get-order.fulfillment_store}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-sap.hana.cloud/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: orders
      path: /orders/{{order_id}}
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-order-details
        method: GET
    - name: availability
      path: /inventory/availability
      operations:
      - name: check-availability
        method: GET
    - name: replacements
      path: /orders/replacements
      operations:
      - name: create-replacement-order
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://ikea.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: cases
      path: /table/sn_customerservice_case
      operations:
      - name: create-case
        method: POST
Open in Framework → View in Fleet → flat-pack-damage-claim-orchestrator.yml

When a new lead is captured in HubSpot from IKEA's business sales division, creates a corresponding Salesforce opportunity and notifies the sales team.

naftiko: '0.5'
info:
  label: HubSpot Customer Lead Sync
  description: When a new lead is captured in HubSpot from IKEA's business sales division, creates a corresponding Salesforce opportunity and notifies the sales team.
  tags:
  - sales
  - marketing
  - hubspot
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: lead-sync
    port: 8080
    tools:
    - name: sync-lead
      description: Sync a HubSpot lead to a Salesforce opportunity.
      inputParameters:
      - name: contact_id
        in: body
        type: string
        description: HubSpot contact ID.
      steps:
      - name: get-lead
        type: call
        call: hubspot.get-contact
        with:
          contact_id: '{{contact_id}}'
      - name: create-opp
        type: call
        call: salesforce.create-opportunity
        with:
          name: 'Business inquiry: {{get-lead.company}}'
          amount: '{{get-lead.estimated_value}}'
          stage: Qualification
  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/{{contact_id}}
      inputParameters:
      - name: contact_id
        in: path
      operations:
      - name: get-contact
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://ikea.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
Open in Framework → View in Fleet → hubspot-customer-lead-sync.yml

Retrieves textile material composition data from SAP for regulatory labeling compliance, returning fabric percentages, country of origin, and care instructions.

naftiko: '0.5'
info:
  label: SAP Textile Material Composition Lookup
  description: Retrieves textile material composition data from SAP for regulatory labeling compliance, returning fabric percentages, country of origin, and care instructions.
  tags:
  - compliance
  - product
  - sap
capability:
  exposes:
  - type: mcp
    namespace: product-compliance
    port: 8080
    tools:
    - name: get-textile-composition
      description: Look up textile composition from SAP for labeling compliance. Returns fabric mix and care instructions.
      inputParameters:
      - name: article_number
        in: body
        type: string
        description: The article number.
      call: sap.get-material-composition
      with:
        article: '{{article_number}}'
      outputParameters:
      - name: composition
        type: array
        mapping: $.materials
      - name: country_of_origin
        type: string
        mapping: $.countryOfOrigin
      - name: care_instructions
        type: string
        mapping: $.careInstructions
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-sap.hana.cloud/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: materials
      path: /product-management/articles/{{article}}/composition
      inputParameters:
      - name: article
        in: path
      operations:
      - name: get-material-composition
        method: GET
Open in Framework → View in Fleet → sap-textile-material-composition-lookup.yml

Creates a meeting on a co-worker's Outlook calendar and returns the Teams meeting link.

naftiko: '0.5'
info:
  label: Microsoft Outlook Meeting Scheduler
  description: Creates a meeting on a co-worker's Outlook calendar and returns the Teams meeting link.
  tags:
  - communications
  - scheduling
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: meeting-scheduler
    port: 8080
    tools:
    - name: schedule-meeting
      description: Create a meeting on a co-worker's Outlook calendar.
      inputParameters:
      - name: organizer_upn
        in: body
        type: string
        description: Organizer UPN.
      - name: subject
        in: body
        type: string
        description: Meeting subject.
      - name: start_time
        in: body
        type: string
        description: Start time in ISO 8601.
      - name: end_time
        in: body
        type: string
        description: End time in ISO 8601.
      call: outlook.create-event
      with:
        organizer_upn: '{{organizer_upn}}'
        subject: '{{subject}}'
        start_time: '{{start_time}}'
        end_time: '{{end_time}}'
      outputParameters:
      - name: meeting_link
        type: string
        mapping: $.onlineMeeting.joinUrl
  consumes:
  - type: http
    namespace: outlook
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: events
      path: /users/{{organizer_upn}}/events
      inputParameters:
      - name: organizer_upn
        in: path
      operations:
      - name: create-event
        method: POST
Open in Framework → View in Fleet → microsoft-outlook-meeting-scheduler.yml

Creates a marketing visual in Canva from a template for store-level promotions and returns the design URL.

naftiko: '0.5'
info:
  label: Canva Marketing Material Generator
  description: Creates a marketing visual in Canva from a template for store-level promotions and returns the design URL.
  tags:
  - marketing
  - design
  - canva
capability:
  exposes:
  - type: mcp
    namespace: marketing-design
    port: 8080
    tools:
    - name: create-promo-material
      description: Create a promotional material from a Canva template.
      inputParameters:
      - name: template_id
        in: body
        type: string
        description: Canva template ID.
      - name: headline
        in: body
        type: string
        description: Promotional headline.
      - name: store_name
        in: body
        type: string
        description: Store name for the material.
      call: canva.create-design
      with:
        template_id: '{{template_id}}'
        headline: '{{headline}}'
        store_name: '{{store_name}}'
      outputParameters:
      - name: design_url
        type: string
        mapping: $.design.editUrl
  consumes:
  - type: http
    namespace: canva
    baseUri: https://api.canva.com/v1
    authentication:
      type: bearer
      token: $secrets.canva_token
    resources:
    - name: designs
      path: /designs
      operations:
      - name: create-design
        method: POST
Open in Framework → View in Fleet → canva-marketing-material-generator.yml

Tracks returned products entering the circular economy program in SAP, returning refurbishment status, resale eligibility, and recycling disposition.

naftiko: '0.5'
info:
  label: SAP Circular Product Return Tracking
  description: Tracks returned products entering the circular economy program in SAP, returning refurbishment status, resale eligibility, and recycling disposition.
  tags:
  - sustainability
  - retail
  - sap
  - circular-economy
capability:
  exposes:
  - type: mcp
    namespace: circular-economy
    port: 8080
    tools:
    - name: get-circular-return-status
      description: Track a returned product in the circular economy program. Returns refurbishment and disposition status.
      inputParameters:
      - name: return_id
        in: body
        type: string
        description: The return transaction identifier.
      call: sap.get-circular-status
      with:
        return_id: '{{return_id}}'
      outputParameters:
      - name: condition_grade
        type: string
        mapping: $.conditionGrade
      - name: refurbishment_status
        type: string
        mapping: $.refurbishmentStatus
      - name: resale_eligible
        type: boolean
        mapping: $.resaleEligible
      - name: disposition
        type: string
        mapping: $.disposition
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-sap.hana.cloud/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: circular
      path: /circular-economy/returns/{{return_id}}
      inputParameters:
      - name: return_id
        in: path
      operations:
      - name: get-circular-status
        method: GET
Open in Framework → View in Fleet → sap-circular-product-return-tracking.yml

When a customer joins IKEA Family, creates the loyalty profile in Salesforce, sends a welcome email via Adobe Campaign, and provisions a digital membership card.

naftiko: '0.5'
info:
  label: IKEA Family Loyalty Enrollment Orchestrator
  description: When a customer joins IKEA Family, creates the loyalty profile in Salesforce, sends a welcome email via Adobe Campaign, and provisions a digital membership card.
  tags:
  - loyalty
  - retail
  - salesforce
  - adobe-campaign
capability:
  exposes:
  - type: mcp
    namespace: loyalty-enrollment
    port: 8080
    tools:
    - name: enroll-family-member
      description: Enroll a new IKEA Family member and send welcome communications.
      inputParameters:
      - name: customer_email
        in: body
        type: string
        description: Customer email.
      - name: first_name
        in: body
        type: string
        description: Customer first name.
      - name: last_name
        in: body
        type: string
        description: Customer last name.
      steps:
      - name: create-member
        type: call
        call: salesforce.create-loyalty
        with:
          email: '{{customer_email}}'
          first_name: '{{first_name}}'
          last_name: '{{last_name}}'
          program: IKEA_Family
      - name: send-welcome
        type: call
        call: adobe-campaign.send-email
        with:
          recipient_email: '{{customer_email}}'
          template: ikea_family_welcome
          params: '{{first_name}},{{create-member.member_id}},{{create-member.card_number}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://ikea.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: loyalty
      path: /sobjects/Loyalty_Member__c
      operations:
      - name: create-loyalty
        method: POST
  - type: http
    namespace: adobe-campaign
    baseUri: https://mc.adobe.io/ikea/campaign
    authentication:
      type: bearer
      token: $secrets.adobe_campaign_token
    resources:
    - name: emails
      path: /email/send
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → ikea-family-loyalty-enrollment-orchestrator.yml

Triggers generation of assembly instruction PDFs for new products, uploads them to SharePoint, and links them to the product in the SAP catalog.

naftiko: '0.5'
info:
  label: Assembly Instructions PDF Generator
  description: Triggers generation of assembly instruction PDFs for new products, uploads them to SharePoint, and links them to the product in the SAP catalog.
  tags:
  - design
  - documents
  - sharepoint
  - sap
capability:
  exposes:
  - type: mcp
    namespace: assembly-docs
    port: 8080
    tools:
    - name: generate-assembly-instructions
      description: Generate and publish assembly instructions for a product.
      inputParameters:
      - name: article_number
        in: body
        type: string
        description: The product article number.
      - name: document_url
        in: body
        type: string
        description: URL of the source instruction document.
      steps:
      - name: upload-to-sharepoint
        type: call
        call: sharepoint.upload-file
        with:
          site_id: product_docs
          folder_path: AssemblyInstructions/{{article_number}}
          file_url: '{{document_url}}'
      - name: link-to-product
        type: call
        call: sap.update-product-doc
        with:
          article_number: '{{article_number}}'
          document_url: '{{upload-to-sharepoint.download_url}}'
  consumes:
  - 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}}:/content
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      operations:
      - name: upload-file
        method: PUT
  - type: http
    namespace: sap
    baseUri: https://ikea-s4.sap.com/sap/opu/odata/sap/API_PRODUCT_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: products
      path: /A_Product('{{article_number}}')
      inputParameters:
      - name: article_number
        in: path
      operations:
      - name: update-product-doc
        method: PATCH
Open in Framework → View in Fleet → assembly-instructions-pdf-generator.yml

Processes a click-and-collect order by reserving inventory in SAP, generating a pick list, sending an SMS notification to the customer via Twilio, and updating the order status in the e-commerce platform.

naftiko: '0.5'
info:
  label: Click and Collect Order Fulfillment Orchestrator
  description: Processes a click-and-collect order by reserving inventory in SAP, generating a pick list, sending an SMS notification to the customer via Twilio, and updating the order status in the e-commerce platform.
  tags:
  - retail
  - e-commerce
  - sap
  - twilio
capability:
  exposes:
  - type: mcp
    namespace: order-fulfillment
    port: 8080
    tools:
    - name: fulfill-click-collect
      description: 'Orchestrate click-and-collect fulfillment: reserve stock, generate pick list, notify customer, and update status.'
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The e-commerce order identifier.
      - name: store_code
        in: body
        type: string
        description: The pickup store code.
      steps:
      - name: reserve-inventory
        type: call
        call: sap.reserve-stock
        with:
          order_id: '{{order_id}}'
          store: '{{store_code}}'
      - name: generate-pick-list
        type: call
        call: sap.create-pick-list
        with:
          reservation_id: '{{reserve-inventory.reservation_id}}'
          store: '{{store_code}}'
      - name: notify-customer
        type: call
        call: twilio.send-sms
        with:
          to: '{{reserve-inventory.customer_phone}}'
          body: 'Your IKEA order #{{order_id}} is being prepared for pickup at store {{store_code}}. We will notify you when it is ready.'
      - name: update-order-status
        type: call
        call: sap.update-order-status
        with:
          order_id: '{{order_id}}'
          status: picking
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-sap.hana.cloud/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: inventory
      path: /inventory/reservations
      operations:
      - name: reserve-stock
        method: POST
    - name: pick-lists
      path: /warehouse/pick-lists
      operations:
      - name: create-pick-list
        method: POST
    - name: orders
      path: /orders/{{order_id}}/status
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: update-order-status
        method: PUT
  - type: http
    namespace: twilio
    baseUri: https://api.twilio.com/2010-04-01/Accounts/$secrets.twilio_account_sid
    authentication:
      type: basic
      username: $secrets.twilio_account_sid
      password: $secrets.twilio_auth_token
    resources:
    - name: messages
      path: /Messages.json
      operations:
      - name: send-sms
        method: POST
Open in Framework → View in Fleet → click-and-collect-order-fulfillment-orchestrator.yml

Creates a stock transfer order in SAP to move inventory between IKEA distribution centers and notifies the logistics team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Warehouse Transfer Order Creator
  description: Creates a stock transfer order in SAP to move inventory between IKEA distribution centers and notifies the logistics team via Microsoft Teams.
  tags:
  - supply-chain
  - logistics
  - sap
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: warehouse-transfers
    port: 8080
    tools:
    - name: create-transfer-order
      description: Create a stock transfer order and notify logistics.
      inputParameters:
      - name: material
        in: body
        type: string
        description: Material/article number.
      - name: source_plant
        in: body
        type: string
        description: Source warehouse/DC code.
      - name: target_plant
        in: body
        type: string
        description: Target warehouse/store code.
      - name: quantity
        in: body
        type: string
        description: Transfer quantity.
      steps:
      - name: create-transfer
        type: call
        call: sap.create-stock-transfer
        with:
          material: '{{material}}'
          source_plant: '{{source_plant}}'
          target_plant: '{{target_plant}}'
          quantity: '{{quantity}}'
      - name: notify-logistics
        type: call
        call: msteams.send-message
        with:
          channel_id: logistics_transfers
          text: 'Transfer order created: {{material}} x{{quantity}} from {{source_plant}} to {{target_plant}}. TO#: {{create-transfer.transfer_order_number}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-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: 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
Open in Framework → View in Fleet → warehouse-transfer-order-creator.yml

Generates a kitchen planning quote by pulling cabinet configurations from SAP, calculating installation estimates, checking delivery availability, and emailing the customer with the complete quote.

naftiko: '0.5'
info:
  label: Kitchen Planning Quote Orchestrator
  description: Generates a kitchen planning quote by pulling cabinet configurations from SAP, calculating installation estimates, checking delivery availability, and emailing the customer with the complete quote.
  tags:
  - retail
  - kitchen
  - sap
  - e-commerce
capability:
  exposes:
  - type: mcp
    namespace: kitchen-planning
    port: 8080
    tools:
    - name: generate-kitchen-quote
      description: 'Orchestrate kitchen quote generation: get config, calculate install, check delivery, and send quote.'
      inputParameters:
      - name: plan_id
        in: body
        type: string
        description: The kitchen plan identifier from the planner tool.
      - name: customer_email
        in: body
        type: string
        description: Customer email address.
      steps:
      - name: get-plan-details
        type: call
        call: sap.get-kitchen-plan
        with:
          plan_id: '{{plan_id}}'
      - name: calculate-installation
        type: call
        call: sap.estimate-installation
        with:
          cabinet_count: '{{get-plan-details.cabinet_count}}'
          appliance_count: '{{get-plan-details.appliance_count}}'
      - name: check-delivery
        type: call
        call: sap.check-bulk-availability
        with:
          articles: '{{get-plan-details.article_list}}'
      - name: send-quote
        type: call
        call: msteams.send-email
        with:
          to: '{{customer_email}}'
          subject: Your IKEA Kitchen Quote - Plan {{plan_id}}
          body: 'Total products: ${{get-plan-details.product_total}}. Installation: ${{calculate-installation.estimate}}. Earliest delivery: {{check-delivery.earliest_date}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-sap.hana.cloud/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: kitchen-plans
      path: /kitchen-planning/plans/{{plan_id}}
      inputParameters:
      - name: plan_id
        in: path
      operations:
      - name: get-kitchen-plan
        method: GET
    - name: installation
      path: /services/installation/estimate
      operations:
      - name: estimate-installation
        method: POST
    - name: availability
      path: /inventory/bulk-availability
      operations:
      - name: check-bulk-availability
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: mail
      path: /me/sendMail
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → kitchen-planning-quote-orchestrator.yml

Triggers automatic warehouse replenishment in SAP when store shelf stock drops below minimum threshold, returning replenishment order number and expected delivery date.

naftiko: '0.5'
info:
  label: SAP Warehouse Replenishment Trigger
  description: Triggers automatic warehouse replenishment in SAP when store shelf stock drops below minimum threshold, returning replenishment order number and expected delivery date.
  tags:
  - retail
  - supply-chain
  - sap
  - inventory
capability:
  exposes:
  - type: mcp
    namespace: replenishment
    port: 8080
    tools:
    - name: trigger-replenishment
      description: Trigger SAP warehouse replenishment for low-stock items. Returns order number and delivery date.
      inputParameters:
      - name: article_number
        in: body
        type: string
        description: The IKEA article number.
      - name: store_code
        in: body
        type: string
        description: The store code.
      call: sap.create-replenishment-order
      with:
        article: '{{article_number}}'
        store: '{{store_code}}'
      outputParameters:
      - name: order_number
        type: string
        mapping: $.orderNumber
      - name: expected_delivery
        type: string
        mapping: $.expectedDeliveryDate
      - name: quantity
        type: number
        mapping: $.orderQuantity
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-sap.hana.cloud/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: replenishment
      path: /inventory/replenishment-orders
      operations:
      - name: create-replenishment-order
        method: POST
Open in Framework → View in Fleet → sap-warehouse-replenishment-trigger.yml

Queries Datadog for infrastructure health metrics of IKEA's e-commerce platform, returning CPU, memory, and active alerts.

naftiko: '0.5'
info:
  label: Datadog Infrastructure Health Monitor
  description: Queries Datadog for infrastructure health metrics of IKEA's e-commerce platform, returning CPU, memory, and active alerts.
  tags:
  - it-operations
  - monitoring
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: infra-monitoring
    port: 8080
    tools:
    - name: get-platform-health
      description: Retrieve infrastructure health metrics from Datadog.
      inputParameters:
      - name: environment
        in: body
        type: string
        description: Environment tag (e.g., production, staging).
      call: datadog.query-metrics
      with:
        query: avg:system.cpu.user{env:{{environment}}}
      outputParameters:
      - name: cpu_utilization
        type: string
        mapping: $.series[0].pointlist[-1][1]
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apiKey
      name: DD-API-KEY
      in: header
      value: $secrets.datadog_api_key
    resources:
    - name: metrics
      path: /query
      inputParameters:
      - name: query
        in: query
      operations:
      - name: query-metrics
        method: GET
Open in Framework → View in Fleet → datadog-infrastructure-health-monitor.yml

Searches for product design briefs in IKEA's shared Google Drive and returns matching file names and links.

naftiko: '0.5'
info:
  label: Google Drive Product Brief Finder
  description: Searches for product design briefs in IKEA's shared Google Drive and returns matching file names and links.
  tags:
  - design
  - documents
  - google-drive
capability:
  exposes:
  - type: mcp
    namespace: gdrive-search
    port: 8080
    tools:
    - name: search-briefs
      description: Search for product design briefs in Google Drive.
      inputParameters:
      - name: search_query
        in: body
        type: string
        description: Search query for file names.
      call: gdrive.search-files
      with:
        query: '{{search_query}}'
      outputParameters:
      - name: files
        type: string
        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
      inputParameters:
      - name: q
        in: query
        value: name contains '{{query}}'
      operations:
      - name: search-files
        method: GET
Open in Framework → View in Fleet → google-drive-product-brief-finder.yml

Retrieves container shipment tracking data from SAP for inbound supplier shipments, returning container number, vessel name, port of origin, and estimated arrival date.

naftiko: '0.5'
info:
  label: SAP Container Shipment Tracking Lookup
  description: Retrieves container shipment tracking data from SAP for inbound supplier shipments, returning container number, vessel name, port of origin, and estimated arrival date.
  tags:
  - supply-chain
  - logistics
  - sap
capability:
  exposes:
  - type: mcp
    namespace: logistics
    port: 8080
    tools:
    - name: get-container-tracking
      description: Look up container shipment tracking from SAP. Returns vessel, port, and ETA.
      inputParameters:
      - name: container_number
        in: body
        type: string
        description: The shipping container number.
      call: sap.get-container-status
      with:
        container: '{{container_number}}'
      outputParameters:
      - name: vessel_name
        type: string
        mapping: $.vesselName
      - name: port_of_origin
        type: string
        mapping: $.portOfOrigin
      - name: destination_port
        type: string
        mapping: $.destinationPort
      - name: eta
        type: string
        mapping: $.estimatedArrival
      - name: status
        type: string
        mapping: $.shipmentStatus
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-sap.hana.cloud/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: shipments
      path: /logistics/containers/{{container}}
      inputParameters:
      - name: container
        in: path
      operations:
      - name: get-container-status
        method: GET
Open in Framework → View in Fleet → sap-container-shipment-tracking-lookup.yml

Sends a delivery status update to an IKEA customer via WhatsApp when their order ships from the distribution center.

naftiko: '0.5'
info:
  label: WhatsApp Customer Delivery Update
  description: Sends a delivery status update to an IKEA customer via WhatsApp when their order ships from the distribution center.
  tags:
  - logistics
  - customer-service
  - whatsapp
capability:
  exposes:
  - type: mcp
    namespace: delivery-notifications
    port: 8080
    tools:
    - name: send-delivery-update
      description: Send a WhatsApp delivery status update to a customer.
      inputParameters:
      - name: customer_phone
        in: body
        type: string
        description: Customer phone number.
      - name: order_id
        in: body
        type: string
        description: Order ID.
      - name: tracking_number
        in: body
        type: string
        description: Tracking number.
      call: whatsapp.send-message
      with:
        phone: '{{customer_phone}}'
        template: delivery_shipped
        parameters: '{{order_id}},{{tracking_number}}'
  consumes:
  - type: http
    namespace: whatsapp
    baseUri: https://graph.facebook.com/v17.0
    authentication:
      type: bearer
      token: $secrets.whatsapp_token
    resources:
    - name: messages
      path: /{{phone_number_id}}/messages
      inputParameters:
      - name: phone_number_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → whatsapp-customer-delivery-update.yml

When a quality issue is reported for a supplier delivery, creates a SAP quality notification, logs a Confluence investigation page, and alerts the sourcing team via Teams.

naftiko: '0.5'
info:
  label: Supplier Quality Issue Tracker
  description: When a quality issue is reported for a supplier delivery, creates a SAP quality notification, logs a Confluence investigation page, and alerts the sourcing team via Teams.
  tags:
  - supply-chain
  - quality
  - sap
  - confluence
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: quality-tracking
    port: 8080
    tools:
    - name: report-quality-issue
      description: Report a supplier quality issue and trigger investigation.
      inputParameters:
      - name: material
        in: body
        type: string
        description: Article number of the affected product.
      - name: supplier_code
        in: body
        type: string
        description: SAP supplier code.
      - name: defect_description
        in: body
        type: string
        description: Description of the quality defect.
      steps:
      - name: create-qn
        type: call
        call: sap.create-quality-notification
        with:
          material: '{{material}}'
          supplier: '{{supplier_code}}'
          description: '{{defect_description}}'
      - name: log-investigation
        type: call
        call: confluence.create-page
        with:
          space_key: QUALITY
          title: QN {{create-qn.notification_number}} - {{material}}
          body: 'Supplier: {{supplier_code}}. Defect: {{defect_description}}'
      - name: alert-sourcing
        type: call
        call: msteams.send-message
        with:
          channel_id: sourcing_quality
          text: 'Quality issue: {{material}} from supplier {{supplier_code}}. QN: {{create-qn.notification_number}}. Details: {{defect_description}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-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: confluence
    baseUri: https://ikea.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: pages
      path: /content
      operations:
      - name: create-page
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → supplier-quality-issue-tracker.yml

Pulls campaign performance data from Facebook Ads for IKEA marketing campaigns, returning impressions, clicks, spend, and conversions.

naftiko: '0.5'
info:
  label: Facebook Advertising Campaign Reporter
  description: Pulls campaign performance data from Facebook Ads for IKEA marketing campaigns, returning impressions, clicks, spend, and conversions.
  tags:
  - marketing
  - advertising
  - facebook
capability:
  exposes:
  - type: mcp
    namespace: fb-campaigns
    port: 8080
    tools:
    - name: get-campaign-performance
      description: Retrieve Facebook Ads campaign performance metrics.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: The Facebook Ads campaign ID.
      call: facebook.get-campaign-insights
      with:
        campaign_id: '{{campaign_id}}'
      outputParameters:
      - name: impressions
        type: string
        mapping: $.data[0].impressions
      - name: clicks
        type: string
        mapping: $.data[0].clicks
      - name: spend
        type: string
        mapping: $.data[0].spend
  consumes:
  - type: http
    namespace: facebook
    baseUri: https://graph.facebook.com/v17.0
    authentication:
      type: bearer
      token: $secrets.facebook_ads_token
    resources:
    - name: campaign-insights
      path: /{{campaign_id}}/insights
      inputParameters:
      - name: campaign_id
        in: path
      operations:
      - name: get-campaign-insights
        method: GET
Open in Framework → View in Fleet → facebook-advertising-campaign-reporter.yml

Handles customer complaints by creating a ServiceNow case, pulling order history from SAP, determining compensation eligibility in Snowflake, and sending the resolution offer via email.

naftiko: '0.5'
info:
  label: Customer Complaint Resolution Orchestrator
  description: Handles customer complaints by creating a ServiceNow case, pulling order history from SAP, determining compensation eligibility in Snowflake, and sending the resolution offer via email.
  tags:
  - customer-service
  - retail
  - servicenow
  - sap
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: customer-service
    port: 8080
    tools:
    - name: resolve-customer-complaint
      description: 'Orchestrate complaint resolution: create case, pull history, determine compensation, and send offer.'
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The IKEA Family customer ID.
      - name: complaint_description
        in: body
        type: string
        description: Description of the complaint.
      - name: order_id
        in: body
        type: string
        description: The related order ID.
      steps:
      - name: create-case
        type: call
        call: servicenow.create-case
        with:
          customer_id: '{{customer_id}}'
          description: '{{complaint_description}}'
          order_id: '{{order_id}}'
      - name: get-order-history
        type: call
        call: sap.get-order-details
        with:
          order_id: '{{order_id}}'
      - name: determine-compensation
        type: call
        call: snowflake.calculate-compensation
        with:
          customer_id: '{{customer_id}}'
          order_value: '{{get-order-history.total_amount}}'
          customer_tier: '{{get-order-history.loyalty_tier}}'
      - name: send-resolution
        type: call
        call: msteams.send-email
        with:
          to: '{{get-order-history.customer_email}}'
          subject: Resolution for your IKEA complaint - Case {{create-case.number}}
          body: We are sorry for your experience. As compensation, we are offering {{determine-compensation.offer_description}} valued at ${{determine-compensation.offer_value}}.
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://ikea.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: cases
      path: /table/sn_customerservice_case
      operations:
      - name: create-case
        method: POST
  - type: http
    namespace: sap
    baseUri: https://ikea-sap.hana.cloud/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: orders
      path: /orders/{{order_id}}
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-order-details
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://ikea.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: queries
      path: /statements
      operations:
      - name: calculate-compensation
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: mail
      path: /me/sendMail
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → customer-complaint-resolution-orchestrator.yml

Queries Snowflake for aggregated product review sentiment analysis, returning average rating, positive sentiment percentage, and top mentioned themes.

naftiko: '0.5'
info:
  label: Snowflake Product Review Sentiment Lookup
  description: Queries Snowflake for aggregated product review sentiment analysis, returning average rating, positive sentiment percentage, and top mentioned themes.
  tags:
  - analytics
  - product
  - snowflake
  - sentiment
capability:
  exposes:
  - type: mcp
    namespace: product-insights
    port: 8080
    tools:
    - name: get-review-sentiment
      description: Look up product review sentiment from Snowflake. Returns ratings, sentiment score, and themes.
      inputParameters:
      - name: article_number
        in: body
        type: string
        description: The IKEA article number.
      call: snowflake.query-sentiment
      with:
        article: '{{article_number}}'
      outputParameters:
      - name: avg_rating
        type: number
        mapping: $.data[0].avg_rating
      - name: positive_sentiment_pct
        type: number
        mapping: $.data[0].positive_pct
      - name: top_themes
        type: array
        mapping: $.data[0].top_themes
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://ikea.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: queries
      path: /statements
      operations:
      - name: query-sentiment
        method: POST
Open in Framework → View in Fleet → snowflake-product-review-sentiment-lookup.yml

Reconciles vendor invoices by matching SAP purchase orders to received invoices, flagging price discrepancies, routing exceptions for approval in ServiceNow, and posting approved invoices for payment.

naftiko: '0.5'
info:
  label: SAP Vendor Invoice Reconciliation Orchestrator
  description: Reconciles vendor invoices by matching SAP purchase orders to received invoices, flagging price discrepancies, routing exceptions for approval in ServiceNow, and posting approved invoices for payment.
  tags:
  - finance
  - procurement
  - sap
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: accounts-payable
    port: 8080
    tools:
    - name: reconcile-vendor-invoice
      description: 'Orchestrate invoice reconciliation: match PO, flag discrepancies, route exceptions, and post for payment.'
      inputParameters:
      - name: invoice_number
        in: body
        type: string
        description: The vendor invoice number.
      steps:
      - name: match-po
        type: call
        call: sap.match-invoice-to-po
        with:
          invoice: '{{invoice_number}}'
      - name: check-discrepancies
        type: call
        call: sap.check-price-variance
        with:
          invoice: '{{invoice_number}}'
          po_number: '{{match-po.po_number}}'
      - name: route-exception
        type: call
        call: servicenow.create-approval
        with:
          short_description: 'Invoice {{invoice_number}} price variance: {{check-discrepancies.variance_pct}}%'
          approver: '{{match-po.buyer_email}}'
      - name: post-for-payment
        type: call
        call: sap.post-invoice-payment
        with:
          invoice: '{{invoice_number}}'
          po_number: '{{match-po.po_number}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-sap.hana.cloud/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: invoices
      path: /finance/invoices
      operations:
      - name: match-invoice-to-po
        method: GET
      - name: check-price-variance
        method: GET
      - name: post-invoice-payment
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://ikea.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
Open in Framework → View in Fleet → sap-vendor-invoice-reconciliation-orchestrator.yml

Optimizes store co-worker schedules by pulling foot traffic forecasts from Snowflake, current schedules from Workday, computing optimal shifts, and publishing updated schedules back to Workday.

naftiko: '0.5'
info:
  label: Co-Worker Scheduling Optimization Orchestrator
  description: Optimizes store co-worker schedules by pulling foot traffic forecasts from Snowflake, current schedules from Workday, computing optimal shifts, and publishing updated schedules back to Workday.
  tags:
  - hr
  - operations
  - snowflake
  - workday
capability:
  exposes:
  - type: mcp
    namespace: workforce
    port: 8080
    tools:
    - name: optimize-schedules
      description: 'Orchestrate scheduling optimization: forecast traffic, pull schedules, compute optimal shifts, and publish.'
      inputParameters:
      - name: store_code
        in: body
        type: string
        description: The IKEA store code.
      - name: week_start
        in: body
        type: string
        description: Week start date in YYYY-MM-DD format.
      steps:
      - name: forecast-traffic
        type: call
        call: snowflake.query-traffic-forecast
        with:
          store: '{{store_code}}'
          week: '{{week_start}}'
      - name: get-current-schedules
        type: call
        call: workday.get-schedules
        with:
          store: '{{store_code}}'
          week: '{{week_start}}'
      - name: compute-optimal
        type: call
        call: snowflake.run-schedule-optimization
        with:
          forecast: '{{forecast-traffic.data}}'
          current: '{{get-current-schedules.data}}'
      - name: publish-schedules
        type: call
        call: workday.update-schedules
        with:
          store: '{{store_code}}'
          schedules: '{{compute-optimal.optimized_shifts}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://ikea.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: queries
      path: /statements
      operations:
      - name: query-traffic-forecast
        method: POST
      - name: run-schedule-optimization
        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: schedules
      path: /ikea/schedules
      operations:
      - name: get-schedules
        method: GET
      - name: update-schedules
        method: PUT
Open in Framework → View in Fleet → co-worker-scheduling-optimization-orchestrator.yml

Retrieves spare parts availability from SAP for furniture components, returning part number, available quantity, and order instructions for customers needing replacement parts.

naftiko: '0.5'
info:
  label: SAP Spare Parts Availability Lookup
  description: Retrieves spare parts availability from SAP for furniture components, returning part number, available quantity, and order instructions for customers needing replacement parts.
  tags:
  - customer-service
  - retail
  - sap
  - spare-parts
capability:
  exposes:
  - type: mcp
    namespace: after-sales
    port: 8080
    tools:
    - name: check-spare-parts
      description: Look up spare parts availability from SAP. Returns part details and ordering instructions.
      inputParameters:
      - name: article_number
        in: body
        type: string
        description: The parent furniture article number.
      - name: part_description
        in: body
        type: string
        description: Description of the needed spare part.
      call: sap.search-spare-parts
      with:
        article: '{{article_number}}'
        description: '{{part_description}}'
      outputParameters:
      - name: parts
        type: array
        mapping: $.data
        items:
        - name: part_number
          type: string
          mapping: $.partNumber
        - name: description
          type: string
          mapping: $.description
        - name: available_qty
          type: number
          mapping: $.availableQuantity
        - name: price
          type: number
          mapping: $.price
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-sap.hana.cloud/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: spare-parts
      path: /product-management/spare-parts
      operations:
      - name: search-spare-parts
        method: GET
Open in Framework → View in Fleet → sap-spare-parts-availability-lookup.yml

Generates personalized offers for IKEA Family members by analyzing purchase history in Snowflake, selecting relevant promotions from SAP, and delivering the offer via email and the IKEA app push notification.

naftiko: '0.5'
info:
  label: IKEA Family Personalized Offer Orchestrator
  description: Generates personalized offers for IKEA Family members by analyzing purchase history in Snowflake, selecting relevant promotions from SAP, and delivering the offer via email and the IKEA app push notification.
  tags:
  - marketing
  - retail
  - snowflake
  - sap
capability:
  exposes:
  - type: mcp
    namespace: loyalty
    port: 8080
    tools:
    - name: generate-personalized-offer
      description: 'Orchestrate personalized offer: analyze history, select promotions, and deliver via email and push.'
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The IKEA Family customer ID.
      steps:
      - name: analyze-preferences
        type: call
        call: snowflake.query-customer-preferences
        with:
          customer_id: '{{customer_id}}'
      - name: select-promotions
        type: call
        call: sap.get-matching-promotions
        with:
          categories: '{{analyze-preferences.top_categories}}'
          price_range: '{{analyze-preferences.avg_order_value}}'
      - name: send-email-offer
        type: call
        call: msteams.send-email
        with:
          to: '{{analyze-preferences.customer_email}}'
          subject: Special offers just for you, {{analyze-preferences.first_name}}!
          body: 'Based on your love of {{analyze-preferences.top_categories}}, check out these deals: {{select-promotions.offer_summary}}.'
      - name: send-push-notification
        type: call
        call: firebase.send-notification
        with:
          user_id: '{{customer_id}}'
          title: New offers for you!
          body: '{{select-promotions.offer_count}} personalized offers waiting in your IKEA app.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://ikea.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: queries
      path: /statements
      operations:
      - name: query-customer-preferences
        method: POST
  - type: http
    namespace: sap
    baseUri: https://ikea-sap.hana.cloud/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: promotions
      path: /marketing/promotions/match
      operations:
      - name: get-matching-promotions
        method: POST
  - type: http
    namespace: msteams
    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: firebase
    baseUri: https://fcm.googleapis.com/v1/projects/$secrets.firebase_project_id
    authentication:
      type: bearer
      token: $secrets.firebase_token
    resources:
    - name: notifications
      path: /messages:send
      operations:
      - name: send-notification
        method: POST
Open in Framework → View in Fleet → ikea-family-personalized-offer-orchestrator.yml

Validates sustainable material sourcing by checking supplier certifications in SAP, querying forestry chain-of-custody data in Snowflake, generating a compliance report in SharePoint, and alerting the sustainability team.

naftiko: '0.5'
info:
  label: Sustainability Material Sourcing Orchestrator
  description: Validates sustainable material sourcing by checking supplier certifications in SAP, querying forestry chain-of-custody data in Snowflake, generating a compliance report in SharePoint, and alerting the sustainability team.
  tags:
  - sustainability
  - supply-chain
  - sap
  - snowflake
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: sustainability
    port: 8080
    tools:
    - name: validate-material-sourcing
      description: 'Orchestrate sustainable sourcing validation: check certs, verify chain-of-custody, report, and alert.'
      inputParameters:
      - name: material_number
        in: body
        type: string
        description: The SAP material number.
      - name: supplier_id
        in: body
        type: string
        description: The supplier identifier.
      steps:
      - name: check-certifications
        type: call
        call: sap.get-supplier-certifications
        with:
          supplier_id: '{{supplier_id}}'
      - name: verify-chain-of-custody
        type: call
        call: snowflake.query-coc-data
        with:
          material: '{{material_number}}'
          supplier: '{{supplier_id}}'
      - name: generate-report
        type: call
        call: sharepoint.create-document
        with:
          library: SustainabilityReports
          filename: sourcing-audit-{{material_number}}-{{supplier_id}}.pdf
          data:
            fsc_certified: '{{check-certifications.fsc_status}}'
            coc_valid: '{{verify-chain-of-custody.valid}}'
      - name: alert-team
        type: call
        call: msteams.post-message
        with:
          channel: sustainability
          message: 'Material {{material_number}} sourcing audit complete. FSC: {{check-certifications.fsc_status}}. CoC valid: {{verify-chain-of-custody.valid}}. Report: {{generate-report.url}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-sap.hana.cloud/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: suppliers
      path: /procurement/suppliers/{{supplier_id}}/certifications
      inputParameters:
      - name: supplier_id
        in: path
      operations:
      - name: get-supplier-certifications
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://ikea.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: queries
      path: /statements
      operations:
      - name: query-coc-data
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites/ikea.sharepoint.com
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: documents
      path: /drive/items
      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: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → sustainability-material-sourcing-orchestrator.yml

Queries SAP HANA for real-time product availability across all IKEA stores and distribution centers, returning available quantity, warehouse location, and estimated restock date.

naftiko: '0.5'
info:
  label: SAP HANA Product Availability Check
  description: Queries SAP HANA for real-time product availability across all IKEA stores and distribution centers, returning available quantity, warehouse location, and estimated restock date.
  tags:
  - retail
  - inventory
  - sap
capability:
  exposes:
  - type: mcp
    namespace: inventory
    port: 8080
    tools:
    - name: check-product-availability
      description: Check product availability across IKEA locations from SAP HANA. Returns stock levels and restock dates.
      inputParameters:
      - name: article_number
        in: body
        type: string
        description: The IKEA article number.
      - name: store_code
        in: body
        type: string
        description: The store or DC code.
      call: sap.check-availability
      with:
        article: '{{article_number}}'
        store: '{{store_code}}'
      outputParameters:
      - name: available_qty
        type: number
        mapping: $.availableQuantity
      - name: warehouse_location
        type: string
        mapping: $.warehouseLocation
      - name: restock_date
        type: string
        mapping: $.estimatedRestockDate
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-sap.hana.cloud/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: availability
      path: /inventory/availability
      operations:
      - name: check-availability
        method: GET
Open in Framework → View in Fleet → sap-hana-product-availability-check.yml

Optimizes store energy consumption by pulling smart meter data from Snowflake, comparing against benchmarks, adjusting HVAC schedules in the building management system, and reporting savings to the sustainability team.

naftiko: '0.5'
info:
  label: Store Energy Optimization Orchestrator
  description: Optimizes store energy consumption by pulling smart meter data from Snowflake, comparing against benchmarks, adjusting HVAC schedules in the building management system, and reporting savings to the sustainability team.
  tags:
  - sustainability
  - operations
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: energy-management
    port: 8080
    tools:
    - name: optimize-store-energy
      description: 'Orchestrate energy optimization: pull consumption, benchmark, adjust HVAC, and report savings.'
      inputParameters:
      - name: store_code
        in: body
        type: string
        description: The store code.
      steps:
      - name: get-consumption
        type: call
        call: snowflake.query-energy-consumption
        with:
          store: '{{store_code}}'
      - name: benchmark-comparison
        type: call
        call: snowflake.compare-energy-benchmarks
        with:
          store: '{{store_code}}'
          consumption: '{{get-consumption.data}}'
      - name: adjust-hvac
        type: call
        call: servicenow.create-change-request
        with:
          short_description: HVAC schedule adjustment for store {{store_code}}
          description: 'Recommended savings: {{benchmark-comparison.potential_savings_kwh}} kWh. New schedule: {{benchmark-comparison.recommended_schedule}}.'
      - name: report-savings
        type: call
        call: msteams.post-message
        with:
          channel: sustainability-energy
          message: 'Store {{store_code}} energy review: Current consumption {{get-consumption.total_kwh}} kWh. Benchmark gap: {{benchmark-comparison.gap_pct}}%. Potential savings: {{benchmark-comparison.potential_savings_kwh}} kWh.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://ikea.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: queries
      path: /statements
      operations:
      - name: query-energy-consumption
        method: POST
      - name: compare-energy-benchmarks
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://ikea.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-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: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → store-energy-optimization-orchestrator.yml

Checks real-time inventory levels at a specific IKEA store for a given article number, returning on-hand quantity and restock date.

naftiko: '0.5'
info:
  label: Store Inventory Level Checker
  description: Checks real-time inventory levels at a specific IKEA store for a given article number, returning on-hand quantity and restock date.
  tags:
  - retail
  - supply-chain
  - sap
capability:
  exposes:
  - type: mcp
    namespace: store-inventory
    port: 8080
    tools:
    - name: check-store-inventory
      description: Check inventory levels at a specific IKEA store.
      inputParameters:
      - name: store_code
        in: body
        type: string
        description: The IKEA store code.
      - name: article_number
        in: body
        type: string
        description: The product article number.
      call: sap.get-plant-stock
      with:
        plant: '{{store_code}}'
        material: '{{article_number}}'
      outputParameters:
      - name: on_hand_qty
        type: string
        mapping: $.d.AvailableStock
      - name: restock_date
        type: string
        mapping: $.d.NextDeliveryDate
      - name: reserved_qty
        type: string
        mapping: $.d.ReservedStock
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: plant-stock
      path: /A_MatlStkInAcctMod(Material='{{material}}',Plant='{{plant}}')
      inputParameters:
      - name: material
        in: path
      - name: plant
        in: path
      operations:
      - name: get-plant-stock
        method: GET
Open in Framework → View in Fleet → store-inventory-level-checker.yml

When an IKEA co-worker submits a travel expense report in SAP Concur, retrieves the details and notifies the approver via Microsoft Teams.

naftiko: '0.5'
info:
  label: Concur Travel Expense Report Notifier
  description: When an IKEA co-worker submits a travel expense report in SAP Concur, retrieves the details and notifies the approver via Microsoft Teams.
  tags:
  - finance
  - expenses
  - sap-concur
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: expense-approval
    port: 8080
    tools:
    - name: notify-expense-approval
      description: Fetch Concur expense report and notify the approver via Teams.
      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: notify-approver
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-report.approver_email}}'
          text: 'Expense report pending: {{get-report.employee_name}} submitted {{get-report.currency}} {{get-report.total_amount}}. Review: {{get-report.approval_url}}'
  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-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: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → concur-travel-expense-report-notifier.yml

Retrieves IKEA website traffic metrics from Google Analytics, returning sessions, page views, bounce rate, and top-performing product pages.

naftiko: '0.5'
info:
  label: Google Analytics Website Traffic Reporter
  description: Retrieves IKEA website traffic metrics from Google Analytics, returning sessions, page views, bounce rate, and top-performing product pages.
  tags:
  - marketing
  - analytics
  - google-analytics
capability:
  exposes:
  - type: mcp
    namespace: web-analytics
    port: 8080
    tools:
    - name: get-website-traffic
      description: Get web traffic data from Google Analytics for IKEA.com.
      inputParameters:
      - name: property_id
        in: body
        type: string
        description: The Google Analytics property ID.
      - name: date_range
        in: body
        type: string
        description: Date range, e.g., last_7_days.
      call: ga.get-report
      with:
        property_id: '{{property_id}}'
        date_range: '{{date_range}}'
      outputParameters:
      - name: sessions
        type: string
        mapping: $.rows[0].metricValues[0].value
      - name: page_views
        type: string
        mapping: $.rows[0].metricValues[1].value
      - name: bounce_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-report
        method: POST
Open in Framework → View in Fleet → google-analytics-website-traffic-reporter.yml

Retrieves distribution center capacity utilization from SAP, returning total capacity, current utilization percentage, inbound shipments pending, and outbound orders queued.

naftiko: '0.5'
info:
  label: SAP Distribution Center Capacity Lookup
  description: Retrieves distribution center capacity utilization from SAP, returning total capacity, current utilization percentage, inbound shipments pending, and outbound orders queued.
  tags:
  - supply-chain
  - logistics
  - sap
  - warehouse
capability:
  exposes:
  - type: mcp
    namespace: dc-management
    port: 8080
    tools:
    - name: get-dc-capacity
      description: Look up distribution center capacity from SAP. Returns utilization and pending volumes.
      inputParameters:
      - name: dc_code
        in: body
        type: string
        description: The distribution center code.
      call: sap.get-dc-capacity
      with:
        dc: '{{dc_code}}'
      outputParameters:
      - name: total_capacity_pallets
        type: number
        mapping: $.totalCapacity
      - name: utilization_pct
        type: number
        mapping: $.utilizationPercent
      - name: inbound_pending
        type: number
        mapping: $.inboundPending
      - name: outbound_queued
        type: number
        mapping: $.outboundQueued
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-sap.hana.cloud/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: dc
      path: /warehouse/distribution-centers/{{dc}}/capacity
      inputParameters:
      - name: dc
        in: path
      operations:
      - name: get-dc-capacity
        method: GET
Open in Framework → View in Fleet → sap-distribution-center-capacity-lookup.yml

Optimizes e-commerce search results by analyzing search query data in Snowflake, updating product ranking signals in Algolia, testing search relevance, and reporting improvements to the product team.

naftiko: '0.5'
info:
  label: E-Commerce Search Optimization Orchestrator
  description: Optimizes e-commerce search results by analyzing search query data in Snowflake, updating product ranking signals in Algolia, testing search relevance, and reporting improvements to the product team.
  tags:
  - e-commerce
  - analytics
  - snowflake
  - algolia
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: search-optimization
    port: 8080
    tools:
    - name: optimize-search-results
      description: 'Orchestrate search optimization: analyze queries, update rankings, test relevance, and report.'
      inputParameters:
      - name: market
        in: body
        type: string
        description: Market code (e.g., SE, US).
      steps:
      - name: analyze-queries
        type: call
        call: snowflake.query-search-analytics
        with:
          market: '{{market}}'
      - name: update-rankings
        type: call
        call: algolia.update-ranking-rules
        with:
          index: products_{{market}}
          rules: '{{analyze-queries.recommended_rules}}'
      - name: test-relevance
        type: call
        call: algolia.run-ab-test
        with:
          index: products_{{market}}
          variant: optimized
      - name: report-results
        type: call
        call: msteams.post-message
        with:
          channel: e-commerce-search
          message: 'Search optimization for {{market}}: Top zero-result queries addressed: {{analyze-queries.zero_result_count}}. New ranking rules: {{update-rankings.rule_count}}.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://ikea.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: queries
      path: /statements
      operations:
      - name: query-search-analytics
        method: POST
  - type: http
    namespace: algolia
    baseUri: https://ikea.algolia.net/1
    authentication:
      type: apikey
      key: X-Algolia-API-Key
      value: $secrets.algolia_api_key
      placement: header
    resources:
    - name: rules
      path: /indexes/{{index}}/rules
      inputParameters:
      - name: index
        in: path
      operations:
      - name: update-ranking-rules
        method: POST
      - name: run-ab-test
        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: post-message
        method: POST
Open in Framework → View in Fleet → e-commerce-search-optimization-orchestrator.yml

Retrieves supplier lead time data from SAP for a specific material, returning average lead time in days, on-time delivery rate, and last shipment date.

naftiko: '0.5'
info:
  label: SAP Supplier Lead Time Lookup
  description: Retrieves supplier lead time data from SAP for a specific material, returning average lead time in days, on-time delivery rate, and last shipment date.
  tags:
  - supply-chain
  - procurement
  - sap
capability:
  exposes:
  - type: mcp
    namespace: supply-chain
    port: 8080
    tools:
    - name: get-supplier-lead-time
      description: Look up supplier lead times from SAP. Returns average lead time, on-time rate, and last shipment.
      inputParameters:
      - name: material_number
        in: body
        type: string
        description: The SAP material number.
      - name: vendor_id
        in: body
        type: string
        description: The SAP vendor identifier.
      call: sap.get-lead-time
      with:
        material: '{{material_number}}'
        vendor: '{{vendor_id}}'
      outputParameters:
      - name: avg_lead_time_days
        type: number
        mapping: $.avgLeadTimeDays
      - name: on_time_delivery_pct
        type: number
        mapping: $.onTimeDeliveryPercent
      - name: last_shipment_date
        type: string
        mapping: $.lastShipmentDate
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-sap.hana.cloud/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: vendors
      path: /procurement/vendors/{{vendor}}/materials/{{material}}/lead-time
      inputParameters:
      - name: vendor
        in: path
      - name: material
        in: path
      operations:
      - name: get-lead-time
        method: GET
Open in Framework → View in Fleet → sap-supplier-lead-time-lookup.yml

Sends an announcement to an IKEA store's Microsoft Teams channel for co-worker communications.

naftiko: '0.5'
info:
  label: Microsoft Teams Store Announcement Sender
  description: Sends an announcement to an IKEA store's Microsoft Teams channel for co-worker communications.
  tags:
  - communications
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: store-comms
    port: 8080
    tools:
    - name: send-store-announcement
      description: Post an announcement to a store's Teams channel.
      inputParameters:
      - name: store_code
        in: body
        type: string
        description: The IKEA store code.
      - name: message
        in: body
        type: string
        description: Announcement message text.
      call: msteams.post-message
      with:
        channel_id: announcements_{{store_code}}
        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-message
        method: POST
Open in Framework → View in Fleet → microsoft-teams-store-announcement-sender.yml

Pulls historical sales data from SAP HANA, runs a forecast model request, and writes forecast results to Snowflake for planning teams.

naftiko: '0.5'
info:
  label: Demand Forecasting Data Pipeline
  description: Pulls historical sales data from SAP HANA, runs a forecast model request, and writes forecast results to Snowflake for planning teams.
  tags:
  - supply-chain
  - analytics
  - sap-hana
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: demand-forecasting
    port: 8080
    tools:
    - name: generate-forecast
      description: Generate a demand forecast for a product category.
      inputParameters:
      - name: category
        in: body
        type: string
        description: Product category code.
      - name: forecast_horizon
        in: body
        type: string
        description: Forecast horizon in weeks.
      steps:
      - name: get-history
        type: call
        call: sap-hana.execute-query
        with:
          query: SELECT week, units_sold FROM SALES_HISTORY WHERE category = '{{category}}' ORDER BY week DESC LIMIT 52
      - name: write-forecast
        type: call
        call: snowflake.execute-query
        with:
          statement: INSERT INTO DEMAND_FORECASTS (category, horizon_weeks, historical_data, created_at) VALUES ('{{category}}', {{forecast_horizon}}, '{{get-history.results}}', CURRENT_TIMESTAMP())
  consumes:
  - type: http
    namespace: sap-hana
    baseUri: https://ikea-hana.sap.com/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_hana_token
    resources:
    - name: queries
      path: /sql
      operations:
      - name: execute-query
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://ikea.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: execute-query
        method: POST
Open in Framework → View in Fleet → demand-forecasting-data-pipeline.yml

Conducts a supplier sustainability audit by pulling IWAY compliance data from SAP, checking environmental certifications in Snowflake, generating an audit report in Confluence, and scheduling a follow-up review.

naftiko: '0.5'
info:
  label: Supplier Sustainability Audit Orchestrator
  description: Conducts a supplier sustainability audit by pulling IWAY compliance data from SAP, checking environmental certifications in Snowflake, generating an audit report in Confluence, and scheduling a follow-up review.
  tags:
  - sustainability
  - supply-chain
  - sap
  - snowflake
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: supplier-compliance
    port: 8080
    tools:
    - name: audit-supplier-sustainability
      description: 'Orchestrate supplier sustainability audit: check IWAY compliance, verify certs, report, and schedule follow-up.'
      inputParameters:
      - name: supplier_id
        in: body
        type: string
        description: The supplier identifier.
      steps:
      - name: get-iway-compliance
        type: call
        call: sap.get-iway-status
        with:
          supplier_id: '{{supplier_id}}'
      - name: check-env-certifications
        type: call
        call: snowflake.query-supplier-certs
        with:
          supplier_id: '{{supplier_id}}'
      - name: create-audit-report
        type: call
        call: confluence.create-page
        with:
          space: SUSTAINABILITY
          title: 'Supplier Audit: {{supplier_id}}'
          body: 'IWAY compliance: {{get-iway-compliance.status}}. Env certs: {{check-env-certifications.cert_count}} active. Risk level: {{get-iway-compliance.risk_level}}.'
      - name: schedule-follow-up
        type: call
        call: msteams.create-event
        with:
          subject: Supplier {{supplier_id}} sustainability follow-up
          start_date: '{{get-iway-compliance.next_review_date}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-sap.hana.cloud/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: iway
      path: /procurement/suppliers/{{supplier_id}}/iway
      inputParameters:
      - name: supplier_id
        in: path
      operations:
      - name: get-iway-status
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://ikea.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: queries
      path: /statements
      operations:
      - name: query-supplier-certs
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://ikea.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: pages
      path: /content
      operations:
      - name: create-page
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: events
      path: /me/events
      operations:
      - name: create-event
        method: POST
Open in Framework → View in Fleet → supplier-sustainability-audit-orchestrator.yml

Generates a store sales report in Microsoft Excel, populating a template workbook with weekly sales data from SAP HANA.

naftiko: '0.5'
info:
  label: Microsoft Excel Sales Report Generator
  description: Generates a store sales report in Microsoft Excel, populating a template workbook with weekly sales data from SAP HANA.
  tags:
  - retail
  - reporting
  - microsoft-excel
  - sap-hana
capability:
  exposes:
  - type: mcp
    namespace: sales-reporting
    port: 8080
    tools:
    - name: generate-sales-report
      description: Pull SAP HANA sales data and populate an Excel report.
      inputParameters:
      - name: store_code
        in: body
        type: string
        description: The IKEA store code.
      - name: week
        in: body
        type: string
        description: Report week in YYYY-Wnn format.
      steps:
      - name: get-sales
        type: call
        call: sap-hana.execute-query
        with:
          query: SELECT date, department, revenue, units FROM DAILY_SALES WHERE store = '{{store_code}}' AND week = '{{week}}'
      - name: update-workbook
        type: call
        call: excel.update-range
        with:
          workbook_id: sales_template_{{store_code}}
          sheet_name: WeeklySales
          range: A2:D50
          values: '{{get-sales.results}}'
  consumes:
  - type: http
    namespace: sap-hana
    baseUri: https://ikea-hana.sap.com/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_hana_token
    resources:
    - name: queries
      path: /sql
      operations:
      - name: execute-query
        method: POST
  - type: http
    namespace: excel
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: workbooks
      path: /me/drive/items/{{workbook_id}}/workbook/worksheets/{{sheet_name}}/range(address='{{range}}')
      inputParameters:
      - name: workbook_id
        in: path
      - name: sheet_name
        in: path
      - name: range
        in: path
      operations:
      - name: update-range
        method: PATCH
Open in Framework → View in Fleet → microsoft-excel-sales-report-generator.yml

Books a furniture assembly service appointment by checking partner availability in SAP, scheduling the service slot, and sending confirmation to the customer.

naftiko: '0.5'
info:
  label: SAP Furniture Assembly Service Booking
  description: Books a furniture assembly service appointment by checking partner availability in SAP, scheduling the service slot, and sending confirmation to the customer.
  tags:
  - retail
  - services
  - sap
capability:
  exposes:
  - type: mcp
    namespace: services
    port: 8080
    tools:
    - name: book-assembly-service
      description: Book a furniture assembly service. Returns confirmation number and scheduled time.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The order identifier.
      - name: postal_code
        in: body
        type: string
        description: Customer postal code.
      - name: preferred_date
        in: body
        type: string
        description: Preferred date in YYYY-MM-DD format.
      call: sap.book-assembly
      with:
        order_id: '{{order_id}}'
        postal_code: '{{postal_code}}'
        date: '{{preferred_date}}'
      outputParameters:
      - name: confirmation_number
        type: string
        mapping: $.confirmationNumber
      - name: scheduled_date
        type: string
        mapping: $.scheduledDate
      - name: time_window
        type: string
        mapping: $.timeWindow
      - name: partner_name
        type: string
        mapping: $.assemblyPartner
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-sap.hana.cloud/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: assembly
      path: /services/assembly/bookings
      operations:
      - name: book-assembly
        method: POST
Open in Framework → View in Fleet → sap-furniture-assembly-service-booking.yml

Retrieves product range lifecycle status from SAP, returning range phase (active, planned discontinuation, end-of-life), remaining inventory, and successor range ID.

naftiko: '0.5'
info:
  label: SAP Product Range Lifecycle Lookup
  description: Retrieves product range lifecycle status from SAP, returning range phase (active, planned discontinuation, end-of-life), remaining inventory, and successor range ID.
  tags:
  - retail
  - product
  - sap
capability:
  exposes:
  - type: mcp
    namespace: product-mgmt
    port: 8080
    tools:
    - name: get-range-lifecycle
      description: Look up product range lifecycle from SAP. Returns phase, inventory, and successor info.
      inputParameters:
      - name: range_id
        in: body
        type: string
        description: The product range identifier.
      call: sap.get-range-status
      with:
        range_id: '{{range_id}}'
      outputParameters:
      - name: phase
        type: string
        mapping: $.lifecyclePhase
      - name: remaining_inventory
        type: number
        mapping: $.remainingInventory
      - name: successor_range_id
        type: string
        mapping: $.successorRangeId
      - name: end_of_life_date
        type: string
        mapping: $.endOfLifeDate
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-sap.hana.cloud/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: ranges
      path: /product-management/ranges/{{range_id}}/lifecycle
      inputParameters:
      - name: range_id
        in: path
      operations:
      - name: get-range-status
        method: GET
Open in Framework → View in Fleet → sap-product-range-lifecycle-lookup.yml

Creates a knowledge base article in Confluence for store operations procedures and returns the page URL.

naftiko: '0.5'
info:
  label: Confluence Knowledge Base Article Creator
  description: Creates a knowledge base article in Confluence for store operations procedures and returns the page URL.
  tags:
  - knowledge-management
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: knowledge-base
    port: 8080
    tools:
    - name: create-kb-article
      description: Create a Confluence knowledge base article.
      inputParameters:
      - name: space_key
        in: body
        type: string
        description: The Confluence space key.
      - name: title
        in: body
        type: string
        description: Article title.
      - name: body
        in: body
        type: string
        description: Article body in HTML.
      call: confluence.create-page
      with:
        space_key: '{{space_key}}'
        title: '{{title}}'
        body: '{{body}}'
      outputParameters:
      - name: page_url
        type: string
        mapping: $._links.webui
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://ikea.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: pages
      path: /content
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → confluence-knowledge-base-article-creator.yml

Retrieves the current delivery status for an IKEA home delivery order, returning carrier, tracking number, and estimated delivery window.

naftiko: '0.5'
info:
  label: Delivery Tracking Status Lookup
  description: Retrieves the current delivery status for an IKEA home delivery order, returning carrier, tracking number, and estimated delivery window.
  tags:
  - logistics
  - e-commerce
  - sap
capability:
  exposes:
  - type: mcp
    namespace: delivery-tracking
    port: 8080
    tools:
    - name: get-delivery-status
      description: Look up delivery tracking status for an order.
      inputParameters:
      - name: delivery_number
        in: body
        type: string
        description: The SAP delivery document number.
      call: sap.get-delivery
      with:
        delivery_number: '{{delivery_number}}'
      outputParameters:
      - name: carrier
        type: string
        mapping: $.d.ShippingPoint
      - name: tracking_number
        type: string
        mapping: $.d.TrackingNumber
      - name: status
        type: string
        mapping: $.d.DeliveryStatus
      - name: eta
        type: string
        mapping: $.d.PlannedDeliveryDate
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-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
Open in Framework → View in Fleet → delivery-tracking-status-lookup.yml

Retrieves application performance metrics from New Relic for the IKEA e-commerce platform, returning response time, error rate, and throughput.

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

Retrieves co-worker engagement survey results from Workday for a business unit, returning participation rate, overall engagement score, and top improvement areas.

naftiko: '0.5'
info:
  label: Workday Co-Worker Engagement Survey Lookup
  description: Retrieves co-worker engagement survey results from Workday for a business unit, returning participation rate, overall engagement score, and top improvement areas.
  tags:
  - hr
  - analytics
  - workday
capability:
  exposes:
  - type: mcp
    namespace: hr-engagement
    port: 8080
    tools:
    - name: get-engagement-results
      description: Look up engagement survey results from Workday. Returns participation, score, and improvement areas.
      inputParameters:
      - name: business_unit
        in: body
        type: string
        description: The Workday business unit code.
      - name: survey_period
        in: body
        type: string
        description: Survey period identifier.
      call: workday.get-survey-results
      with:
        unit: '{{business_unit}}'
        period: '{{survey_period}}'
      outputParameters:
      - name: participation_rate
        type: number
        mapping: $.participationRate
      - name: engagement_score
        type: number
        mapping: $.overallScore
      - name: top_improvement_areas
        type: array
        mapping: $.improvementAreas
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: surveys
      path: /ikea/surveys/engagement
      operations:
      - name: get-survey-results
        method: GET
Open in Framework → View in Fleet → workday-co-worker-engagement-survey-lookup.yml

Takes a batch of home delivery orders, calculates optimal routing using Google Maps, and updates delivery assignments in SAP for driver dispatch.

naftiko: '0.5'
info:
  label: Last-Mile Delivery Routing Optimizer
  description: Takes a batch of home delivery orders, calculates optimal routing using Google Maps, and updates delivery assignments in SAP for driver dispatch.
  tags:
  - logistics
  - supply-chain
  - google-maps
  - sap
capability:
  exposes:
  - type: mcp
    namespace: delivery-routing
    port: 8080
    tools:
    - name: optimize-routes
      description: Optimize delivery routes for a batch of orders.
      inputParameters:
      - name: batch_id
        in: body
        type: string
        description: The delivery batch ID.
      - name: warehouse_address
        in: body
        type: string
        description: Origin warehouse address.
      steps:
      - name: get-deliveries
        type: call
        call: sap.get-delivery-batch
        with:
          batch_id: '{{batch_id}}'
      - name: calculate-routes
        type: call
        call: gmaps.get-directions
        with:
          origin: '{{warehouse_address}}'
          waypoints: '{{get-deliveries.delivery_addresses}}'
          optimize: 'true'
      - name: update-assignments
        type: call
        call: sap.update-delivery-sequence
        with:
          batch_id: '{{batch_id}}'
          optimized_sequence: '{{calculate-routes.optimized_order}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-s4.sap.com/sap/opu/odata/sap/API_OUTBOUND_DELIVERY_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: batches
      path: /A_DeliveryBatch('{{batch_id}}')
      inputParameters:
      - name: batch_id
        in: path
      operations:
      - name: get-delivery-batch
        method: GET
      - name: update-delivery-sequence
        method: PATCH
  - type: http
    namespace: gmaps
    baseUri: https://maps.googleapis.com/maps/api
    authentication:
      type: apiKey
      name: key
      in: query
      value: $secrets.google_maps_api_key
    resources:
    - name: directions
      path: /directions/json
      inputParameters:
      - name: origin
        in: query
      - name: waypoints
        in: query
      - name: optimize
        in: query
      operations:
      - name: get-directions
        method: GET
Open in Framework → View in Fleet → last-mile-delivery-routing-optimizer.yml

Reports a store safety incident by creating a ServiceNow incident, pulling co-worker details from Workday, logging the event in Snowflake for trend analysis, and alerting the regional safety manager.

naftiko: '0.5'
info:
  label: Store Safety Incident Reporting Orchestrator
  description: Reports a store safety incident by creating a ServiceNow incident, pulling co-worker details from Workday, logging the event in Snowflake for trend analysis, and alerting the regional safety manager.
  tags:
  - safety
  - operations
  - servicenow
  - workday
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: store-safety
    port: 8080
    tools:
    - name: report-safety-incident
      description: 'Orchestrate safety incident reporting: create ticket, get co-worker info, log event, and alert manager.'
      inputParameters:
      - name: store_code
        in: body
        type: string
        description: The store code.
      - name: incident_type
        in: body
        type: string
        description: Type of safety incident.
      - name: reporter_id
        in: body
        type: string
        description: The reporting co-worker ID.
      steps:
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Safety incident at store {{store_code}}: {{incident_type}}'
          category: safety
          urgency: '2'
      - name: get-reporter
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{reporter_id}}'
      - name: log-event
        type: call
        call: snowflake.insert-safety-event
        with:
          store: '{{store_code}}'
          type: '{{incident_type}}'
          reporter: '{{get-reporter.full_name}}'
      - name: alert-manager
        type: call
        call: msteams.post-message
        with:
          channel: safety-region-{{store_code}}
          message: 'Safety incident at store {{store_code}}: {{incident_type}}. Reported by: {{get-reporter.full_name}}. ServiceNow: {{create-incident.number}}.'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://ikea.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: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /ikea/workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://ikea.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: queries
      path: /statements
      operations:
      - name: insert-safety-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: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → store-safety-incident-reporting-orchestrator.yml

Queries Snowflake for e-commerce conversion funnel metrics, returning session count, product view rate, add-to-cart rate, checkout rate, and purchase conversion rate.

naftiko: '0.5'
info:
  label: Snowflake E-Commerce Conversion Funnel Lookup
  description: Queries Snowflake for e-commerce conversion funnel metrics, returning session count, product view rate, add-to-cart rate, checkout rate, and purchase conversion rate.
  tags:
  - e-commerce
  - analytics
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: e-commerce-analytics
    port: 8080
    tools:
    - name: get-conversion-funnel
      description: Look up e-commerce funnel metrics from Snowflake. Returns step-by-step conversion rates.
      inputParameters:
      - name: date_range_start
        in: body
        type: string
        description: Start date in YYYY-MM-DD format.
      - name: date_range_end
        in: body
        type: string
        description: End date in YYYY-MM-DD format.
      - name: market
        in: body
        type: string
        description: Market code (e.g., SE, US, DE).
      call: snowflake.query-funnel
      with:
        start: '{{date_range_start}}'
        end: '{{date_range_end}}'
        market: '{{market}}'
      outputParameters:
      - name: sessions
        type: number
        mapping: $.data[0].sessions
      - name: product_view_rate
        type: number
        mapping: $.data[0].product_view_rate
      - name: add_to_cart_rate
        type: number
        mapping: $.data[0].add_to_cart_rate
      - name: purchase_rate
        type: number
        mapping: $.data[0].purchase_rate
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://ikea.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: queries
      path: /statements
      operations:
      - name: query-funnel
        method: POST
Open in Framework → View in Fleet → snowflake-e-commerce-conversion-funnel-lookup.yml

Retrieves open store maintenance tickets from ServiceNow, returning ticket number, category, priority, and assigned technician.

naftiko: '0.5'
info:
  label: ServiceNow Store Maintenance Ticket Lookup
  description: Retrieves open store maintenance tickets from ServiceNow, returning ticket number, category, priority, and assigned technician.
  tags:
  - operations
  - maintenance
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: store-ops
    port: 8080
    tools:
    - name: get-maintenance-tickets
      description: Look up open store maintenance tickets from ServiceNow. Returns ticket details and status.
      inputParameters:
      - name: store_code
        in: body
        type: string
        description: The IKEA store code.
      call: servicenow.get-maintenance-tickets
      with:
        store: '{{store_code}}'
      outputParameters:
      - name: tickets
        type: array
        mapping: $.result
        items:
        - name: number
          type: string
          mapping: $.number
        - name: category
          type: string
          mapping: $.category
        - name: priority
          type: string
          mapping: $.priority
        - name: assigned_to
          type: string
          mapping: $.assigned_to.display_value
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://ikea.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: get-maintenance-tickets
        method: GET
Open in Framework → View in Fleet → servicenow-store-maintenance-ticket-lookup.yml

Retrieves performance analytics from YouTube for IKEA product videos, returning views, watch time, and engagement.

naftiko: '0.5'
info:
  label: YouTube Product Video Tracker
  description: Retrieves performance analytics from YouTube for IKEA product videos, returning views, watch time, and engagement.
  tags:
  - marketing
  - social-media
  - youtube
capability:
  exposes:
  - type: mcp
    namespace: youtube-analytics
    port: 8080
    tools:
    - name: get-video-performance
      description: Retrieve YouTube video performance metrics.
      inputParameters:
      - name: video_id
        in: body
        type: string
        description: The YouTube video ID.
      call: youtube.get-stats
      with:
        video_id: '{{video_id}}'
      outputParameters:
      - name: views
        type: string
        mapping: $.items[0].statistics.viewCount
      - name: likes
        type: string
        mapping: $.items[0].statistics.likeCount
  consumes:
  - type: http
    namespace: youtube
    baseUri: https://www.googleapis.com/youtube/v3
    authentication:
      type: apiKey
      name: key
      in: query
      value: $secrets.youtube_api_key
    resources:
    - name: videos
      path: /videos
      inputParameters:
      - name: id
        in: query
        value: '{{video_id}}'
      - name: part
        in: query
        value: statistics
      operations:
      - name: get-stats
        method: GET
Open in Framework → View in Fleet → youtube-product-video-tracker.yml

Retrieves Azure Active Directory group memberships and application assignments for an IKEA co-worker, returning assigned apps, roles, and last sign-in.

naftiko: '0.5'
info:
  label: Azure AD Co-Worker Access Lookup
  description: Retrieves Azure Active Directory group memberships and application assignments for an IKEA co-worker, returning assigned apps, roles, and last sign-in.
  tags:
  - security
  - identity
  - azure-active-directory
capability:
  exposes:
  - type: mcp
    namespace: identity
    port: 8080
    tools:
    - name: get-co-worker-access
      description: Look up Azure AD access for a co-worker. Returns group memberships, apps, and last sign-in.
      inputParameters:
      - name: user_email
        in: body
        type: string
        description: The co-worker email address.
      call: azure-ad.get-user-access
      with:
        email: '{{user_email}}'
      outputParameters:
      - name: group_count
        type: number
        mapping: $.groupCount
      - name: assigned_apps
        type: array
        mapping: $.appRoleAssignments
      - name: last_sign_in
        type: string
        mapping: $.lastSignInDateTime
  consumes:
  - type: http
    namespace: azure-ad
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: users
      path: /users/{{email}}
      inputParameters:
      - name: email
        in: path
      operations:
      - name: get-user-access
        method: GET
Open in Framework → View in Fleet → azure-ad-co-worker-access-lookup.yml

Retrieves product quality test results from SAP Quality Management, returning test type, pass/fail status, defect count, and batch number.

naftiko: '0.5'
info:
  label: SAP Product Quality Test Lookup
  description: Retrieves product quality test results from SAP Quality Management, returning test type, pass/fail status, defect count, and batch number.
  tags:
  - quality
  - supply-chain
  - sap
capability:
  exposes:
  - type: mcp
    namespace: quality
    port: 8080
    tools:
    - name: get-quality-test-results
      description: Look up quality test results from SAP QM. Returns test details and defect counts.
      inputParameters:
      - name: article_number
        in: body
        type: string
        description: The article number.
      - name: batch_number
        in: body
        type: string
        description: The production batch number.
      call: sap.get-quality-results
      with:
        article: '{{article_number}}'
        batch: '{{batch_number}}'
      outputParameters:
      - name: test_type
        type: string
        mapping: $.testType
      - name: status
        type: string
        mapping: $.overallStatus
      - name: defect_count
        type: number
        mapping: $.defectCount
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-sap.hana.cloud/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: quality
      path: /quality-management/results
      operations:
      - name: get-quality-results
        method: GET
Open in Framework → View in Fleet → sap-product-quality-test-lookup.yml

Performs IKEA restaurant food safety checks by pulling temperature logs from IoT sensors, verifying HACCP compliance in ServiceNow, and sending inspection results to the food service manager via Microsoft Teams.

naftiko: '0.5'
info:
  label: Food Service Quality Check Orchestrator
  description: Performs IKEA restaurant food safety checks by pulling temperature logs from IoT sensors, verifying HACCP compliance in ServiceNow, and sending inspection results to the food service manager via Microsoft Teams.
  tags:
  - operations
  - food-safety
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: food-service
    port: 8080
    tools:
    - name: run-food-quality-check
      description: 'Orchestrate food safety check: pull temps, verify HACCP compliance, and notify manager.'
      inputParameters:
      - name: store_code
        in: body
        type: string
        description: The IKEA store code.
      steps:
      - name: get-temperature-logs
        type: call
        call: snowflake.query-temperature-logs
        with:
          store: '{{store_code}}'
          area: food-service
      - name: check-haccp-compliance
        type: call
        call: servicenow.get-haccp-checklist
        with:
          store: '{{store_code}}'
      - name: create-inspection-record
        type: call
        call: servicenow.create-record
        with:
          table: u_food_safety_inspection
          data:
            store: '{{store_code}}'
            temp_compliant: '{{get-temperature-logs.all_in_range}}'
            haccp_status: '{{check-haccp-compliance.status}}'
      - name: notify-manager
        type: call
        call: msteams.post-message
        with:
          channel: store-{{store_code}}-food
          message: 'Food safety check complete. Temp compliance: {{get-temperature-logs.all_in_range}}. HACCP: {{check-haccp-compliance.status}}.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://ikea.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: queries
      path: /statements
      operations:
      - name: query-temperature-logs
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://ikea.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: haccp
      path: /table/u_haccp_checklist
      operations:
      - name: get-haccp-checklist
        method: GET
    - name: inspections
      path: /table/u_food_safety_inspection
      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: messages
      path: /teams/channels/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → food-service-quality-check-orchestrator.yml

Retrieves a product design document from SharePoint by file path, returning the download URL and metadata.

naftiko: '0.5'
info:
  label: SharePoint Design Document Retriever
  description: Retrieves a product design document from SharePoint by file path, returning the download URL and metadata.
  tags:
  - design
  - documents
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: design-docs
    port: 8080
    tools:
    - name: get-design-document
      description: Retrieve a product design document from SharePoint.
      inputParameters:
      - name: site_id
        in: body
        type: string
        description: The SharePoint site ID.
      - name: file_path
        in: body
        type: string
        description: Path to the file.
      call: sharepoint.get-file
      with:
        site_id: '{{site_id}}'
        file_path: '{{file_path}}'
      outputParameters:
      - name: download_url
        type: string
        mapping: $.@microsoft.graph.downloadUrl
      - name: file_name
        type: string
        mapping: $.name
      - name: last_modified
        type: string
        mapping: $.lastModifiedDateTime
  consumes:
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: files
      path: /{{site_id}}/drive/root:/{{file_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: file_path
        in: path
      operations:
      - name: get-file
        method: GET
Open in Framework → View in Fleet → sharepoint-design-document-retriever.yml

Retrieves website performance metrics from New Relic, returning page load time, throughput, error rate, and Apdex score for the IKEA e-commerce site.

naftiko: '0.5'
info:
  label: New Relic Website Performance Lookup
  description: Retrieves website performance metrics from New Relic, returning page load time, throughput, error rate, and Apdex score for the IKEA e-commerce site.
  tags:
  - monitoring
  - e-commerce
  - new-relic
  - performance
capability:
  exposes:
  - type: mcp
    namespace: web-performance
    port: 8080
    tools:
    - name: get-website-performance
      description: Look up IKEA website performance from New Relic. Returns load time, throughput, and Apdex.
      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: avg_page_load_ms
        type: number
        mapping: $.data.pageLoadTime
      - name: throughput_rpm
        type: number
        mapping: $.data.throughput
      - name: error_rate_pct
        type: number
        mapping: $.data.errorRate
      - name: apdex_score
        type: number
        mapping: $.data.apdex
  consumes:
  - type: http
    namespace: newrelic
    baseUri: https://api.newrelic.com/v2
    authentication:
      type: apikey
      key: Api-Key
      value: $secrets.newrelic_api_key
      placement: header
    resources:
    - name: applications
      path: /applications/{{app_id}}/metrics/data.json
      inputParameters:
      - name: app_id
        in: path
      operations:
      - name: get-app-metrics
        method: GET
Open in Framework → View in Fleet → new-relic-website-performance-lookup.yml

Triggers a refresh of the store-level sales dashboard in Power BI, returning refresh status and timestamp for the latest data update.

naftiko: '0.5'
info:
  label: Power BI Store Sales Dashboard Refresh
  description: Triggers a refresh of the store-level sales dashboard in Power BI, returning refresh status and timestamp for the latest data update.
  tags:
  - reporting
  - analytics
  - power-bi
capability:
  exposes:
  - type: mcp
    namespace: sales-reporting
    port: 8080
    tools:
    - name: refresh-store-dashboard
      description: Trigger a Power BI store sales dashboard refresh. Returns status and timestamp.
      inputParameters:
      - name: dataset_id
        in: body
        type: string
        description: The Power BI dataset identifier.
      call: powerbi.trigger-refresh
      with:
        dataset_id: '{{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/{{dataset_id}}/refreshes
      inputParameters:
      - name: dataset_id
        in: path
      operations:
      - name: trigger-refresh
        method: POST
Open in Framework → View in Fleet → power-bi-store-sales-dashboard-refresh.yml

Queries Cloudflare for website performance metrics for IKEA's online store, returning request count, bandwidth, and cache hit ratio.

naftiko: '0.5'
info:
  label: Cloudflare Website Performance Monitor
  description: Queries Cloudflare for website performance metrics for IKEA's online store, returning request count, bandwidth, and cache hit ratio.
  tags:
  - e-commerce
  - it-operations
  - cloudflare
capability:
  exposes:
  - type: mcp
    namespace: cdn-performance
    port: 8080
    tools:
    - name: get-cdn-metrics
      description: Retrieve Cloudflare performance metrics for IKEA.com.
      inputParameters:
      - name: zone_id
        in: body
        type: string
        description: The Cloudflare zone ID.
      call: cloudflare.get-analytics
      with:
        zone_id: '{{zone_id}}'
      outputParameters:
      - name: total_requests
        type: string
        mapping: $.result.totals.requests.all
      - name: bandwidth
        type: string
        mapping: $.result.totals.bandwidth.all
      - name: cache_hit_ratio
        type: string
        mapping: $.result.totals.requests.cached
  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
Open in Framework → View in Fleet → cloudflare-website-performance-monitor.yml

Queries Snowflake for store foot traffic analytics, returning daily visitor count, peak hours, average dwell time, and conversion rate.

naftiko: '0.5'
info:
  label: Snowflake Store Traffic Analytics Lookup
  description: Queries Snowflake for store foot traffic analytics, returning daily visitor count, peak hours, average dwell time, and conversion rate.
  tags:
  - retail
  - analytics
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: store-analytics
    port: 8080
    tools:
    - name: get-store-traffic
      description: Look up store traffic analytics from Snowflake. Returns visitors, peak hours, and conversion rate.
      inputParameters:
      - name: store_code
        in: body
        type: string
        description: The IKEA store code.
      - name: date
        in: body
        type: string
        description: Date in YYYY-MM-DD format.
      call: snowflake.query-store-traffic
      with:
        store: '{{store_code}}'
        date: '{{date}}'
      outputParameters:
      - name: visitor_count
        type: number
        mapping: $.data[0].visitor_count
      - name: peak_hour
        type: string
        mapping: $.data[0].peak_hour
      - name: avg_dwell_minutes
        type: number
        mapping: $.data[0].avg_dwell_minutes
      - name: conversion_rate
        type: number
        mapping: $.data[0].conversion_rate
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://ikea.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: queries
      path: /statements
      operations:
      - name: query-store-traffic
        method: POST
Open in Framework → View in Fleet → snowflake-store-traffic-analytics-lookup.yml

Retrieves goods receipt status from SAP for a purchase order, returning receipt date, received quantity, quality inspection status, and warehouse put-away location.

naftiko: '0.5'
info:
  label: SAP Goods Receipt Status Lookup
  description: Retrieves goods receipt status from SAP for a purchase order, returning receipt date, received quantity, quality inspection status, and warehouse put-away location.
  tags:
  - supply-chain
  - sap
  - warehouse
capability:
  exposes:
  - type: mcp
    namespace: warehouse
    port: 8080
    tools:
    - name: get-goods-receipt
      description: Look up goods receipt status from SAP by PO number. Returns receipt details and QA status.
      inputParameters:
      - name: po_number
        in: body
        type: string
        description: The SAP purchase order number.
      call: sap.get-goods-receipt
      with:
        po: '{{po_number}}'
      outputParameters:
      - name: receipt_date
        type: string
        mapping: $.receiptDate
      - name: received_qty
        type: number
        mapping: $.receivedQuantity
      - name: inspection_status
        type: string
        mapping: $.qualityInspectionStatus
      - name: putaway_location
        type: string
        mapping: $.putawayLocation
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-sap.hana.cloud/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: goods-receipts
      path: /warehouse/goods-receipts
      operations:
      - name: get-goods-receipt
        method: GET
Open in Framework → View in Fleet → sap-goods-receipt-status-lookup.yml

When a low-score customer survey is recorded in Salesforce, creates a ServiceNow case, notifies the store manager via Teams, and logs in Confluence.

naftiko: '0.5'
info:
  label: Customer Feedback Survey Escalation
  description: When a low-score customer survey is recorded in Salesforce, creates a ServiceNow case, notifies the store manager via Teams, and logs in Confluence.
  tags:
  - customer-service
  - feedback
  - salesforce
  - servicenow
  - microsoft-teams
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: feedback-escalation
    port: 8080
    tools:
    - name: escalate-survey
      description: Escalate negative customer feedback across ServiceNow, Teams, and Confluence.
      inputParameters:
      - name: survey_id
        in: body
        type: string
        description: The Salesforce survey response ID.
      steps:
      - name: get-survey
        type: call
        call: salesforce.get-survey
        with:
          survey_id: '{{survey_id}}'
      - name: create-case
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Customer recovery: {{get-survey.customer_name}} at Store {{get-survey.store_code}}'
          priority: '2'
          category: customer_recovery
      - name: notify-manager
        type: call
        call: msteams.send-message
        with:
          channel_id: store_mgr_{{get-survey.store_code}}
          text: 'Customer recovery alert: {{get-survey.customer_name}} scored {{get-survey.score}}/10. Case: {{create-case.number}}'
      - name: log-case
        type: call
        call: confluence.create-page
        with:
          space_key: CUSTOMER_RECOVERY
          title: Recovery - {{get-survey.customer_name}} - Store {{get-survey.store_code}}
          body: 'Score: {{get-survey.score}}. Comments: {{get-survey.comments}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://ikea.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: surveys
      path: /sobjects/Survey_Response__c/{{survey_id}}
      inputParameters:
      - name: survey_id
        in: path
      operations:
      - name: get-survey
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://ikea.service-now.com/api/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: send-message
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://ikea.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: pages
      path: /content
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → customer-feedback-survey-escalation.yml

Retrieves product details from the SAP commerce catalog, returning article number, price, availability, dimensions, and product family.

naftiko: '0.5'
info:
  label: Product Catalog Item Lookup
  description: Retrieves product details from the SAP commerce catalog, returning article number, price, availability, dimensions, and product family.
  tags:
  - retail
  - e-commerce
  - sap
capability:
  exposes:
  - type: mcp
    namespace: product-catalog
    port: 8080
    tools:
    - name: get-product
      description: Look up an IKEA product by article number from the SAP catalog.
      inputParameters:
      - name: article_number
        in: body
        type: string
        description: The IKEA article number (8-digit).
      call: sap.get-material
      with:
        article_number: '{{article_number}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.d.MaterialName
      - name: price
        type: string
        mapping: $.d.Price
      - name: availability
        type: string
        mapping: $.d.StockStatus
      - name: dimensions
        type: string
        mapping: $.d.Dimensions
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-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('{{article_number}}')
      inputParameters:
      - name: article_number
        in: path
      operations:
      - name: get-material
        method: GET
Open in Framework → View in Fleet → product-catalog-item-lookup.yml

Retrieves payment transaction details from SAP for a store, returning transaction ID, payment method, amount, currency, and settlement status.

naftiko: '0.5'
info:
  label: SAP Payment Transaction Lookup
  description: Retrieves payment transaction details from SAP for a store, returning transaction ID, payment method, amount, currency, and settlement status.
  tags:
  - finance
  - retail
  - sap
  - payments
capability:
  exposes:
  - type: mcp
    namespace: store-finance
    port: 8080
    tools:
    - name: get-payment-transaction
      description: Look up a payment transaction from SAP. Returns payment method, amount, and settlement status.
      inputParameters:
      - name: transaction_id
        in: body
        type: string
        description: The payment transaction identifier.
      call: sap.get-payment
      with:
        transaction_id: '{{transaction_id}}'
      outputParameters:
      - name: payment_method
        type: string
        mapping: $.paymentMethod
      - name: amount
        type: number
        mapping: $.amount
      - name: currency
        type: string
        mapping: $.currency
      - name: settlement_status
        type: string
        mapping: $.settlementStatus
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-sap.hana.cloud/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: payments
      path: /finance/payments/{{transaction_id}}
      inputParameters:
      - name: transaction_id
        in: path
      operations:
      - name: get-payment
        method: GET
Open in Framework → View in Fleet → sap-payment-transaction-lookup.yml

Retrieves an IKEA co-worker's upcoming shift schedule from Workday, returning shift times, department, and store assignment.

naftiko: '0.5'
info:
  label: Workday Co-Worker Schedule Retriever
  description: Retrieves an IKEA co-worker's upcoming shift schedule from Workday, returning shift times, department, and store assignment.
  tags:
  - hr
  - scheduling
  - workday
capability:
  exposes:
  - type: mcp
    namespace: shift-scheduling
    port: 8080
    tools:
    - name: get-schedule
      description: Retrieve upcoming shift schedule for an IKEA co-worker.
      inputParameters:
      - name: worker_id
        in: body
        type: string
        description: The Workday worker ID.
      call: workday.get-schedule
      with:
        worker_id: '{{worker_id}}'
      outputParameters:
      - name: shifts
        type: string
        mapping: $.scheduleEntries
      - name: department
        type: string
        mapping: $.department
      - name: store
        type: string
        mapping: $.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: schedules
      path: /workers/{{worker_id}}/schedule
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-schedule
        method: GET
Open in Framework → View in Fleet → workday-co-worker-schedule-retriever.yml

Runs a customer segmentation query in Snowflake, returning purchase frequency, average order value, and customer tier.

naftiko: '0.5'
info:
  label: Snowflake Customer Segmentation Query
  description: Runs a customer segmentation query in Snowflake, returning purchase frequency, average order value, and customer tier.
  tags:
  - analytics
  - data
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: customer-analytics
    port: 8080
    tools:
    - name: query-customer-segment
      description: Run a customer segmentation query in Snowflake.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The IKEA Family customer ID.
      call: snowflake.execute-query
      with:
        statement: SELECT purchase_count, avg_order_value, customer_tier, last_purchase_date FROM CUSTOMER_SEGMENTS WHERE customer_id = '{{customer_id}}'
      outputParameters:
      - name: purchase_count
        type: string
        mapping: $.data[0][0]
      - name: avg_order_value
        type: string
        mapping: $.data[0][1]
      - name: customer_tier
        type: string
        mapping: $.data[0][2]
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://ikea.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: execute-query
        method: POST
Open in Framework → View in Fleet → snowflake-customer-segmentation-query.yml

Retrieves a ServiceNow incident by number and returns its state, assigned group, priority, and resolution notes.

naftiko: '0.5'
info:
  label: ServiceNow IT Incident Status Lookup
  description: Retrieves a ServiceNow incident by number and returns its state, assigned group, priority, and resolution notes.
  tags:
  - it-operations
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: incident-status
    port: 8080
    tools:
    - name: get-incident-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.state
      - name: assigned_to
        type: string
        mapping: $.result.assigned_to.display_value
      - name: priority
        type: string
        mapping: $.result.priority
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://ikea.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}}
      operations:
      - name: get-incident
        method: GET
Open in Framework → View in Fleet → servicenow-it-incident-status-lookup.yml

Retrieves regional sales performance data from a Tableau workbook, returning revenue, units sold, average transaction value, and year-over-year growth.

naftiko: '0.5'
info:
  label: Tableau Regional Sales Report Lookup
  description: Retrieves regional sales performance data from a Tableau workbook, returning revenue, units sold, average transaction value, and year-over-year growth.
  tags:
  - reporting
  - analytics
  - tableau
  - sales
capability:
  exposes:
  - type: mcp
    namespace: sales-analytics
    port: 8080
    tools:
    - name: get-regional-sales
      description: Look up regional sales from Tableau. Returns revenue, units, ATV, and YoY growth.
      inputParameters:
      - name: region
        in: body
        type: string
        description: The sales region (e.g., Europe, North America).
      - name: period
        in: body
        type: string
        description: Reporting period in YYYY-MM format.
      call: tableau.get-view-data
      with:
        workbook: regional-sales
        view: summary
        filters:
          region: '{{region}}'
          period: '{{period}}'
      outputParameters:
      - name: revenue
        type: number
        mapping: $.data[0].revenue
      - name: units_sold
        type: number
        mapping: $.data[0].units
      - name: avg_transaction_value
        type: number
        mapping: $.data[0].atv
      - name: yoy_growth_pct
        type: number
        mapping: $.data[0].yoy_growth
  consumes:
  - type: http
    namespace: tableau
    baseUri: https://ikea.online.tableau.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: views
      path: /sites/ikea/views
      operations:
      - name: get-view-data
        method: GET
Open in Framework → View in Fleet → tableau-regional-sales-report-lookup.yml

Checks store planogram compliance by pulling the current layout from SAP, comparing against the approved plan in SharePoint, flagging deviations, and sending a compliance report to the visual merchandising team.

naftiko: '0.5'
info:
  label: Store Layout Planogram Compliance Orchestrator
  description: Checks store planogram compliance by pulling the current layout from SAP, comparing against the approved plan in SharePoint, flagging deviations, and sending a compliance report to the visual merchandising team.
  tags:
  - retail
  - operations
  - sap
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: visual-merchandising
    port: 8080
    tools:
    - name: audit-planogram-compliance
      description: 'Orchestrate planogram compliance audit: pull layout, compare to plan, flag deviations, and report.'
      inputParameters:
      - name: store_code
        in: body
        type: string
        description: The IKEA store code.
      - name: department
        in: body
        type: string
        description: The store department (e.g., bedroom, kitchen).
      steps:
      - name: get-current-layout
        type: call
        call: sap.get-store-layout
        with:
          store: '{{store_code}}'
          department: '{{department}}'
      - name: get-approved-plan
        type: call
        call: sharepoint.get-document
        with:
          library: Planograms
          path: '{{store_code}}/{{department}}/approved-plan.json'
      - name: compare-layouts
        type: call
        call: snowflake.run-layout-comparison
        with:
          current: '{{get-current-layout.data}}'
          approved: '{{get-approved-plan.data}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel: visual-merchandising
          message: 'Planogram audit for {{store_code}} {{department}}: {{compare-layouts.compliance_pct}}% compliant. {{compare-layouts.deviation_count}} deviations found.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-sap.hana.cloud/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: layouts
      path: /store-management/layouts
      operations:
      - name: get-store-layout
        method: GET
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites/ikea.sharepoint.com
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: documents
      path: /drive/items
      operations:
      - name: get-document
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://ikea.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: queries
      path: /statements
      operations:
      - name: run-layout-comparison
        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: post-message
        method: POST
Open in Framework → View in Fleet → store-layout-planogram-compliance-orchestrator.yml

Retrieves an IKEA co-worker's Azure AD profile, returning display name, job title, department, and office location.

naftiko: '0.5'
info:
  label: Azure Active Directory User Lookup
  description: Retrieves an IKEA co-worker's Azure AD profile, returning display name, job title, department, and office location.
  tags:
  - it-operations
  - identity
  - azure-active-directory
capability:
  exposes:
  - type: mcp
    namespace: identity
    port: 8080
    tools:
    - name: get-ad-user
      description: Look up a co-worker in Azure Active Directory by UPN.
      inputParameters:
      - name: user_upn
        in: body
        type: string
        description: The user principal name.
      call: azuread.get-user
      with:
        user_upn: '{{user_upn}}'
      outputParameters:
      - name: display_name
        type: string
        mapping: $.displayName
      - name: job_title
        type: string
        mapping: $.jobTitle
      - name: department
        type: string
        mapping: $.department
  consumes:
  - type: http
    namespace: azuread
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: users
      path: /users/{{user_upn}}
      inputParameters:
      - name: user_upn
        in: path
      operations:
      - name: get-user
        method: GET
Open in Framework → View in Fleet → azure-active-directory-user-lookup.yml

Coordinates a new product range launch by creating master data in SAP, publishing product content in Contentful, setting up Adobe Analytics tracking, and announcing the range in Microsoft Teams.

naftiko: '0.5'
info:
  label: New Product Range Launch Orchestrator
  description: Coordinates a new product range launch by creating master data in SAP, publishing product content in Contentful, setting up Adobe Analytics tracking, and announcing the range in Microsoft Teams.
  tags:
  - retail
  - product
  - sap
  - contentful
  - adobe-analytics
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: product-launch
    port: 8080
    tools:
    - name: launch-product-range
      description: 'Orchestrate a product range launch: create SAP master data, publish content, set up tracking, and announce.'
      inputParameters:
      - name: range_id
        in: body
        type: string
        description: The product range identifier.
      - name: launch_date
        in: body
        type: string
        description: Launch date in YYYY-MM-DD format.
      steps:
      - name: create-master-data
        type: call
        call: sap.create-product-range
        with:
          range_id: '{{range_id}}'
          launch_date: '{{launch_date}}'
      - name: publish-content
        type: call
        call: contentful.publish-entries
        with:
          range_id: '{{range_id}}'
      - name: setup-tracking
        type: call
        call: adobe-analytics.create-tracking-events
        with:
          range_id: '{{range_id}}'
          event_names:
          - range_view_{{range_id}}
          - range_atc_{{range_id}}
      - name: announce-launch
        type: call
        call: msteams.post-message
        with:
          channel: product-launches
          message: 'New range {{create-master-data.range_name}} launching {{launch_date}}. {{create-master-data.article_count}} articles. Content published: {{publish-content.entry_count}} entries.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-sap.hana.cloud/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: products
      path: /product-management/ranges
      operations:
      - name: create-product-range
        method: POST
  - type: http
    namespace: contentful
    baseUri: https://api.contentful.com/spaces/$secrets.contentful_space_id
    authentication:
      type: bearer
      token: $secrets.contentful_token
    resources:
    - name: entries
      path: /entries
      operations:
      - name: publish-entries
        method: PUT
  - type: http
    namespace: adobe-analytics
    baseUri: https://analytics.adobe.io/api/ikea
    authentication:
      type: bearer
      token: $secrets.adobe_analytics_token
    resources:
    - name: events
      path: /events
      operations:
      - name: create-tracking-events
        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: post-message
        method: POST
Open in Framework → View in Fleet → new-product-range-launch-orchestrator.yml

Retrieves a SAP purchase order for supplier procurement, returning vendor, delivery date, total value, and line item status.

naftiko: '0.5'
info:
  label: Supplier Purchase Order Status Lookup
  description: Retrieves a SAP purchase order for supplier procurement, returning vendor, delivery date, total value, and line item status.
  tags:
  - supply-chain
  - procurement
  - sap
capability:
  exposes:
  - type: mcp
    namespace: procurement
    port: 8080
    tools:
    - name: get-purchase-order
      description: Look up a SAP purchase order by PO number.
      inputParameters:
      - name: po_number
        in: body
        type: string
        description: The SAP purchase order number.
      call: sap.get-po
      with:
        po_number: '{{po_number}}'
      outputParameters:
      - name: vendor
        type: string
        mapping: $.d.Supplier.CompanyName
      - name: total_value
        type: string
        mapping: $.d.TotalAmount
      - name: status
        type: string
        mapping: $.d.OverallStatus
      - name: delivery_date
        type: string
        mapping: $.d.DeliveryDate
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-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
Open in Framework → View in Fleet → supplier-purchase-order-status-lookup.yml

Retrieves augmented reality room planner session data from Snowflake, returning session count, average duration, most placed articles, and conversion to purchase rate.

naftiko: '0.5'
info:
  label: AR Room Planner Session Lookup
  description: Retrieves augmented reality room planner session data from Snowflake, returning session count, average duration, most placed articles, and conversion to purchase rate.
  tags:
  - e-commerce
  - analytics
  - snowflake
  - ar
capability:
  exposes:
  - type: mcp
    namespace: digital-experience
    port: 8080
    tools:
    - name: get-ar-planner-metrics
      description: Look up AR room planner session metrics from Snowflake. Returns usage and conversion data.
      inputParameters:
      - name: market
        in: body
        type: string
        description: Market code.
      - name: date_range_start
        in: body
        type: string
        description: Start date in YYYY-MM-DD format.
      - name: date_range_end
        in: body
        type: string
        description: End date in YYYY-MM-DD format.
      call: snowflake.query-ar-sessions
      with:
        market: '{{market}}'
        start: '{{date_range_start}}'
        end: '{{date_range_end}}'
      outputParameters:
      - name: session_count
        type: number
        mapping: $.data[0].session_count
      - name: avg_duration_seconds
        type: number
        mapping: $.data[0].avg_duration
      - name: purchase_conversion_rate
        type: number
        mapping: $.data[0].conversion_rate
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://ikea.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: queries
      path: /statements
      operations:
      - name: query-ar-sessions
        method: POST
Open in Framework → View in Fleet → ar-room-planner-session-lookup.yml

Creates a journal entry in Oracle Cloud Financials for IKEA store-level accounting and cost allocation.

naftiko: '0.5'
info:
  label: Oracle Cloud Finance Journal Entry Creator
  description: Creates a journal entry in Oracle Cloud Financials for IKEA store-level accounting and cost allocation.
  tags:
  - finance
  - accounting
  - oracle-cloud
capability:
  exposes:
  - type: mcp
    namespace: finance-journals
    port: 8080
    tools:
    - name: create-journal-entry
      description: Create a journal entry in Oracle Cloud Financials.
      inputParameters:
      - name: ledger_name
        in: body
        type: string
        description: Ledger name.
      - name: journal_lines
        in: body
        type: string
        description: JSON array of journal line items.
      - name: description
        in: body
        type: string
        description: Journal entry description.
      call: oracle-cloud.create-journal
      with:
        ledger_name: '{{ledger_name}}'
        journal_lines: '{{journal_lines}}'
        description: '{{description}}'
  consumes:
  - type: http
    namespace: oracle-cloud
    baseUri: https://ikea.oraclecloud.com/fscmRestApi/resources/v2
    authentication:
      type: bearer
      token: $secrets.oracle_cloud_token
    resources:
    - name: journals
      path: /generalAccountingJournals
      operations:
      - name: create-journal
        method: POST
Open in Framework → View in Fleet → oracle-cloud-finance-journal-entry-creator.yml

Retrieves conversion funnel data from Adobe Analytics for IKEA.com, returning drop-off rates at browse, cart, and checkout stages.

naftiko: '0.5'
info:
  label: Adobe Analytics E-Commerce Funnel Reporter
  description: Retrieves conversion funnel data from Adobe Analytics for IKEA.com, returning drop-off rates at browse, cart, and checkout stages.
  tags:
  - e-commerce
  - analytics
  - adobe-analytics
capability:
  exposes:
  - type: mcp
    namespace: ecommerce-funnel
    port: 8080
    tools:
    - name: get-funnel-data
      description: Retrieve e-commerce funnel 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.
      call: adobe-analytics.get-report
      with:
        rsid: '{{report_suite_id}}'
        date_range: '{{date_range}}'
      outputParameters:
      - name: browse_to_cart
        type: string
        mapping: $.report.data.rows[0].value
      - name: cart_to_checkout
        type: string
        mapping: $.report.data.rows[1].value
      - name: checkout_to_purchase
        type: string
        mapping: $.report.data.rows[2].value
  consumes:
  - 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
Open in Framework → View in Fleet → adobe-analytics-e-commerce-funnel-reporter.yml

Launches a seasonal marketing campaign by activating promotions in SAP, publishing campaign content in Contentful, scheduling social media posts via Instagram API, and setting up Adobe Analytics tracking.

naftiko: '0.5'
info:
  label: Seasonal Campaign Launch Orchestrator
  description: Launches a seasonal marketing campaign by activating promotions in SAP, publishing campaign content in Contentful, scheduling social media posts via Instagram API, and setting up Adobe Analytics tracking.
  tags:
  - marketing
  - retail
  - sap
  - contentful
  - instagram
  - adobe-analytics
capability:
  exposes:
  - type: mcp
    namespace: marketing
    port: 8080
    tools:
    - name: launch-seasonal-campaign
      description: 'Orchestrate seasonal campaign launch: activate promos, publish content, schedule social posts, and set up tracking.'
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: The campaign identifier.
      - name: start_date
        in: body
        type: string
        description: Campaign start date in YYYY-MM-DD format.
      steps:
      - name: activate-promotions
        type: call
        call: sap.activate-campaign-pricing
        with:
          campaign_id: '{{campaign_id}}'
          start_date: '{{start_date}}'
      - name: publish-content
        type: call
        call: contentful.publish-campaign
        with:
          campaign_id: '{{campaign_id}}'
      - name: schedule-social
        type: call
        call: instagram.schedule-posts
        with:
          campaign_id: '{{campaign_id}}'
          publish_date: '{{start_date}}'
      - name: setup-tracking
        type: call
        call: adobe-analytics.create-campaign-segment
        with:
          campaign_id: '{{campaign_id}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-sap.hana.cloud/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: campaigns
      path: /pricing/campaigns
      operations:
      - name: activate-campaign-pricing
        method: POST
  - type: http
    namespace: contentful
    baseUri: https://api.contentful.com/spaces/$secrets.contentful_space_id
    authentication:
      type: bearer
      token: $secrets.contentful_token
    resources:
    - name: entries
      path: /entries
      operations:
      - name: publish-campaign
        method: PUT
  - type: http
    namespace: instagram
    baseUri: https://graph.facebook.com/v17.0
    authentication:
      type: bearer
      token: $secrets.instagram_token
    resources:
    - name: posts
      path: /media
      operations:
      - name: schedule-posts
        method: POST
  - type: http
    namespace: adobe-analytics
    baseUri: https://analytics.adobe.io/api/ikea
    authentication:
      type: bearer
      token: $secrets.adobe_analytics_token
    resources:
    - name: segments
      path: /segments
      operations:
      - name: create-campaign-segment
        method: POST
Open in Framework → View in Fleet → seasonal-campaign-launch-orchestrator.yml

Queries Snowflake for a customer's purchase history, returning order dates, article numbers, quantities, and total spend over the past twelve months.

naftiko: '0.5'
info:
  label: Snowflake Customer Purchase History Lookup
  description: Queries Snowflake for a customer's purchase history, returning order dates, article numbers, quantities, and total spend over the past twelve months.
  tags:
  - retail
  - analytics
  - snowflake
  - customer
capability:
  exposes:
  - type: mcp
    namespace: customer-analytics
    port: 8080
    tools:
    - name: get-purchase-history
      description: Look up customer purchase history from Snowflake. Returns orders, items, and total spend.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The IKEA Family customer identifier.
      call: snowflake.query-purchase-history
      with:
        customer_id: '{{customer_id}}'
      outputParameters:
      - name: total_spend
        type: number
        mapping: $.data[0].total_spend
      - name: order_count
        type: number
        mapping: $.data[0].order_count
      - name: favorite_category
        type: string
        mapping: $.data[0].top_category
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://ikea.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: queries
      path: /statements
      operations:
      - name: query-purchase-history
        method: POST
Open in Framework → View in Fleet → snowflake-customer-purchase-history-lookup.yml

Retrieves active certifications for an IKEA co-worker from Workday, returning certification name, issue date, and expiration date.

naftiko: '0.5'
info:
  label: Workday Co-Worker Certification Lookup
  description: Retrieves active certifications for an IKEA co-worker from Workday, returning certification name, issue date, and expiration date.
  tags:
  - hr
  - compliance
  - workday
capability:
  exposes:
  - type: mcp
    namespace: hr-compliance
    port: 8080
    tools:
    - name: get-co-worker-certifications
      description: Look up co-worker certifications from Workday. Returns certification details and expiry dates.
      inputParameters:
      - name: worker_id
        in: body
        type: string
        description: The Workday worker ID.
      call: workday.get-certifications
      with:
        worker_id: '{{worker_id}}'
      outputParameters:
      - name: certifications
        type: array
        mapping: $.data
        items:
        - name: name
          type: string
          mapping: $.certificationName
        - name: issue_date
          type: string
          mapping: $.issueDate
        - name: expiration_date
          type: string
          mapping: $.expirationDate
  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: /ikea/workers/{{worker_id}}/certifications
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-certifications
        method: GET
Open in Framework → View in Fleet → workday-co-worker-certification-lookup.yml

Prepares a new IKEA store opening by provisioning store systems in ServiceNow, setting up co-worker accounts in Workday, creating the store profile in SAP, and scheduling a grand opening announcement in Microsoft Teams.

naftiko: '0.5'
info:
  label: Store Opening Preparation Orchestrator
  description: Prepares a new IKEA store opening by provisioning store systems in ServiceNow, setting up co-worker accounts in Workday, creating the store profile in SAP, and scheduling a grand opening announcement in Microsoft Teams.
  tags:
  - operations
  - retail
  - servicenow
  - workday
  - sap
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: store-launch
    port: 8080
    tools:
    - name: prepare-store-opening
      description: 'Orchestrate new store opening: provision systems, create accounts, set up SAP profile, and announce.'
      inputParameters:
      - name: store_code
        in: body
        type: string
        description: The new store code.
      - name: opening_date
        in: body
        type: string
        description: Grand opening date in YYYY-MM-DD format.
      - name: store_name
        in: body
        type: string
        description: The store name.
      steps:
      - name: provision-systems
        type: call
        call: servicenow.create-request
        with:
          category: new_store_provisioning
          short_description: System provisioning for store {{store_code}} - {{store_name}}
      - name: setup-co-worker-accounts
        type: call
        call: workday.create-store-org
        with:
          store_code: '{{store_code}}'
          store_name: '{{store_name}}'
      - name: create-store-profile
        type: call
        call: sap.create-store
        with:
          store_code: '{{store_code}}'
          name: '{{store_name}}'
          opening_date: '{{opening_date}}'
      - name: announce-opening
        type: call
        call: msteams.post-message
        with:
          channel: global-announcements
          message: New IKEA store {{store_name}} ({{store_code}}) opening on {{opening_date}}! Systems provisioned. SAP profile created.
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://ikea.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_password
    resources:
    - name: requests
      path: /table/sc_request
      operations:
      - name: create-request
        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: organizations
      path: /ikea/organizations
      operations:
      - name: create-store-org
        method: POST
  - type: http
    namespace: sap
    baseUri: https://ikea-sap.hana.cloud/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: stores
      path: /store-management/stores
      operations:
      - name: create-store
        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: post-message
        method: POST
Open in Framework → View in Fleet → store-opening-preparation-orchestrator.yml

Retrieves engagement metrics from Instagram for IKEA product posts, returning likes, comments, reach, and saves.

naftiko: '0.5'
info:
  label: Instagram Product Engagement Tracker
  description: Retrieves engagement metrics from Instagram for IKEA product posts, returning likes, comments, reach, and saves.
  tags:
  - marketing
  - social-media
  - instagram
capability:
  exposes:
  - type: mcp
    namespace: social-engagement
    port: 8080
    tools:
    - name: get-post-engagement
      description: Retrieve Instagram engagement metrics for an IKEA product post.
      inputParameters:
      - name: media_id
        in: body
        type: string
        description: The Instagram media ID.
      call: instagram.get-media-insights
      with:
        media_id: '{{media_id}}'
      outputParameters:
      - name: likes
        type: string
        mapping: $.data[0].values[0].value
      - name: reach
        type: string
        mapping: $.data[1].values[0].value
      - name: saves
        type: string
        mapping: $.data[2].values[0].value
  consumes:
  - type: http
    namespace: instagram
    baseUri: https://graph.facebook.com/v17.0
    authentication:
      type: bearer
      token: $secrets.instagram_token
    resources:
    - name: media-insights
      path: /{{media_id}}/insights
      inputParameters:
      - name: media_id
        in: path
      - name: metric
        in: query
        value: likes,reach,saved
      operations:
      - name: get-media-insights
        method: GET
Open in Framework → View in Fleet → instagram-product-engagement-tracker.yml

Retrieves pending price tag updates from SAP for a store, returning article number, current price, new price, and effective date.

naftiko: '0.5'
info:
  label: SAP Price Tag Update Lookup
  description: Retrieves pending price tag updates from SAP for a store, returning article number, current price, new price, and effective date.
  tags:
  - retail
  - pricing
  - sap
capability:
  exposes:
  - type: mcp
    namespace: pricing
    port: 8080
    tools:
    - name: get-pending-price-updates
      description: Look up pending price tag changes from SAP for a store. Returns articles with old and new prices.
      inputParameters:
      - name: store_code
        in: body
        type: string
        description: The IKEA store code.
      call: sap.get-price-updates
      with:
        store: '{{store_code}}'
      outputParameters:
      - name: updates
        type: array
        mapping: $.data
        items:
        - name: article_number
          type: string
          mapping: $.articleNumber
        - name: current_price
          type: number
          mapping: $.currentPrice
        - name: new_price
          type: number
          mapping: $.newPrice
        - name: effective_date
          type: string
          mapping: $.effectiveDate
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-sap.hana.cloud/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: pricing
      path: /pricing/pending-updates
      operations:
      - name: get-price-updates
        method: GET
Open in Framework → View in Fleet → sap-price-tag-update-lookup.yml

Retrieves a payroll summary for an IKEA co-worker from Workday, returning gross pay, net pay, and deductions.

naftiko: '0.5'
info:
  label: Workday Payroll Summary Retriever
  description: Retrieves a payroll summary for an IKEA co-worker from Workday, returning gross pay, net pay, and deductions.
  tags:
  - hr
  - payroll
  - workday
capability:
  exposes:
  - type: mcp
    namespace: payroll
    port: 8080
    tools:
    - name: get-payroll-summary
      description: Retrieve the latest payroll summary for a co-worker.
      inputParameters:
      - name: worker_id
        in: body
        type: string
        description: The Workday worker ID.
      call: workday.get-payslip
      with:
        worker_id: '{{worker_id}}'
      outputParameters:
      - name: gross_pay
        type: string
        mapping: $.payslip.grossPay
      - name: net_pay
        type: string
        mapping: $.payslip.netPay
      - name: deductions
        type: string
        mapping: $.payslip.totalDeductions
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: payslips
      path: /workers/{{worker_id}}/paySlips
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-payslip
        method: GET
Open in Framework → View in Fleet → workday-payroll-summary-retriever.yml

Retrieves showroom display item status from SAP, returning display condition, age in days, planned rotation date, and replacement article number.

naftiko: '0.5'
info:
  label: SAP Showroom Display Inventory Lookup
  description: Retrieves showroom display item status from SAP, returning display condition, age in days, planned rotation date, and replacement article number.
  tags:
  - retail
  - operations
  - sap
  - showroom
capability:
  exposes:
  - type: mcp
    namespace: showroom
    port: 8080
    tools:
    - name: get-display-inventory
      description: Look up showroom display items from SAP. Returns condition, age, and rotation schedule.
      inputParameters:
      - name: store_code
        in: body
        type: string
        description: The store code.
      - name: department
        in: body
        type: string
        description: The showroom department.
      call: sap.get-display-items
      with:
        store: '{{store_code}}'
        department: '{{department}}'
      outputParameters:
      - name: displays
        type: array
        mapping: $.data
        items:
        - name: article_number
          type: string
          mapping: $.articleNumber
        - name: condition
          type: string
          mapping: $.condition
        - name: age_days
          type: number
          mapping: $.ageDays
        - name: rotation_date
          type: string
          mapping: $.plannedRotationDate
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-sap.hana.cloud/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: displays
      path: /store-management/showroom/displays
      operations:
      - name: get-display-items
        method: GET
Open in Framework → View in Fleet → sap-showroom-display-inventory-lookup.yml

Triggers an Adobe Photoshop API batch action to generate product-in-room mockup images for the IKEA catalog, returning the output image URL.

naftiko: '0.5'
info:
  label: Adobe Photoshop Room Scene Generator
  description: Triggers an Adobe Photoshop API batch action to generate product-in-room mockup images for the IKEA catalog, returning the output image URL.
  tags:
  - design
  - marketing
  - adobe-photoshop
capability:
  exposes:
  - type: mcp
    namespace: product-imaging
    port: 8080
    tools:
    - name: generate-room-scene
      description: Generate a product-in-room mockup via Adobe Photoshop API.
      inputParameters:
      - name: product_image_url
        in: body
        type: string
        description: URL of the product image.
      - name: room_template
        in: body
        type: string
        description: Room template name (e.g., living_room, bedroom).
      call: photoshop.create-composite
      with:
        input_url: '{{product_image_url}}'
        template: '{{room_template}}'
      outputParameters:
      - name: output_url
        type: string
        mapping: $.output.href
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: photoshop
    baseUri: https://image.adobe.io/pie/psdService
    authentication:
      type: bearer
      token: $secrets.adobe_photoshop_token
    resources:
    - name: composites
      path: /renditionCreate
      operations:
      - name: create-composite
        method: POST
Open in Framework → View in Fleet → adobe-photoshop-room-scene-generator.yml

Pulls energy usage data for an IKEA store from the building management system and logs it to Google Sheets for sustainability reporting.

naftiko: '0.5'
info:
  label: Store Energy Consumption Tracker
  description: Pulls energy usage data for an IKEA store from the building management system and logs it to Google Sheets for sustainability reporting.
  tags:
  - sustainability
  - retail
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: energy-tracking
    port: 8080
    tools:
    - name: track-energy
      description: Retrieve energy data and log to Google Sheets.
      inputParameters:
      - name: store_code
        in: body
        type: string
        description: The IKEA store code.
      - name: month
        in: body
        type: string
        description: Month in YYYY-MM format.
      steps:
      - name: get-energy
        type: call
        call: bms.get-consumption
        with:
          store_code: '{{store_code}}'
          month: '{{month}}'
      - name: log-to-sheet
        type: call
        call: gsheets.append-row
        with:
          spreadsheet_id: sustainability_tracking
          range: Energy!A:E
          values: '{{store_code}},{{month}},{{get-energy.electricity_kwh}},{{get-energy.solar_kwh}},{{get-energy.water_m3}}'
  consumes:
  - type: http
    namespace: bms
    baseUri: https://bms-api.ikea.com/v1
    authentication:
      type: bearer
      token: $secrets.bms_token
    resources:
    - name: consumption
      path: /stores/{{store_code}}/consumption
      inputParameters:
      - name: store_code
        in: path
      - name: month
        in: query
      operations:
      - name: get-consumption
        method: GET
  - type: http
    namespace: gsheets
    baseUri: https://sheets.googleapis.com/v4
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: spreadsheets
      path: /spreadsheets/{{spreadsheet_id}}/values/{{range}}:append
      inputParameters:
      - name: spreadsheet_id
        in: path
      - name: range
        in: path
      operations:
      - name: append-row
        method: POST
Open in Framework → View in Fleet → store-energy-consumption-tracker.yml

Retrieves product page performance metrics from Adobe Analytics, returning page views, add-to-cart rate, and conversion rate for a specific article.

naftiko: '0.5'
info:
  label: Adobe Analytics Product Page Performance
  description: Retrieves product page performance metrics from Adobe Analytics, returning page views, add-to-cart rate, and conversion rate for a specific article.
  tags:
  - marketing
  - analytics
  - adobe-analytics
  - e-commerce
capability:
  exposes:
  - type: mcp
    namespace: web-analytics
    port: 8080
    tools:
    - name: get-product-page-metrics
      description: Look up product page performance from Adobe Analytics. Returns views, add-to-cart, and conversion rate.
      inputParameters:
      - name: article_number
        in: body
        type: string
        description: The IKEA article number.
      call: adobe-analytics.get-product-report
      with:
        article: '{{article_number}}'
      outputParameters:
      - name: page_views
        type: number
        mapping: $.data.pageViews
      - name: add_to_cart_rate
        type: number
        mapping: $.data.addToCartRate
      - name: conversion_rate
        type: number
        mapping: $.data.conversionRate
  consumes:
  - type: http
    namespace: adobe-analytics
    baseUri: https://analytics.adobe.io/api/ikea
    authentication:
      type: bearer
      token: $secrets.adobe_analytics_token
    resources:
    - name: reports
      path: /reports
      operations:
      - name: get-product-report
        method: POST
Open in Framework → View in Fleet → adobe-analytics-product-page-performance.yml

Schedules home delivery by checking available time slots, reserving the delivery window, assigning a delivery vehicle in the TMS, and sending confirmation to the customer via WhatsApp.

naftiko: '0.5'
info:
  label: Home Delivery Scheduling Orchestrator
  description: Schedules home delivery by checking available time slots, reserving the delivery window, assigning a delivery vehicle in the TMS, and sending confirmation to the customer via WhatsApp.
  tags:
  - retail
  - logistics
  - sap
  - whatsapp
capability:
  exposes:
  - type: mcp
    namespace: delivery
    port: 8080
    tools:
    - name: schedule-home-delivery
      description: 'Orchestrate home delivery scheduling: check slots, reserve, assign vehicle, and confirm.'
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The order identifier.
      - name: postal_code
        in: body
        type: string
        description: Customer postal code.
      - name: preferred_date
        in: body
        type: string
        description: Preferred delivery date in YYYY-MM-DD format.
      steps:
      - name: check-slots
        type: call
        call: sap.get-delivery-slots
        with:
          postal_code: '{{postal_code}}'
          date: '{{preferred_date}}'
      - name: reserve-slot
        type: call
        call: sap.reserve-delivery-slot
        with:
          order_id: '{{order_id}}'
          slot_id: '{{check-slots.first_available_slot_id}}'
      - name: assign-vehicle
        type: call
        call: sap.assign-delivery-vehicle
        with:
          slot_id: '{{check-slots.first_available_slot_id}}'
          order_id: '{{order_id}}'
      - name: send-confirmation
        type: call
        call: whatsapp.send-message
        with:
          to: '{{reserve-slot.customer_phone}}'
          message: 'Your IKEA delivery for order #{{order_id}} is confirmed for {{reserve-slot.delivery_date}} between {{reserve-slot.time_window}}. Vehicle: {{assign-vehicle.vehicle_id}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-sap.hana.cloud/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: delivery-slots
      path: /logistics/delivery-slots
      operations:
      - name: get-delivery-slots
        method: GET
      - name: reserve-delivery-slot
        method: POST
    - name: vehicles
      path: /logistics/vehicles/assign
      operations:
      - name: assign-delivery-vehicle
        method: POST
  - type: http
    namespace: whatsapp
    baseUri: https://graph.facebook.com/v17.0/$secrets.whatsapp_phone_number_id
    authentication:
      type: bearer
      token: $secrets.whatsapp_token
    resources:
    - name: messages
      path: /messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → home-delivery-scheduling-orchestrator.yml

Processes co-worker departures by initiating the Workday termination, revoking Azure AD access, creating an IT equipment return ticket in ServiceNow, and notifying the store manager.

naftiko: '0.5'
info:
  label: Workday Co-Worker Offboarding Orchestrator
  description: Processes co-worker departures by initiating the Workday termination, revoking Azure AD access, creating an IT equipment return ticket in ServiceNow, and notifying the store manager.
  tags:
  - hr
  - security
  - workday
  - azure-active-directory
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-offboarding
    port: 8080
    tools:
    - name: offboard-co-worker
      description: 'Orchestrate co-worker offboarding: terminate in Workday, revoke access, create return ticket, and notify.'
      inputParameters:
      - name: worker_id
        in: body
        type: string
        description: The Workday worker ID.
      - name: last_day
        in: body
        type: string
        description: Last working day in YYYY-MM-DD format.
      steps:
      - name: get-worker
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{worker_id}}'
      - name: revoke-access
        type: call
        call: azure-ad.disable-user
        with:
          email: '{{get-worker.email}}'
      - name: create-return-ticket
        type: call
        call: servicenow.create-request
        with:
          category: equipment_return
          short_description: 'IT equipment return: {{get-worker.full_name}} - last day {{last_day}}'
      - name: notify-manager
        type: call
        call: msteams.post-message
        with:
          recipient: '{{get-worker.manager_email}}'
          message: 'Offboarding initiated for {{get-worker.full_name}}. Last day: {{last_day}}. Access revoked. Equipment return ticket: {{create-return-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: /ikea/workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: azure-ad
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: users
      path: /users/{{email}}
      inputParameters:
      - name: email
        in: path
      operations:
      - name: disable-user
        method: PATCH
  - type: http
    namespace: servicenow
    baseUri: https://ikea.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.snow_user
      password: $secrets.snow_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: messages
      path: /chats/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → workday-co-worker-offboarding-orchestrator.yml

Reconciles physical inventory counts against SAP system records, flags discrepancies above threshold, creates adjustment postings, and sends a shrinkage report to the store controller.

naftiko: '0.5'
info:
  label: SAP Store Inventory Count Reconciliation Orchestrator
  description: Reconciles physical inventory counts against SAP system records, flags discrepancies above threshold, creates adjustment postings, and sends a shrinkage report to the store controller.
  tags:
  - retail
  - inventory
  - sap
  - finance
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: inventory-control
    port: 8080
    tools:
    - name: reconcile-inventory-count
      description: 'Orchestrate inventory count reconciliation: compare counts, flag discrepancies, post adjustments, and report.'
      inputParameters:
      - name: store_code
        in: body
        type: string
        description: The store code.
      - name: count_date
        in: body
        type: string
        description: Count date in YYYY-MM-DD format.
      steps:
      - name: get-count-results
        type: call
        call: sap.get-physical-count
        with:
          store: '{{store_code}}'
          date: '{{count_date}}'
      - name: compare-to-system
        type: call
        call: sap.compare-inventory
        with:
          store: '{{store_code}}'
          count_data: '{{get-count-results.data}}'
      - name: post-adjustments
        type: call
        call: sap.post-inventory-adjustments
        with:
          store: '{{store_code}}'
          adjustments: '{{compare-to-system.discrepancies}}'
      - name: send-report
        type: call
        call: msteams.post-message
        with:
          channel: store-{{store_code}}-finance
          message: 'Inventory count for {{store_code}} on {{count_date}}: {{compare-to-system.total_items}} items counted. {{compare-to-system.discrepancy_count}} discrepancies. Shrinkage value: ${{compare-to-system.shrinkage_value}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-sap.hana.cloud/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: counts
      path: /inventory/physical-counts
      operations:
      - name: get-physical-count
        method: GET
      - name: compare-inventory
        method: POST
      - name: post-inventory-adjustments
        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: post-message
        method: POST
Open in Framework → View in Fleet → sap-store-inventory-count-reconciliation-orchestrator.yml

Retrieves self-serve checkout station status from SAP POS, returning station ID, transaction count, error count, and uptime percentage for a store.

naftiko: '0.5'
info:
  label: SAP Self-Serve Checkout Lookup
  description: Retrieves self-serve checkout station status from SAP POS, returning station ID, transaction count, error count, and uptime percentage for a store.
  tags:
  - retail
  - operations
  - sap
  - pos
capability:
  exposes:
  - type: mcp
    namespace: store-tech
    port: 8080
    tools:
    - name: get-checkout-status
      description: Look up self-serve checkout status from SAP. Returns transactions, errors, and uptime.
      inputParameters:
      - name: store_code
        in: body
        type: string
        description: The store code.
      call: sap.get-checkout-stations
      with:
        store: '{{store_code}}'
      outputParameters:
      - name: stations
        type: array
        mapping: $.data
        items:
        - name: station_id
          type: string
          mapping: $.stationId
        - name: transaction_count
          type: number
          mapping: $.transactionCount
        - name: error_count
          type: number
          mapping: $.errorCount
        - name: uptime_pct
          type: number
          mapping: $.uptimePercent
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-sap.hana.cloud/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: pos
      path: /store-management/checkout-stations
      operations:
      - name: get-checkout-stations
        method: GET
Open in Framework → View in Fleet → sap-self-serve-checkout-lookup.yml

Manages cross-border shipments by generating customs documentation in SAP, calculating duties and taxes in Snowflake, booking freight through the carrier API, and updating the order tracking system.

naftiko: '0.5'
info:
  label: Cross-Border Logistics Orchestrator
  description: Manages cross-border shipments by generating customs documentation in SAP, calculating duties and taxes in Snowflake, booking freight through the carrier API, and updating the order tracking system.
  tags:
  - logistics
  - supply-chain
  - sap
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: global-logistics
    port: 8080
    tools:
    - name: process-cross-border-shipment
      description: 'Orchestrate cross-border logistics: generate customs docs, calculate duties, book freight, and update tracking.'
      inputParameters:
      - name: shipment_id
        in: body
        type: string
        description: The shipment identifier.
      - name: origin_country
        in: body
        type: string
        description: Origin country code.
      - name: destination_country
        in: body
        type: string
        description: Destination country code.
      steps:
      - name: generate-customs-docs
        type: call
        call: sap.create-customs-declaration
        with:
          shipment_id: '{{shipment_id}}'
          origin: '{{origin_country}}'
          destination: '{{destination_country}}'
      - name: calculate-duties
        type: call
        call: snowflake.calculate-import-duties
        with:
          shipment_id: '{{shipment_id}}'
          destination: '{{destination_country}}'
      - name: book-freight
        type: call
        call: sap.book-carrier
        with:
          shipment_id: '{{shipment_id}}'
          customs_ref: '{{generate-customs-docs.declaration_number}}'
      - name: update-tracking
        type: call
        call: sap.update-shipment-tracking
        with:
          shipment_id: '{{shipment_id}}'
          carrier_ref: '{{book-freight.tracking_number}}'
          status: customs_cleared
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ikea-sap.hana.cloud/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: customs
      path: /logistics/customs
      operations:
      - name: create-customs-declaration
        method: POST
    - name: carriers
      path: /logistics/carriers/bookings
      operations:
      - name: book-carrier
        method: POST
    - name: tracking
      path: /logistics/shipments/{{shipment_id}}/tracking
      inputParameters:
      - name: shipment_id
        in: path
      operations:
      - name: update-shipment-tracking
        method: PUT
  - type: http
    namespace: snowflake
    baseUri: https://ikea.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: queries
      path: /statements
      operations:
      - name: calculate-import-duties
        method: POST
Open in Framework → View in Fleet → cross-border-logistics-orchestrator.yml

Uploads a compliance or regulatory document to the designated Box folder and returns a shared link.

naftiko: '0.5'
info:
  label: Box Compliance Document Uploader
  description: Uploads a compliance or regulatory document to the designated Box folder and returns a shared link.
  tags:
  - compliance
  - documents
  - box
capability:
  exposes:
  - type: mcp
    namespace: compliance-docs
    port: 8080
    tools:
    - name: upload-compliance-doc
      description: Upload a compliance document to Box.
      inputParameters:
      - name: folder_id
        in: body
        type: string
        description: The Box folder ID.
      - name: file_name
        in: body
        type: string
        description: File name.
      - name: file_content
        in: body
        type: string
        description: Base64-encoded file content.
      call: box.upload-file
      with:
        folder_id: '{{folder_id}}'
        file_name: '{{file_name}}'
        content: '{{file_content}}'
      outputParameters:
      - name: file_id
        type: string
        mapping: $.entries[0].id
      - name: shared_link
        type: string
        mapping: $.entries[0].shared_link.url
  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
Open in Framework → View in Fleet → box-compliance-document-uploader.yml

Executes an analytical query on SAP HANA to retrieve daily store sales, units sold, average transaction value, and top-selling categories.

naftiko: '0.5'
info:
  label: SAP HANA Sales Dashboard Query
  description: Executes an analytical query on SAP HANA to retrieve daily store sales, units sold, average transaction value, and top-selling categories.
  tags:
  - analytics
  - retail
  - sap-hana
capability:
  exposes:
  - type: mcp
    namespace: sales-analytics
    port: 8080
    tools:
    - name: query-sales-data
      description: Run a sales analytics query against SAP HANA.
      inputParameters:
      - name: store_code
        in: body
        type: string
        description: The IKEA store code.
      - name: date
        in: body
        type: string
        description: Sales date in YYYY-MM-DD format.
      call: sap-hana.execute-query
      with:
        query: SELECT total_revenue, units_sold, avg_transaction, top_category FROM SALES_DAILY WHERE store_code = '{{store_code}}' AND sales_date = '{{date}}'
      outputParameters:
      - name: total_revenue
        type: string
        mapping: $.results[0].TOTAL_REVENUE
      - name: units_sold
        type: string
        mapping: $.results[0].UNITS_SOLD
      - name: avg_transaction
        type: string
        mapping: $.results[0].AVG_TRANSACTION
  consumes:
  - type: http
    namespace: sap-hana
    baseUri: https://ikea-hana.sap.com/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_hana_token
    resources:
    - name: queries
      path: /sql
      operations:
      - name: execute-query
        method: POST
Open in Framework → View in Fleet → sap-hana-sales-dashboard-query.yml

Retrieves pull request details from Bitbucket for Inditex development repositories, returning PR title, status, reviewer approvals, and build status.

naftiko: '0.5'
info:
  label: Bitbucket Pull Request Status
  description: Retrieves pull request details from Bitbucket for Inditex development repositories, returning PR title, status, reviewer approvals, and build status.
  tags:
  - development
  - bitbucket
capability:
  exposes:
  - type: mcp
    namespace: code-review
    port: 8080
    tools:
    - name: get-pr-status
      description: Look up a Bitbucket pull request status.
      inputParameters:
      - name: repo_slug
        in: body
        type: string
        description: The repository slug.
      - name: pr_id
        in: body
        type: string
        description: The pull request ID.
      call: bitbucket.get-pr
      with:
        repo_slug: '{{repo_slug}}'
        pr_id: '{{pr_id}}'
      outputParameters:
      - name: title
        type: string
        mapping: $.title
      - name: state
        type: string
        mapping: $.state
      - name: approvals
        type: number
        mapping: $.participants.approved_count
      - name: build_status
        type: string
        mapping: $.build_status
  consumes:
  - type: http
    namespace: bitbucket
    baseUri: https://api.bitbucket.org/2.0
    authentication:
      type: bearer
      token: $secrets.bitbucket_token
    resources:
    - name: pullrequests
      path: /repositories/inditex/{{repo_slug}}/pullrequests/{{pr_id}}
      inputParameters:
      - name: repo_slug
        in: path
      - name: pr_id
        in: path
      operations:
      - name: get-pr
        method: GET
Open in Framework → View in Fleet → bitbucket-pull-request-status.yml

Creates a journal entry in Oracle Cloud Financials for Inditex store accounting.

naftiko: '0.5'
info:
  label: Oracle Cloud Finance Journal Creator
  description: Creates a journal entry in Oracle Cloud Financials for Inditex store accounting.
  tags:
  - finance
  - accounting
  - oracle-cloud
capability:
  exposes:
  - type: mcp
    namespace: finance-journals
    port: 8080
    tools:
    - name: create-journal
      description: Create a GL journal entry in Oracle Cloud.
      inputParameters:
      - name: ledger_name
        in: body
        type: string
        description: Ledger name.
      - name: journal_lines
        in: body
        type: string
        description: JSON line items.
      call: oracle-cloud.create-journal
      with:
        ledger_name: '{{ledger_name}}'
        journal_lines: '{{journal_lines}}'
  consumes:
  - type: http
    namespace: oracle-cloud
    baseUri: https://inditex.oraclecloud.com/fscmRestApi/resources/v2
    authentication:
      type: bearer
      token: $secrets.oracle_cloud_token
    resources:
    - name: journals
      path: /generalAccountingJournals
      operations:
      - name: create-journal
        method: POST
Open in Framework → View in Fleet → oracle-cloud-finance-journal-creator.yml

Creates marketing visuals in Canva for Inditex brand campaigns.

naftiko: '0.5'
info:
  label: Canva Marketing Material Creator
  description: Creates marketing visuals in Canva for Inditex brand campaigns.
  tags:
  - marketing
  - design
  - canva
capability:
  exposes:
  - type: mcp
    namespace: marketing-design
    port: 8080
    tools:
    - name: create-material
      description: Create a promotional material from Canva template.
      inputParameters:
      - name: template_id
        in: body
        type: string
        description: Canva template ID.
      - name: headline
        in: body
        type: string
        description: Headline text.
      call: canva.create-design
      with:
        template_id: '{{template_id}}'
        headline: '{{headline}}'
      outputParameters:
      - name: design_url
        type: string
        mapping: $.design.editUrl
  consumes:
  - type: http
    namespace: canva
    baseUri: https://api.canva.com/v1
    authentication:
      type: bearer
      token: $secrets.canva_token
    resources:
    - name: designs
      path: /designs
      operations:
      - name: create-design
        method: POST
Open in Framework → View in Fleet → canva-marketing-material-creator.yml

Retrieves search performance data from Google Search Console for Inditex brand websites, returning clicks, impressions, CTR, and average position.

naftiko: '0.5'
info:
  label: Google Search Console SEO Metrics
  description: Retrieves search performance data from Google Search Console for Inditex brand websites, returning clicks, impressions, CTR, and average position.
  tags:
  - marketing
  - google-search-console
  - seo
capability:
  exposes:
  - type: mcp
    namespace: seo-metrics
    port: 8080
    tools:
    - name: get-search-performance
      description: Retrieve SEO performance metrics from Google Search Console.
      inputParameters:
      - name: site_url
        in: body
        type: string
        description: The Inditex brand website URL.
      call: gsc.get-performance
      with:
        site_url: '{{site_url}}'
      outputParameters:
      - name: clicks
        type: number
        mapping: $.rows[0].clicks
      - name: impressions
        type: number
        mapping: $.rows[0].impressions
      - name: ctr
        type: string
        mapping: $.rows[0].ctr
      - name: position
        type: string
        mapping: $.rows[0].position
  consumes:
  - type: http
    namespace: gsc
    baseUri: https://www.googleapis.com/webmasters/v3
    authentication:
      type: bearer
      token: $secrets.google_api_token
    resources:
    - name: search-analytics
      path: /sites/{{site_url}}/searchAnalytics/query
      inputParameters:
      - name: site_url
        in: path
      operations:
      - name: get-performance
        method: POST
Open in Framework → View in Fleet → google-search-console-seo-metrics.yml

Logs sustainability KPI data to a Google Sheets spreadsheet for Inditex ESG reporting, including carbon emissions, water usage, and recycled material percentage.

naftiko: '0.5'
info:
  label: Google Sheets Sustainability KPI Logger
  description: Logs sustainability KPI data to a Google Sheets spreadsheet for Inditex ESG reporting, including carbon emissions, water usage, and recycled material percentage.
  tags:
  - sustainability
  - google-sheets
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: sustainability-kpis
    port: 8080
    tools:
    - name: log-kpi
      description: Log a sustainability KPI entry to Google Sheets.
      inputParameters:
      - name: kpi_name
        in: body
        type: string
        description: The KPI metric name.
      - name: value
        in: body
        type: string
        description: The KPI value.
      - name: period
        in: body
        type: string
        description: The reporting period.
      call: gsheets.append-row
      with:
        kpi_name: '{{kpi_name}}'
        value: '{{value}}'
        period: '{{period}}'
      outputParameters:
      - name: updated_range
        type: string
        mapping: $.updates.updatedRange
      - name: updated_rows
        type: number
        mapping: $.updates.updatedRows
  consumes:
  - type: http
    namespace: gsheets
    baseUri: https://sheets.googleapis.com/v4
    authentication:
      type: bearer
      token: $secrets.google_api_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
Open in Framework → View in Fleet → google-sheets-sustainability-kpi-logger.yml

Triggers a GitHub Actions deployment workflow for an Inditex digital platform.

naftiko: '0.5'
info:
  label: GitHub Actions Deployment Trigger
  description: Triggers a GitHub Actions deployment workflow for an Inditex digital platform.
  tags:
  - it-operations
  - cicd
  - github-actions
capability:
  exposes:
  - type: mcp
    namespace: deployments
    port: 8080
    tools:
    - name: trigger-deployment
      description: Trigger a GitHub Actions deployment.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: GitHub repository.
      - name: workflow_id
        in: body
        type: string
        description: Workflow ID.
      - name: ref
        in: body
        type: string
        description: Git ref.
      call: github.trigger-workflow
      with:
        repo: '{{repo}}'
        workflow_id: '{{workflow_id}}'
        ref: '{{ref}}'
  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_id}}/dispatches
      inputParameters:
      - name: repo
        in: path
      - name: workflow_id
        in: path
      operations:
      - name: trigger-workflow
        method: POST
Open in Framework → View in Fleet → github-actions-deployment-trigger.yml

Retrieves product details from the SAP merchandise catalog, returning article reference, price, available sizes, color variants, and collection assignment.

naftiko: '0.5'
info:
  label: Product Catalog Article Lookup
  description: Retrieves product details from the SAP merchandise catalog, returning article reference, price, available sizes, color variants, and collection assignment.
  tags:
  - retail
  - e-commerce
  - sap
capability:
  exposes:
  - type: mcp
    namespace: product-catalog
    port: 8080
    tools:
    - name: get-product
      description: Look up an Inditex product by article reference from SAP.
      inputParameters:
      - name: article_ref
        in: body
        type: string
        description: The Inditex article reference number.
      call: sap.get-material
      with:
        article_ref: '{{article_ref}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.d.MaterialName
      - name: price
        type: string
        mapping: $.d.Price
      - name: sizes
        type: string
        mapping: $.d.AvailableSizes
      - name: collection
        type: string
        mapping: $.d.Collection
  consumes:
  - type: http
    namespace: sap
    baseUri: https://inditex-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('{{article_ref}}')
      inputParameters:
      - name: article_ref
        in: path
      operations:
      - name: get-material
        method: GET
Open in Framework → View in Fleet → product-catalog-article-lookup.yml

Executes an analytical query on SAP HANA to retrieve brand-level daily sales, units, average ticket, and top-selling product families.

naftiko: '0.5'
info:
  label: SAP HANA Sales Performance Dashboard
  description: Executes an analytical query on SAP HANA to retrieve brand-level daily sales, units, average ticket, and top-selling product families.
  tags:
  - analytics
  - retail
  - sap-hana
capability:
  exposes:
  - type: mcp
    namespace: sales-analytics
    port: 8080
    tools:
    - name: query-sales
      description: Run a sales analytics query against SAP HANA.
      inputParameters:
      - name: brand
        in: body
        type: string
        description: Brand code (ZARA, PB, MD, etc.).
      - name: date
        in: body
        type: string
        description: Sales date YYYY-MM-DD.
      call: sap-hana.execute-query
      with:
        query: SELECT total_revenue, units_sold, avg_ticket, top_family FROM BRAND_DAILY_SALES WHERE brand = '{{brand}}' AND sales_date = '{{date}}'
      outputParameters:
      - name: total_revenue
        type: string
        mapping: $.results[0].TOTAL_REVENUE
      - name: units_sold
        type: string
        mapping: $.results[0].UNITS_SOLD
      - name: avg_ticket
        type: string
        mapping: $.results[0].AVG_TICKET
  consumes:
  - type: http
    namespace: sap-hana
    baseUri: https://inditex-hana.sap.com/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_hana_token
    resources:
    - name: queries
      path: /sql
      operations:
      - name: execute-query
        method: POST
Open in Framework → View in Fleet → sap-hana-sales-performance-dashboard.yml

Orchestrates cross-border shipments by retrieving customs data from SAP, generating shipping labels via the logistics partner API, and sending tracking notifications through WhatsApp.

naftiko: '0.5'
info:
  label: Cross-Border Shipping Orchestrator
  description: Orchestrates cross-border shipments by retrieving customs data from SAP, generating shipping labels via the logistics partner API, and sending tracking notifications through WhatsApp.
  tags:
  - logistics
  - shipping
  - sap
  - whatsapp
capability:
  exposes:
  - type: mcp
    namespace: cross-border-shipping
    port: 8080
    tools:
    - name: process-shipment
      description: Orchestrate a cross-border shipment for Inditex.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The order ID.
      - name: destination_country
        in: body
        type: string
        description: The destination country code.
      steps:
      - name: get-customs-data
        type: call
        call: sap.get-customs-declaration
        with:
          order_id: '{{order_id}}'
          country: '{{destination_country}}'
      - name: generate-label
        type: call
        call: logistics.create-shipment
        with:
          order_id: '{{order_id}}'
          customs_ref: '{{get-customs-data.customs_reference}}'
          destination: '{{destination_country}}'
      - name: notify-customer
        type: call
        call: whatsapp.send-message
        with:
          phone: '{{get-customs-data.customer_phone}}'
          template: shipment_tracking
          parameters: '{{order_id}},{{generate-label.tracking_number}},{{generate-label.estimated_delivery}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://inditex-s4.sap.com/sap/opu/odata/sap/API_CUSTOMS_DECLARATION_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: customs
      path: /A_CustomsDeclaration(OrderID='{{order_id}}',Country='{{country}}')
      inputParameters:
      - name: order_id
        in: path
      - name: country
        in: path
      operations:
      - name: get-customs-declaration
        method: GET
  - type: http
    namespace: logistics
    baseUri: https://logistics-api.inditex.com/v1
    authentication:
      type: bearer
      token: $secrets.logistics_token
    resources:
    - name: shipments
      path: /shipments
      operations:
      - name: create-shipment
        method: POST
  - type: http
    namespace: whatsapp
    baseUri: https://graph.facebook.com/v17.0
    authentication:
      type: bearer
      token: $secrets.whatsapp_token
    resources:
    - name: messages
      path: /{{phone_number_id}}/messages
      inputParameters:
      - name: phone_number_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → cross-border-shipping-orchestrator.yml

Searches for fashion design briefs in Inditex's Google Drive.

naftiko: '0.5'
info:
  label: Google Drive Design Brief Finder
  description: Searches for fashion design briefs in Inditex's Google Drive.
  tags:
  - design
  - documents
  - google-drive
capability:
  exposes:
  - type: mcp
    namespace: gdrive-search
    port: 8080
    tools:
    - name: search-briefs
      description: Search for design briefs in Google Drive.
      inputParameters:
      - name: search_query
        in: body
        type: string
        description: Search query.
      call: gdrive.search-files
      with:
        query: '{{search_query}}'
      outputParameters:
      - name: files
        type: string
        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
      inputParameters:
      - name: q
        in: query
        value: name contains '{{query}}'
      operations:
      - name: search-files
        method: GET
Open in Framework → View in Fleet → google-drive-design-brief-finder.yml

When an online order is placed, validates stock in SAP, creates a warehouse pick task in ServiceNow, and sends confirmation via Adobe Campaign.

naftiko: '0.5'
info:
  label: Fast Fashion Order Fulfillment Orchestrator
  description: When an online order is placed, validates stock in SAP, creates a warehouse pick task in ServiceNow, and sends confirmation via Adobe Campaign.
  tags:
  - e-commerce
  - supply-chain
  - sap
  - servicenow
  - adobe-campaign
capability:
  exposes:
  - type: mcp
    namespace: order-fulfillment
    port: 8080
    tools:
    - name: orchestrate-fulfillment
      description: Process a new Zara/Inditex online order through fulfillment pipeline.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The e-commerce order ID.
      - name: customer_email
        in: body
        type: string
        description: Customer email address.
      steps:
      - name: get-order
        type: call
        call: sap.get-sales-order
        with:
          order_id: '{{order_id}}'
      - name: check-stock
        type: call
        call: sap.check-stock
        with:
          material: '{{get-order.article_ref}}'
          plant: '{{get-order.fulfillment_dc}}'
      - name: create-pick-task
        type: call
        call: servicenow.create-task
        with:
          short_description: 'Pick: Order {{order_id}} - {{get-order.product_name}} Size {{get-order.size}}'
          assignment_group: DC_{{get-order.fulfillment_dc}}
          priority: '2'
      - name: send-confirmation
        type: call
        call: adobe-campaign.send-email
        with:
          recipient_email: '{{customer_email}}'
          template: order_confirmation
          params: '{{order_id}},{{get-order.product_name}},{{get-order.estimated_delivery}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://inditex-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('{{order_id}}')
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-sales-order
        method: GET
    - name: stock
      path: /A_MaterialStock(Material='{{material}}',Plant='{{plant}}')
      inputParameters:
      - name: material
        in: path
      - name: plant
        in: path
      operations:
      - name: check-stock
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://inditex.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: adobe-campaign
    baseUri: https://mc.adobe.io/inditex/campaign
    authentication:
      type: bearer
      token: $secrets.adobe_campaign_token
    resources:
    - name: emails
      path: /email/send
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → fast-fashion-order-fulfillment-orchestrator.yml

Queries the Teradata data warehouse for sales trend data by brand and region, returning weekly revenue, units sold, and year-over-year growth percentage.

naftiko: '0.5'
info:
  label: Teradata Sales Trend Query
  description: Queries the Teradata data warehouse for sales trend data by brand and region, returning weekly revenue, units sold, and year-over-year growth percentage.
  tags:
  - analytics
  - teradata
  - retail
capability:
  exposes:
  - type: mcp
    namespace: sales-trends
    port: 8080
    tools:
    - name: get-sales-trend
      description: Query sales trend data from Teradata by brand and region.
      inputParameters:
      - name: brand
        in: body
        type: string
        description: The Inditex brand (Zara, Massimo Dutti, etc.).
      - name: region
        in: body
        type: string
        description: The sales region code.
      call: teradata.query-sales
      with:
        brand: '{{brand}}'
        region: '{{region}}'
      outputParameters:
      - name: weekly_revenue
        type: string
        mapping: $.results[0].weekly_revenue
      - name: units_sold
        type: number
        mapping: $.results[0].units_sold
      - name: yoy_growth
        type: string
        mapping: $.results[0].yoy_growth_pct
  consumes:
  - type: http
    namespace: teradata
    baseUri: https://teradata.inditex.com/api/v1
    authentication:
      type: bearer
      token: $secrets.teradata_token
    resources:
    - name: queries
      path: /queries/execute
      operations:
      - name: query-sales
        method: POST
Open in Framework → View in Fleet → teradata-sales-trend-query.yml

Generates a weekly sales digest by querying Snowflake for sales data, creating an Excel report via Microsoft Excel Online, uploading to SharePoint, and distributing via Microsoft Outlook.

naftiko: '0.5'
info:
  label: Weekly Sales Digest Orchestrator
  description: Generates a weekly sales digest by querying Snowflake for sales data, creating an Excel report via Microsoft Excel Online, uploading to SharePoint, and distributing via Microsoft Outlook.
  tags:
  - analytics
  - reporting
  - snowflake
  - microsoft-excel
  - sharepoint
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: sales-digest
    port: 8080
    tools:
    - name: generate-digest
      description: Generate and distribute the weekly sales digest.
      inputParameters:
      - name: week_number
        in: body
        type: string
        description: The ISO week number.
      - name: brand
        in: body
        type: string
        description: The Inditex brand.
      steps:
      - name: query-sales
        type: call
        call: snowflake.query-weekly-sales
        with:
          week: '{{week_number}}'
          brand: '{{brand}}'
      - name: create-report
        type: call
        call: excel.create-workbook
        with:
          name: Sales_Digest_W{{week_number}}_{{brand}}
          data: '{{query-sales.results}}'
      - name: upload-to-sharepoint
        type: call
        call: sharepoint.upload-file
        with:
          folder: Weekly_Reports/{{brand}}
          file_name: '{{create-report.workbook_name}}'
      - name: send-email
        type: call
        call: outlook.send-mail
        with:
          to: '{{brand}}_leadership@inditex.com'
          subject: Weekly Sales Digest W{{week_number}} - {{brand}}
          body: 'Weekly sales digest attached. Total revenue: {{query-sales.total_revenue}}. YoY growth: {{query-sales.yoy_growth}}.'
          attachment_url: '{{upload-to-sharepoint.file_url}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://inditex.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query-weekly-sales
        method: POST
  - type: http
    namespace: excel
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.microsoft_graph_token
    resources:
    - name: workbooks
      path: /me/drive/root/children
      operations:
      - name: create-workbook
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://inditex.sharepoint.com/_api/v2.0
    authentication:
      type: bearer
      token: $secrets.sharepoint_token
    resources:
    - name: files
      path: /drive/root:/{{folder}}/{{file_name}}:/content
      inputParameters:
      - name: folder
        in: path
      - name: file_name
        in: path
      operations:
      - name: upload-file
        method: PUT
  - type: http
    namespace: outlook
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.microsoft_graph_token
    resources:
    - name: mail
      path: /me/sendMail
      operations:
      - name: send-mail
        method: POST
Open in Framework → View in Fleet → weekly-sales-digest-orchestrator.yml

Retrieves firewall security rule details from Palo Alto Networks for Inditex network security, returning rule name, action, source zones, and hit count.

naftiko: '0.5'
info:
  label: Palo Alto Firewall Rule Lookup
  description: Retrieves firewall security rule details from Palo Alto Networks for Inditex network security, returning rule name, action, source zones, and hit count.
  tags:
  - security
  - palo-alto-networks
capability:
  exposes:
  - type: mcp
    namespace: firewall-rules
    port: 8080
    tools:
    - name: get-rule
      description: Look up a Palo Alto firewall security rule.
      inputParameters:
      - name: rule_name
        in: body
        type: string
        description: The firewall rule name.
      call: paloalto.get-rule
      with:
        rule_name: '{{rule_name}}'
      outputParameters:
      - name: action
        type: string
        mapping: $.result.entry.action
      - name: source_zones
        type: string
        mapping: $.result.entry.from.member
      - name: hit_count
        type: number
        mapping: $.result.entry.hit-count
  consumes:
  - type: http
    namespace: paloalto
    baseUri: https://panorama.inditex.com/restapi/v10.2
    authentication:
      type: bearer
      token: $secrets.paloalto_api_key
    resources:
    - name: rules
      path: /Policies/SecurityRules?name={{rule_name}}
      inputParameters:
      - name: rule_name
        in: query
      operations:
      - name: get-rule
        method: GET
Open in Framework → View in Fleet → palo-alto-firewall-rule-lookup.yml

Runs a supply chain analytics query in Snowflake for lead time and supplier performance.

naftiko: '0.5'
info:
  label: Snowflake Supply Chain Analytics
  description: Runs a supply chain analytics query in Snowflake for lead time and supplier performance.
  tags:
  - supply-chain
  - analytics
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: supply-analytics
    port: 8080
    tools:
    - name: query-supply-chain
      description: Run supply chain analytics in Snowflake.
      inputParameters:
      - name: supplier_code
        in: body
        type: string
        description: Supplier code.
      call: snowflake.execute-query
      with:
        statement: SELECT avg_lead_time, on_time_rate, defect_rate FROM SUPPLIER_METRICS WHERE supplier_code = '{{supplier_code}}'
      outputParameters:
      - name: avg_lead_time
        type: string
        mapping: $.data[0][0]
      - name: on_time_rate
        type: string
        mapping: $.data[0][1]
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://inditex.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: execute-query
        method: POST
Open in Framework → View in Fleet → snowflake-supply-chain-analytics.yml

Retrieves a Power BI store performance report by store code, returning revenue, footfall, conversion rate, and average basket size for Inditex retail locations.

naftiko: '0.5'
info:
  label: Power BI Store Performance Report
  description: Retrieves a Power BI store performance report by store code, returning revenue, footfall, conversion rate, and average basket size for Inditex retail locations.
  tags:
  - analytics
  - power-bi
  - retail
capability:
  exposes:
  - type: mcp
    namespace: store-analytics
    port: 8080
    tools:
    - name: get-store-report
      description: Retrieve store performance metrics from Power BI.
      inputParameters:
      - name: store_code
        in: body
        type: string
        description: The Inditex store code.
      call: powerbi.get-report
      with:
        store_code: '{{store_code}}'
      outputParameters:
      - name: revenue
        type: string
        mapping: $.value[0].Revenue
      - name: footfall
        type: string
        mapping: $.value[0].Footfall
      - name: conversion_rate
        type: string
        mapping: $.value[0].ConversionRate
      - name: avg_basket
        type: string
        mapping: $.value[0].AvgBasketSize
  consumes:
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: reports
      path: /datasets/{{dataset_id}}/executeQueries
      inputParameters:
      - name: dataset_id
        in: path
      operations:
      - name: get-report
        method: POST
Open in Framework → View in Fleet → power-bi-store-performance-report.yml

When a new collection window display is planned, retrieves the visual merchandise guide from SharePoint, assigns tasks in Microsoft Planner, and notifies store visual teams via Teams.

naftiko: '0.5'
info:
  label: Store Window Display Planning
  description: When a new collection window display is planned, retrieves the visual merchandise guide from SharePoint, assigns tasks in Microsoft Planner, and notifies store visual teams via Teams.
  tags:
  - retail
  - design
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: visual-merchandise
    port: 8080
    tools:
    - name: plan-window-display
      description: Orchestrate window display planning for a new collection.
      inputParameters:
      - name: collection_name
        in: body
        type: string
        description: Collection name.
      - name: brand
        in: body
        type: string
        description: Brand code.
      - name: store_codes
        in: body
        type: string
        description: Comma-separated store codes.
      steps:
      - name: get-guide
        type: call
        call: sharepoint.get-file
        with:
          site_id: visual_merchandise
          file_path: WindowDisplays/{{brand}}/{{collection_name}}_guide.pdf
      - name: notify-stores
        type: call
        call: msteams.send-message
        with:
          channel_id: visual_merchandise_{{brand}}
          text: 'New window display guide for {{collection_name}} is ready. Download: {{get-guide.download_url}}. Stores: {{store_codes}}'
  consumes:
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: files
      path: /{{site_id}}/drive/root:/{{file_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: file_path
        in: path
      operations:
      - name: get-file
        method: GET
  - type: http
    namespace: 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
Open in Framework → View in Fleet → store-window-display-planning.yml

Queries SolarWinds for network device health across Inditex store and DC infrastructure, returning node status, CPU load, memory usage, and response time.

naftiko: '0.5'
info:
  label: SolarWinds Network Health Monitor
  description: Queries SolarWinds for network device health across Inditex store and DC infrastructure, returning node status, CPU load, memory usage, and response time.
  tags:
  - infrastructure
  - solarwinds
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: network-health
    port: 8080
    tools:
    - name: get-node-health
      description: Retrieve 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: $.Status
      - name: cpu_load
        type: string
        mapping: $.CPULoad
      - name: memory_used
        type: string
        mapping: $.PercentMemoryUsed
      - name: response_time
        type: string
        mapping: $.ResponseTime
  consumes:
  - type: http
    namespace: solarwinds
    baseUri: https://solarwinds.inditex.com:17778/SolarWinds/InformationService/v3/Json
    authentication:
      type: basic
      username: $secrets.solarwinds_user
      password: $secrets.solarwinds_password
    resources:
    - name: nodes
      path: /Query?query=SELECT+Status,CPULoad,PercentMemoryUsed,ResponseTime+FROM+Orion.Nodes+WHERE+NodeID={{node_id}}
      inputParameters:
      - name: node_id
        in: query
      operations:
      - name: get-node
        method: GET
Open in Framework → View in Fleet → solarwinds-network-health-monitor.yml

Retrieves competitor intelligence data from ZoomInfo for Inditex strategic planning, returning company revenue, employee count, technology stack, and recent news.

naftiko: '0.5'
info:
  label: ZoomInfo Competitor Intelligence
  description: Retrieves competitor intelligence data from ZoomInfo for Inditex strategic planning, returning company revenue, employee count, technology stack, and recent news.
  tags:
  - strategy
  - zoominfo
  - competitive-intelligence
capability:
  exposes:
  - type: mcp
    namespace: competitor-intel
    port: 8080
    tools:
    - name: get-competitor-info
      description: Look up competitor information in ZoomInfo.
      inputParameters:
      - name: company_name
        in: body
        type: string
        description: The competitor company name.
      call: zoominfo.search-company
      with:
        company_name: '{{company_name}}'
      outputParameters:
      - name: revenue
        type: string
        mapping: $.data[0].revenue
      - name: employee_count
        type: number
        mapping: $.data[0].employeeCount
      - name: tech_stack
        type: string
        mapping: $.data[0].technographics
  consumes:
  - type: http
    namespace: zoominfo
    baseUri: https://api.zoominfo.com
    authentication:
      type: bearer
      token: $secrets.zoominfo_token
    resources:
    - name: companies
      path: /search/company
      operations:
      - name: search-company
        method: POST
Open in Framework → View in Fleet → zoominfo-competitor-intelligence.yml

Retrieves budget versus actual variance data from Oracle Cloud Financials for a given cost center and period, returning planned amount, actual spend, and variance percentage.

naftiko: '0.5'
info:
  label: Oracle Cloud Budget Variance Lookup
  description: Retrieves budget versus actual variance data from Oracle Cloud Financials for a given cost center and period, returning planned amount, actual spend, and variance percentage.
  tags:
  - finance
  - oracle-cloud
capability:
  exposes:
  - type: mcp
    namespace: finance-budgets
    port: 8080
    tools:
    - name: get-budget-variance
      description: Look up budget variance for an Inditex cost center.
      inputParameters:
      - name: cost_center
        in: body
        type: string
        description: The cost center code.
      - name: period
        in: body
        type: string
        description: The fiscal period (e.g. 2026-Q1).
      call: oracle.get-budget
      with:
        cost_center: '{{cost_center}}'
        period: '{{period}}'
      outputParameters:
      - name: planned_amount
        type: string
        mapping: $.BudgetAmount
      - name: actual_amount
        type: string
        mapping: $.ActualAmount
      - name: variance_pct
        type: string
        mapping: $.VariancePercentage
  consumes:
  - type: http
    namespace: oracle
    baseUri: https://inditex-cloud.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: bearer
      token: $secrets.oracle_cloud_token
    resources:
    - name: budgets
      path: /budgets?q=CostCenter={{cost_center}};Period={{period}}
      inputParameters:
      - name: cost_center
        in: query
      - name: period
        in: query
      operations:
      - name: get-budget
        method: GET
Open in Framework → View in Fleet → oracle-cloud-budget-variance-lookup.yml

Sends an announcement to an Inditex brand team's Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Microsoft Teams Brand Channel Announcement
  description: Sends an announcement to an Inditex brand team's Microsoft Teams channel.
  tags:
  - communications
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: brand-comms
    port: 8080
    tools:
    - name: send-announcement
      description: Post an announcement to a brand Teams channel.
      inputParameters:
      - name: brand
        in: body
        type: string
        description: Brand code.
      - name: message
        in: body
        type: string
        description: Message text.
      call: msteams.post-message
      with:
        channel_id: announcements_{{brand}}
        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-message
        method: POST
Open in Framework → View in Fleet → microsoft-teams-brand-channel-announcement.yml

When a new collection is ready to launch, creates a Salesforce campaign, sends announcement emails via Adobe Campaign, and posts to Instagram and Facebook.

naftiko: '0.5'
info:
  label: Collection Launch Campaign Orchestrator
  description: When a new collection is ready to launch, creates a Salesforce campaign, sends announcement emails via Adobe Campaign, and posts to Instagram and Facebook.
  tags:
  - marketing
  - e-commerce
  - salesforce
  - adobe-campaign
  - instagram
  - facebook
capability:
  exposes:
  - type: mcp
    namespace: collection-launch
    port: 8080
    tools:
    - name: launch-collection
      description: Orchestrate a new collection launch across CRM, email, and social.
      inputParameters:
      - name: collection_name
        in: body
        type: string
        description: Name of the new collection.
      - name: brand
        in: body
        type: string
        description: Brand (Zara, Pull&Bear, etc.).
      - name: launch_date
        in: body
        type: string
        description: Launch date in YYYY-MM-DD.
      steps:
      - name: create-campaign
        type: call
        call: salesforce.create-campaign
        with:
          name: '{{brand}} - {{collection_name}} Launch'
          start_date: '{{launch_date}}'
          type: Product Launch
      - name: send-emails
        type: call
        call: adobe-campaign.send-bulk-email
        with:
          template: collection_launch_{{brand}}
          segment: active_customers_{{brand}}
          params: '{{collection_name}},{{launch_date}}'
      - name: post-instagram
        type: call
        call: instagram.create-post
        with:
          image_url: '{{collection_name}}_hero_image'
          caption: New {{collection_name}} collection is here. Shop now at {{brand}}.com
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://inditex.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: adobe-campaign
    baseUri: https://mc.adobe.io/inditex/campaign
    authentication:
      type: bearer
      token: $secrets.adobe_campaign_token
    resources:
    - name: bulk-emails
      path: /email/sendBulk
      operations:
      - name: send-bulk-email
        method: POST
  - type: http
    namespace: instagram
    baseUri: https://graph.facebook.com/v17.0
    authentication:
      type: bearer
      token: $secrets.instagram_token
    resources:
    - name: media
      path: /{{account_id}}/media
      inputParameters:
      - name: account_id
        in: path
      operations:
      - name: create-post
        method: POST
Open in Framework → View in Fleet → collection-launch-campaign-orchestrator.yml

Checks material availability in SAP for a given article across Inditex distribution centers, returning available quantity, reserved stock, and next replenishment date.

naftiko: '0.5'
info:
  label: SAP Material Availability Checker
  description: Checks material availability in SAP for a given article across Inditex distribution centers, returning available quantity, reserved stock, and next replenishment date.
  tags:
  - supply-chain
  - sap
  - inventory
capability:
  exposes:
  - type: mcp
    namespace: material-availability
    port: 8080
    tools:
    - name: check-availability
      description: Check material availability across Inditex distribution centers.
      inputParameters:
      - name: material_id
        in: body
        type: string
        description: The SAP material number.
      - name: plant
        in: body
        type: string
        description: The distribution center plant code.
      call: sap.get-availability
      with:
        material_id: '{{material_id}}'
        plant: '{{plant}}'
      outputParameters:
      - name: available_qty
        type: number
        mapping: $.d.AvailableQuantity
      - name: reserved_qty
        type: number
        mapping: $.d.ReservedQuantity
      - name: next_replenishment
        type: string
        mapping: $.d.NextReplenishmentDate
  consumes:
  - type: http
    namespace: sap
    baseUri: https://inditex-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_id}}',Plant='{{plant}}')
      inputParameters:
      - name: material_id
        in: path
      - name: plant
        in: path
      operations:
      - name: get-availability
        method: GET
Open in Framework → View in Fleet → sap-material-availability-checker.yml

Pulls historical sales data from SAP HANA and writes demand forecasts to Snowflake for merchandising planning.

naftiko: '0.5'
info:
  label: Demand Forecasting Pipeline
  description: Pulls historical sales data from SAP HANA and writes demand forecasts to Snowflake for merchandising planning.
  tags:
  - supply-chain
  - analytics
  - sap-hana
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: demand-forecasting
    port: 8080
    tools:
    - name: generate-forecast
      description: Generate a demand forecast for a product family.
      inputParameters:
      - name: product_family
        in: body
        type: string
        description: Product family code.
      - name: brand
        in: body
        type: string
        description: Brand code.
      steps:
      - name: get-history
        type: call
        call: sap-hana.execute-query
        with:
          query: SELECT week, units_sold FROM SALES_HISTORY WHERE family = '{{product_family}}' AND brand = '{{brand}}' ORDER BY week DESC LIMIT 52
      - name: write-forecast
        type: call
        call: snowflake.execute-query
        with:
          statement: INSERT INTO DEMAND_FORECASTS (family, brand, historical_data, created_at) VALUES ('{{product_family}}', '{{brand}}', '{{get-history.results}}', CURRENT_TIMESTAMP())
  consumes:
  - type: http
    namespace: sap-hana
    baseUri: https://inditex-hana.sap.com/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_hana_token
    resources:
    - name: queries
      path: /sql
      operations:
      - name: execute-query
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://inditex.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: execute-query
        method: POST
Open in Framework → View in Fleet → demand-forecasting-pipeline.yml

Retrieves B2B wholesale lead information from HubSpot for Inditex corporate sales, returning lead name, company, deal stage, and estimated deal value.

naftiko: '0.5'
info:
  label: HubSpot B2B Wholesale Lead Tracker
  description: Retrieves B2B wholesale lead information from HubSpot for Inditex corporate sales, returning lead name, company, deal stage, and estimated deal value.
  tags:
  - sales
  - hubspot
capability:
  exposes:
  - type: mcp
    namespace: wholesale-leads
    port: 8080
    tools:
    - name: get-lead
      description: Look up a B2B wholesale lead in HubSpot.
      inputParameters:
      - name: deal_id
        in: body
        type: string
        description: The HubSpot deal ID.
      call: hubspot.get-deal
      with:
        deal_id: '{{deal_id}}'
      outputParameters:
      - name: contact_name
        type: string
        mapping: $.properties.dealname
      - name: company
        type: string
        mapping: $.properties.company
      - name: deal_stage
        type: string
        mapping: $.properties.dealstage
      - name: amount
        type: string
        mapping: $.properties.amount
  consumes:
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com/crm/v3
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: deals
      path: /objects/deals/{{deal_id}}
      inputParameters:
      - name: deal_id
        in: path
      operations:
      - name: get-deal
        method: GET
Open in Framework → View in Fleet → hubspot-b2b-wholesale-lead-tracker.yml

Retrieves an Inditex store employee's upcoming shift schedule from Workday.

naftiko: '0.5'
info:
  label: Workday Employee Schedule Retriever
  description: Retrieves an Inditex store employee's upcoming shift schedule from Workday.
  tags:
  - hr
  - scheduling
  - workday
capability:
  exposes:
  - type: mcp
    namespace: shift-scheduling
    port: 8080
    tools:
    - name: get-schedule
      description: Retrieve upcoming shift schedule for a store employee.
      inputParameters:
      - name: worker_id
        in: body
        type: string
        description: The Workday worker ID.
      call: workday.get-schedule
      with:
        worker_id: '{{worker_id}}'
      outputParameters:
      - name: shifts
        type: string
        mapping: $.scheduleEntries
      - name: store
        type: string
        mapping: $.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: schedules
      path: /workers/{{worker_id}}/schedule
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-schedule
        method: GET
Open in Framework → View in Fleet → workday-employee-schedule-retriever.yml

Sends an order status update to an Inditex customer via WhatsApp when their package ships.

naftiko: '0.5'
info:
  label: WhatsApp Customer Order Update
  description: Sends an order status update to an Inditex customer via WhatsApp when their package ships.
  tags:
  - e-commerce
  - customer-service
  - whatsapp
capability:
  exposes:
  - type: mcp
    namespace: order-notifications
    port: 8080
    tools:
    - name: send-order-update
      description: Send WhatsApp order update to customer.
      inputParameters:
      - name: customer_phone
        in: body
        type: string
        description: Customer phone.
      - name: order_id
        in: body
        type: string
        description: Order ID.
      - name: tracking_number
        in: body
        type: string
        description: Tracking number.
      call: whatsapp.send-message
      with:
        phone: '{{customer_phone}}'
        template: order_shipped
        parameters: '{{order_id}},{{tracking_number}}'
  consumes:
  - type: http
    namespace: whatsapp
    baseUri: https://graph.facebook.com/v17.0
    authentication:
      type: bearer
      token: $secrets.whatsapp_token
    resources:
    - name: messages
      path: /{{phone_number_id}}/messages
      inputParameters:
      - name: phone_number_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → whatsapp-customer-order-update.yml

Retrieves AKS cluster health status for Inditex microservices, returning node count, pod health percentage, CPU utilization, and memory utilization.

naftiko: '0.5'
info:
  label: Azure Kubernetes Cluster Health
  description: Retrieves AKS cluster health status for Inditex microservices, returning node count, pod health percentage, CPU utilization, and memory utilization.
  tags:
  - infrastructure
  - azure-kubernetes-service
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: cluster-health
    port: 8080
    tools:
    - name: get-cluster-health
      description: Retrieve AKS cluster health metrics.
      inputParameters:
      - name: cluster_name
        in: body
        type: string
        description: The AKS cluster name.
      call: aks.get-cluster
      with:
        cluster_name: '{{cluster_name}}'
      outputParameters:
      - name: node_count
        type: number
        mapping: $.properties.agentPoolProfiles[0].count
      - name: pod_health_pct
        type: string
        mapping: $.properties.podHealthPercentage
      - name: cpu_utilization
        type: string
        mapping: $.properties.cpuUtilization
      - name: memory_utilization
        type: string
        mapping: $.properties.memoryUtilization
  consumes:
  - type: http
    namespace: aks
    baseUri: https://management.azure.com/subscriptions/{{subscription_id}}/resourceGroups/{{resource_group}}/providers/Microsoft.ContainerService
    authentication:
      type: bearer
      token: $secrets.azure_mgmt_token
    resources:
    - name: clusters
      path: /managedClusters/{{cluster_name}}?api-version=2023-01-01
      inputParameters:
      - name: cluster_name
        in: path
      operations:
      - name: get-cluster
        method: GET
Open in Framework → View in Fleet → azure-kubernetes-cluster-health.yml

Retrieves inventory dashboard data from Qlik Sense for an Inditex distribution center, returning stock levels, aging inventory percentage, and reorder suggestions.

naftiko: '0.5'
info:
  label: Qlik Sense Inventory Dashboard
  description: Retrieves inventory dashboard data from Qlik Sense for an Inditex distribution center, returning stock levels, aging inventory percentage, and reorder suggestions.
  tags:
  - analytics
  - qlik-sense
  - inventory
capability:
  exposes:
  - type: mcp
    namespace: inventory-analytics
    port: 8080
    tools:
    - name: get-inventory-dashboard
      description: Retrieve inventory analytics dashboard from Qlik Sense.
      inputParameters:
      - name: dc_code
        in: body
        type: string
        description: The distribution center code.
      call: qlik.get-dashboard
      with:
        dc_code: '{{dc_code}}'
      outputParameters:
      - name: total_stock
        type: number
        mapping: $.qHyperCube.qDataPages[0].totalStock
      - name: aging_pct
        type: string
        mapping: $.qHyperCube.qDataPages[0].agingPercentage
      - name: reorder_count
        type: number
        mapping: $.qHyperCube.qDataPages[0].reorderSuggestions
  consumes:
  - type: http
    namespace: qlik
    baseUri: https://inditex.eu.qlikcloud.com/api/v1
    authentication:
      type: bearer
      token: $secrets.qlik_token
    resources:
    - name: apps
      path: /apps/{{app_id}}/objects/{{object_id}}/layout
      inputParameters:
      - name: app_id
        in: path
      - name: object_id
        in: path
      operations:
      - name: get-dashboard
        method: GET
Open in Framework → View in Fleet → qlik-sense-inventory-dashboard.yml

Retrieves transaction analytics from Mastercard for Inditex stores, returning transaction volume, average transaction value, and card type breakdown.

naftiko: '0.5'
info:
  label: Mastercard Transaction Analytics
  description: Retrieves transaction analytics from Mastercard for Inditex stores, returning transaction volume, average transaction value, and card type breakdown.
  tags:
  - payments
  - mastercard
  - retail
capability:
  exposes:
  - type: mcp
    namespace: payment-analytics
    port: 8080
    tools:
    - name: get-transaction-analytics
      description: Retrieve Mastercard transaction analytics for Inditex.
      inputParameters:
      - name: merchant_id
        in: body
        type: string
        description: The Mastercard merchant ID.
      - name: date_range
        in: body
        type: string
        description: The date range (YYYY-MM-DD/YYYY-MM-DD).
      call: mastercard.get-analytics
      with:
        merchant_id: '{{merchant_id}}'
        date_range: '{{date_range}}'
      outputParameters:
      - name: transaction_volume
        type: number
        mapping: $.data.transactionVolume
      - name: avg_value
        type: string
        mapping: $.data.averageTransactionValue
      - name: card_type_breakdown
        type: string
        mapping: $.data.cardTypeBreakdown
  consumes:
  - type: http
    namespace: mastercard
    baseUri: https://api.mastercard.com/merchant-analytics/v1
    authentication:
      type: bearer
      token: $secrets.mastercard_api_key
    resources:
    - name: analytics
      path: /merchants/{{merchant_id}}/analytics
      inputParameters:
      - name: merchant_id
        in: path
      operations:
      - name: get-analytics
        method: GET
Open in Framework → View in Fleet → mastercard-transaction-analytics.yml

Queries SAP HANA for customer segmentation data, returning segment name, customer count, average order value, and purchase frequency by brand.

naftiko: '0.5'
info:
  label: SAP HANA Customer Segmentation Query
  description: Queries SAP HANA for customer segmentation data, returning segment name, customer count, average order value, and purchase frequency by brand.
  tags:
  - analytics
  - sap-hana
  - marketing
capability:
  exposes:
  - type: mcp
    namespace: customer-segmentation
    port: 8080
    tools:
    - name: get-segment
      description: Query customer segmentation data from SAP HANA.
      inputParameters:
      - name: segment_id
        in: body
        type: string
        description: The customer segment identifier.
      call: saphana.query-segment
      with:
        segment_id: '{{segment_id}}'
      outputParameters:
      - name: segment_name
        type: string
        mapping: $.results[0].segment_name
      - name: customer_count
        type: number
        mapping: $.results[0].customer_count
      - name: avg_order_value
        type: string
        mapping: $.results[0].avg_order_value
      - name: purchase_frequency
        type: string
        mapping: $.results[0].purchase_frequency
  consumes:
  - type: http
    namespace: saphana
    baseUri: https://inditex-hana.sap.com/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_hana_token
    resources:
    - name: segments
      path: /segments/{{segment_id}}
      inputParameters:
      - name: segment_id
        in: path
      operations:
      - name: query-segment
        method: GET
Open in Framework → View in Fleet → sap-hana-customer-segmentation-query.yml

Invokes an Azure ML endpoint for size recommendation predictions, returning recommended size, confidence score, and fit category based on customer measurements.

naftiko: '0.5'
info:
  label: Azure Machine Learning Size Recommendation
  description: Invokes an Azure ML endpoint for size recommendation predictions, returning recommended size, confidence score, and fit category based on customer measurements.
  tags:
  - machine-learning
  - azure-machine-learning
  - e-commerce
capability:
  exposes:
  - type: mcp
    namespace: size-recommendation
    port: 8080
    tools:
    - name: get-size-recommendation
      description: Get a size recommendation from Azure ML model.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The customer ID.
      - name: article_ref
        in: body
        type: string
        description: The product article reference.
      call: azureml.predict-size
      with:
        customer_id: '{{customer_id}}'
        article_ref: '{{article_ref}}'
      outputParameters:
      - name: recommended_size
        type: string
        mapping: $.predictions[0].size
      - name: confidence
        type: string
        mapping: $.predictions[0].confidence
      - name: fit_category
        type: string
        mapping: $.predictions[0].fit
  consumes:
  - type: http
    namespace: azureml
    baseUri: https://inditex-ml.westeurope.inference.ml.azure.com
    authentication:
      type: bearer
      token: $secrets.azureml_token
    resources:
    - name: predictions
      path: /score
      operations:
      - name: predict-size
        method: POST
Open in Framework → View in Fleet → azure-machine-learning-size-recommendation.yml

Queries Cloudflare WAF events for Inditex brand web properties.

naftiko: '0.5'
info:
  label: Cloudflare WAF Security Monitor
  description: Queries Cloudflare WAF events for Inditex brand web properties.
  tags:
  - security
  - it-operations
  - cloudflare
capability:
  exposes:
  - type: mcp
    namespace: waf-monitoring
    port: 8080
    tools:
    - name: get-waf-events
      description: Retrieve Cloudflare WAF events.
      inputParameters:
      - name: zone_id
        in: body
        type: string
        description: Cloudflare zone ID.
      call: cloudflare.get-events
      with:
        zone_id: '{{zone_id}}'
      outputParameters:
      - name: total_blocked
        type: string
        mapping: $.result_info.total_count
  consumes:
  - type: http
    namespace: cloudflare
    baseUri: https://api.cloudflare.com/client/v4
    authentication:
      type: bearer
      token: $secrets.cloudflare_token
    resources:
    - name: events
      path: /zones/{{zone_id}}/security/events
      inputParameters:
      - name: zone_id
        in: path
      operations:
      - name: get-events
        method: GET
Open in Framework → View in Fleet → cloudflare-waf-security-monitor.yml

Orchestrates end-of-season markdowns by calculating optimal prices in Snowflake, updating prices in SAP, publishing promotional content via Adobe Campaign, and updating the e-commerce storefront via BigCommerce.

naftiko: '0.5'
info:
  label: End of Season Markdown Orchestrator
  description: Orchestrates end-of-season markdowns by calculating optimal prices in Snowflake, updating prices in SAP, publishing promotional content via Adobe Campaign, and updating the e-commerce storefront via BigCommerce.
  tags:
  - retail
  - pricing
  - snowflake
  - sap
  - adobe-campaign
  - bigcommerce
capability:
  exposes:
  - type: mcp
    namespace: markdown-management
    port: 8080
    tools:
    - name: execute-markdowns
      description: Orchestrate end-of-season markdown execution across systems.
      inputParameters:
      - name: collection_id
        in: body
        type: string
        description: The collection to mark down.
      - name: target_sell_through
        in: body
        type: string
        description: Target sell-through percentage.
      steps:
      - name: calculate-prices
        type: call
        call: snowflake.run-pricing-model
        with:
          collection_id: '{{collection_id}}'
          target: '{{target_sell_through}}'
      - name: update-sap-prices
        type: call
        call: sap.update-pricing
        with:
          collection_id: '{{collection_id}}'
          price_list: '{{calculate-prices.price_list_id}}'
      - name: launch-promo
        type: call
        call: adobe-campaign.trigger-campaign
        with:
          campaign_name: EOS_Markdown_{{collection_id}}
          discount_range: '{{calculate-prices.discount_range}}'
      - name: update-storefront
        type: call
        call: bigcommerce.update-prices
        with:
          collection_id: '{{collection_id}}'
          price_list: '{{calculate-prices.price_list_id}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://inditex.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-pricing-model
        method: POST
  - type: http
    namespace: sap
    baseUri: https://inditex-s4.sap.com/sap/opu/odata/sap/API_SLSPRICINGCONDITIONRECORD_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: pricing
      path: /A_SlsPrcgCndnRecdValidity
      operations:
      - name: update-pricing
        method: POST
  - type: http
    namespace: adobe-campaign
    baseUri: https://mc.adobe.io/inditex/campaign
    authentication:
      type: bearer
      token: $secrets.adobe_campaign_token
    resources:
    - name: campaigns
      path: /campaigns/trigger
      operations:
      - name: trigger-campaign
        method: POST
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/{{store_hash}}/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: pricelists
      path: /pricelists/records
      operations:
      - name: update-prices
        method: PUT
Open in Framework → View in Fleet → end-of-season-markdown-orchestrator.yml

Retrieves application performance metrics from New Relic for Inditex brand websites.

naftiko: '0.5'
info:
  label: New Relic E-Commerce Performance Monitor
  description: Retrieves application performance metrics from New Relic for Inditex brand websites.
  tags:
  - it-operations
  - monitoring
  - new-relic
capability:
  exposes:
  - type: mcp
    namespace: app-performance
    port: 8080
    tools:
    - name: get-app-metrics
      description: Get application performance from New Relic.
      inputParameters:
      - name: app_id
        in: body
        type: string
        description: New Relic application ID.
      call: newrelic.get-app
      with:
        app_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: apiKey
      name: Api-Key
      in: header
      value: $secrets.newrelic_api_key
    resources:
    - name: applications
      path: /applications/{{app_id}}.json
      inputParameters:
      - name: app_id
        in: path
      operations:
      - name: get-app
        method: GET
Open in Framework → View in Fleet → new-relic-e-commerce-performance-monitor.yml

Creates a stock transfer order in SAP to move inventory between Inditex distribution centers and notifies logistics via Teams.

naftiko: '0.5'
info:
  label: Warehouse Stock Transfer Creator
  description: Creates a stock transfer order in SAP to move inventory between Inditex distribution centers and notifies logistics via Teams.
  tags:
  - supply-chain
  - logistics
  - sap
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: stock-transfers
    port: 8080
    tools:
    - name: create-transfer
      description: Create a stock transfer between distribution centers.
      inputParameters:
      - name: material
        in: body
        type: string
        description: Article reference.
      - name: source_dc
        in: body
        type: string
        description: Source distribution center.
      - name: target_dc
        in: body
        type: string
        description: Target distribution center.
      - name: quantity
        in: body
        type: string
        description: Quantity to transfer.
      steps:
      - name: create-to
        type: call
        call: sap.create-stock-transfer
        with:
          material: '{{material}}'
          source_plant: '{{source_dc}}'
          target_plant: '{{target_dc}}'
          quantity: '{{quantity}}'
      - name: notify-logistics
        type: call
        call: msteams.send-message
        with:
          channel_id: logistics_transfers
          text: 'Transfer: {{material}} x{{quantity}} from {{source_dc}} to {{target_dc}}. TO#: {{create-to.transfer_order_number}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://inditex-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: 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
Open in Framework → View in Fleet → warehouse-stock-transfer-creator.yml

Retrieves subscriber information from Mailchimp for Inditex brand newsletters, returning subscription status, open rate, click rate, and list membership.

naftiko: '0.5'
info:
  label: Mailchimp Newsletter Subscriber Lookup
  description: Retrieves subscriber information from Mailchimp for Inditex brand newsletters, returning subscription status, open rate, click rate, and list membership.
  tags:
  - marketing
  - mailchimp
capability:
  exposes:
  - type: mcp
    namespace: newsletter-subscribers
    port: 8080
    tools:
    - name: get-subscriber
      description: Look up a newsletter subscriber in Mailchimp.
      inputParameters:
      - name: email
        in: body
        type: string
        description: The subscriber email address.
      call: mailchimp.get-member
      with:
        email: '{{email}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.status
      - name: open_rate
        type: string
        mapping: $.stats.avg_open_rate
      - name: click_rate
        type: string
        mapping: $.stats.avg_click_rate
      - name: list_id
        type: string
        mapping: $.list_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: members
      path: /lists/{{list_id}}/members/{{subscriber_hash}}
      inputParameters:
      - name: list_id
        in: path
      - name: subscriber_hash
        in: path
      operations:
      - name: get-member
        method: GET
Open in Framework → View in Fleet → mailchimp-newsletter-subscriber-lookup.yml

Retrieves customer feedback responses from Google Forms for Inditex store satisfaction surveys, returning response count, average rating, and latest comments.

naftiko: '0.5'
info:
  label: Google Forms Store Feedback Collector
  description: Retrieves customer feedback responses from Google Forms for Inditex store satisfaction surveys, returning response count, average rating, and latest comments.
  tags:
  - customer-experience
  - google-forms
  - retail
capability:
  exposes:
  - type: mcp
    namespace: store-feedback
    port: 8080
    tools:
    - name: get-feedback
      description: Retrieve store feedback responses from Google Forms.
      inputParameters:
      - name: form_id
        in: body
        type: string
        description: The Google Form ID.
      call: gforms.get-responses
      with:
        form_id: '{{form_id}}'
      outputParameters:
      - name: response_count
        type: number
        mapping: $.responses.length
      - name: avg_rating
        type: string
        mapping: $.summary.averageRating
      - name: latest_comments
        type: string
        mapping: $.responses[0].answers.comment
  consumes:
  - type: http
    namespace: gforms
    baseUri: https://forms.googleapis.com/v1
    authentication:
      type: bearer
      token: $secrets.google_api_token
    resources:
    - name: responses
      path: /forms/{{form_id}}/responses
      inputParameters:
      - name: form_id
        in: path
      operations:
      - name: get-responses
        method: GET
Open in Framework → View in Fleet → google-forms-store-feedback-collector.yml

When a checkout failure is detected, retrieves the error details from New Relic, creates a support ticket in ServiceNow, notifies the engineering team via Microsoft Teams, and logs the incident in Datadog.

naftiko: '0.5'
info:
  label: E-Commerce Checkout Failure Resolution Pipeline
  description: When a checkout failure is detected, retrieves the error details from New Relic, creates a support ticket in ServiceNow, notifies the engineering team via Microsoft Teams, and logs the incident in Datadog.
  tags:
  - e-commerce
  - incident-management
  - new-relic
  - servicenow
  - microsoft-teams
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: checkout-failure
    port: 8080
    tools:
    - name: resolve-checkout-failure
      description: Process and escalate an e-commerce checkout failure.
      inputParameters:
      - name: error_id
        in: body
        type: string
        description: The New Relic error group ID.
      - name: session_id
        in: body
        type: string
        description: The customer session ID.
      steps:
      - name: get-error-details
        type: call
        call: newrelic.get-error
        with:
          error_id: '{{error_id}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Checkout failure: {{get-error-details.error_class}} - Session {{session_id}}'
          description: '{{get-error-details.message}}'
          urgency: '1'
          assignment_group: E-Commerce_Engineering
      - name: notify-team
        type: call
        call: teams.send-message
        with:
          channel: E-Commerce_Alerts
          message: 'Checkout failure detected. Error: {{get-error-details.error_class}}. Incident: {{create-incident.number}}. Affected session: {{session_id}}.'
      - name: log-event
        type: call
        call: datadog.create-event
        with:
          title: Checkout Failure - {{error_id}}
          text: 'Error: {{get-error-details.error_class}}. ServiceNow: {{create-incident.number}}.'
          alert_type: error
  consumes:
  - type: http
    namespace: newrelic
    baseUri: https://api.newrelic.com/v2
    authentication:
      type: bearer
      token: $secrets.newrelic_api_key
    resources:
    - name: errors
      path: /errors/{{error_id}}
      inputParameters:
      - name: error_id
        in: path
      operations:
      - name: get-error
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://inditex.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.eu/api/v1
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: events
      path: /events
      operations:
      - name: create-event
        method: POST
Open in Framework → View in Fleet → e-commerce-checkout-failure-resolution-pipeline.yml

Queries Azure Log Analytics for security event data across Inditex infrastructure, returning event count, severity breakdown, and top source IPs.

naftiko: '0.5'
info:
  label: Azure Log Analytics Security Query
  description: Queries Azure Log Analytics for security event data across Inditex infrastructure, returning event count, severity breakdown, and top source IPs.
  tags:
  - security
  - azure-log-analytics
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: security-logs
    port: 8080
    tools:
    - name: query-security-logs
      description: Query security event logs from Azure Log Analytics.
      inputParameters:
      - name: workspace_id
        in: body
        type: string
        description: The Log Analytics workspace ID.
      - name: time_range
        in: body
        type: string
        description: The time range (e.g. 24h, 7d).
      call: loganalytics.run-query
      with:
        workspace_id: '{{workspace_id}}'
        time_range: '{{time_range}}'
      outputParameters:
      - name: event_count
        type: number
        mapping: $.tables[0].rows[0].event_count
      - name: severity_breakdown
        type: string
        mapping: $.tables[0].rows[0].severity_breakdown
      - name: top_source_ips
        type: string
        mapping: $.tables[0].rows[0].top_sources
  consumes:
  - type: http
    namespace: loganalytics
    baseUri: https://api.loganalytics.io/v1
    authentication:
      type: bearer
      token: $secrets.loganalytics_token
    resources:
    - name: queries
      path: /workspaces/{{workspace_id}}/query
      inputParameters:
      - name: workspace_id
        in: path
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → azure-log-analytics-security-query.yml

Assigns a Pluralsight learning path to an Inditex employee and notifies them via Teams.

naftiko: '0.5'
info:
  label: Pluralsight Training Assigner
  description: Assigns a Pluralsight learning path to an Inditex employee and notifies them via Teams.
  tags:
  - hr
  - training
  - pluralsight
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: training
    port: 8080
    tools:
    - name: assign-training
      description: Assign training and notify employee.
      inputParameters:
      - name: employee_email
        in: body
        type: string
        description: Employee email.
      - name: channel_id
        in: body
        type: string
        description: Pluralsight channel ID.
      steps:
      - name: assign
        type: call
        call: pluralsight.assign-channel
        with:
          email: '{{employee_email}}'
          channel_id: '{{channel_id}}'
      - name: notify
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{employee_email}}'
          text: 'New training assigned on Pluralsight: {{assign.channel_url}}'
  consumes:
  - type: http
    namespace: pluralsight
    baseUri: https://api.pluralsight.com/api/v1
    authentication:
      type: bearer
      token: $secrets.pluralsight_token
    resources:
    - name: channels
      path: /channels/{{channel_id}}/assignments
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: assign-channel
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → pluralsight-training-assigner.yml

Syncs corporate sales leads from HubSpot to Salesforce for Inditex B2B uniform and wholesale operations.

naftiko: '0.5'
info:
  label: HubSpot Corporate Lead Sync
  description: Syncs corporate sales leads from HubSpot to Salesforce for Inditex B2B uniform and wholesale operations.
  tags:
  - sales
  - hubspot
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: lead-sync
    port: 8080
    tools:
    - name: sync-lead
      description: Sync a HubSpot lead to Salesforce.
      inputParameters:
      - name: contact_id
        in: body
        type: string
        description: HubSpot contact ID.
      steps:
      - name: get-lead
        type: call
        call: hubspot.get-contact
        with:
          contact_id: '{{contact_id}}'
      - name: create-opp
        type: call
        call: salesforce.create-opportunity
        with:
          name: 'B2B: {{get-lead.company}}'
          amount: '{{get-lead.estimated_value}}'
  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/{{contact_id}}
      inputParameters:
      - name: contact_id
        in: path
      operations:
      - name: get-contact
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://inditex.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
Open in Framework → View in Fleet → hubspot-corporate-lead-sync.yml

Queries Datadog for infrastructure health metrics of Inditex's e-commerce platform.

naftiko: '0.5'
info:
  label: Datadog Platform Monitoring
  description: Queries Datadog for infrastructure health metrics of Inditex's e-commerce platform.
  tags:
  - it-operations
  - monitoring
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: infra-monitoring
    port: 8080
    tools:
    - name: get-platform-health
      description: Retrieve infrastructure health from Datadog.
      inputParameters:
      - name: service
        in: body
        type: string
        description: Service name tag.
      call: datadog.query-metrics
      with:
        query: avg:system.cpu.user{service:{{service}}}
      outputParameters:
      - name: cpu_utilization
        type: string
        mapping: $.series[0].pointlist[-1][1]
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apiKey
      name: DD-API-KEY
      in: header
      value: $secrets.datadog_api_key
    resources:
    - name: metrics
      path: /query
      inputParameters:
      - name: query
        in: query
      operations:
      - name: query-metrics
        method: GET
Open in Framework → View in Fleet → datadog-platform-monitoring.yml

Retrieves a customer support case from Salesforce by case ID.

naftiko: '0.5'
info:
  label: Salesforce Customer Case Lookup
  description: Retrieves a customer support case from Salesforce by case ID.
  tags:
  - customer-service
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: customer-cases
    port: 8080
    tools:
    - name: get-case
      description: Look up a customer case in Salesforce.
      inputParameters:
      - name: case_id
        in: body
        type: string
        description: Salesforce case ID.
      call: salesforce.get-case
      with:
        case_id: '{{case_id}}'
      outputParameters:
      - name: subject
        type: string
        mapping: $.Subject
      - name: status
        type: string
        mapping: $.Status
      - name: priority
        type: string
        mapping: $.Priority
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://inditex.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: cases
      path: /sobjects/Case/{{case_id}}
      inputParameters:
      - name: case_id
        in: path
      operations:
      - name: get-case
        method: GET
Open in Framework → View in Fleet → salesforce-customer-case-lookup.yml

Retrieves quality inspection results from SAP for Inditex garment manufacturing, returning inspection lot status, defect count, and disposition decision.

naftiko: '0.5'
info:
  label: SAP Quality Inspection Lookup
  description: Retrieves quality inspection results from SAP for Inditex garment manufacturing, returning inspection lot status, defect count, and disposition decision.
  tags:
  - quality
  - sap
  - manufacturing
capability:
  exposes:
  - type: mcp
    namespace: quality-inspection
    port: 8080
    tools:
    - name: get-inspection
      description: Look up a quality inspection lot in SAP.
      inputParameters:
      - name: inspection_lot
        in: body
        type: string
        description: The SAP inspection lot number.
      call: sap.get-inspection-lot
      with:
        inspection_lot: '{{inspection_lot}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.d.InspectionLotStatus
      - name: defect_count
        type: number
        mapping: $.d.DefectCount
      - name: disposition
        type: string
        mapping: $.d.UsageDecision
  consumes:
  - type: http
    namespace: sap
    baseUri: https://inditex-s4.sap.com/sap/opu/odata/sap/API_QUALITYINSPECTION_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: inspections
      path: /A_InspectionLot('{{inspection_lot}}')
      inputParameters:
      - name: inspection_lot
        in: path
      operations:
      - name: get-inspection-lot
        method: GET
Open in Framework → View in Fleet → sap-quality-inspection-lookup.yml

Retrieves engagement metrics from Instagram for Inditex brand posts, returning likes, reach, saves, and comments.

naftiko: '0.5'
info:
  label: Instagram Fashion Post Engagement Tracker
  description: Retrieves engagement metrics from Instagram for Inditex brand posts, returning likes, reach, saves, and comments.
  tags:
  - marketing
  - social-media
  - instagram
capability:
  exposes:
  - type: mcp
    namespace: social-engagement
    port: 8080
    tools:
    - name: get-post-engagement
      description: Retrieve Instagram engagement metrics for a fashion post.
      inputParameters:
      - name: media_id
        in: body
        type: string
        description: The Instagram media ID.
      call: instagram.get-media-insights
      with:
        media_id: '{{media_id}}'
      outputParameters:
      - name: likes
        type: string
        mapping: $.data[0].values[0].value
      - name: reach
        type: string
        mapping: $.data[1].values[0].value
      - name: saves
        type: string
        mapping: $.data[2].values[0].value
  consumes:
  - type: http
    namespace: instagram
    baseUri: https://graph.facebook.com/v17.0
    authentication:
      type: bearer
      token: $secrets.instagram_token
    resources:
    - name: media-insights
      path: /{{media_id}}/insights
      inputParameters:
      - name: media_id
        in: path
      - name: metric
        in: query
        value: likes,reach,saved
      operations:
      - name: get-media-insights
        method: GET
Open in Framework → View in Fleet → instagram-fashion-post-engagement-tracker.yml

Retrieves AWS CloudFormation stack status for Inditex infrastructure deployments, returning stack state, last update time, and resource count.

naftiko: '0.5'
info:
  label: CloudFormation Stack Status Checker
  description: Retrieves AWS CloudFormation stack status for Inditex infrastructure deployments, returning stack state, last update time, and resource count.
  tags:
  - infrastructure
  - cloudformation
capability:
  exposes:
  - type: mcp
    namespace: infra-stacks
    port: 8080
    tools:
    - name: get-stack-status
      description: Check CloudFormation stack deployment status.
      inputParameters:
      - name: stack_name
        in: body
        type: string
        description: The CloudFormation stack name.
      call: cfn.describe-stack
      with:
        stack_name: '{{stack_name}}'
      outputParameters:
      - name: stack_status
        type: string
        mapping: $.Stacks[0].StackStatus
      - name: last_updated
        type: string
        mapping: $.Stacks[0].LastUpdatedTime
      - name: resource_count
        type: number
        mapping: $.Stacks[0].ResourceCount
  consumes:
  - type: http
    namespace: cfn
    baseUri: https://cloudformation.eu-west-1.amazonaws.com
    authentication:
      type: bearer
      token: $secrets.aws_cfn_token
    resources:
    - name: stacks
      path: /?Action=DescribeStacks&StackName={{stack_name}}
      inputParameters:
      - name: stack_name
        in: query
      operations:
      - name: describe-stack
        method: GET
Open in Framework → View in Fleet → cloudformation-stack-status-checker.yml

Retrieves conversion funnel data from Adobe Analytics for Inditex brand websites.

naftiko: '0.5'
info:
  label: Adobe Analytics E-Commerce Funnel
  description: Retrieves conversion funnel data from Adobe Analytics for Inditex brand websites.
  tags:
  - e-commerce
  - analytics
  - adobe-analytics
capability:
  exposes:
  - type: mcp
    namespace: ecommerce-funnel
    port: 8080
    tools:
    - name: get-funnel
      description: Retrieve e-commerce funnel metrics 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}}'
      outputParameters:
      - name: browse_to_cart
        type: string
        mapping: $.report.data.rows[0].value
      - name: cart_to_checkout
        type: string
        mapping: $.report.data.rows[1].value
  consumes:
  - 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
Open in Framework → View in Fleet → adobe-analytics-e-commerce-funnel.yml

Lists digital assets stored in Amazon S3 buckets for Inditex marketing campaigns, returning object count, total size, and last modified date.

naftiko: '0.5'
info:
  label: Amazon S3 Asset Inventory
  description: Lists digital assets stored in Amazon S3 buckets for Inditex marketing campaigns, returning object count, total size, and last modified date.
  tags:
  - storage
  - amazon-s3
  - marketing
capability:
  exposes:
  - type: mcp
    namespace: asset-storage
    port: 8080
    tools:
    - name: get-bucket-summary
      description: Retrieve S3 bucket asset inventory summary.
      inputParameters:
      - name: bucket_name
        in: body
        type: string
        description: The S3 bucket name.
      - name: prefix
        in: body
        type: string
        description: The object key prefix to filter.
      call: s3.list-objects
      with:
        bucket_name: '{{bucket_name}}'
        prefix: '{{prefix}}'
      outputParameters:
      - name: object_count
        type: number
        mapping: $.KeyCount
      - name: total_size
        type: string
        mapping: $.TotalSize
      - name: last_modified
        type: string
        mapping: $.Contents[0].LastModified
  consumes:
  - type: http
    namespace: s3
    baseUri: https://{{bucket_name}}.s3.eu-west-1.amazonaws.com
    authentication:
      type: bearer
      token: $secrets.aws_s3_token
    resources:
    - name: objects
      path: /?list-type=2&prefix={{prefix}}
      inputParameters:
      - name: prefix
        in: query
      operations:
      - name: list-objects
        method: GET
Open in Framework → View in Fleet → amazon-s3-asset-inventory.yml

Retrieves a customer support ticket from Zendesk by ticket ID, returning the subject, status, priority, and assigned agent for Inditex brand inquiries.

naftiko: '0.5'
info:
  label: Zendesk Customer Inquiry Lookup
  description: Retrieves a customer support ticket from Zendesk by ticket ID, returning the subject, status, priority, and assigned agent for Inditex brand inquiries.
  tags:
  - customer-service
  - zendesk
capability:
  exposes:
  - type: mcp
    namespace: customer-support
    port: 8080
    tools:
    - name: get-ticket
      description: Look up an Inditex customer support ticket by 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
      - name: assignee
        type: string
        mapping: $.ticket.assignee_id
  consumes:
  - type: http
    namespace: zendesk
    baseUri: https://inditex.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
Open in Framework → View in Fleet → zendesk-customer-inquiry-lookup.yml

Triggers a demand forecasting model run in Azure Databricks for Inditex products, returning job run ID, model version, and estimated completion time.

naftiko: '0.5'
info:
  label: Azure Databricks Demand Model Trigger
  description: Triggers a demand forecasting model run in Azure Databricks for Inditex products, returning job run ID, model version, and estimated completion time.
  tags:
  - machine-learning
  - azure-databricks
  - supply-chain
capability:
  exposes:
  - type: mcp
    namespace: demand-modeling
    port: 8080
    tools:
    - name: trigger-demand-model
      description: Trigger a demand forecasting model run in Azure Databricks.
      inputParameters:
      - name: model_name
        in: body
        type: string
        description: The ML model name.
      - name: brand
        in: body
        type: string
        description: The Inditex brand.
      call: databricks.run-job
      with:
        model_name: '{{model_name}}'
        brand: '{{brand}}'
      outputParameters:
      - name: run_id
        type: string
        mapping: $.run_id
      - name: model_version
        type: string
        mapping: $.model_version
      - name: estimated_completion
        type: string
        mapping: $.estimated_completion_time
  consumes:
  - type: http
    namespace: databricks
    baseUri: https://adb-inditex.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
Open in Framework → View in Fleet → azure-databricks-demand-model-trigger.yml

Retrieves purchase requisition details from SAP for Inditex procurement, returning requisition status, requested material, quantity, and delivery date.

naftiko: '0.5'
info:
  label: SAP Purchase Requisition Lookup
  description: Retrieves purchase requisition details from SAP for Inditex procurement, returning requisition status, requested material, quantity, and delivery date.
  tags:
  - procurement
  - sap
capability:
  exposes:
  - type: mcp
    namespace: procurement
    port: 8080
    tools:
    - name: get-requisition
      description: Look up a purchase requisition in SAP.
      inputParameters:
      - name: requisition_id
        in: body
        type: string
        description: The SAP purchase requisition number.
      call: sap.get-requisition
      with:
        requisition_id: '{{requisition_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.d.PurchaseRequisitionStatus
      - name: material
        type: string
        mapping: $.d.Material
      - name: quantity
        type: number
        mapping: $.d.RequestedQuantity
      - name: delivery_date
        type: string
        mapping: $.d.DeliveryDate
  consumes:
  - type: http
    namespace: sap
    baseUri: https://inditex-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_PurchaseRequisitionHeader('{{requisition_id}}')
      inputParameters:
      - name: requisition_id
        in: path
      operations:
      - name: get-requisition
        method: GET
Open in Framework → View in Fleet → sap-purchase-requisition-lookup.yml

Runs a data quality profile check in Informatica for a specified Inditex dataset, returning completeness score, duplicate count, and anomaly summary.

naftiko: '0.5'
info:
  label: Informatica Data Quality Check
  description: Runs a data quality profile check in Informatica for a specified Inditex dataset, returning completeness score, duplicate count, and anomaly summary.
  tags:
  - data-quality
  - informatica
capability:
  exposes:
  - type: mcp
    namespace: data-quality
    port: 8080
    tools:
    - name: run-quality-check
      description: Execute a data quality profile check in Informatica.
      inputParameters:
      - name: dataset_name
        in: body
        type: string
        description: The Informatica dataset name.
      call: informatica.run-profile
      with:
        dataset_name: '{{dataset_name}}'
      outputParameters:
      - name: completeness
        type: string
        mapping: $.profileResult.completenessScore
      - name: duplicate_count
        type: number
        mapping: $.profileResult.duplicateCount
      - name: anomaly_summary
        type: string
        mapping: $.profileResult.anomalySummary
  consumes:
  - type: http
    namespace: informatica
    baseUri: https://dm-us.informaticacloud.com/saas/api/v2
    authentication:
      type: bearer
      token: $secrets.informatica_token
    resources:
    - name: profiles
      path: /profile/run
      operations:
      - name: run-profile
        method: POST
Open in Framework → View in Fleet → informatica-data-quality-check.yml

Retrieves accounts payable invoice details from Oracle E-Business Suite, returning invoice amount, vendor name, payment terms, and approval status.

naftiko: '0.5'
info:
  label: Oracle E-Business Suite AP Invoice Lookup
  description: Retrieves accounts payable invoice details from Oracle E-Business Suite, returning invoice amount, vendor name, payment terms, and approval status.
  tags:
  - finance
  - oracle-e-business-suite
capability:
  exposes:
  - type: mcp
    namespace: accounts-payable
    port: 8080
    tools:
    - name: get-ap-invoice
      description: Look up an AP invoice in Oracle E-Business Suite.
      inputParameters:
      - name: invoice_id
        in: body
        type: string
        description: The Oracle AP invoice ID.
      call: oracle-ebs.get-invoice
      with:
        invoice_id: '{{invoice_id}}'
      outputParameters:
      - name: amount
        type: string
        mapping: $.InvoiceAmount
      - name: vendor_name
        type: string
        mapping: $.VendorName
      - name: payment_terms
        type: string
        mapping: $.PaymentTerms
      - name: approval_status
        type: string
        mapping: $.ApprovalStatus
  consumes:
  - type: http
    namespace: oracle-ebs
    baseUri: https://inditex-ebs.oraclecloud.com/webservices/rest/v1
    authentication:
      type: basic
      username: $secrets.oracle_ebs_user
      password: $secrets.oracle_ebs_password
    resources:
    - name: invoices
      path: /ap/invoices/{{invoice_id}}
      inputParameters:
      - name: invoice_id
        in: path
      operations:
      - name: get-invoice
        method: GET
Open in Framework → View in Fleet → oracle-e-business-suite-ap-invoice-lookup.yml

Validates fabric sourcing compliance by checking supplier certification in SAP, retrieving sustainability documentation from SharePoint, and creating a compliance audit record in ServiceNow.

naftiko: '0.5'
info:
  label: Fabric Sourcing Compliance Pipeline
  description: Validates fabric sourcing compliance by checking supplier certification in SAP, retrieving sustainability documentation from SharePoint, and creating a compliance audit record in ServiceNow.
  tags:
  - sustainability
  - compliance
  - sap
  - sharepoint
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: fabric-compliance
    port: 8080
    tools:
    - name: validate-fabric-compliance
      description: Validate fabric sourcing compliance for an Inditex supplier.
      inputParameters:
      - name: supplier_id
        in: body
        type: string
        description: The SAP supplier ID.
      - name: material_code
        in: body
        type: string
        description: The fabric material code.
      steps:
      - name: check-certification
        type: call
        call: sap.get-supplier-cert
        with:
          supplier_id: '{{supplier_id}}'
      - name: get-sustainability-docs
        type: call
        call: sharepoint.search-documents
        with:
          query: Supplier_{{supplier_id}}_Sustainability
      - name: create-audit-record
        type: call
        call: servicenow.create-task
        with:
          short_description: 'Fabric compliance audit: Supplier {{supplier_id}} - Material {{material_code}}'
          description: 'Certification status: {{check-certification.cert_status}}. Documentation: {{get-sustainability-docs.doc_count}} files found.'
          assignment_group: Sustainability_Compliance
  consumes:
  - type: http
    namespace: sap
    baseUri: https://inditex-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}}')/to_SupplierCertification
      inputParameters:
      - name: supplier_id
        in: path
      operations:
      - name: get-supplier-cert
        method: GET
  - type: http
    namespace: sharepoint
    baseUri: https://inditex.sharepoint.com/_api/v2.0
    authentication:
      type: bearer
      token: $secrets.sharepoint_token
    resources:
    - name: search
      path: /search/query
      operations:
      - name: search-documents
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://inditex.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tasks
      path: /table/sc_task
      operations:
      - name: create-task
        method: POST
Open in Framework → View in Fleet → fabric-sourcing-compliance-pipeline.yml

Orchestrates new supplier onboarding by creating the vendor record in SAP, uploading compliance documents to Box, scheduling a quality audit in ServiceNow, and notifying procurement via Microsoft Teams.

naftiko: '0.5'
info:
  label: Supplier Onboarding Orchestrator
  description: Orchestrates new supplier onboarding by creating the vendor record in SAP, uploading compliance documents to Box, scheduling a quality audit in ServiceNow, and notifying procurement via Microsoft Teams.
  tags:
  - procurement
  - supply-chain
  - sap
  - box
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: supplier-onboarding
    port: 8080
    tools:
    - name: onboard-supplier
      description: Orchestrate the onboarding of a new Inditex supplier.
      inputParameters:
      - name: supplier_name
        in: body
        type: string
        description: The supplier company name.
      - name: country
        in: body
        type: string
        description: The supplier country code.
      - name: contact_email
        in: body
        type: string
        description: Primary contact email.
      steps:
      - name: create-vendor
        type: call
        call: sap.create-vendor
        with:
          supplier_name: '{{supplier_name}}'
          country: '{{country}}'
          contact_email: '{{contact_email}}'
      - name: upload-documents
        type: call
        call: box.create-folder
        with:
          folder_name: Supplier_{{create-vendor.vendor_id}}_{{supplier_name}}
          parent_folder: Supplier_Onboarding
      - name: schedule-audit
        type: call
        call: servicenow.create-task
        with:
          short_description: Quality audit for new supplier {{supplier_name}} ({{create-vendor.vendor_id}})
          assignment_group: Supplier_Quality
          priority: '2'
      - name: notify-procurement
        type: call
        call: teams.send-message
        with:
          channel: Procurement_Updates
          message: 'New supplier onboarded: {{supplier_name}} ({{create-vendor.vendor_id}}). Documents folder: {{upload-documents.folder_id}}. Audit task: {{schedule-audit.task_number}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://inditex-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
      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: servicenow
    baseUri: https://inditex.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: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → supplier-onboarding-orchestrator.yml

Syncs product catalog to Instagram Shopping by extracting products from SAP, formatting for the Meta Commerce catalog, uploading via Facebook API, and verifying listing status.

naftiko: '0.5'
info:
  label: Instagram Shopping Catalog Sync Pipeline
  description: Syncs product catalog to Instagram Shopping by extracting products from SAP, formatting for the Meta Commerce catalog, uploading via Facebook API, and verifying listing status.
  tags:
  - social-media
  - e-commerce
  - sap
  - instagram
  - facebook
capability:
  exposes:
  - type: mcp
    namespace: instagram-shopping
    port: 8080
    tools:
    - name: sync-catalog
      description: Sync Inditex product catalog to Instagram Shopping.
      inputParameters:
      - name: collection_id
        in: body
        type: string
        description: The product collection to sync.
      - name: brand
        in: body
        type: string
        description: The Inditex brand.
      steps:
      - name: extract-products
        type: call
        call: sap.get-collection-products
        with:
          collection_id: '{{collection_id}}'
      - name: upload-catalog
        type: call
        call: facebook.upload-catalog-batch
        with:
          catalog_id: '{{brand}}_instagram_catalog'
          product_count: '{{extract-products.product_count}}'
      - name: verify-listings
        type: call
        call: facebook.get-catalog-status
        with:
          catalog_id: '{{brand}}_instagram_catalog'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://inditex-s4.sap.com/sap/opu/odata/sap/API_PRODUCT_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: collections
      path: /A_Product?$filter=Collection eq '{{collection_id}}'
      inputParameters:
      - name: collection_id
        in: query
      operations:
      - name: get-collection-products
        method: GET
  - type: http
    namespace: facebook
    baseUri: https://graph.facebook.com/v17.0
    authentication:
      type: bearer
      token: $secrets.facebook_token
    resources:
    - name: catalog-batches
      path: /{{catalog_id}}/items_batch
      inputParameters:
      - name: catalog_id
        in: path
      operations:
      - name: upload-catalog-batch
        method: POST
    - name: catalog-status
      path: /{{catalog_id}}/product_feeds
      inputParameters:
      - name: catalog_id
        in: path
      operations:
      - name: get-catalog-status
        method: GET
Open in Framework → View in Fleet → instagram-shopping-catalog-sync-pipeline.yml

Monitors Azure Service Bus queue health for Inditex integration pipelines, returning active message count, dead-letter count, and queue size in bytes.

naftiko: '0.5'
info:
  label: Azure Service Bus Message Monitor
  description: Monitors Azure Service Bus queue health for Inditex integration pipelines, returning active message count, dead-letter count, and queue size in bytes.
  tags:
  - integration
  - azure-service-bus
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: message-bus-health
    port: 8080
    tools:
    - name: get-queue-health
      description: Monitor Azure Service Bus queue health metrics.
      inputParameters:
      - name: queue_name
        in: body
        type: string
        description: The Service Bus queue name.
      call: servicebus.get-queue
      with:
        queue_name: '{{queue_name}}'
      outputParameters:
      - name: active_messages
        type: number
        mapping: $.activeMessageCount
      - name: dead_letter_count
        type: number
        mapping: $.deadLetterMessageCount
      - name: size_bytes
        type: number
        mapping: $.sizeInBytes
  consumes:
  - type: http
    namespace: servicebus
    baseUri: https://inditex-bus.servicebus.windows.net
    authentication:
      type: bearer
      token: $secrets.servicebus_token
    resources:
    - name: queues
      path: /{{queue_name}}?api-version=2021-05
      inputParameters:
      - name: queue_name
        in: path
      operations:
      - name: get-queue
        method: GET
Open in Framework → View in Fleet → azure-service-bus-message-monitor.yml

Orchestrates a seasonal collection launch by activating product listings in SAP, publishing marketing assets via Adobe Campaign, updating store displays in ServiceNow, and notifying teams via Microsoft Teams.

naftiko: '0.5'
info:
  label: Seasonal Collection Launch Orchestrator
  description: Orchestrates a seasonal collection launch by activating product listings in SAP, publishing marketing assets via Adobe Campaign, updating store displays in ServiceNow, and notifying teams via Microsoft Teams.
  tags:
  - retail
  - supply-chain
  - sap
  - adobe-campaign
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: collection-launch
    port: 8080
    tools:
    - name: launch-collection
      description: Orchestrate a seasonal collection launch across systems.
      inputParameters:
      - name: collection_id
        in: body
        type: string
        description: The collection identifier.
      - name: launch_date
        in: body
        type: string
        description: The planned launch date.
      steps:
      - name: activate-products
        type: call
        call: sap.activate-collection
        with:
          collection_id: '{{collection_id}}'
          activation_date: '{{launch_date}}'
      - name: publish-campaign
        type: call
        call: adobe-campaign.trigger-campaign
        with:
          campaign_name: Collection_{{collection_id}}_Launch
          scheduled_date: '{{launch_date}}'
      - name: create-display-tasks
        type: call
        call: servicenow.create-task
        with:
          short_description: Update store displays for collection {{collection_id}}
          assignment_group: Visual_Merchandising
          due_date: '{{launch_date}}'
      - name: notify-teams
        type: call
        call: teams.send-message
        with:
          channel: Collection_Launches
          message: 'Collection {{collection_id}} launch initiated. Products activated: {{activate-products.count}}. Campaign: {{publish-campaign.campaign_id}}. Display task: {{create-display-tasks.task_number}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://inditex-s4.sap.com/sap/opu/odata/sap/API_PRODUCT_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: collections
      path: /A_ProductCollection
      operations:
      - name: activate-collection
        method: POST
  - type: http
    namespace: adobe-campaign
    baseUri: https://mc.adobe.io/inditex/campaign
    authentication:
      type: bearer
      token: $secrets.adobe_campaign_token
    resources:
    - name: campaigns
      path: /campaigns/trigger
      operations:
      - name: trigger-campaign
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://inditex.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: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → seasonal-collection-launch-orchestrator.yml

Retrieves a SAP purchase order for garment sourcing, returning supplier, delivery date, total value, and approval status.

naftiko: '0.5'
info:
  label: Purchase Order Status Lookup
  description: Retrieves a SAP purchase order for garment sourcing, returning supplier, delivery date, total value, and approval status.
  tags:
  - supply-chain
  - procurement
  - sap
capability:
  exposes:
  - type: mcp
    namespace: procurement
    port: 8080
    tools:
    - name: get-purchase-order
      description: Look up a SAP purchase order by PO number.
      inputParameters:
      - name: po_number
        in: body
        type: string
        description: The SAP purchase order number.
      call: sap.get-po
      with:
        po_number: '{{po_number}}'
      outputParameters:
      - name: supplier
        type: string
        mapping: $.d.Supplier.CompanyName
      - name: total_value
        type: string
        mapping: $.d.TotalAmount
      - name: status
        type: string
        mapping: $.d.OverallStatus
      - name: delivery_date
        type: string
        mapping: $.d.DeliveryDate
  consumes:
  - type: http
    namespace: sap
    baseUri: https://inditex-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
Open in Framework → View in Fleet → purchase-order-status-lookup.yml

Processes employee offboarding by updating status in Workday, revoking access in Azure Active Directory, collecting equipment via ServiceNow, and notifying HR via Microsoft Teams.

naftiko: '0.5'
info:
  label: Employee Exit Processing Orchestrator
  description: Processes employee offboarding by updating status in Workday, revoking access in Azure Active Directory, collecting equipment via ServiceNow, and notifying HR via Microsoft Teams.
  tags:
  - hr
  - workday
  - azure-active-directory
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: employee-exit
    port: 8080
    tools:
    - name: process-exit
      description: Orchestrate the employee exit process.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The Workday employee ID.
      - name: last_day
        in: body
        type: string
        description: The employee last working day.
      steps:
      - name: update-workday
        type: call
        call: workday.terminate-worker
        with:
          employee_id: '{{employee_id}}'
          termination_date: '{{last_day}}'
      - name: revoke-access
        type: call
        call: azure-ad.disable-user
        with:
          employee_id: '{{employee_id}}'
      - name: collect-equipment
        type: call
        call: servicenow.create-task
        with:
          short_description: Equipment collection for {{employee_id}} - Exit date {{last_day}}
          assignment_group: IT_Asset_Management
          priority: '3'
      - name: notify-hr
        type: call
        call: teams.send-message
        with:
          channel: HR_Operations
          message: 'Employee exit processed: {{employee_id}}. Workday updated. Access revoked. Equipment collection task: {{collect-equipment.task_number}}.'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd3-impl-services1.workday.com/ccx/api/v1/inditex
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /workers/{{employee_id}}/terminate
      inputParameters:
      - name: employee_id
        in: path
      operations:
      - name: terminate-worker
        method: POST
  - type: http
    namespace: azure-ad
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.azure_ad_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://inditex.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: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → employee-exit-processing-orchestrator.yml

Orchestrates supplier quality audits by retrieving audit schedules from ServiceNow, pulling supplier scores from SAP, generating audit reports in Confluence, and notifying the quality team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Supplier Quality Audit Pipeline
  description: Orchestrates supplier quality audits by retrieving audit schedules from ServiceNow, pulling supplier scores from SAP, generating audit reports in Confluence, and notifying the quality team via Microsoft Teams.
  tags:
  - quality
  - supply-chain
  - servicenow
  - sap
  - confluence
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: quality-audit
    port: 8080
    tools:
    - name: run-quality-audit
      description: Execute a supplier quality audit workflow.
      inputParameters:
      - name: supplier_id
        in: body
        type: string
        description: The SAP supplier ID.
      - name: audit_type
        in: body
        type: string
        description: The audit type (annual, corrective, follow-up).
      steps:
      - name: get-supplier-data
        type: call
        call: sap.get-supplier-quality
        with:
          supplier_id: '{{supplier_id}}'
      - name: create-audit-task
        type: call
        call: servicenow.create-task
        with:
          short_description: '{{audit_type}} quality audit: Supplier {{supplier_id}} - {{get-supplier-data.supplier_name}}'
          assignment_group: Supplier_Quality
          priority: '2'
      - name: create-report-page
        type: call
        call: confluence.create-page
        with:
          space: SUPPLIER_QUALITY
          title: Audit Report - {{supplier_id}} - {{audit_type}}
          body: 'Supplier: {{get-supplier-data.supplier_name}}. Current Score: {{get-supplier-data.quality_score}}. Task: {{create-audit-task.task_number}}.'
      - name: notify-team
        type: call
        call: teams.send-message
        with:
          channel: Supplier_Quality
          message: 'Quality audit initiated for {{get-supplier-data.supplier_name}}. Type: {{audit_type}}. Report: {{create-report-page.page_url}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://inditex-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-quality
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://inditex.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: confluence
    baseUri: https://inditex.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_token
    resources:
    - name: content
      path: /content
      operations:
      - name: create-page
        method: POST
  - type: http
    namespace: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → supplier-quality-audit-pipeline.yml

Retrieves the payment status of a supplier invoice from SAP, returning payment date, amount, currency, and clearing document number.

naftiko: '0.5'
info:
  label: SAP Supplier Payment Status
  description: Retrieves the payment status of a supplier invoice from SAP, returning payment date, amount, currency, and clearing document number.
  tags:
  - finance
  - sap
  - supply-chain
capability:
  exposes:
  - type: mcp
    namespace: supplier-payments
    port: 8080
    tools:
    - name: get-payment-status
      description: Look up payment status for a supplier invoice in SAP.
      inputParameters:
      - name: invoice_number
        in: body
        type: string
        description: The SAP supplier invoice number.
      call: sap.get-payment
      with:
        invoice_number: '{{invoice_number}}'
      outputParameters:
      - name: payment_date
        type: string
        mapping: $.d.PaymentDate
      - name: amount
        type: string
        mapping: $.d.Amount
      - name: currency
        type: string
        mapping: $.d.Currency
      - name: clearing_doc
        type: string
        mapping: $.d.ClearingDocument
  consumes:
  - type: http
    namespace: sap
    baseUri: https://inditex-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-payment
        method: GET
Open in Framework → View in Fleet → sap-supplier-payment-status.yml

Queries SAP BW for warehouse utilization metrics across Inditex distribution centers, returning capacity percentage, bin occupancy, and throughput volume.

naftiko: '0.5'
info:
  label: SAP BW Warehouse Utilization Report
  description: Queries SAP BW for warehouse utilization metrics across Inditex distribution centers, returning capacity percentage, bin occupancy, and throughput volume.
  tags:
  - logistics
  - sap-bw
  - supply-chain
capability:
  exposes:
  - type: mcp
    namespace: warehouse-utilization
    port: 8080
    tools:
    - name: get-utilization
      description: Retrieve warehouse utilization metrics from SAP BW.
      inputParameters:
      - name: warehouse_id
        in: body
        type: string
        description: The warehouse identifier.
      call: sapbw.query-utilization
      with:
        warehouse_id: '{{warehouse_id}}'
      outputParameters:
      - name: capacity_pct
        type: string
        mapping: $.data.capacityPercentage
      - name: bin_occupancy
        type: number
        mapping: $.data.binOccupancy
      - name: throughput_volume
        type: number
        mapping: $.data.throughputVolume
  consumes:
  - type: http
    namespace: sapbw
    baseUri: https://inditex-bw.sap.com/sap/bw/ina/GetResponse
    authentication:
      type: basic
      username: $secrets.sap_bw_user
      password: $secrets.sap_bw_password
    resources:
    - name: queries
      path: /query
      operations:
      - name: query-utilization
        method: POST
Open in Framework → View in Fleet → sap-bw-warehouse-utilization-report.yml

Retrieves F5 load balancer pool member status for Inditex web application infrastructure, returning pool name, active members, health status, and current connections.

naftiko: '0.5'
info:
  label: F5 Load Balancer Pool Status
  description: Retrieves F5 load balancer pool member status for Inditex web application infrastructure, returning pool name, active members, health status, and current connections.
  tags:
  - infrastructure
  - f5-networks
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: load-balancer
    port: 8080
    tools:
    - name: get-pool-status
      description: Retrieve F5 load balancer pool status.
      inputParameters:
      - name: pool_name
        in: body
        type: string
        description: The F5 pool name.
      call: f5.get-pool
      with:
        pool_name: '{{pool_name}}'
      outputParameters:
      - name: active_members
        type: number
        mapping: $.activeMemberCnt
      - name: health_status
        type: string
        mapping: $.status.availabilityState
      - name: current_connections
        type: number
        mapping: $.curSessions
  consumes:
  - type: http
    namespace: f5
    baseUri: https://f5-ltm.inditex.com/mgmt/tm
    authentication:
      type: basic
      username: $secrets.f5_user
      password: $secrets.f5_password
    resources:
    - name: pools
      path: /ltm/pool/{{pool_name}}/stats
      inputParameters:
      - name: pool_name
        in: path
      operations:
      - name: get-pool
        method: GET
Open in Framework → View in Fleet → f5-load-balancer-pool-status.yml

Syncs Workday time entries to ADP for payroll processing and confirms via Teams.

naftiko: '0.5'
info:
  label: ADP Payroll Integration Sync
  description: Syncs Workday time entries to ADP for payroll processing and confirms via Teams.
  tags:
  - hr
  - payroll
  - workday
  - adp
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: payroll-sync
    port: 8080
    tools:
    - name: sync-payroll
      description: Sync time entries to ADP and confirm.
      inputParameters:
      - name: pay_period
        in: body
        type: string
        description: Pay period.
      - name: brand
        in: body
        type: string
        description: Brand code.
      steps:
      - name: get-entries
        type: call
        call: workday.get-time-entries
        with:
          pay_period: '{{pay_period}}'
          brand: '{{brand}}'
      - name: submit
        type: call
        call: adp.submit-payroll
        with:
          entries: '{{get-entries.entries}}'
      - name: confirm
        type: call
        call: msteams.send-message
        with:
          channel_id: hr_payroll
          text: 'Payroll sync for {{brand}}, period {{pay_period}}: {{submit.employee_count}} processed.'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: time-entries
      path: /time/entries
      operations:
      - name: get-time-entries
        method: GET
  - type: http
    namespace: adp
    baseUri: https://api.adp.com/hr/v2
    authentication:
      type: bearer
      token: $secrets.adp_token
    resources:
    - name: payroll
      path: /payroll/payroll-processing
      operations:
      - name: submit-payroll
        method: POST
  - 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
Open in Framework → View in Fleet → adp-payroll-integration-sync.yml

Pulls environmental impact data for Inditex stores and logs it to Google Sheets for ESG reporting.

naftiko: '0.5'
info:
  label: Sustainability Metrics Tracker
  description: Pulls environmental impact data for Inditex stores and logs it to Google Sheets for ESG reporting.
  tags:
  - sustainability
  - retail
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: sustainability
    port: 8080
    tools:
    - name: track-sustainability
      description: Log sustainability metrics to Google Sheets.
      inputParameters:
      - name: store_code
        in: body
        type: string
        description: Store code.
      - name: month
        in: body
        type: string
        description: Month YYYY-MM.
      - name: energy_kwh
        in: body
        type: string
        description: Energy consumption in kWh.
      - name: recycled_kg
        in: body
        type: string
        description: Recycled garment weight in kg.
      call: gsheets.append-row
      with:
        spreadsheet_id: sustainability_metrics
        range: StoreData!A:D
        values: '{{store_code}},{{month}},{{energy_kwh}},{{recycled_kg}}'
  consumes:
  - type: http
    namespace: gsheets
    baseUri: https://sheets.googleapis.com/v4
    authentication:
      type: bearer
      token: $secrets.google_sheets_token
    resources:
    - name: spreadsheets
      path: /spreadsheets/{{spreadsheet_id}}/values/{{range}}:append
      inputParameters:
      - name: spreadsheet_id
        in: path
      - name: range
        in: path
      operations:
      - name: append-row
        method: POST
Open in Framework → View in Fleet → sustainability-metrics-tracker.yml

Checks real-time inventory levels at a specific Zara store for a given article reference, returning on-hand quantity by size and restock ETA.

naftiko: '0.5'
info:
  label: Store Inventory Stock Level Checker
  description: Checks real-time inventory levels at a specific Zara store for a given article reference, returning on-hand quantity by size and restock ETA.
  tags:
  - retail
  - supply-chain
  - sap
capability:
  exposes:
  - type: mcp
    namespace: store-inventory
    port: 8080
    tools:
    - name: check-store-stock
      description: Check inventory levels at a specific store by article and size.
      inputParameters:
      - name: store_code
        in: body
        type: string
        description: The store code.
      - name: article_ref
        in: body
        type: string
        description: The article reference.
      call: sap.get-plant-stock
      with:
        plant: '{{store_code}}'
        material: '{{article_ref}}'
      outputParameters:
      - name: stock_by_size
        type: string
        mapping: $.d.StockBySizeVariant
      - name: restock_date
        type: string
        mapping: $.d.NextDeliveryDate
      - name: total_on_hand
        type: string
        mapping: $.d.TotalAvailableStock
  consumes:
  - type: http
    namespace: sap
    baseUri: https://inditex-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: plant-stock
      path: /A_MatlStkInAcctMod(Material='{{material}}',Plant='{{plant}}')
      inputParameters:
      - name: material
        in: path
      - name: plant
        in: path
      operations:
      - name: get-plant-stock
        method: GET
Open in Framework → View in Fleet → store-inventory-stock-level-checker.yml

When a SAP Concur expense report is submitted, retrieves details and notifies the approver via Teams.

naftiko: '0.5'
info:
  label: Concur Travel Expense Notifier
  description: When a SAP Concur expense report is submitted, retrieves details and notifies the approver via Teams.
  tags:
  - finance
  - expenses
  - sap-concur
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: expense-approval
    port: 8080
    tools:
    - name: notify-expense
      description: Fetch Concur expense and notify approver via Teams.
      inputParameters:
      - name: report_id
        in: body
        type: string
        description: Concur expense report ID.
      steps:
      - name: get-report
        type: call
        call: concur.get-expense-report
        with:
          report_id: '{{report_id}}'
      - name: notify
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-report.approver_email}}'
          text: 'Expense pending: {{get-report.employee_name}} - EUR {{get-report.total_amount}}. Review: {{get-report.approval_url}}'
  consumes:
  - type: http
    namespace: concur
    baseUri: https://eu.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: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → concur-travel-expense-notifier.yml

Retrieves YouTube video performance for Inditex brand fashion campaigns.

naftiko: '0.5'
info:
  label: YouTube Fashion Video Tracker
  description: Retrieves YouTube video performance for Inditex brand fashion campaigns.
  tags:
  - marketing
  - social-media
  - youtube
capability:
  exposes:
  - type: mcp
    namespace: youtube-analytics
    port: 8080
    tools:
    - name: get-video-stats
      description: Retrieve YouTube video performance.
      inputParameters:
      - name: video_id
        in: body
        type: string
        description: YouTube video ID.
      call: youtube.get-stats
      with:
        video_id: '{{video_id}}'
      outputParameters:
      - name: views
        type: string
        mapping: $.items[0].statistics.viewCount
      - name: likes
        type: string
        mapping: $.items[0].statistics.likeCount
  consumes:
  - type: http
    namespace: youtube
    baseUri: https://www.googleapis.com/youtube/v3
    authentication:
      type: apiKey
      name: key
      in: query
      value: $secrets.youtube_api_key
    resources:
    - name: videos
      path: /videos
      inputParameters:
      - name: id
        in: query
        value: '{{video_id}}'
      - name: part
        in: query
        value: statistics
      operations:
      - name: get-stats
        method: GET
Open in Framework → View in Fleet → youtube-fashion-video-tracker.yml

When a fabric quality issue is reported, creates a SAP quality notification, logs a Confluence investigation page, and alerts the sourcing team via Teams.

naftiko: '0.5'
info:
  label: Supplier Fabric Quality Notification
  description: When a fabric quality issue is reported, creates a SAP quality notification, logs a Confluence investigation page, and alerts the sourcing team via Teams.
  tags:
  - supply-chain
  - quality
  - sap
  - confluence
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: quality-tracking
    port: 8080
    tools:
    - name: report-quality-issue
      description: Report a fabric quality issue and trigger investigation.
      inputParameters:
      - name: material
        in: body
        type: string
        description: Fabric material code.
      - name: supplier_code
        in: body
        type: string
        description: SAP supplier code.
      - name: defect_description
        in: body
        type: string
        description: Defect description.
      steps:
      - name: create-qn
        type: call
        call: sap.create-quality-notification
        with:
          material: '{{material}}'
          supplier: '{{supplier_code}}'
          description: '{{defect_description}}'
      - name: log-page
        type: call
        call: confluence.create-page
        with:
          space_key: QUALITY
          title: QN {{create-qn.notification_number}} - {{material}}
          body: 'Supplier: {{supplier_code}}. Defect: {{defect_description}}'
      - name: alert-sourcing
        type: call
        call: msteams.send-message
        with:
          channel_id: sourcing_quality
          text: 'Quality alert: {{material}} from {{supplier_code}}. QN: {{create-qn.notification_number}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://inditex-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: confluence
    baseUri: https://inditex.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: pages
      path: /content
      operations:
      - name: create-page
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → supplier-fabric-quality-notification.yml

Processes an online return by validating the order in SAP, creating a return merchandise authorization, processing the refund via the payment gateway, and sending confirmation through WhatsApp.

naftiko: '0.5'
info:
  label: Online Order Return and Refund Pipeline
  description: Processes an online return by validating the order in SAP, creating a return merchandise authorization, processing the refund via the payment gateway, and sending confirmation through WhatsApp.
  tags:
  - e-commerce
  - returns
  - sap
  - whatsapp
capability:
  exposes:
  - type: mcp
    namespace: returns-refunds
    port: 8080
    tools:
    - name: process-return
      description: Process an online order return and refund.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The original order ID.
      - name: return_reason
        in: body
        type: string
        description: The reason for return.
      - name: customer_phone
        in: body
        type: string
        description: Customer phone number for WhatsApp notification.
      steps:
      - name: validate-order
        type: call
        call: sap.get-sales-order
        with:
          order_id: '{{order_id}}'
      - name: create-rma
        type: call
        call: sap.create-return-order
        with:
          order_id: '{{order_id}}'
          reason: '{{return_reason}}'
      - name: process-refund
        type: call
        call: payment-gateway.create-refund
        with:
          order_id: '{{order_id}}'
          amount: '{{validate-order.total_amount}}'
          currency: '{{validate-order.currency}}'
      - name: send-confirmation
        type: call
        call: whatsapp.send-message
        with:
          phone: '{{customer_phone}}'
          template: return_confirmed
          parameters: '{{order_id}},{{create-rma.rma_number}},{{process-refund.refund_reference}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://inditex-s4.sap.com/sap/opu/odata/sap/API_SALES_ORDER_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: orders
      path: /A_SalesOrder('{{order_id}}')
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-sales-order
        method: GET
    - name: returns
      path: /A_SalesOrder
      operations:
      - name: create-return-order
        method: POST
  - type: http
    namespace: payment-gateway
    baseUri: https://payments.inditex.com/api/v1
    authentication:
      type: bearer
      token: $secrets.payment_gateway_token
    resources:
    - name: refunds
      path: /refunds
      operations:
      - name: create-refund
        method: POST
  - type: http
    namespace: whatsapp
    baseUri: https://graph.facebook.com/v17.0
    authentication:
      type: bearer
      token: $secrets.whatsapp_token
    resources:
    - name: messages
      path: /{{phone_number_id}}/messages
      inputParameters:
      - name: phone_number_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → online-order-return-and-refund-pipeline.yml

Plans visual merchandising updates by retrieving planogram data from SAP, fetching design assets from Google Drive, creating work orders in ServiceNow, and notifying store managers via Microsoft Teams.

naftiko: '0.5'
info:
  label: Visual Merchandising Planning Pipeline
  description: Plans visual merchandising updates by retrieving planogram data from SAP, fetching design assets from Google Drive, creating work orders in ServiceNow, and notifying store managers via Microsoft Teams.
  tags:
  - retail
  - visual-merchandising
  - sap
  - google-drive
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: visual-merchandising
    port: 8080
    tools:
    - name: plan-display-update
      description: Plan a visual merchandising display update across stores.
      inputParameters:
      - name: planogram_id
        in: body
        type: string
        description: The planogram identifier.
      - name: store_group
        in: body
        type: string
        description: The store group to apply the update.
      steps:
      - name: get-planogram
        type: call
        call: sap.get-planogram
        with:
          planogram_id: '{{planogram_id}}'
      - name: get-design-assets
        type: call
        call: gdrive.search-files
        with:
          query: Planogram_{{planogram_id}}
      - name: create-work-orders
        type: call
        call: servicenow.create-task
        with:
          short_description: 'Display update: Planogram {{planogram_id}} for {{store_group}}'
          description: 'Assets: {{get-design-assets.file_count}} files. Layout: {{get-planogram.layout_name}}.'
          assignment_group: Visual_Merchandising_{{store_group}}
      - name: notify-managers
        type: call
        call: teams.send-message
        with:
          channel: Store_Managers_{{store_group}}
          message: 'New display update scheduled. Planogram: {{planogram_id}}. Work order: {{create-work-orders.task_number}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://inditex-s4.sap.com/sap/opu/odata/sap/API_PLANOGRAM_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: planograms
      path: /A_Planogram('{{planogram_id}}')
      inputParameters:
      - name: planogram_id
        in: path
      operations:
      - name: get-planogram
        method: GET
  - type: http
    namespace: gdrive
    baseUri: https://www.googleapis.com/drive/v3
    authentication:
      type: bearer
      token: $secrets.google_drive_token
    resources:
    - name: files
      path: /files?q=name contains '{{query}}'
      inputParameters:
      - name: query
        in: query
      operations:
      - name: search-files
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://inditex.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: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → visual-merchandising-planning-pipeline.yml

Orchestrates inventory redistribution by analyzing stock levels in Snowflake, creating transfer orders in SAP, scheduling logistics in the warehouse system, and notifying store managers via Microsoft Teams.

naftiko: '0.5'
info:
  label: Inventory Redistribution Orchestrator
  description: Orchestrates inventory redistribution by analyzing stock levels in Snowflake, creating transfer orders in SAP, scheduling logistics in the warehouse system, and notifying store managers via Microsoft Teams.
  tags:
  - supply-chain
  - inventory
  - snowflake
  - sap
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: inventory-redistribution
    port: 8080
    tools:
    - name: redistribute-inventory
      description: Orchestrate inventory redistribution across Inditex locations.
      inputParameters:
      - name: article_ref
        in: body
        type: string
        description: The article reference.
      - name: source_plant
        in: body
        type: string
        description: The source plant code.
      - name: target_plant
        in: body
        type: string
        description: The target plant code.
      steps:
      - name: analyze-stock
        type: call
        call: snowflake.query-stock-levels
        with:
          article_ref: '{{article_ref}}'
          source: '{{source_plant}}'
          target: '{{target_plant}}'
      - name: create-transfer
        type: call
        call: sap.create-stock-transfer
        with:
          material: '{{article_ref}}'
          from_plant: '{{source_plant}}'
          to_plant: '{{target_plant}}'
          quantity: '{{analyze-stock.recommended_qty}}'
      - name: notify-stores
        type: call
        call: teams.send-message
        with:
          channel: Inventory_Management
          message: 'Stock transfer created: {{analyze-stock.recommended_qty}} units of {{article_ref}} from {{source_plant}} to {{target_plant}}. Transfer order: {{create-transfer.transfer_order_id}}.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://inditex.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query-stock-levels
        method: POST
  - type: http
    namespace: sap
    baseUri: https://inditex-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: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.teams_token
    resources:
    - name: messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → inventory-redistribution-orchestrator.yml

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
Open in Framework → View in Fleet → brand-style-guide-pipeline.yml

Retrieves engagement metrics for LEGO Instagram posts.

naftiko: '0.5'
info:
  label: Instagram Brand Metrics Lookup
  description: Retrieves engagement metrics for LEGO Instagram posts.
  tags:
  - social-media
  - instagram
capability:
  exposes:
  - type: mcp
    namespace: instagram-brand
    port: 8080
    tools:
    - name: get-data
      description: Retrieves engagement metrics for LEGO 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
Open in Framework → View in Fleet → instagram-brand-metrics-lookup.yml

When manufacturing equipment requires maintenance, creates a work order in SAP, assigns a technician via ServiceNow, and notifies the plant manager via Microsoft Teams.

naftiko: '0.5'
info:
  label: Plant Maintenance Work Order Pipeline
  description: When manufacturing equipment requires maintenance, creates a work order in SAP, assigns a technician via ServiceNow, and notifies the plant manager via Microsoft Teams.
  tags:
  - manufacturing
  - maintenance
  - sap
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: plant-maintenance
    port: 8080
    tools:
    - name: create-maintenance-order
      description: Given equipment details, create a work order, assign a technician, and notify management.
      inputParameters:
      - name: equipment_id
        in: body
        type: string
        description: The SAP equipment identifier.
      - name: plant_code
        in: body
        type: string
        description: The plant code.
      - name: issue_description
        in: body
        type: string
        description: Description of the maintenance issue.
      - name: priority
        in: body
        type: string
        description: Priority level.
      steps:
      - name: create-order
        type: call
        call: sap.create-maintenance-order
        with:
          equipment_id: '{{equipment_id}}'
          plant: '{{plant_code}}'
          description: '{{issue_description}}'
          priority: '{{priority}}'
      - name: assign-technician
        type: call
        call: servicenow.create-work-order
        with:
          short_description: 'Equipment maintenance: {{equipment_id}}'
          priority: '{{priority}}'
          description: '{{issue_description}}. SAP order: {{create-order.order_number}}.'
      - name: notify-manager
        type: call
        call: msteams.send-message
        with:
          channel_id: plant-maintenance
          text: 'Maintenance order for {{equipment_id}} at {{plant_code}}. Priority: {{priority}}. SAP: {{create-order.order_number}}. ServiceNow: {{assign-technician.number}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://lego-s4.sap.com/sap/opu/odata/sap/PM_ORDER_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: maintenance-orders
      path: /MaintenanceOrders
      operations:
      - name: create-maintenance-order
        method: POST
  - 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: 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: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → plant-maintenance-work-order-pipeline.yml

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
Open in Framework → View in Fleet → new-set-launch-pipeline.yml

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
Open in Framework → View in Fleet → facebook-ad-campaign-pipeline.yml

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
Open in Framework → View in Fleet → packaging-review-pipeline.yml

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
Open in Framework → View in Fleet → new-hire-provisioning-pipeline.yml

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
Open in Framework → View in Fleet → google-analytics-website-metrics.yml

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
Open in Framework → View in Fleet → e-commerce-cart-recovery-pipeline.yml

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
Open in Framework → View in Fleet → airtable-set-roadmap-lookup.yml

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.
      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
  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
Open in Framework → View in Fleet → sap-concur-travel-expense-lookup.yml

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
Open in Framework → View in Fleet → new-set-retail-distribution-pipeline.yml

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
Open in Framework → View in Fleet → digital-experience-release-pipeline.yml

Analyzes market data in Snowflake, generates Confluence insights, and shares via Microsoft Teams.

naftiko: '0.5'
info:
  label: Competitive Intelligence Pipeline
  description: Analyzes market data in Snowflake, generates Confluence insights, and shares via Microsoft Teams.
  tags:
  - intelligence
  - snowflake
  - confluence
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: competitive-intelligence-pipeline
    port: 8080
    tools:
    - name: execute
      description: Analyzes market data in Snowflake, generates Confluence insights, and shares 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: snowflake.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: 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: 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
  - 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
Open in Framework → View in Fleet → competitive-intelligence-pipeline.yml

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
Open in Framework → View in Fleet → teradata-retail-data-query.yml

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
Open in Framework → View in Fleet → mailchimp-vip-newsletter-campaign.yml

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
Open in Framework → View in Fleet → licensing-agreement-approval-pipeline.yml

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
Open in Framework → View in Fleet → seasonal-promotion-pipeline.yml

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
Open in Framework → View in Fleet → bigcommerce-product-listing-update.yml

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
Open in Framework → View in Fleet → snowflake-set-sales-query.yml

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
Open in Framework → View in Fleet → zendesk-customer-support-ticket-lookup.yml

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
Open in Framework → View in Fleet → box-legal-document-archive.yml

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
Open in Framework → View in Fleet → mold-maintenance-scheduling-pipeline.yml

Collects shelf data, stores in Snowflake, updates Tableau, and notifies sales via Microsoft Teams.

naftiko: '0.5'
info:
  label: Retail Shelf Analytics Pipeline
  description: Collects shelf data, stores in Snowflake, updates Tableau, and notifies sales via Microsoft Teams.
  tags:
  - retail
  - snowflake
  - tableau
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: retail-shelf-analytics-pipeline
    port: 8080
    tools:
    - name: execute
      description: Collects shelf data, stores in Snowflake, updates Tableau, 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: snowflake.execute-step-1
        with:
          input: '{{input_id}}'
          context: '{{context}}'
      - name: step-2
        type: call
        call: tableau.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: 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: 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
Open in Framework → View in Fleet → retail-shelf-analytics-pipeline.yml

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
Open in Framework → View in Fleet → tableau-retail-performance-dashboard.yml

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
Open in Framework → View in Fleet → minifigure-collector-program-pipeline.yml

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
Open in Framework → View in Fleet → warehouse-optimization-pipeline.yml

Retrieves current inventory levels at a distribution center from SAP.

naftiko: '0.5'
info:
  label: Distribution Center Inventory Lookup
  description: Retrieves current inventory levels at a distribution center from SAP.
  tags:
  - manufacturing
  - inventory
  - sap
capability:
  exposes:
  - type: mcp
    namespace: inventory
    port: 8080
    tools:
    - name: get-dc-inventory
      description: Look up inventory 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 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
  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: inventory
      path: /MaterialStock(Material='{{material}}',Plant='{{plant}}')
      inputParameters:
      - name: material
        in: path
      - name: plant
        in: path
      operations:
      - name: get-inventory
        method: GET
Open in Framework → View in Fleet → distribution-center-inventory-lookup.yml

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
Open in Framework → View in Fleet → asana-design-project-lookup.yml

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
Open in Framework → View in Fleet → figma-set-packaging-lookup.yml

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://lego.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
Open in Framework → View in Fleet → dynatrace-application-health-check.yml

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
Open in Framework → View in Fleet → manufacturing-mold-quality-pipeline.yml

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
Open in Framework → View in Fleet → patent-coordination-pipeline.yml

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
Open in Framework → View in Fleet → adult-fan-community-newsletter-pipeline.yml

When a retail partner places a bulk order in Salesforce, creates a sales order in SAP, checks warehouse availability, and confirms with the partner via Microsoft Teams.

naftiko: '0.5'
info:
  label: Retail Partner Order Pipeline
  description: When a retail partner places a bulk order in Salesforce, creates a sales order in SAP, checks warehouse availability, and confirms with the partner via Microsoft Teams.
  tags:
  - retail
  - supply-chain
  - salesforce
  - sap
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: retail-orders
    port: 8080
    tools:
    - name: process-retail-order
      description: Given a retail order, create SAP sales order, check availability, and confirm.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The Salesforce order record ID.
      - name: partner_email
        in: body
        type: string
        description: The retail partner contact email.
      steps:
      - name: get-order
        type: call
        call: salesforce.get-order
        with:
          order_id: '{{order_id}}'
      - name: create-sales-order
        type: call
        call: sap.create-sales-order
        with:
          partner_id: '{{get-order.account_id}}'
          items: '{{get-order.line_items}}'
      - name: check-availability
        type: call
        call: sap.check-atp
        with:
          sales_order: '{{create-sales-order.order_number}}'
      - name: confirm-partner
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{partner_email}}'
          text: 'Order {{order_id}} confirmed. SAP order: {{create-sales-order.order_number}}. Estimated delivery: {{check-availability.confirmed_date}}.'
  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
  - type: http
    namespace: sap
    baseUri: https://lego-s4.sap.com/sap/opu/odata/sap/SD_SALES_ORDER_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: sales-orders
      path: /A_SalesOrder
      operations:
      - name: create-sales-order
        method: POST
    - name: atp
      path: /A_SalesOrder('{{sales_order}}')/ATP
      inputParameters:
      - name: sales_order
        in: path
      operations:
      - name: check-atp
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → retail-partner-order-pipeline.yml

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
Open in Framework → View in Fleet → brick-quality-control-pipeline.yml

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
Open in Framework → View in Fleet → sap-production-order-lookup.yml

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
Open in Framework → View in Fleet → google-drive-design-asset-search.yml

Creates campaign in HubSpot, generates contract via DocuSign, tracks in Asana, and monitors Instagram.

naftiko: '0.5'
info:
  label: Influencer Collaboration Pipeline
  description: Creates campaign in HubSpot, generates contract via DocuSign, tracks in Asana, and monitors Instagram.
  tags:
  - marketing
  - hubspot
  - docusign
  - asana
  - instagram
capability:
  exposes:
  - type: mcp
    namespace: influencer-collaboration-pipeline
    port: 8080
    tools:
    - name: execute
      description: Creates campaign in HubSpot, generates contract via DocuSign, tracks in Asana, and monitors 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: 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
Open in Framework → View in Fleet → influencer-collaboration-pipeline.yml

Launches a marketing campaign across Instagram and Facebook, tracks performance in Google Analytics, and shares results with the marketing team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Social Media Campaign Pipeline
  description: Launches a marketing campaign across Instagram and Facebook, tracks performance in Google Analytics, and shares results with the marketing team via Microsoft Teams.
  tags:
  - marketing
  - social-media
  - instagram
  - facebook
  - google-analytics
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: social-campaigns
    port: 8080
    tools:
    - name: launch-social-campaign
      description: Given campaign details, publish to social platforms, set up tracking, and report results.
      inputParameters:
      - name: campaign_name
        in: body
        type: string
        description: The campaign name.
      - name: theme
        in: body
        type: string
        description: The LEGO theme for the campaign.
      - name: content_text
        in: body
        type: string
        description: The post content.
      steps:
      - name: post-instagram
        type: call
        call: instagram.create-post
        with:
          caption: '{{content_text}}'
          campaign: '{{campaign_name}}'
      - name: post-facebook
        type: call
        call: facebook.create-post
        with:
          message: '{{content_text}}'
          campaign: '{{campaign_name}}'
      - name: get-metrics
        type: call
        call: google-analytics.get-report
        with:
          property_id: lego-dotcom
          campaign: '{{campaign_name}}'
      - name: share-results
        type: call
        call: msteams.send-message
        with:
          channel_id: marketing
          text: 'Social campaign {{campaign_name}} ({{theme}}) launched. Instagram post: {{post-instagram.post_id}}. Facebook post: {{post-facebook.post_id}}.'
  consumes:
  - 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: facebook
    baseUri: https://graph.facebook.com/v17.0
    authentication:
      type: bearer
      token: $secrets.meta_token
    resources:
    - name: posts
      path: /{{page_id}}/feed
      operations:
      - name: create-post
        method: POST
  - 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: 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
Open in Framework → View in Fleet → social-media-campaign-pipeline.yml

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
Open in Framework → View in Fleet → e-commerce-fulfillment-pipeline.yml

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
Open in Framework → View in Fleet → consumer-feedback-pipeline.yml

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
Open in Framework → View in Fleet → jira-design-task-lookup.yml

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
Open in Framework → View in Fleet → qlik-sense-inventory-analytics.yml

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
Open in Framework → View in Fleet → theme-park-integration-pipeline.yml

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
Open in Framework → View in Fleet → docusign-licensing-agreement-lookup.yml

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
Open in Framework → View in Fleet → licensing-partner-onboarding-pipeline.yml

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
Open in Framework → View in Fleet → manufacturing-efficiency-pipeline.yml

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
Open in Framework → View in Fleet → vip-collector-engagement-pipeline.yml

Sends a message to a Slack channel.

naftiko: '0.5'
info:
  label: Slack Channel Message Sender
  description: Sends a message to a Slack channel.
  tags:
  - communications
  - slack
capability:
  exposes:
  - type: mcp
    namespace: slack-msg
    port: 8080
    tools:
    - name: get-data
      description: Sends a message to a Slack channel.
      inputParameters:
      - name: query_id
        in: body
        type: string
        description: The lookup identifier.
      call: slack-msg.get-data
      with:
        id: '{{query_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
  consumes:
  - type: http
    namespace: slack-msg
    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
Open in Framework → View in Fleet → slack-channel-message-sender.yml

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
Open in Framework → View in Fleet → digital-marketing-pipeline.yml

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
Open in Framework → View in Fleet → power-bi-sales-kpi-report.yml

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
Open in Framework → View in Fleet → building-instruction-publishing-pipeline.yml

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
Open in Framework → View in Fleet → youtube-brand-content-publishing-pipeline.yml

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
Open in Framework → View in Fleet → fan-community-engagement-pipeline.yml

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
Open in Framework → View in Fleet → e-commerce-order-status-lookup.yml

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
Open in Framework → View in Fleet → salesforce-retailer-account-lookup.yml

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
Open in Framework → View in Fleet → linkedin-corporate-content-post.yml

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
Open in Framework → View in Fleet → licensing-partner-revenue-pipeline.yml

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
Open in Framework → View in Fleet → vendor-invoice-pipeline.yml

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
Open in Framework → View in Fleet → tableau-retail-analytics-lookup.yml

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
Open in Framework → View in Fleet → sap-material-inventory-lookup.yml

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
Open in Framework → View in Fleet → youtube-content-pipeline.yml

When a Datadog monitor fires for a store infrastructure resource, creates a ServiceNow incident and pages the on-call store operations engineer.

naftiko: '0.5'
info:
  label: Datadog Store Infrastructure Alert
  description: When a Datadog monitor fires for a store infrastructure resource, creates a ServiceNow incident and pages the on-call store operations engineer.
  tags:
  - itsm
  - observability
  - datadog
  - servicenow
  - incident-response
capability:
  exposes:
  - type: mcp
    namespace: store-ops
    port: 8080
    tools:
    - name: handle-store-infrastructure-alert
      description: Given a Datadog alert for a store infrastructure issue, create a ServiceNow incident with store details and alert the store operations Teams channel.
      inputParameters:
      - name: monitor_id
        type: string
        description: Datadog monitor ID that triggered the alert.
      - name: store_number
        type: string
        description: Lowe's store number affected by the alert.
      - name: severity
        type: string
        description: 'Alert severity: critical, warning, or info.'
      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: Store {{store_number}} infrastructure alert — {{severity}}
          urgency: '1'
          impact: '1'
          description: 'Monitor {{monitor_id}}: {{get-monitor.message}}'
      - name: notify-ops
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: store-ops-alerts
          text: 'Store {{store_number}} alert ({{severity}}): {{get-monitor.name}} | ServiceNow: {{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://lowes.service-now.com/api/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/store-ops/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → datadog-store-infrastructure-alert.yml

Reconciles supplier payments by matching SAP invoices against Oracle payment records and posting discrepancies to Snowflake for audit review.

naftiko: '0.5'
info:
  label: Supplier Payment Reconciliation
  description: Reconciles supplier payments by matching SAP invoices against Oracle payment records and posting discrepancies to Snowflake for audit review.
  tags:
  - procurement
  - sap
  - oracle
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: finance-ops
    port: 8080
    tools:
    - name: reconcile-supplier-payments
      description: Given a vendor number and period, match SAP invoices against Oracle payments and log discrepancies in Snowflake.
      inputParameters:
      - name: vendor_number
        type: string
        description: SAP vendor number.
      - name: period
        type: string
        description: Fiscal period (e.g., 2026-03).
      steps:
      - name: get-invoices
        type: call
        call: sap.get-invoices
        with:
          vendor: '{{vendor_number}}'
          period: '{{period}}'
      - name: get-payments
        type: call
        call: oracle.get-payments
        with:
          supplier_id: '{{vendor_number}}'
          period: '{{period}}'
      - name: log-discrepancies
        type: call
        call: snowflake.run-query
        with:
          statement: INSERT INTO PAYMENT_RECONCILIATION SELECT * FROM TABLE(RESULT_SCAN('{{get-invoices.query_id}}')) EXCEPT SELECT * FROM TABLE(RESULT_SCAN('{{get-payments.query_id}}'))
  consumes:
  - type: http
    namespace: sap
    baseUri: https://lowes-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
      operations:
      - name: get-invoices
        method: GET
  - type: http
    namespace: oracle
    baseUri: https://lowes-oracle.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: basic
      username: $secrets.oracle_user
      password: $secrets.oracle_password
    resources:
    - name: payments
      path: /payablesPayments
      operations:
      - name: get-payments
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://lowes.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → supplier-payment-reconciliation.yml

Tracks store associate certifications by pulling training records from Workday, checking expiration dates, and creating ServiceNow tasks for renewals due within 30 days.

naftiko: '0.5'
info:
  label: Associate Certification Tracker
  description: Tracks store associate certifications by pulling training records from Workday, checking expiration dates, and creating ServiceNow tasks for renewals due within 30 days.
  tags:
  - store-ops
  - workday
  - servicenow
  - hr
capability:
  exposes:
  - type: mcp
    namespace: hr-ops
    port: 8080
    tools:
    - name: check-certification-renewals
      description: Given a store number, pull Workday training records, identify certifications expiring within 30 days, and create ServiceNow renewal tasks.
      inputParameters:
      - name: store_number
        type: string
        description: Store number to check.
      steps:
      - name: get-certifications
        type: call
        call: workday.get-certifications
        with:
          store: '{{store_number}}'
          expiring_within_days: '30'
      - name: create-renewal-tasks
        type: call
        call: servicenow.create-task
        with:
          short_description: Certification renewal required — Store {{store_number}}
          description: '{{get-certifications.count}} certifications expiring within 30 days'
          assignment_group: Store_Training
      - name: notify-manager
        type: call
        call: msteams.send-message
        with:
          channel_id: store-{{store_number}}-ops
          text: '{{get-certifications.count}} associate certifications expiring within 30 days at Store {{store_number}}. Task: {{create-renewal-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: certifications
      path: /lowes/certifications
      operations:
      - name: get-certifications
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://lowes.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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → associate-certification-tracker.yml

Queries AWS Cost Explorer for account-level spend anomalies and creates a Jira cost-tracking task with a Datadog event when thresholds are breached.

naftiko: '0.5'
info:
  label: Cloud Cost Anomaly Alert
  description: Queries AWS Cost Explorer for account-level spend anomalies and creates a Jira cost-tracking task with a Datadog event when thresholds are breached.
  tags:
  - cloud
  - finops
  - aws
  - datadog
  - jira
capability:
  exposes:
  - type: mcp
    namespace: cloud-finops
    port: 8080
    tools:
    - name: handle-cloud-cost-anomaly
      description: Given an AWS account ID and spend threshold, detect anomalies via Cost Explorer, create a Jira ticket, and post a Datadog warning event for tracking. Use when AWS budget alerts fire.
      inputParameters:
      - name: account_id
        type: string
        description: AWS account ID to analyze for cost anomalies.
      - name: threshold_usd
        type: number
        description: Anomaly threshold in USD.
      - name: date_from
        type: string
        description: Start date for anomaly lookback 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: 'AWS cost anomaly detected: account {{account_id}}'
          description: '{{get-anomalies.summary}} — threshold {{threshold_usd}} USD exceeded'
      - 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://lowes.atlassian.net/rest/api/3
    authentication:
      type: 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
Open in Framework → View in Fleet → cloud-cost-anomaly-alert.yml

Builds a customer 360 view by pulling Salesforce account data, BigCommerce order history, and Google Analytics engagement metrics into a unified Snowflake profile.

naftiko: '0.5'
info:
  label: Omnichannel Customer 360 Pipeline
  description: Builds a customer 360 view by pulling Salesforce account data, BigCommerce order history, and Google Analytics engagement metrics into a unified Snowflake profile.
  tags:
  - e-commerce
  - salesforce
  - bigcommerce
  - google-analytics
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: customer-analytics
    port: 8080
    tools:
    - name: build-customer-360
      description: Given a customer email, pull Salesforce profile, BigCommerce order history, Google Analytics behavior, and merge into Snowflake.
      inputParameters:
      - name: customer_email
        type: string
        description: Customer email address.
      steps:
      - name: get-sf-profile
        type: call
        call: salesforce.get-contact-by-email
        with:
          email: '{{customer_email}}'
      - name: get-orders
        type: call
        call: bigcommerce.get-customer-orders
        with:
          email: '{{customer_email}}'
      - name: get-behavior
        type: call
        call: ga.get-user-report
        with:
          user_id: '{{customer_email}}'
      - name: merge-profile
        type: call
        call: snowflake.run-query
        with:
          statement: MERGE INTO CUSTOMER_360 USING (SELECT '{{customer_email}}' as email, '{{get-sf-profile.account_id}}' as sf_id, {{get-orders.total_orders}} as order_count, {{get-behavior.sessions}} as web_sessions)
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://lowes.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: contacts
      path: /parameterizedSearch/?q={{email}}&sobject=Contact
      operations:
      - name: get-contact-by-email
        method: GET
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/lowes
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: customers
      path: /v3/customers/orders
      operations:
      - name: get-customer-orders
        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/lowes:runReport
      operations:
      - name: get-user-report
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://lowes.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → omnichannel-customer-360-pipeline.yml

Coordinates appliance delivery by confirming the order in Salesforce, verifying warehouse stock in Oracle, and scheduling the delivery route via ServiceNow.

naftiko: '0.5'
info:
  label: Appliance Delivery Coordination
  description: Coordinates appliance delivery by confirming the order in Salesforce, verifying warehouse stock in Oracle, and scheduling the delivery route via ServiceNow.
  tags:
  - e-commerce
  - salesforce
  - oracle
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: delivery-ops
    port: 8080
    tools:
    - name: coordinate-appliance-delivery
      description: Given an order ID, confirm Salesforce order details, verify Oracle warehouse availability, and create a ServiceNow delivery work order.
      inputParameters:
      - name: order_id
        type: string
        description: Salesforce order ID.
      - name: delivery_date
        type: string
        description: Requested delivery date in YYYY-MM-DD format.
      steps:
      - name: get-order
        type: call
        call: salesforce.get-order
        with:
          order_id: '{{order_id}}'
      - name: verify-stock
        type: call
        call: oracle.get-onhand
        with:
          item_number: '{{get-order.product_sku}}'
          org_code: '{{get-order.fulfillment_center}}'
      - name: create-delivery-order
        type: call
        call: servicenow.create-work-order
        with:
          short_description: 'Appliance delivery: {{get-order.product_name}} to {{get-order.shipping_address}}'
          scheduled_date: '{{delivery_date}}'
          assignment_group: Delivery_Operations
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://lowes.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
  - type: http
    namespace: oracle
    baseUri: https://lowes-oracle.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: basic
      username: $secrets.oracle_user
      password: $secrets.oracle_password
    resources:
    - name: inventory
      path: /inventoryBalances
      operations:
      - name: get-onhand
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://lowes.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
Open in Framework → View in Fleet → appliance-delivery-coordination.yml

Monitors store energy consumption by pulling utility data from Snowflake, comparing against targets in SAP, and creating ServiceNow alerts for anomalies.

naftiko: '0.5'
info:
  label: Energy Management Monitoring Pipeline
  description: Monitors store energy consumption by pulling utility data from Snowflake, comparing against targets in SAP, and creating ServiceNow alerts for anomalies.
  tags:
  - store-ops
  - snowflake
  - sap
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: facilities
    port: 8080
    tools:
    - name: monitor-energy-consumption
      description: Given a store number and date, pull Snowflake energy data, compare SAP targets, and create ServiceNow alerts for overages.
      inputParameters:
      - name: store_number
        type: string
        description: Store number.
      - name: date
        type: string
        description: Date in YYYY-MM-DD format.
      steps:
      - name: get-usage
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT kwh_consumed, cost, peak_demand FROM ENERGY_USAGE WHERE store='{{store_number}}' AND date='{{date}}'
      - name: get-target
        type: call
        call: sap.get-cost-center
        with:
          plant: '{{store_number}}'
          account: energy_budget
      - name: create-alert
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Energy anomaly: Store {{store_number}} — {{date}}'
          category: facilities
          assignment_group: Energy_Management
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://lowes.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://lowes-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
      operations:
      - name: get-cost-center
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://lowes.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → energy-management-monitoring-pipeline.yml

Manages curbside pickup by monitoring BigCommerce order status, sending customer notifications via HubSpot, and logging fulfillment metrics in Snowflake.

naftiko: '0.5'
info:
  label: Curbside Pickup Notification Pipeline
  description: Manages curbside pickup by monitoring BigCommerce order status, sending customer notifications via HubSpot, and logging fulfillment metrics in Snowflake.
  tags:
  - e-commerce
  - bigcommerce
  - hubspot
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: ecommerce-ops
    port: 8080
    tools:
    - name: notify-curbside-pickup
      description: Given an order number, check BigCommerce fulfillment status, send HubSpot notification to customer, and log in Snowflake.
      inputParameters:
      - name: order_number
        type: string
        description: BigCommerce order number.
      - name: store_number
        type: string
        description: Pickup store number.
      steps:
      - name: get-order
        type: call
        call: bigcommerce.get-order
        with:
          order_number: '{{order_number}}'
      - name: send-notification
        type: call
        call: hubspot.send-email
        with:
          to: '{{get-order.billing_address.email}}'
          template_id: curbside-ready
      - name: log-fulfillment
        type: call
        call: snowflake.run-query
        with:
          statement: INSERT INTO CURBSIDE_FULFILLMENT VALUES ('{{order_number}}', '{{store_number}}', CURRENT_TIMESTAMP())
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/lowes
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: orders
      path: /v2/orders/{{order_number}}
      inputParameters:
      - name: order_number
        in: path
      operations:
      - name: get-order
        method: GET
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: emails
      path: /marketing/v3/transactional/single-email/send
      operations:
      - name: send-email
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://lowes.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → curbside-pickup-notification-pipeline.yml

Optimizes store labor scheduling by pulling traffic forecasts from Google Analytics, sales projections from Snowflake, and updating shift plans in Workday.

naftiko: '0.5'
info:
  label: Store Labor Forecast Optimizer
  description: Optimizes store labor scheduling by pulling traffic forecasts from Google Analytics, sales projections from Snowflake, and updating shift plans in Workday.
  tags:
  - store-ops
  - google-analytics
  - snowflake
  - workday
capability:
  exposes:
  - type: mcp
    namespace: workforce
    port: 8080
    tools:
    - name: optimize-labor-schedule
      description: Given a store and week, pull Google Analytics traffic forecast, Snowflake sales projections, and update Workday shift schedules.
      inputParameters:
      - name: store_number
        type: string
        description: Store number.
      - name: week_start
        type: string
        description: Week start date in YYYY-MM-DD format.
      steps:
      - name: get-traffic-forecast
        type: call
        call: ga.get-report
        with:
          store: '{{store_number}}'
          start_date: '{{week_start}}'
      - name: get-sales-projection
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT day_of_week, projected_sales, projected_transactions FROM LABOR_FORECAST WHERE store='{{store_number}}' AND week_start='{{week_start}}'
      - name: update-schedule
        type: call
        call: workday.update-schedule
        with:
          store: '{{store_number}}'
          week: '{{week_start}}'
          traffic_data: '{{get-traffic-forecast.sessions}}'
          sales_data: '{{get-sales-projection.results}}'
  consumes:
  - type: http
    namespace: ga
    baseUri: https://analyticsdata.googleapis.com/v1beta
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: reports
      path: /properties/lowes:runReport
      operations:
      - name: get-report
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://lowes.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: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: schedules
      path: /lowes/schedules
      operations:
      - name: update-schedule
        method: PUT
Open in Framework → View in Fleet → store-labor-forecast-optimizer.yml

Analyzes in-store aisle traffic by pulling sensor data from Snowflake, correlating with sales data in SAP, and generating insights in Confluence.

naftiko: '0.5'
info:
  label: Aisle Traffic Analysis Pipeline
  description: Analyzes in-store aisle traffic by pulling sensor data from Snowflake, correlating with sales data in SAP, and generating insights in Confluence.
  tags:
  - store-ops
  - snowflake
  - sap
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: store-analytics
    port: 8080
    tools:
    - name: analyze-aisle-traffic
      description: Given a store and date range, pull Snowflake traffic sensor data, correlate SAP aisle sales, and publish Confluence insights.
      inputParameters:
      - name: store_number
        type: string
        description: Store number.
      - name: start_date
        type: string
        description: Start date in YYYY-MM-DD format.
      - name: end_date
        type: string
        description: End date in YYYY-MM-DD format.
      steps:
      - name: get-traffic-data
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT aisle, avg_visitors, peak_hour FROM AISLE_TRAFFIC WHERE store='{{store_number}}' AND date BETWEEN '{{start_date}}' AND '{{end_date}}'
      - name: get-aisle-sales
        type: call
        call: sap.get-sales-by-aisle
        with:
          plant: '{{store_number}}'
          start: '{{start_date}}'
          end: '{{end_date}}'
      - name: publish-insights
        type: call
        call: confluence.create-page
        with:
          space: STORE_ANALYTICS
          title: 'Aisle Traffic: Store {{store_number}} ({{start_date}} to {{end_date}})'
          body: 'Top aisle: {{get-traffic-data.results[0].aisle}} with {{get-traffic-data.results[0].avg_visitors}} avg visitors.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://lowes.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://lowes-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
      path: /A_SalesOrder
      operations:
      - name: get-sales-by-aisle
        method: GET
  - type: http
    namespace: confluence
    baseUri: https://lowes.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: content
      path: /content
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → aisle-traffic-analysis-pipeline.yml

Responds to security camera alerts by creating a ServiceNow security incident, pulling Splunk access logs, and notifying store asset protection via Teams.

naftiko: '0.5'
info:
  label: Store Security Camera Alert Response
  description: Responds to security camera alerts by creating a ServiceNow security incident, pulling Splunk access logs, and notifying store asset protection via Teams.
  tags:
  - security
  - servicenow
  - splunk
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: security-ops
    port: 8080
    tools:
    - name: handle-camera-alert
      description: Given a store number and camera zone, create a ServiceNow security incident, pull Splunk access logs, and notify asset protection.
      inputParameters:
      - name: store_number
        type: string
        description: Store number.
      - name: camera_zone
        type: string
        description: Camera zone identifier.
      - name: alert_type
        type: string
        description: Alert type (motion, tamper, offline).
      steps:
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Camera alert: {{alert_type}} — Store {{store_number}} Zone {{camera_zone}}'
          category: security
          priority: '2'
          assignment_group: Asset_Protection
      - name: get-access-logs
        type: call
        call: splunk.run-search
        with:
          query: index=security store={{store_number}} zone={{camera_zone}}
          time_range: -1h
      - name: notify-ap
        type: call
        call: msteams.send-message
        with:
          channel_id: asset-protection-alerts
          text: 'Camera {{alert_type}} alert at Store {{store_number}} Zone {{camera_zone}}. {{get-access-logs.event_count}} related security events. Ticket: {{create-incident.number}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://lowes.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: splunk
    baseUri: https://lowes-splunk.splunkcloud.com:8089/services
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - name: searches
      path: /search/jobs
      operations:
      - name: run-search
        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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → store-security-camera-alert-response.yml

Retrieves a document from Box by file ID, returning file metadata including name, size, and shared link.

naftiko: '0.5'
info:
  label: Box Document Retrieval
  description: Retrieves a document from Box by file ID, returning file metadata including name, size, and shared link.
  tags:
  - document-management
  - box
  - store-ops
capability:
  exposes:
  - type: mcp
    namespace: documents
    port: 8080
    tools:
    - name: get-document
      description: Retrieve a Box file by ID. Returns file name, size, last modified date, and download URL.
      inputParameters:
      - name: file_id
        type: string
        description: Box file ID.
      call: box.get-file
      with:
        file_id: '{{file_id}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.name
      - name: size
        type: integer
        mapping: $.size
      - name: modified_at
        type: string
        mapping: $.modified_at
  consumes:
  - type: http
    namespace: box
    baseUri: https://api.box.com/2.0
    authentication:
      type: bearer
      token: $secrets.box_token
    resources:
    - name: files
      path: /files/{{file_id}}
      inputParameters:
      - name: file_id
        in: path
      operations:
      - name: get-file
        method: GET
Open in Framework → View in Fleet → box-document-retrieval.yml

Retrieves headcount by department and cost center from Workday for payroll planning and workforce analytics.

naftiko: '0.5'
info:
  label: Payroll Headcount Snapshot
  description: Retrieves headcount by department and cost center from Workday for payroll planning and workforce analytics.
  tags:
  - hr
  - finance
  - payroll
  - workday
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: hr-finance
    port: 8080
    tools:
    - name: get-headcount-by-department
      description: Returns active employees grouped by department and cost center. Use for workforce planning, payroll cost analysis, and headcount reporting.
      call: workday.headcount-export
      outputParameters:
      - name: employees
        type: array
        mapping: $.data
        items:
        - name: employee_id
          type: string
          mapping: $.id
        - name: full_name
          type: string
          mapping: $.fullName
        - 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-export
      path: /lowes/workers
      operations:
      - name: headcount-export
        method: GET
Open in Framework → View in Fleet → payroll-headcount-snapshot.yml

Activates the emergency contact tree by pulling store associate lists from Workday, sending mass Teams notifications, and creating a ServiceNow incident record.

naftiko: '0.5'
info:
  label: Store Emergency Contact Tree Activation
  description: Activates the emergency contact tree by pulling store associate lists from Workday, sending mass Teams notifications, and creating a ServiceNow incident record.
  tags:
  - store-ops
  - workday
  - microsoft-teams
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: emergency-ops
    port: 8080
    tools:
    - name: activate-contact-tree
      description: Given a store number and emergency type, pull Workday associate list, send Teams notifications, and create ServiceNow record.
      inputParameters:
      - name: store_number
        type: string
        description: Store number.
      - name: emergency_type
        type: string
        description: Emergency type (fire, medical, security, weather).
      - name: message
        type: string
        description: Emergency notification message.
      steps:
      - name: get-associates
        type: call
        call: workday.get-store-roster
        with:
          store: '{{store_number}}'
      - name: send-notifications
        type: call
        call: msteams.send-message
        with:
          channel_id: store-{{store_number}}-emergency
          text: 'EMERGENCY ({{emergency_type}}): {{message}}. All associates at Store {{store_number}} please acknowledge.'
      - name: create-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Emergency: {{emergency_type}} — Store {{store_number}}'
          category: emergency
          priority: '1'
          assignment_group: Store_Management
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: rosters
      path: /lowes/workers
      operations:
      - name: get-store-roster
        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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://lowes.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → store-emergency-contact-tree-activation.yml

Monitors social media engagement by pulling HubSpot campaign data, Google Analytics referral traffic, and storing engagement metrics in Snowflake for trend analysis.

naftiko: '0.5'
info:
  label: Social Media Engagement Pipeline
  description: Monitors social media engagement by pulling HubSpot campaign data, Google Analytics referral traffic, and storing engagement metrics in Snowflake for trend analysis.
  tags:
  - marketing
  - hubspot
  - google-analytics
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: marketing-ops
    port: 8080
    tools:
    - name: track-social-engagement
      description: Given a campaign ID, pull HubSpot social metrics, Google Analytics referral data, and persist in Snowflake.
      inputParameters:
      - name: campaign_id
        type: string
        description: Marketing campaign ID.
      - name: platform
        type: string
        description: Social platform (facebook, instagram, twitter).
      steps:
      - name: get-campaign-data
        type: call
        call: hubspot.get-campaign-metrics
        with:
          campaign_id: '{{campaign_id}}'
      - name: get-referrals
        type: call
        call: ga.get-report
        with:
          source: '{{platform}}'
          campaign: '{{campaign_id}}'
      - name: store-metrics
        type: call
        call: snowflake.run-query
        with:
          statement: INSERT INTO SOCIAL_ENGAGEMENT VALUES ('{{campaign_id}}', '{{platform}}', {{get-campaign-data.impressions}}, {{get-referrals.sessions}}, CURRENT_TIMESTAMP())
  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-metrics
        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/lowes:runReport
      operations:
      - name: get-report
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://lowes.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → social-media-engagement-pipeline.yml

Runs a saved search in Splunk to retrieve recent security events filtered by severity level.

naftiko: '0.5'
info:
  label: Splunk Security Event Search
  description: Runs a saved search in Splunk to retrieve recent security events filtered by severity level.
  tags:
  - security
  - splunk
  - infrastructure
capability:
  exposes:
  - type: mcp
    namespace: security
    port: 8080
    tools:
    - name: search-security-events
      description: Execute a Splunk saved search for security events by severity. Returns event count, top source IPs, and event types.
      inputParameters:
      - name: severity
        type: string
        description: Severity level filter (critical, high, medium, low).
      - name: time_range
        type: string
        description: Time range for the search (e.g., -24h, -7d).
      call: splunk.run-search
      with:
        severity: '{{severity}}'
        time_range: '{{time_range}}'
      outputParameters:
      - name: event_count
        type: integer
        mapping: $.results.count
      - name: top_sources
        type: array
        mapping: $.results.top_sources
  consumes:
  - type: http
    namespace: splunk
    baseUri: https://lowes-splunk.splunkcloud.com:8089/services
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - name: searches
      path: /search/jobs
      operations:
      - name: run-search
        method: POST
Open in Framework → View in Fleet → splunk-security-event-search.yml

Initiates a shrinkage investigation by pulling loss data from Snowflake, creating a ServiceNow case, and uploading evidence documents to Box.

naftiko: '0.5'
info:
  label: Store Shrinkage Investigation Workflow
  description: Initiates a shrinkage investigation by pulling loss data from Snowflake, creating a ServiceNow case, and uploading evidence documents to Box.
  tags:
  - store-ops
  - snowflake
  - servicenow
  - box
capability:
  exposes:
  - type: mcp
    namespace: loss-prevention
    port: 8080
    tools:
    - name: open-shrinkage-investigation
      description: Given a store number and department, pull Snowflake loss metrics, create a ServiceNow investigation case, and prepare a Box evidence folder.
      inputParameters:
      - name: store_number
        type: string
        description: Store number.
      - name: department
        type: string
        description: Department with elevated shrinkage.
      - name: period
        type: string
        description: Reporting period (e.g., 2026-Q1).
      steps:
      - name: get-loss-data
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT category, total_loss, shrink_rate FROM SHRINKAGE_METRICS WHERE store='{{store_number}}' AND dept='{{department}}' AND period='{{period}}'
      - name: create-case
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Shrinkage investigation: Store {{store_number}} — {{department}}'
          category: loss_prevention
          assignment_group: Asset_Protection
      - name: create-folder
        type: call
        call: box.create-folder
        with:
          name: Investigation_{{store_number}}_{{department}}_{{period}}
          parent_id: shrinkage_investigations
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://lowes.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://lowes.service-now.com/api/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://api.box.com/2.0
    authentication:
      type: bearer
      token: $secrets.box_token
    resources:
    - name: folders
      path: /folders
      operations:
      - name: create-folder
        method: POST
Open in Framework → View in Fleet → store-shrinkage-investigation-workflow.yml

Detects potential gift card fraud by analyzing transaction patterns in Splunk, creating a ServiceNow investigation case, and freezing the card via the payment gateway.

naftiko: '0.5'
info:
  label: Gift Card Fraud Detection Workflow
  description: Detects potential gift card fraud by analyzing transaction patterns in Splunk, creating a ServiceNow investigation case, and freezing the card via the payment gateway.
  tags:
  - security
  - splunk
  - servicenow
  - e-commerce
capability:
  exposes:
  - type: mcp
    namespace: fraud-ops
    port: 8080
    tools:
    - name: investigate-gift-card-fraud
      description: Given a gift card number, pull Splunk transaction patterns, create a ServiceNow fraud case, and freeze the card.
      inputParameters:
      - name: card_number
        type: string
        description: Gift card number (masked).
      - name: store_number
        type: string
        description: Store where suspicious activity detected.
      steps:
      - name: analyze-transactions
        type: call
        call: splunk.run-search
        with:
          query: index=pos gift_card={{card_number}} | stats count by transaction_type, amount
          time_range: -7d
      - name: create-case
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Gift card fraud alert: {{card_number}} — Store {{store_number}}'
          category: fraud
          priority: '1'
          assignment_group: Loss_Prevention
      - name: freeze-card
        type: call
        call: salesforce.update-gift-card
        with:
          card_id: '{{card_number}}'
          status: frozen
          reason: 'Fraud investigation: {{create-case.number}}'
  consumes:
  - type: http
    namespace: splunk
    baseUri: https://lowes-splunk.splunkcloud.com:8089/services
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - name: searches
      path: /search/jobs
      operations:
      - name: run-search
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://lowes.service-now.com/api/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://lowes.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: gift-cards
      path: /sobjects/GiftCard__c/{{card_id}}
      inputParameters:
      - name: card_id
        in: path
      operations:
      - name: update-gift-card
        method: PATCH
Open in Framework → View in Fleet → gift-card-fraud-detection-workflow.yml

Fetches the current error rate for a New Relic application by app ID, returning error percentage and throughput.

naftiko: '0.5'
info:
  label: New Relic Application Error Rate
  description: Fetches the current error rate for a New Relic application by app ID, returning error percentage and throughput.
  tags:
  - monitoring
  - new-relic
  - e-commerce
capability:
  exposes:
  - type: mcp
    namespace: monitoring
    port: 8080
    tools:
    - name: get-app-error-rate
      description: Retrieve the current error rate for a New Relic application. Returns error percentage and requests per minute.
      inputParameters:
      - name: app_id
        type: string
        description: New Relic application ID.
      call: newrelic.get-app-metrics
      with:
        app_id: '{{app_id}}'
      outputParameters:
      - name: error_rate
        type: number
        mapping: $.application.error_rate
      - name: throughput
        type: number
        mapping: $.application.throughput
  consumes:
  - type: http
    namespace: newrelic
    baseUri: https://api.newrelic.com/v2
    authentication:
      type: bearer
      token: $secrets.newrelic_api_key
    resources:
    - name: applications
      path: /applications/{{app_id}}.json
      inputParameters:
      - name: app_id
        in: path
      operations:
      - name: get-app-metrics
        method: GET
Open in Framework → View in Fleet → new-relic-application-error-rate.yml

Checks the health status of a monitored host in Dynatrace by host ID, returning availability and CPU metrics.

naftiko: '0.5'
info:
  label: Dynatrace Host Health Check
  description: Checks the health status of a monitored host in Dynatrace by host ID, returning availability and CPU metrics.
  tags:
  - monitoring
  - dynatrace
  - infrastructure
capability:
  exposes:
  - type: mcp
    namespace: monitoring
    port: 8080
    tools:
    - name: get-host-health
      description: Check Dynatrace host health by host ID. Returns availability state, CPU usage percentage, and memory usage.
      inputParameters:
      - name: host_id
        type: string
        description: Dynatrace host entity ID.
      call: dynatrace.get-host
      with:
        host_id: '{{host_id}}'
      outputParameters:
      - name: display_name
        type: string
        mapping: $.displayName
      - name: state
        type: string
        mapping: $.availabilityState
      - name: cpu_usage
        type: number
        mapping: $.cpuUsagePercent
  consumes:
  - type: http
    namespace: dynatrace
    baseUri: https://lowes.live.dynatrace.com/api/v2
    authentication:
      type: bearer
      token: $secrets.dynatrace_token
    resources:
    - name: hosts
      path: /entities/{{host_id}}
      inputParameters:
      - name: host_id
        in: path
      operations:
      - name: get-host
        method: GET
Open in Framework → View in Fleet → dynatrace-host-health-check.yml

When an associate separation is recorded in Workday, deactivates Okta access, disables the Microsoft 365 account, and notifies the store manager via Teams.

naftiko: '0.5'
info:
  label: Store Associate Offboarding
  description: When an associate separation is recorded in Workday, deactivates Okta access, disables the Microsoft 365 account, and notifies the store manager via Teams.
  tags:
  - hr
  - offboarding
  - workday
  - okta
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-offboarding
    port: 8080
    tools:
    - name: trigger-offboarding
      description: Given a Workday employee ID, revoke Okta SSO access, disable Microsoft 365 account, and notify the store manager via Teams on completion.
      inputParameters:
      - name: employee_id
        type: string
        description: Workday worker ID of the departing associate.
      - name: last_day
        type: string
        description: Last working day in YYYY-MM-DD format.
      steps:
      - name: get-worker
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{employee_id}}'
      - name: deactivate-okta
        type: call
        call: okta.deactivate-user
        with:
          userId: '{{get-worker.work_email}}'
      - name: disable-m365
        type: call
        call: msgraph.update-user
        with:
          user_id: '{{get-worker.work_email}}'
          accountEnabled: 'false'
      - name: notify-manager
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-worker.manager_email}}'
          text: Offboarding complete for {{get-worker.full_name}} (last day {{last_day}}). 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: /lowes/workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: okta
    baseUri: https://lowes.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_api_token
      placement: header
    resources:
    - name: users
      path: /users/{{userId}}/lifecycle/deactivate
      inputParameters:
      - name: userId
        in: path
      operations:
      - name: deactivate-user
        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/{{user_id}}
      inputParameters:
      - name: user_id
        in: path
      operations:
      - name: update-user
        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
Open in Framework → View in Fleet → store-associate-offboarding.yml

Verifies planogram compliance by pulling the expected layout from SharePoint, comparing against current inventory positions in SAP, and logging deviations in ServiceNow.

naftiko: '0.5'
info:
  label: Store Planogram Compliance Check
  description: Verifies planogram compliance by pulling the expected layout from SharePoint, comparing against current inventory positions in SAP, and logging deviations in ServiceNow.
  tags:
  - store-ops
  - sharepoint
  - sap
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: merchandising
    port: 8080
    tools:
    - name: check-planogram-compliance
      description: Given a store and aisle, retrieve the SharePoint planogram, compare SAP inventory positions, and create ServiceNow tasks for deviations.
      inputParameters:
      - name: store_number
        type: string
        description: Store number.
      - name: aisle_id
        type: string
        description: Aisle identifier.
      steps:
      - name: get-planogram
        type: call
        call: sharepoint.get-file
        with:
          path: /Planograms/Store_{{store_number}}/{{aisle_id}}.json
      - name: get-positions
        type: call
        call: sap.get-bin-positions
        with:
          plant: '{{store_number}}'
          aisle: '{{aisle_id}}'
      - name: log-deviations
        type: call
        call: servicenow.create-task
        with:
          short_description: 'Planogram deviation: Store {{store_number}} Aisle {{aisle_id}}'
          assignment_group: Merchandising_Ops
  consumes:
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites/lowes.sharepoint.com
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: files
      path: /drive/root:/{{path}}:/content
      operations:
      - name: get-file
        method: GET
  - type: http
    namespace: sap
    baseUri: https://lowes-s4.sap.com/sap/opu/odata/sap/API_WAREHOUSE_MGMT_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: bins
      path: /A_WarehouseBin
      operations:
      - name: get-bin-positions
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://lowes.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tasks
      path: /table/sc_task
      operations:
      - name: create-task
        method: POST
Open in Framework → View in Fleet → store-planogram-compliance-check.yml

Tracks store remodel projects by pulling project milestones from ServiceNow, budget data from SAP, and posting progress reports to Confluence.

naftiko: '0.5'
info:
  label: Store Remodel Project Tracker
  description: Tracks store remodel projects by pulling project milestones from ServiceNow, budget data from SAP, and posting progress reports to Confluence.
  tags:
  - store-ops
  - servicenow
  - sap
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: construction
    port: 8080
    tools:
    - name: track-remodel-project
      description: Given a project ID and store number, pull ServiceNow milestones, SAP budget status, and post a Confluence progress report.
      inputParameters:
      - name: project_id
        type: string
        description: ServiceNow project ID.
      - name: store_number
        type: string
        description: Store being remodeled.
      steps:
      - name: get-milestones
        type: call
        call: servicenow.get-project
        with:
          project_id: '{{project_id}}'
      - name: get-budget
        type: call
        call: sap.get-project-budget
        with:
          project: '{{project_id}}'
          plant: '{{store_number}}'
      - name: post-report
        type: call
        call: confluence.create-page
        with:
          space: STORE_REMODELS
          title: 'Remodel Progress: Store {{store_number}} — {{get-milestones.current_phase}}'
          body: 'Budget spent: {{get-budget.actual}} of {{get-budget.planned}}. Completion: {{get-milestones.percent_complete}}%.'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://lowes.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: projects
      path: /table/pm_project/{{project_id}}
      inputParameters:
      - name: project_id
        in: path
      operations:
      - name: get-project
        method: GET
  - type: http
    namespace: sap
    baseUri: https://lowes-s4.sap.com/sap/opu/odata/sap/API_PROJECT_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: projects
      path: /A_Project
      operations:
      - name: get-project-budget
        method: GET
  - type: http
    namespace: confluence
    baseUri: https://lowes.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: content
      path: /content
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → store-remodel-project-tracker.yml

Processes a Pro customer credit application by verifying identity in Salesforce, running a credit check, and provisioning the account in SAP with the approved credit limit.

naftiko: '0.5'
info:
  label: Pro Customer Credit Application Workflow
  description: Processes a Pro customer credit application by verifying identity in Salesforce, running a credit check, and provisioning the account in SAP with the approved credit limit.
  tags:
  - loyalty
  - salesforce
  - sap
  - e-commerce
capability:
  exposes:
  - type: mcp
    namespace: pro-services
    port: 8080
    tools:
    - name: process-credit-application
      description: Given a Salesforce account ID and requested credit limit, verify the customer, run credit evaluation, and provision SAP credit account.
      inputParameters:
      - name: account_id
        type: string
        description: Salesforce account ID.
      - name: requested_limit
        type: number
        description: Requested credit limit in USD.
      steps:
      - name: get-account
        type: call
        call: salesforce.get-account
        with:
          account_id: '{{account_id}}'
      - name: check-credit
        type: call
        call: sap.check-credit
        with:
          customer_name: '{{get-account.name}}'
          tax_id: '{{get-account.tax_id}}'
          requested_amount: '{{requested_limit}}'
      - name: update-salesforce
        type: call
        call: salesforce.update-account
        with:
          account_id: '{{account_id}}'
          credit_status: '{{check-credit.decision}}'
          approved_limit: '{{check-credit.approved_amount}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://lowes.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /sobjects/Account/{{account_id}}
      inputParameters:
      - name: account_id
        in: path
      operations:
      - name: get-account
        method: GET
      - name: update-account
        method: PATCH
  - type: http
    namespace: sap
    baseUri: https://lowes-s4.sap.com/sap/opu/odata/sap/API_CREDIT_MGMT_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: credit-checks
      path: /A_CreditManagement
      operations:
      - name: check-credit
        method: POST
Open in Framework → View in Fleet → pro-customer-credit-application-workflow.yml

Creates a job requisition in Workday when headcount is approved and opens a Jira ticket in the talent acquisition board.

naftiko: '0.5'
info:
  label: Workday Open Position Requisition
  description: Creates a job requisition in Workday when headcount is approved and opens a Jira ticket in the talent acquisition board.
  tags:
  - hr
  - recruiting
  - workday
  - jira
capability:
  exposes:
  - type: mcp
    namespace: talent-acquisition
    port: 8080
    tools:
    - name: open-job-requisition
      description: Given a job title, department, and hiring manager Workday ID, create a job requisition in Workday and a corresponding Jira ticket in the TA project for sourcing tracking.
      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: {{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: /lowes/jobRequisitions
      operations:
      - name: create-job-requisition
        method: POST
  - type: http
    namespace: jira
    baseUri: https://lowes.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → workday-open-position-requisition.yml

Onboards new vendors by creating the vendor master in SAP, verifying compliance documents in Box, and provisioning vendor portal access via SailPoint.

naftiko: '0.5'
info:
  label: Vendor Onboarding Compliance Pipeline
  description: Onboards new vendors by creating the vendor master in SAP, verifying compliance documents in Box, and provisioning vendor portal access via SailPoint.
  tags:
  - supply-chain
  - sap
  - box
  - sailpoint
capability:
  exposes:
  - type: mcp
    namespace: procurement-ops
    port: 8080
    tools:
    - name: onboard-vendor
      description: Given vendor details, create SAP vendor master, verify Box compliance documents, and provision SailPoint portal access.
      inputParameters:
      - name: vendor_name
        type: string
        description: Vendor company name.
      - name: tax_id
        type: string
        description: Vendor tax identification number.
      - name: compliance_folder_id
        type: string
        description: Box folder ID containing compliance documents.
      steps:
      - name: create-vendor
        type: call
        call: sap.create-vendor
        with:
          name: '{{vendor_name}}'
          tax_id: '{{tax_id}}'
      - name: verify-docs
        type: call
        call: box.get-folder-items
        with:
          folder_id: '{{compliance_folder_id}}'
      - name: provision-access
        type: call
        call: sailpoint.create-identity
        with:
          display_name: '{{vendor_name}}'
          type: vendor
          vendor_id: '{{create-vendor.vendor_number}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://lowes-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
      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/{{folder_id}}/items
      inputParameters:
      - name: folder_id
        in: path
      operations:
      - name: get-folder-items
        method: GET
  - type: http
    namespace: sailpoint
    baseUri: https://lowes.api.identitynow.com/v3
    authentication:
      type: bearer
      token: $secrets.sailpoint_token
    resources:
    - name: identities
      path: /accounts
      operations:
      - name: create-identity
        method: POST
Open in Framework → View in Fleet → vendor-onboarding-compliance-pipeline.yml

Retrieves critical Dependabot alerts from GitHub for all production repositories and creates Jira security issues for each critical finding.

naftiko: '0.5'
info:
  label: GitHub Security Vulnerability Scan
  description: Retrieves critical Dependabot alerts from GitHub for all production repositories and creates Jira security issues for each critical finding.
  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 owner and name, retrieve all critical Dependabot alerts and create a Jira security issue for each. Use during weekly security scanning cycles.
      inputParameters:
      - name: repo_owner
        type: string
        description: GitHub organization or owner name.
      - name: repo_name
        type: string
        description: GitHub repository name.
      steps:
      - name: get-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 vulnerabilities: {{repo_owner}}/{{repo_name}}'
          description: '{{get-alerts.count}} critical Dependabot alerts found. Repo: https://github.com/{{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://lowes.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → github-security-vulnerability-scan.yml

When an employee changes roles in Workday, updates Okta group assignments and notifies the employee and new manager via Teams.

naftiko: '0.5'
info:
  label: Workday Role Change Access Sync
  description: When an employee changes roles in Workday, updates Okta group assignments and notifies the employee and new 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/old Okta group IDs, remove the user from the old role group, add them to the new role group, and send a Teams notification to the employee.
      inputParameters:
      - name: employee_id
        type: string
        description: Workday worker ID of the employee changing roles.
      - 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 for the previous role.
      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 to reflect your new responsibilities.
  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: /lowes/workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: okta
    baseUri: https://lowes.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
Open in Framework → View in Fleet → workday-role-change-access-sync.yml

Manages store signage updates by pulling promotional details from Salesforce, generating print requests in ServiceNow, and notifying visual merchandising via Teams.

naftiko: '0.5'
info:
  label: Store Signage Update Workflow
  description: Manages store signage updates by pulling promotional details from Salesforce, generating print requests in ServiceNow, and notifying visual merchandising via Teams.
  tags:
  - store-ops
  - salesforce
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: merchandising
    port: 8080
    tools:
    - name: update-store-signage
      description: Given a promotion ID and store list, pull Salesforce promo details, create ServiceNow print requests, and notify merchandising.
      inputParameters:
      - name: promotion_id
        type: string
        description: Salesforce promotion ID.
      - name: store_list
        type: string
        description: Comma-separated store numbers.
      steps:
      - name: get-promotion
        type: call
        call: salesforce.get-promotion
        with:
          promotion_id: '{{promotion_id}}'
      - name: create-print-request
        type: call
        call: servicenow.create-task
        with:
          short_description: 'Signage update: {{get-promotion.name}}'
          description: 'Stores: {{store_list}}. Start: {{get-promotion.start_date}}, End: {{get-promotion.end_date}}'
          assignment_group: Visual_Merchandising
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          channel_id: visual-merchandising
          text: 'New signage request: {{get-promotion.name}} for stores {{store_list}}. Task: {{create-print-request.number}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://lowes.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: servicenow
    baseUri: https://lowes.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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → store-signage-update-workflow.yml

Retrieves current access entitlements for an identity in SailPoint IdentityNow by employee ID.

naftiko: '0.5'
info:
  label: SailPoint Identity Access Review
  description: Retrieves current access entitlements for an identity in SailPoint IdentityNow by employee ID.
  tags:
  - security
  - sailpoint
  - identity
capability:
  exposes:
  - type: mcp
    namespace: identity
    port: 8080
    tools:
    - name: get-identity-access
      description: Look up SailPoint identity entitlements by employee ID. Returns active roles, entitlements, and access profiles.
      inputParameters:
      - name: employee_id
        type: string
        description: Employee ID to look up.
      call: sailpoint.get-identity
      with:
        employee_id: '{{employee_id}}'
      outputParameters:
      - name: display_name
        type: string
        mapping: $.displayName
      - name: roles
        type: array
        mapping: $.roles
      - name: entitlements
        type: array
        mapping: $.entitlements
  consumes:
  - type: http
    namespace: sailpoint
    baseUri: https://lowes.api.identitynow.com/v3
    authentication:
      type: bearer
      token: $secrets.sailpoint_token
    resources:
    - name: identities
      path: /search/identities?query=employeeNumber:{{employee_id}}
      inputParameters:
      - name: employee_id
        in: query
      operations:
      - name: get-identity
        method: GET
Open in Framework → View in Fleet → sailpoint-identity-access-review.yml

Responds to store network outages by checking Datadog network monitors, creating a priority ServiceNow incident, and escalating to the NOC via Teams.

naftiko: '0.5'
info:
  label: Store Network Outage Response
  description: Responds to store network outages by checking Datadog network monitors, creating a priority ServiceNow incident, and escalating to the NOC via Teams.
  tags:
  - infrastructure
  - datadog
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: network-ops
    port: 8080
    tools:
    - name: handle-network-outage
      description: Given a store number and alert, check Datadog network health, create ServiceNow P1 incident, and escalate to NOC.
      inputParameters:
      - name: store_number
        type: string
        description: Affected store number.
      - name: alert_id
        type: string
        description: Datadog alert ID.
      steps:
      - name: get-network-status
        type: call
        call: datadog.get-monitor
        with:
          monitor_id: '{{alert_id}}'
      - name: create-p1
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Network outage: Store {{store_number}}'
          category: network
          priority: '1'
          assignment_group: Network_Operations
      - name: escalate-noc
        type: call
        call: msteams.send-message
        with:
          channel_id: noc-critical
          text: 'P1 Network outage at Store {{store_number}}. Status: {{get-network-status.overall_state}}. Ticket: {{create-p1.number}}. Immediate attention required.'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: monitors
      path: /monitor/{{monitor_id}}
      inputParameters:
      - name: monitor_id
        in: path
      operations:
      - name: get-monitor
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://lowes.service-now.com/api/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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → store-network-outage-response.yml

Verifies contractor licenses by pulling Pro account data from Salesforce, checking compliance documents in Box, and updating verification status in Snowflake.

naftiko: '0.5'
info:
  label: Contractor License Verification
  description: Verifies contractor licenses by pulling Pro account data from Salesforce, checking compliance documents in Box, and updating verification status in Snowflake.
  tags:
  - loyalty
  - salesforce
  - box
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: pro-services
    port: 8080
    tools:
    - name: verify-contractor-license
      description: Given a Pro account ID, pull Salesforce data, check Box license documents, and update Snowflake verification status.
      inputParameters:
      - name: account_id
        type: string
        description: Salesforce Pro account ID.
      steps:
      - name: get-account
        type: call
        call: salesforce.get-account
        with:
          account_id: '{{account_id}}'
      - name: check-documents
        type: call
        call: box.get-folder-items
        with:
          folder_id: '{{get-account.license_folder_id}}'
      - name: update-status
        type: call
        call: snowflake.run-query
        with:
          statement: UPDATE PRO_ACCOUNTS SET license_verified=TRUE, doc_count={{check-documents.total_count}} WHERE account_id='{{account_id}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://lowes.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: 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: snowflake
    baseUri: https://lowes.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → contractor-license-verification.yml

When a new B2B customer account is created in Salesforce, creates the corresponding account in SAP S/4HANA and confirms via Teams.

naftiko: '0.5'
info:
  label: Salesforce Customer Account Sync
  description: When a new B2B customer account is created in Salesforce, creates the corresponding account in SAP S/4HANA and confirms via Teams.
  tags:
  - crm
  - sales
  - salesforce
  - sap
capability:
  exposes:
  - type: mcp
    namespace: crm-ops
    port: 8080
    tools:
    - name: sync-new-account
      description: Given a Salesforce account ID, retrieve account details and create the corresponding customer master record in SAP S/4HANA, then notify the sales team via Teams.
      inputParameters:
      - name: account_id
        type: string
        description: Salesforce account record ID.
      - name: teams_channel_id
        type: string
        description: Teams channel ID for the sales team notification.
      steps:
      - name: get-account
        type: call
        call: salesforce.get-account
        with:
          account_id: '{{account_id}}'
      - name: create-customer
        type: call
        call: sap.create-customer
        with:
          customerName: '{{get-account.Name}}'
          country: '{{get-account.BillingCountry}}'
          salesforceId: '{{account_id}}'
      - name: notify-sales
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: '{{teams_channel_id}}'
          text: 'New B2B account synced: {{get-account.Name}} — SAP customer {{create-customer.customerId}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://lowes.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: sap
    baseUri: https://lowes-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
      operations:
      - name: create-customer
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/sales/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → salesforce-customer-account-sync.yml

Posts goods receipts in SAP by verifying the purchase order, creating the material document, and notifying accounts payable via Teams.

naftiko: '0.5'
info:
  label: SAP Goods Receipt Posting
  description: Posts goods receipts in SAP by verifying the purchase order, creating the material document, and notifying accounts payable via Teams.
  tags:
  - supply-chain
  - sap
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: warehouse-ops
    port: 8080
    tools:
    - name: post-goods-receipt
      description: Given a PO number and received quantities, verify the SAP PO, post the goods receipt, and notify AP.
      inputParameters:
      - name: po_number
        type: string
        description: SAP purchase order number.
      - name: received_qty
        type: integer
        description: Total received quantity.
      steps:
      - name: verify-po
        type: call
        call: sap.get-po
        with:
          po_number: '{{po_number}}'
      - name: post-receipt
        type: call
        call: sap.post-goods-receipt
        with:
          po_number: '{{po_number}}'
          quantity: '{{received_qty}}'
          movement_type: '101'
      - name: notify-ap
        type: call
        call: msteams.send-message
        with:
          channel_id: accounts-payable
          text: 'Goods receipt posted: PO {{po_number}} from {{verify-po.vendor}}, Qty {{received_qty}}. Doc: {{post-receipt.document_number}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://lowes-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_DOCUMENT_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
    - 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: channels
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → sap-goods-receipt-posting.yml

Manages quarterly access recertification by pulling SailPoint identity entitlements, cross-referencing Workday active employees, and creating ServiceNow remediation tasks.

naftiko: '0.5'
info:
  label: SailPoint Access Recertification Workflow
  description: Manages quarterly access recertification by pulling SailPoint identity entitlements, cross-referencing Workday active employees, and creating ServiceNow remediation tasks.
  tags:
  - security
  - sailpoint
  - workday
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: identity-ops
    port: 8080
    tools:
    - name: run-access-recertification
      description: Given a department, pull SailPoint entitlements, check Workday active status, and create ServiceNow tasks for orphaned access.
      inputParameters:
      - name: department
        type: string
        description: Department to recertify.
      steps:
      - name: get-entitlements
        type: call
        call: sailpoint.get-department-access
        with:
          department: '{{department}}'
      - name: check-active-employees
        type: call
        call: workday.get-active-workers
        with:
          department: '{{department}}'
      - name: create-remediation
        type: call
        call: servicenow.create-task
        with:
          short_description: 'Access recertification: {{department}} — orphaned accounts found'
          assignment_group: Identity_Governance
  consumes:
  - type: http
    namespace: sailpoint
    baseUri: https://lowes.api.identitynow.com/v3
    authentication:
      type: bearer
      token: $secrets.sailpoint_token
    resources:
    - name: access
      path: /search/entitlements
      operations:
      - name: get-department-access
        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: /lowes/workers
      operations:
      - name: get-active-workers
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://lowes.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tasks
      path: /table/sc_task
      operations:
      - name: create-task
        method: POST
Open in Framework → View in Fleet → sailpoint-access-recertification-workflow.yml

On a GitHub Actions pipeline failure, creates a Jira bug, posts a Datadog event marker, and alerts the engineering Teams channel.

naftiko: '0.5'
info:
  label: CI/CD Pipeline Failure Triage
  description: On a GitHub Actions pipeline failure, 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, create a Jira bug in the engineering project, post a Datadog deployment event, and alert the engineering Teams channel with 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 run.
      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://lowes.atlassian.net/rest/api/3
    authentication:
      type: 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
Open in Framework → View in Fleet → ci-cd-pipeline-failure-triage.yml

Fetches SLO compliance data from Datadog for all production services and posts a weekly summary to the engineering Teams channel.

naftiko: '0.5'
info:
  label: Datadog SLO Weekly Compliance Report
  description: Fetches SLO compliance data from Datadog for all production services and posts a weekly summary to the engineering Teams channel.
  tags:
  - observability
  - slo
  - datadog
  - reporting
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: slo-reporting
    port: 8080
    tools:
    - name: publish-slo-compliance
      description: Fetch weekly SLO compliance metrics for all production services from Datadog and post a summary to the engineering Teams channel. Use every Monday for the weekly ops review.
      inputParameters:
      - name: teams_channel_id
        type: string
        description: Teams channel ID for engineering operations reporting.
      steps:
      - name: get-slos
        type: call
        call: datadog.list-slos
        with:
          tags: env:production
      - name: post-report
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: '{{teams_channel_id}}'
          text: 'Weekly SLO Report: {{get-slos.complianceCount}} services meeting targets out of {{get-slos.totalCount}} total.'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: slos
      path: /slo
      inputParameters:
      - name: tags
        in: query
      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/engineering/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → datadog-slo-weekly-compliance-report.yml

Generates a vendor performance scorecard by pulling delivery metrics from SAP, quality data from Snowflake, and publishing the report to SharePoint.

naftiko: '0.5'
info:
  label: Vendor Performance Scorecard Generator
  description: Generates a vendor performance scorecard by pulling delivery metrics from SAP, quality data from Snowflake, and publishing the report to SharePoint.
  tags:
  - supply-chain
  - sap
  - snowflake
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: procurement-ops
    port: 8080
    tools:
    - name: generate-vendor-scorecard
      description: Given a vendor number and period, compile delivery metrics from SAP, quality scores from Snowflake, and publish a scorecard to SharePoint.
      inputParameters:
      - name: vendor_number
        type: string
        description: SAP vendor number.
      - name: period
        type: string
        description: Reporting period (e.g., 2026-Q1).
      steps:
      - name: get-vendor
        type: call
        call: sap.get-vendor
        with:
          vendor_number: '{{vendor_number}}'
      - name: get-delivery-metrics
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT on_time_rate, fill_rate, defect_rate FROM VENDOR_METRICS WHERE vendor_id='{{vendor_number}}' AND period='{{period}}'
      - name: upload-scorecard
        type: call
        call: sharepoint.upload-file
        with:
          folder: /Shared Documents/Vendor Scorecards
          filename: '{{get-vendor.vendor_name}}_{{period}}_scorecard.pdf'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://lowes-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_number}}')
      inputParameters:
      - name: vendor_number
        in: path
      operations:
      - name: get-vendor
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://lowes.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: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites/lowes.sharepoint.com
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: drive
      path: /drive/root:/{{folder}}/{{filename}}:/content
      operations:
      - name: upload-file
        method: PUT
Open in Framework → View in Fleet → vendor-performance-scorecard-generator.yml

Verifies incoming shipments at the warehouse by matching the SAP purchase order against Oracle receiving records and creating discrepancy tickets in ServiceNow.

naftiko: '0.5'
info:
  label: Warehouse Receiving Verification
  description: Verifies incoming shipments at the warehouse by matching the SAP purchase order against Oracle receiving records and creating discrepancy tickets in ServiceNow.
  tags:
  - supply-chain
  - sap
  - oracle
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: warehouse-ops
    port: 8080
    tools:
    - name: verify-receiving
      description: Given a PO number and receiving document, compare SAP PO quantities with Oracle receiving records and create ServiceNow tickets for discrepancies.
      inputParameters:
      - name: po_number
        type: string
        description: SAP purchase order number.
      - name: receiving_doc
        type: string
        description: Oracle receiving document number.
      steps:
      - name: get-po
        type: call
        call: sap.get-po
        with:
          po_number: '{{po_number}}'
      - name: get-receipt
        type: call
        call: oracle.get-receipt
        with:
          doc_number: '{{receiving_doc}}'
      - name: create-discrepancy
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Receiving discrepancy: PO {{po_number}} vs Receipt {{receiving_doc}}'
          category: warehouse
          assignment_group: Warehouse_Receiving
  consumes:
  - type: http
    namespace: sap
    baseUri: https://lowes-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: oracle
    baseUri: https://lowes-oracle.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: basic
      username: $secrets.oracle_user
      password: $secrets.oracle_password
    resources:
    - name: receipts
      path: /receivingTransactions/{{doc_number}}
      inputParameters:
      - name: doc_number
        in: path
      operations:
      - name: get-receipt
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://lowes.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → warehouse-receiving-verification.yml

Retrieves a product listing from the BigCommerce catalog by SKU, returning price, availability, and images.

naftiko: '0.5'
info:
  label: BigCommerce Product Listing Lookup
  description: Retrieves a product listing from the BigCommerce catalog by SKU, returning price, availability, and images.
  tags:
  - e-commerce
  - bigcommerce
  - inventory
capability:
  exposes:
  - type: mcp
    namespace: ecommerce
    port: 8080
    tools:
    - name: get-product-listing
      description: Look up a BigCommerce product by SKU. Returns name, price, stock level, and primary image URL.
      inputParameters:
      - name: sku
        type: string
        description: Product SKU identifier.
      call: bigcommerce.get-product
      with:
        sku: '{{sku}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.data.name
      - name: price
        type: number
        mapping: $.data.price
      - name: inventory_level
        type: integer
        mapping: $.data.inventory_level
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/lowes
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: products
      path: /v3/catalog/products?sku={{sku}}
      inputParameters:
      - name: sku
        in: query
      operations:
      - name: get-product
        method: GET
Open in Framework → View in Fleet → bigcommerce-product-listing-lookup.yml

Orchestrates Buy Online Pick Up In Store orders by verifying BigCommerce order status, confirming SAP store-level inventory, and notifying the store associate via Teams.

naftiko: '0.5'
info:
  label: BOPIS Order Fulfillment Orchestrator
  description: Orchestrates Buy Online Pick Up In Store orders by verifying BigCommerce order status, confirming SAP store-level inventory, and notifying the store associate via Teams.
  tags:
  - e-commerce
  - bigcommerce
  - sap
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: ecommerce-ops
    port: 8080
    tools:
    - name: fulfill-bopis-order
      description: Given a BOPIS order number, verify BigCommerce order, confirm SAP store inventory, and notify the fulfillment associate via Teams.
      inputParameters:
      - name: order_number
        type: string
        description: BigCommerce BOPIS order number.
      - name: store_number
        type: string
        description: Pickup store number.
      steps:
      - name: get-order
        type: call
        call: bigcommerce.get-order
        with:
          order_number: '{{order_number}}'
      - name: check-store-stock
        type: call
        call: sap.get-stock-level
        with:
          material_number: '{{get-order.line_items[0].sku}}'
          plant: '{{store_number}}'
      - name: notify-associate
        type: call
        call: msteams.send-message
        with:
          channel_id: store-{{store_number}}-fulfillment
          text: 'BOPIS order {{order_number}} ready for pick: {{get-order.line_items[0].name}} (Qty: {{get-order.line_items[0].quantity}}). Aisle location: {{check-store-stock.bin_location}}'
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/lowes
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: orders
      path: /v2/orders/{{order_number}}
      inputParameters:
      - name: order_number
        in: path
      operations:
      - name: get-order
        method: GET
  - type: http
    namespace: sap
    baseUri: https://lowes-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-stock-level
        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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → bopis-order-fulfillment-orchestrator.yml

Processes time-off requests by verifying Workday balances, checking staffing coverage in Snowflake, and notifying the manager via Teams.

naftiko: '0.5'
info:
  label: Employee Time-Off Approval Pipeline
  description: Processes time-off requests by verifying Workday balances, checking staffing coverage in Snowflake, and notifying the manager via Teams.
  tags:
  - hr
  - workday
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-ops
    port: 8080
    tools:
    - name: process-time-off-request
      description: Given a worker ID and requested dates, verify Workday PTO balance, check Snowflake staffing coverage, and notify the manager.
      inputParameters:
      - name: worker_id
        type: string
        description: Workday worker ID.
      - name: start_date
        type: string
        description: Start date in YYYY-MM-DD format.
      - name: end_date
        type: string
        description: End date in YYYY-MM-DD format.
      steps:
      - name: check-balance
        type: call
        call: workday.get-time-off-balance
        with:
          worker_id: '{{worker_id}}'
      - name: check-coverage
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT scheduled_count, minimum_required FROM STAFFING_COVERAGE WHERE store=(SELECT store FROM ASSOCIATES WHERE worker_id='{{worker_id}}') AND date BETWEEN '{{start_date}}' AND '{{end_date}}'
      - name: notify-manager
        type: call
        call: msteams.send-message
        with:
          channel_id: '{{check-balance.manager_channel}}'
          text: 'Time-off request: {{check-balance.employee_name}} ({{start_date}} to {{end_date}}). PTO balance: {{check-balance.remaining_hours}}h. Coverage: {{check-coverage.results[0].scheduled_count}}/{{check-coverage.results[0].minimum_required}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: time-off
      path: /lowes/workers/{{worker_id}}/timeOffBalance
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-time-off-balance
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://lowes.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → employee-time-off-approval-pipeline.yml

Automates seasonal markdown pricing by analyzing sell-through rates in Snowflake, updating product prices in BigCommerce, and logging the price changes in SAP.

naftiko: '0.5'
info:
  label: Markdown Clearance Automation
  description: Automates seasonal markdown pricing by analyzing sell-through rates in Snowflake, updating product prices in BigCommerce, and logging the price changes in SAP.
  tags:
  - e-commerce
  - snowflake
  - bigcommerce
  - sap
capability:
  exposes:
  - type: mcp
    namespace: pricing-ops
    port: 8080
    tools:
    - name: run-markdown-clearance
      description: Given a product category and target sell-through rate, analyze Snowflake inventory velocity, compute markdowns, update BigCommerce prices, and log in SAP.
      inputParameters:
      - name: category_code
        type: string
        description: Product category for markdown.
      - name: target_sell_through
        type: number
        description: Target sell-through percentage (e.g., 0.85).
      steps:
      - name: analyze-velocity
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT sku, current_price, weeks_of_supply, sell_through_rate FROM INVENTORY_VELOCITY WHERE category='{{category_code}}' AND sell_through_rate < {{target_sell_through}}
      - name: update-prices
        type: call
        call: bigcommerce.batch-update-prices
        with:
          items: '{{analyze-velocity.results}}'
          markdown_pct: '25'
      - name: log-changes
        type: call
        call: sap.post-price-change
        with:
          category: '{{category_code}}'
          changes: '{{update-prices.updated_items}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://lowes.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: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/lowes
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: products
      path: /v3/catalog/products
      operations:
      - name: batch-update-prices
        method: PUT
  - type: http
    namespace: sap
    baseUri: https://lowes-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: post-price-change
        method: POST
Open in Framework → View in Fleet → markdown-clearance-automation.yml

Fetches web traffic metrics from Google Analytics for the Lowes.com storefront by date range.

naftiko: '0.5'
info:
  label: Google Analytics Store Traffic
  description: Fetches web traffic metrics from Google Analytics for the Lowes.com storefront by date range.
  tags:
  - analytics
  - google-analytics
  - e-commerce
capability:
  exposes:
  - type: mcp
    namespace: analytics
    port: 8080
    tools:
    - name: get-store-traffic
      description: Retrieve Google Analytics traffic metrics for lowes.com. Returns sessions, page views, and bounce rate for the specified period.
      inputParameters:
      - name: start_date
        type: string
        description: Start date in YYYY-MM-DD format.
      - name: end_date
        type: string
        description: End date in YYYY-MM-DD format.
      call: ga.get-report
      with:
        start_date: '{{start_date}}'
        end_date: '{{end_date}}'
      outputParameters:
      - name: sessions
        type: integer
        mapping: $.reports[0].data.totals[0].values[0]
      - name: pageviews
        type: integer
        mapping: $.reports[0].data.totals[0].values[1]
      - name: bounce_rate
        type: number
        mapping: $.reports[0].data.totals[0].values[2]
  consumes:
  - type: http
    namespace: ga
    baseUri: https://analyticsdata.googleapis.com/v1beta
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: reports
      path: /properties/lowes:runReport
      operations:
      - name: get-report
        method: POST
Open in Framework → View in Fleet → google-analytics-store-traffic.yml

Monitors API gateway health by pulling Datadog latency metrics, New Relic error rates, and posting a consolidated dashboard summary to Teams.

naftiko: '0.5'
info:
  label: API Gateway Health Dashboard
  description: Monitors API gateway health by pulling Datadog latency metrics, New Relic error rates, and posting a consolidated dashboard summary to Teams.
  tags:
  - infrastructure
  - datadog
  - new-relic
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: platform-ops
    port: 8080
    tools:
    - name: check-api-gateway-health
      description: Pull Datadog latency metrics and New Relic error rates for the API gateway, then post a consolidated summary to Teams.
      inputParameters:
      - name: gateway_name
        type: string
        description: API gateway identifier.
      steps:
      - name: get-latency
        type: call
        call: datadog.get-monitor
        with:
          monitor_id: api-gw-{{gateway_name}}
      - name: get-errors
        type: call
        call: newrelic.get-app-metrics
        with:
          app_id: '{{gateway_name}}'
      - name: post-summary
        type: call
        call: msteams.send-message
        with:
          channel_id: platform-engineering
          text: 'API Gateway {{gateway_name}}: Latency={{get-latency.overall_state}}, Error rate={{get-errors.error_rate}}%, Throughput={{get-errors.throughput}} rpm'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: monitors
      path: /monitor/{{monitor_id}}
      inputParameters:
      - name: monitor_id
        in: path
      operations:
      - name: get-monitor
        method: GET
  - type: http
    namespace: newrelic
    baseUri: https://api.newrelic.com/v2
    authentication:
      type: bearer
      token: $secrets.newrelic_api_key
    resources:
    - name: applications
      path: /applications/{{app_id}}.json
      inputParameters:
      - name: app_id
        in: path
      operations:
      - name: get-app-metrics
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → api-gateway-health-dashboard.yml

Tracks outbound distribution center shipments by pulling Oracle shipping data, verifying SAP delivery documents, and posting status updates to Teams.

naftiko: '0.5'
info:
  label: DC Outbound Shipment Tracker
  description: Tracks outbound distribution center shipments by pulling Oracle shipping data, verifying SAP delivery documents, and posting status updates to Teams.
  tags:
  - supply-chain
  - oracle
  - sap
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: logistics
    port: 8080
    tools:
    - name: track-dc-shipment
      description: Given a shipment ID, pull Oracle shipping data, verify SAP delivery document, and post Teams status update.
      inputParameters:
      - name: shipment_id
        type: string
        description: Oracle shipment ID.
      - name: delivery_number
        type: string
        description: SAP delivery document number.
      steps:
      - name: get-shipment
        type: call
        call: oracle.get-shipment
        with:
          shipment_id: '{{shipment_id}}'
      - name: verify-delivery
        type: call
        call: sap.get-delivery
        with:
          delivery_number: '{{delivery_number}}'
      - name: post-status
        type: call
        call: msteams.send-message
        with:
          channel_id: dc-operations
          text: 'Shipment {{shipment_id}}: {{get-shipment.status}}. SAP delivery {{delivery_number}} to Store {{verify-delivery.ship_to_plant}}. ETA: {{get-shipment.eta}}'
  consumes:
  - type: http
    namespace: oracle
    baseUri: https://lowes-oracle.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: basic
      username: $secrets.oracle_user
      password: $secrets.oracle_password
    resources:
    - name: shipments
      path: /shipments/{{shipment_id}}
      inputParameters:
      - name: shipment_id
        in: path
      operations:
      - name: get-shipment
        method: GET
  - type: http
    namespace: sap
    baseUri: https://lowes-s4.sap.com/sap/opu/odata/sap/API_OUTBOUND_DELIVERY_SRV_V2
    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: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → dc-outbound-shipment-tracker.yml

Monitors Snowflake data pipeline task completion for retail analytics and opens a Jira issue when failures exceed threshold.

naftiko: '0.5'
info:
  label: Snowflake Retail Data Pipeline Health
  description: Monitors Snowflake data pipeline task completion for retail analytics and opens a Jira issue when failures exceed threshold.
  tags:
  - data
  - analytics
  - snowflake
  - jira
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: data-ops
    port: 8080
    tools:
    - name: check-retail-pipeline-health
      description: Query Snowflake for failed pipeline tasks in the retail analytics database over the past N hours. Create a Jira issue and alert the data engineering Teams channel if failures exceed the threshold.
      inputParameters:
      - name: database
        type: string
        description: Snowflake database name to monitor (e.g., RETAIL_ANALYTICS).
      - name: hours_back
        type: integer
        description: Number of hours to look back for failures.
      - name: failure_threshold
        type: integer
        description: Failure count above which an alert is triggered.
      steps:
      - name: get-task-history
        type: call
        call: snowflake.query-task-history
        with:
          database: '{{database}}'
          hoursBack: '{{hours_back}}'
      - name: create-issue
        type: call
        call: jira.create-issue
        with:
          project_key: DATA
          issuetype: Bug
          summary: Snowflake pipeline failures in {{database}}
          description: '{{get-task-history.failureCount}} failures in last {{hours_back}}h'
      - name: alert-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: data-engineering
          text: 'Pipeline alert: {{get-task-history.failureCount}} failures in {{database}} (last {{hours_back}}h). Jira: {{create-issue.key}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://lowes.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: task-history
      path: /databases/{{database}}/schemas/information_schema/tasks
      inputParameters:
      - name: database
        in: path
      operations:
      - name: query-task-history
        method: GET
  - type: http
    namespace: jira
    baseUri: https://lowes.atlassian.net/rest/api/3
    authentication:
      type: 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/data/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → snowflake-retail-data-pipeline-health.yml

Handles infrastructure scaling alerts by checking Datadog metrics, triggering Azure auto-scaling, and logging the event in ServiceNow.

naftiko: '0.5'
info:
  label: Infrastructure Scaling Alert Handler
  description: Handles infrastructure scaling alerts by checking Datadog metrics, triggering Azure auto-scaling, and logging the event in ServiceNow.
  tags:
  - infrastructure
  - datadog
  - microsoft-azure
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: platform-ops
    port: 8080
    tools:
    - name: handle-scaling-alert
      description: Given a Datadog alert ID, check metrics, trigger Azure scale-out, and log the scaling event in ServiceNow.
      inputParameters:
      - name: alert_id
        type: string
        description: Datadog alert ID.
      - name: resource_group
        type: string
        description: Azure resource group name.
      steps:
      - name: get-metrics
        type: call
        call: datadog.get-monitor
        with:
          monitor_id: '{{alert_id}}'
      - name: scale-resources
        type: call
        call: azure.scale-vmss
        with:
          resource_group: '{{resource_group}}'
          target_capacity: '{{get-metrics.recommended_capacity}}'
      - name: log-event
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Auto-scale triggered: {{resource_group}} — capacity {{scale-resources.new_capacity}}'
          category: infrastructure
          assignment_group: Cloud_Platform
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: monitors
      path: /monitor/{{monitor_id}}
      inputParameters:
      - name: monitor_id
        in: path
      operations:
      - name: get-monitor
        method: GET
  - type: http
    namespace: azure
    baseUri: https://management.azure.com/subscriptions/{{subscription_id}}
    authentication:
      type: bearer
      token: $secrets.azure_mgmt_token
    resources:
    - name: vmss
      path: /resourceGroups/{{resource_group}}/providers/Microsoft.Compute/virtualMachineScaleSets
      operations:
      - name: scale-vmss
        method: PATCH
  - type: http
    namespace: servicenow
    baseUri: https://lowes.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → infrastructure-scaling-alert-handler.yml

Manages IT asset lifecycle by tracking assets in ServiceNow, verifying warranty status in Oracle, and scheduling replacement procurement in SAP.

naftiko: '0.5'
info:
  label: IT Asset Lifecycle Management
  description: Manages IT asset lifecycle by tracking assets in ServiceNow, verifying warranty status in Oracle, and scheduling replacement procurement in SAP.
  tags:
  - infrastructure
  - servicenow
  - oracle
  - sap
capability:
  exposes:
  - type: mcp
    namespace: it-ops
    port: 8080
    tools:
    - name: manage-asset-lifecycle
      description: Given an asset tag, check ServiceNow asset record, verify Oracle warranty, and create SAP procurement request if replacement needed.
      inputParameters:
      - name: asset_tag
        type: string
        description: IT asset tag identifier.
      - name: store_number
        type: string
        description: Store where asset is located.
      steps:
      - name: get-asset
        type: call
        call: servicenow.get-asset
        with:
          asset_tag: '{{asset_tag}}'
      - name: check-warranty
        type: call
        call: oracle.get-warranty
        with:
          serial_number: '{{get-asset.serial_number}}'
      - name: create-requisition
        type: call
        call: sap.create-requisition
        with:
          material: '{{get-asset.model_category}}'
          plant: '{{store_number}}'
          justification: Warranty expires {{check-warranty.expiry_date}} for {{get-asset.display_name}}
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://lowes.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: assets
      path: /table/alm_asset?sysparm_query=asset_tag={{asset_tag}}
      inputParameters:
      - name: asset_tag
        in: query
      operations:
      - name: get-asset
        method: GET
  - type: http
    namespace: oracle
    baseUri: https://lowes-oracle.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: basic
      username: $secrets.oracle_user
      password: $secrets.oracle_password
    resources:
    - name: warranties
      path: /warranties
      operations:
      - name: get-warranty
        method: GET
  - type: http
    namespace: sap
    baseUri: https://lowes-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_PurchaseRequisitionHeader
      operations:
      - name: create-requisition
        method: POST
Open in Framework → View in Fleet → it-asset-lifecycle-management.yml

Pulls historical sales data from Snowflake, runs a demand forecast via Azure Machine Learning, and updates SAP material requirements planning with projected quantities.

naftiko: '0.5'
info:
  label: Seasonal Demand Forecast Pipeline
  description: Pulls historical sales data from Snowflake, runs a demand forecast via Azure Machine Learning, and updates SAP material requirements planning with projected quantities.
  tags:
  - supply-chain
  - snowflake
  - azure-machine-learning
  - sap
capability:
  exposes:
  - type: mcp
    namespace: demand-planning
    port: 8080
    tools:
    - name: run-seasonal-forecast
      description: Given a product category and forecast horizon, pull historical data from Snowflake, generate Azure ML predictions, and update SAP MRP.
      inputParameters:
      - name: category_code
        type: string
        description: Product category code for forecasting.
      - name: horizon_weeks
        type: integer
        description: Number of weeks to forecast.
      steps:
      - name: get-history
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT week, units_sold FROM SALES_HISTORY WHERE category='{{category_code}}' ORDER BY week DESC LIMIT 104
      - name: run-forecast
        type: call
        call: azureml.invoke-endpoint
        with:
          endpoint: demand-forecast-v2
          payload: '{{get-history.results}}'
          horizon: '{{horizon_weeks}}'
      - name: update-mrp
        type: call
        call: sap.update-forecast
        with:
          category: '{{category_code}}'
          forecast_data: '{{run-forecast.predictions}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://lowes.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://lowes-ml.westus2.inference.ml.azure.com
    authentication:
      type: bearer
      token: $secrets.azureml_token
    resources:
    - name: endpoints
      path: /score
      operations:
      - name: invoke-endpoint
        method: POST
  - type: http
    namespace: sap
    baseUri: https://lowes-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: forecasts
      path: /A_MRPMaterial
      operations:
      - name: update-forecast
        method: PATCH
Open in Framework → View in Fleet → seasonal-demand-forecast-pipeline.yml

Reconciles daily store sales by comparing Snowflake POS transaction totals against SAP financial postings and flagging discrepancies in ServiceNow.

naftiko: '0.5'
info:
  label: Store Daily Sales Reconciliation
  description: Reconciles daily store sales by comparing Snowflake POS transaction totals against SAP financial postings and flagging discrepancies in ServiceNow.
  tags:
  - store-ops
  - snowflake
  - sap
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: finance-ops
    port: 8080
    tools:
    - name: reconcile-daily-sales
      description: Given a store number and date, compare Snowflake POS totals with SAP financial postings and create ServiceNow tickets for variances.
      inputParameters:
      - name: store_number
        type: string
        description: Store number.
      - name: date
        type: string
        description: Business date in YYYY-MM-DD format.
      steps:
      - name: get-pos-totals
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT SUM(amount) as pos_total, COUNT(*) as txn_count FROM POS_TRANSACTIONS WHERE store='{{store_number}}' AND business_date='{{date}}'
      - name: get-sap-postings
        type: call
        call: sap.get-journal-entries
        with:
          plant: '{{store_number}}'
          posting_date: '{{date}}'
      - name: flag-variance
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Sales reconciliation variance: Store {{store_number}} — {{date}}'
          description: 'POS total: {{get-pos-totals.results[0].pos_total}}, SAP total: {{get-sap-postings.total}}'
          category: finance
          assignment_group: Store_Accounting
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://lowes.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://lowes-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_JournalEntryItemBasic
      operations:
      - name: get-journal-entries
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://lowes.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → store-daily-sales-reconciliation.yml

Monitors store WiFi performance by pulling Datadog network metrics, correlating with Dynatrace application health, and creating ServiceNow tickets for degradation.

naftiko: '0.5'
info:
  label: Store WiFi Performance Monitoring
  description: Monitors store WiFi performance by pulling Datadog network metrics, correlating with Dynatrace application health, and creating ServiceNow tickets for degradation.
  tags:
  - infrastructure
  - datadog
  - dynatrace
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: network-ops
    port: 8080
    tools:
    - name: monitor-wifi-performance
      description: Given a store number, check Datadog WiFi metrics, correlate Dynatrace app impact, and create ServiceNow tickets.
      inputParameters:
      - name: store_number
        type: string
        description: Store number.
      steps:
      - name: get-wifi-metrics
        type: call
        call: datadog.get-monitor
        with:
          monitor_id: wifi-store-{{store_number}}
      - name: check-app-impact
        type: call
        call: dynatrace.get-host
        with:
          host_id: pos-store-{{store_number}}
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'WiFi degradation: Store {{store_number}}'
          description: 'WiFi status: {{get-wifi-metrics.overall_state}}, POS health: {{check-app-impact.state}}'
          category: network
          assignment_group: Store_IT
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: monitors
      path: /monitor/{{monitor_id}}
      inputParameters:
      - name: monitor_id
        in: path
      operations:
      - name: get-monitor
        method: GET
  - type: http
    namespace: dynatrace
    baseUri: https://lowes.live.dynatrace.com/api/v2
    authentication:
      type: bearer
      token: $secrets.dynatrace_token
    resources:
    - name: entities
      path: /entities/{{host_id}}
      inputParameters:
      - name: host_id
        in: path
      operations:
      - name: get-host
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://lowes.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → store-wifi-performance-monitoring.yml

Tunes e-commerce search relevance by pulling Adobe Analytics search data, analyzing click-through rates in Snowflake, and updating BigCommerce search weights.

naftiko: '0.5'
info:
  label: E-Commerce Search Relevance Tuning
  description: Tunes e-commerce search relevance by pulling Adobe Analytics search data, analyzing click-through rates in Snowflake, and updating BigCommerce search weights.
  tags:
  - e-commerce
  - adobe-analytics
  - snowflake
  - bigcommerce
capability:
  exposes:
  - type: mcp
    namespace: ecommerce-ops
    port: 8080
    tools:
    - name: tune-search-relevance
      description: Given a search term, pull Adobe Analytics CTR data, analyze Snowflake conversion funnel, and update BigCommerce search weights.
      inputParameters:
      - name: search_term
        type: string
        description: Search term to optimize.
      steps:
      - name: get-search-analytics
        type: call
        call: adobe.get-report
        with:
          search_term: '{{search_term}}'
          metric: click_through_rate
      - name: analyze-funnel
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT result_position, click_count, conversion_count FROM SEARCH_FUNNEL WHERE term='{{search_term}}' AND date > DATEADD(day, -30, CURRENT_DATE())
      - name: update-weights
        type: call
        call: bigcommerce.update-search-config
        with:
          term: '{{search_term}}'
          boost_skus: '{{analyze-funnel.results}}'
  consumes:
  - type: http
    namespace: adobe
    baseUri: https://analytics.adobe.io/api/lowes
    authentication:
      type: bearer
      token: $secrets.adobe_analytics_token
    resources:
    - name: reports
      path: /reports
      operations:
      - name: get-report
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://lowes.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: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/lowes
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: search-config
      path: /v3/catalog/search
      operations:
      - name: update-search-config
        method: PUT
Open in Framework → View in Fleet → e-commerce-search-relevance-tuning.yml

Queries the Snowflake data warehouse for daily sales totals by store number and date range.

naftiko: '0.5'
info:
  label: Snowflake Store Sales Query
  description: Queries the Snowflake data warehouse for daily sales totals by store number and date range.
  tags:
  - analytics
  - snowflake
  - store-ops
capability:
  exposes:
  - type: mcp
    namespace: analytics
    port: 8080
    tools:
    - name: query-store-sales
      description: Query daily sales totals from Snowflake for a given store and date range. Returns gross sales, net sales, and transaction count.
      inputParameters:
      - name: store_number
        type: string
        description: Lowe's store number.
      - name: start_date
        type: string
        description: Start date in YYYY-MM-DD format.
      - name: end_date
        type: string
        description: End date in YYYY-MM-DD format.
      call: snowflake.run-query
      with:
        store_number: '{{store_number}}'
        start_date: '{{start_date}}'
        end_date: '{{end_date}}'
      outputParameters:
      - name: gross_sales
        type: number
        mapping: $.data[0].GROSS_SALES
      - name: net_sales
        type: number
        mapping: $.data[0].NET_SALES
      - name: transaction_count
        type: integer
        mapping: $.data[0].TXN_COUNT
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://lowes.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: queries
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → snowflake-store-sales-query.yml

Remediates database performance issues by pulling Dynatrace metrics, analyzing slow queries in Splunk, and creating a ServiceNow change request for optimization.

naftiko: '0.5'
info:
  label: Database Performance Remediation
  description: Remediates database performance issues by pulling Dynatrace metrics, analyzing slow queries in Splunk, and creating a ServiceNow change request for optimization.
  tags:
  - infrastructure
  - dynatrace
  - splunk
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: dba-ops
    port: 8080
    tools:
    - name: remediate-db-performance
      description: Given a database host ID, pull Dynatrace metrics, find Splunk slow queries, and create ServiceNow change request.
      inputParameters:
      - name: host_id
        type: string
        description: Dynatrace host entity ID for the database server.
      steps:
      - name: get-db-metrics
        type: call
        call: dynatrace.get-host
        with:
          host_id: '{{host_id}}'
      - name: find-slow-queries
        type: call
        call: splunk.run-search
        with:
          query: index=database host={{host_id}} duration>5000 | top query_text
          time_range: -24h
      - name: create-change
        type: call
        call: servicenow.create-change
        with:
          short_description: 'DB optimization: {{get-db-metrics.display_name}}'
          description: 'CPU: {{get-db-metrics.cpu_usage}}%, Top slow queries: {{find-slow-queries.event_count}}'
          assignment_group: Database_Administration
  consumes:
  - type: http
    namespace: dynatrace
    baseUri: https://lowes.live.dynatrace.com/api/v2
    authentication:
      type: bearer
      token: $secrets.dynatrace_token
    resources:
    - name: entities
      path: /entities/{{host_id}}
      inputParameters:
      - name: host_id
        in: path
      operations:
      - name: get-host
        method: GET
  - type: http
    namespace: splunk
    baseUri: https://lowes-splunk.splunkcloud.com:8089/services
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - name: searches
      path: /search/jobs
      operations:
      - name: run-search
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://lowes.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
Open in Framework → View in Fleet → database-performance-remediation.yml

Extracts cost center budget vs. actuals from SAP S/4HANA and pushes the variance data to Power BI for retail finance reporting.

naftiko: '0.5'
info:
  label: SAP Budget vs Actuals Reporting
  description: Extracts cost center budget vs. actuals from SAP S/4HANA and pushes the variance data to Power BI for retail finance reporting.
  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 and push rows to the Power BI finance dashboard dataset.
      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-actuals
        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_finance_dataset_id
          tableName: BudgetVariance
          rows: '{{get-actuals.rows}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://lowes-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
Open in Framework → View in Fleet → sap-budget-vs-actuals-reporting.yml

Tracks marketing campaign ROI by pulling Adobe Analytics conversion data, HubSpot email metrics, and publishing the report to a Snowflake analytics table.

naftiko: '0.5'
info:
  label: Digital Marketing Campaign ROI Tracker
  description: Tracks marketing campaign ROI by pulling Adobe Analytics conversion data, HubSpot email metrics, and publishing the report to a Snowflake analytics table.
  tags:
  - marketing
  - adobe-analytics
  - hubspot
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: marketing-ops
    port: 8080
    tools:
    - name: track-campaign-roi
      description: Given a campaign ID and date range, pull Adobe Analytics conversions, HubSpot email performance, and store ROI metrics in Snowflake.
      inputParameters:
      - name: campaign_id
        type: string
        description: Marketing campaign ID.
      - name: start_date
        type: string
        description: Campaign start date in YYYY-MM-DD format.
      - name: end_date
        type: string
        description: Campaign end date in YYYY-MM-DD format.
      steps:
      - name: get-conversions
        type: call
        call: adobe.get-report
        with:
          campaign_id: '{{campaign_id}}'
          date_range: '{{start_date}}/{{end_date}}'
      - name: get-email-metrics
        type: call
        call: hubspot.get-campaign-metrics
        with:
          campaign_id: '{{campaign_id}}'
      - name: store-roi
        type: call
        call: snowflake.run-query
        with:
          statement: INSERT INTO CAMPAIGN_ROI VALUES ('{{campaign_id}}', {{get-conversions.revenue}}, {{get-email-metrics.open_rate}}, {{get-email-metrics.click_rate}}, CURRENT_TIMESTAMP())
  consumes:
  - type: http
    namespace: adobe
    baseUri: https://analytics.adobe.io/api/lowes
    authentication:
      type: bearer
      token: $secrets.adobe_analytics_token
    resources:
    - name: reports
      path: /reports
      operations:
      - name: get-report
        method: POST
  - 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-metrics
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://lowes.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → digital-marketing-campaign-roi-tracker.yml

Searches SharePoint Online for store operations documents matching a keyword query.

naftiko: '0.5'
info:
  label: SharePoint Store Document Search
  description: Searches SharePoint Online for store operations documents matching a keyword query.
  tags:
  - document-management
  - sharepoint
  - store-ops
capability:
  exposes:
  - type: mcp
    namespace: documents
    port: 8080
    tools:
    - name: search-store-docs
      description: Search SharePoint for store operations documents by keyword. Returns matching file names, URLs, and authors.
      inputParameters:
      - name: query
        type: string
        description: Search keyword or phrase.
      call: sharepoint.search
      with:
        query: '{{query}}'
      outputParameters:
      - name: results
        type: array
        mapping: $.value
      - name: total_count
        type: integer
        mapping: $.totalCount
  consumes:
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites/lowes.sharepoint.com
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: search
      path: /drive/root/search(q='{{query}}')
      inputParameters:
      - name: query
        in: query
      operations:
      - name: search
        method: GET
Open in Framework → View in Fleet → sharepoint-store-document-search.yml

Manages cross-dock replenishment by checking store inventory levels in SAP, creating transfer orders in Oracle, and notifying the logistics team via Teams.

naftiko: '0.5'
info:
  label: Cross-Dock Replenishment Orchestrator
  description: Manages cross-dock replenishment by checking store inventory levels in SAP, creating transfer orders in Oracle, and notifying the logistics team via Teams.
  tags:
  - supply-chain
  - sap
  - oracle
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: logistics
    port: 8080
    tools:
    - name: trigger-cross-dock-replenishment
      description: Given a store and material, check SAP stock levels, create Oracle transfer orders for low-stock items, and notify logistics.
      inputParameters:
      - name: store_number
        type: string
        description: Destination store number.
      - name: material_number
        type: string
        description: SAP material number.
      steps:
      - name: check-stock
        type: call
        call: sap.get-stock-level
        with:
          material_number: '{{material_number}}'
          plant: '{{store_number}}'
      - name: create-transfer
        type: call
        call: oracle.create-transfer-order
        with:
          item: '{{material_number}}'
          from_org: DC_CENTRAL
          to_org: '{{store_number}}'
          quantity: '{{check-stock.reorder_quantity}}'
      - name: notify-logistics
        type: call
        call: msteams.send-message
        with:
          channel_id: logistics-ops
          text: 'Cross-dock replenishment initiated: {{material_number}} qty {{check-stock.reorder_quantity}} to Store {{store_number}}. Transfer: {{create-transfer.order_number}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://lowes-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-stock-level
        method: GET
  - type: http
    namespace: oracle
    baseUri: https://lowes-oracle.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: basic
      username: $secrets.oracle_user
      password: $secrets.oracle_password
    resources:
    - name: transfers
      path: /transferOrders
      operations:
      - name: create-transfer-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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → cross-dock-replenishment-orchestrator.yml

When a safety incident is reported, creates a ServiceNow incident, notifies the district safety manager via Teams, and logs the event in Workday for the affected associate.

naftiko: '0.5'
info:
  label: Store Safety Incident Response
  description: When a safety incident is reported, creates a ServiceNow incident, notifies the district safety manager via Teams, and logs the event in Workday for the affected associate.
  tags:
  - store-ops
  - servicenow
  - microsoft-teams
  - workday
capability:
  exposes:
  - type: mcp
    namespace: safety-ops
    port: 8080
    tools:
    - name: handle-safety-incident
      description: Given incident details and employee ID, create a ServiceNow safety ticket, send Teams notification to safety team, and log the incident in Workday.
      inputParameters:
      - name: employee_id
        type: string
        description: Workday worker ID of affected associate.
      - name: store_number
        type: string
        description: Store number where incident occurred.
      - name: incident_description
        type: string
        description: Description of the safety incident.
      steps:
      - name: get-worker
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{employee_id}}'
      - name: create-safety-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Safety incident: {{incident_description}} — Store {{store_number}}'
          category: safety
          priority: '1'
          assignment_group: EHS_Safety
      - name: notify-safety-manager
        type: call
        call: msteams.send-message
        with:
          channel_id: district-safety
          text: 'Safety incident at Store {{store_number}} involving {{get-worker.full_name}}: {{incident_description}}. Ticket: {{create-safety-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: /lowes/workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://lowes.service-now.com/api/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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → store-safety-incident-response.yml

Retrieves vendor master data from SAP by vendor number, returning company name, payment terms, and purchasing group.

naftiko: '0.5'
info:
  label: SAP Vendor Master Lookup
  description: Retrieves vendor master data from SAP by vendor number, returning company name, payment terms, and purchasing group.
  tags:
  - procurement
  - sap
  - supply-chain
capability:
  exposes:
  - type: mcp
    namespace: erp
    port: 8080
    tools:
    - name: get-vendor-master
      description: Look up SAP vendor master by vendor number. Returns vendor name, payment terms, and purchasing organization.
      inputParameters:
      - name: vendor_number
        type: string
        description: SAP vendor account number.
      call: sap.get-vendor
      with:
        vendor_number: '{{vendor_number}}'
      outputParameters:
      - name: vendor_name
        type: string
        mapping: $.d.SupplierName
      - name: payment_terms
        type: string
        mapping: $.d.PaymentTerms
      - name: purchasing_org
        type: string
        mapping: $.d.PurchasingOrganization
  consumes:
  - type: http
    namespace: sap
    baseUri: https://lowes-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_number}}')
      inputParameters:
      - name: vendor_number
        in: path
      operations:
      - name: get-vendor
        method: GET
Open in Framework → View in Fleet → sap-vendor-master-lookup.yml

Validates a vendor invoice against the SAP purchase order and goods receipt, then routes discrepancies to an approver via ServiceNow and Teams.

naftiko: '0.5'
info:
  label: Vendor Invoice Three-Way Match
  description: Validates a vendor invoice against the SAP purchase order and goods receipt, then routes discrepancies to an approver via ServiceNow and Teams.
  tags:
  - finance
  - procurement
  - sap
  - servicenow
  - approval
capability:
  exposes:
  - type: mcp
    namespace: ap-ops
    port: 8080
    tools:
    - name: validate-invoice
      description: Given a vendor invoice number and SAP PO number, perform three-way match in SAP, create a ServiceNow task for any discrepancy, and notify the AP manager via Teams.
      inputParameters:
      - name: invoice_number
        type: string
        description: Vendor invoice number.
      - name: po_number
        type: string
        description: Associated SAP purchase order number.
      - name: ap_manager_upn
        type: string
        description: UPN of the accounts payable manager for escalation.
      steps:
      - name: get-po
        type: call
        call: sap.get-po
        with:
          po_number: '{{po_number}}'
      - name: create-discrepancy-task
        type: call
        call: servicenow.create-task
        with:
          short_description: 'Invoice discrepancy: {{invoice_number}} vs PO {{po_number}}'
          assigned_to: '{{ap_manager_upn}}'
          description: 'PO status: {{get-po.status}}, PO amount: {{get-po.total_value}} {{get-po.currency}}'
      - name: notify-ap-manager
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{ap_manager_upn}}'
          text: 'Invoice {{invoice_number}} requires review — PO {{po_number}} has discrepancies. ServiceNow: {{create-discrepancy-task.number}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://lowes-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://lowes.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
Open in Framework → View in Fleet → vendor-invoice-three-way-match.yml

Retrieves branch protection rules for a GitHub repository, returning required reviews and status checks.

naftiko: '0.5'
info:
  label: GitHub Repository Branch Protection
  description: Retrieves branch protection rules for a GitHub repository, returning required reviews and status checks.
  tags:
  - devops
  - github
  - security
capability:
  exposes:
  - type: mcp
    namespace: devops
    port: 8080
    tools:
    - name: get-branch-protection
      description: Look up GitHub branch protection rules for a repository and branch. Returns required review count and status check requirements.
      inputParameters:
      - name: repo_name
        type: string
        description: GitHub repository name (org/repo format).
      - name: branch
        type: string
        description: Branch name (e.g., main).
      call: github.get-protection
      with:
        repo_name: '{{repo_name}}'
        branch: '{{branch}}'
      outputParameters:
      - 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/{{branch}}/protection
      inputParameters:
      - name: repo_name
        in: path
      - name: branch
        in: path
      operations:
      - name: get-protection
        method: GET
Open in Framework → View in Fleet → github-repository-branch-protection.yml

Enriches new Salesforce pro contractor leads with company firmographic data from ZoomInfo and updates the lead record.

naftiko: '0.5'
info:
  label: Salesforce Pro Contractor Lead Enrichment
  description: Enriches new Salesforce pro contractor leads with company firmographic data from ZoomInfo and updates the lead record.
  tags:
  - crm
  - sales
  - salesforce
  - zoominfo
  - lead-enrichment
capability:
  exposes:
  - type: mcp
    namespace: pro-sales
    port: 8080
    tools:
    - name: enrich-pro-lead
      description: Given a Salesforce lead ID for a pro contractor account, fetch firmographic data from ZoomInfo and update the lead with employee count, revenue, and industry classification.
      inputParameters:
      - name: lead_id
        type: string
        description: Salesforce lead record ID (18-character).
      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:
          company_name: '{{get-lead.Company}}'
          domain: '{{get-lead.Website}}'
      - name: update-lead
        type: call
        call: salesforce-update.update-lead
        with:
          lead_id: '{{lead_id}}'
          NumberOfEmployees: '{{enrich-company.employeeCount}}'
          AnnualRevenue: '{{enrich-company.revenue}}'
          Industry: '{{enrich-company.industry}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://lowes.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://lowes.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
Open in Framework → View in Fleet → salesforce-pro-contractor-lead-enrichment.yml

Uses Anthropic Claude to classify and summarize customer complaints from Salesforce Service Cloud, routing them to the appropriate ServiceNow queue based on category.

naftiko: '0.5'
info:
  label: AI-Assisted Customer Complaint Triage
  description: Uses Anthropic Claude to classify and summarize customer complaints from Salesforce Service Cloud, routing them to the appropriate ServiceNow queue based on category.
  tags:
  - customer-support
  - ai
  - salesforce
  - servicenow
  - anthropic
capability:
  exposes:
  - type: mcp
    namespace: cx-triage
    port: 8080
    tools:
    - name: triage-customer-complaint
      description: Given a Salesforce Service Cloud case ID, retrieve case details, classify and summarize using Anthropic Claude, and create a routed ServiceNow incident with the AI-generated 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 severity and summarize this customer complaint: {{get-case.Description}}'
      - name: create-routed-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Customer complaint: {{get-case.Subject}}'
          description: 'AI summary: {{classify-complaint.content}}'
          category: customer_experience
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://lowes.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://lowes.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → ai-assisted-customer-complaint-triage.yml

Creates a ServiceNow change request for a planned system change, routes to the CAB for approval, and notifies the requester via Teams.

naftiko: '0.5'
info:
  label: ServiceNow Change Request Approval
  description: Creates a ServiceNow change request for a planned system change, routes to the CAB for approval, and notifies the requester via Teams.
  tags:
  - itsm
  - change-management
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: itsm
    port: 8080
    tools:
    - name: submit-change-request
      description: Given a change description, risk level, and planned date, create a ServiceNow change request assigned to the Change Advisory Board and notify the requester via Teams.
      inputParameters:
      - name: short_description
        type: string
        description: Brief description of the planned change.
      - name: risk
        type: string
        description: 'Risk level: low, medium, or high.'
      - name: implementation_date
        type: string
        description: Planned implementation date in YYYY-MM-DD format.
      - name: requester_upn
        type: string
        description: UPN of the change requester.
      steps:
      - name: create-change
        type: call
        call: servicenow.create-change
        with:
          short_description: '{{short_description}}'
          risk: '{{risk}}'
          start_date: '{{implementation_date}}'
          assignment_group: CAB
      - name: notify-requester
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{requester_upn}}'
          text: 'Change request {{create-change.number}} submitted and assigned to CAB. Risk: {{risk}}, Planned date: {{implementation_date}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://lowes.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.msgraph_token
    resources:
    - name: chats
      path: /chats
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → servicenow-change-request-approval.yml

Schedules preventive maintenance for store equipment by querying the asset registry in ServiceNow, creating work orders, and notifying the facilities team via Teams.

naftiko: '0.5'
info:
  label: Store Equipment Maintenance Scheduler
  description: Schedules preventive maintenance for store equipment by querying the asset registry in ServiceNow, creating work orders, and notifying the facilities team via Teams.
  tags:
  - store-ops
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: facilities
    port: 8080
    tools:
    - name: schedule-equipment-maintenance
      description: Given a store number and equipment type, look up ServiceNow assets due for maintenance, create work orders, and notify the facilities team.
      inputParameters:
      - name: store_number
        type: string
        description: Store number.
      - name: equipment_type
        type: string
        description: Equipment type (forklift, hvac, compressor, lighting).
      steps:
      - name: get-assets
        type: call
        call: servicenow.get-assets
        with:
          store: '{{store_number}}'
          type: '{{equipment_type}}'
          maintenance_due: 'true'
      - name: create-work-order
        type: call
        call: servicenow.create-work-order
        with:
          short_description: 'Preventive maintenance: {{equipment_type}} — Store {{store_number}}'
          asset_list: '{{get-assets.results}}'
          assignment_group: Facilities_Maintenance
      - name: notify-facilities
        type: call
        call: msteams.send-message
        with:
          channel_id: facilities-maintenance
          text: 'Maintenance scheduled for {{get-assets.count}} {{equipment_type}} units at Store {{store_number}}. Work order: {{create-work-order.number}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://lowes.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: assets
      path: /table/alm_asset
      operations:
      - name: get-assets
        method: GET
    - 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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → store-equipment-maintenance-scheduler.yml

When a GitHub release is tagged, generates release notes with Anthropic Claude and posts them to Confluence and the engineering Teams channel.

naftiko: '0.5'
info:
  label: GitHub Release Notes Publisher
  description: When a GitHub release is tagged, generates release notes with Anthropic Claude and posts them to Confluence and the engineering Teams channel.
  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 repository and release tag, retrieve the release body, generate polished release notes with Anthropic Claude, publish to Confluence, and announce in 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., v2.1.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: 'Write professional release notes for an internal engineering audience based on: {{get-release.body}}'
      - name: publish-confluence
        type: call
        call: confluence.create-page
        with:
          space_key: ENG
          title: Release {{tag}} — {{repo_name}}
          content: '{{generate-notes.content}}'
      - name: announce-teams
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: '{{teams_channel_id}}'
          text: 'Release {{tag}} published for {{repo_name}}. Confluence: {{publish-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://lowes.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
Open in Framework → View in Fleet → github-release-notes-publisher.yml

Escalates customer complaints by looking up the Salesforce case, pulling order details from BigCommerce, and creating a high-priority ServiceNow ticket for resolution.

naftiko: '0.5'
info:
  label: Customer Complaint Escalation Workflow
  description: Escalates customer complaints by looking up the Salesforce case, pulling order details from BigCommerce, and creating a high-priority ServiceNow ticket for resolution.
  tags:
  - e-commerce
  - salesforce
  - bigcommerce
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: customer-service
    port: 8080
    tools:
    - name: escalate-complaint
      description: Given a Salesforce case ID, pull case and order details, and create a priority ServiceNow resolution ticket.
      inputParameters:
      - name: case_id
        type: string
        description: Salesforce case ID.
      steps:
      - name: get-case
        type: call
        call: salesforce.get-case
        with:
          case_id: '{{case_id}}'
      - name: get-order
        type: call
        call: bigcommerce.get-order
        with:
          order_number: '{{get-case.order_number}}'
      - name: create-escalation
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Escalated complaint: {{get-case.subject}}'
          category: customer_service
          priority: '2'
          description: 'Order: {{get-case.order_number}}, Total: ${{get-order.total_inc_tax}}, Customer: {{get-case.contact_email}}'
          assignment_group: Customer_Resolution
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://lowes.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: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/lowes
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: orders
      path: /v2/orders/{{order_number}}
      inputParameters:
      - name: order_number
        in: path
      operations:
      - name: get-order
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://lowes.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → customer-complaint-escalation-workflow.yml

Generates a project quote for Pro contractors by pulling product pricing from BigCommerce, checking bulk availability in Oracle, and creating the quote in Salesforce.

naftiko: '0.5'
info:
  label: Contractor Project Quote Generator
  description: Generates a project quote for Pro contractors by pulling product pricing from BigCommerce, checking bulk availability in Oracle, and creating the quote in Salesforce.
  tags:
  - e-commerce
  - bigcommerce
  - oracle
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: pro-services
    port: 8080
    tools:
    - name: generate-project-quote
      description: Given a list of SKUs and quantities, fetch BigCommerce pricing, check Oracle bulk availability, and create a Salesforce quote.
      inputParameters:
      - name: account_id
        type: string
        description: Salesforce Pro account ID.
      - name: sku_list
        type: string
        description: Comma-separated list of product SKUs.
      - name: quantities
        type: string
        description: Comma-separated quantities matching SKU list.
      steps:
      - name: get-pricing
        type: call
        call: bigcommerce.get-bulk-pricing
        with:
          skus: '{{sku_list}}'
      - name: check-availability
        type: call
        call: oracle.get-bulk-onhand
        with:
          items: '{{sku_list}}'
          org_code: DC01
      - name: create-quote
        type: call
        call: salesforce.create-quote
        with:
          account_id: '{{account_id}}'
          line_items: '{{get-pricing.items}}'
          availability: '{{check-availability.results}}'
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/lowes
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: pricing
      path: /v3/catalog/products
      operations:
      - name: get-bulk-pricing
        method: GET
  - type: http
    namespace: oracle
    baseUri: https://lowes-oracle.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: basic
      username: $secrets.oracle_user
      password: $secrets.oracle_password
    resources:
    - name: inventory
      path: /inventoryBalances
      operations:
      - name: get-bulk-onhand
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://lowes.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: quotes
      path: /sobjects/Quote
      operations:
      - name: create-quote
        method: POST
Open in Framework → View in Fleet → contractor-project-quote-generator.yml

Optimizes inventory reorder points by analyzing Snowflake demand patterns, updating SAP safety stock levels, and creating Oracle replenishment orders.

naftiko: '0.5'
info:
  label: Inventory Reorder Point Optimization
  description: Optimizes inventory reorder points by analyzing Snowflake demand patterns, updating SAP safety stock levels, and creating Oracle replenishment orders.
  tags:
  - inventory
  - snowflake
  - sap
  - oracle
capability:
  exposes:
  - type: mcp
    namespace: inventory-ops
    port: 8080
    tools:
    - name: optimize-reorder-points
      description: Given a product category, analyze Snowflake demand, update SAP safety stock, and trigger Oracle replenishment.
      inputParameters:
      - name: category_code
        type: string
        description: Product category code.
      - name: service_level
        type: number
        description: Target service level (e.g., 0.95).
      steps:
      - name: analyze-demand
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT sku, avg_daily_demand, demand_std_dev FROM DEMAND_ANALYSIS WHERE category='{{category_code}}'
      - name: update-safety-stock
        type: call
        call: sap.update-mrp
        with:
          category: '{{category_code}}'
          service_level: '{{service_level}}'
          demand_data: '{{analyze-demand.results}}'
      - name: create-replenishment
        type: call
        call: oracle.create-replenishment
        with:
          category: '{{category_code}}'
          items: '{{analyze-demand.results}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://lowes.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://lowes-s4.sap.com/sap/opu/odata/sap/API_MRP_MATERIALS_SRV_01
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: mrp
      path: /A_MRPMaterial
      operations:
      - name: update-mrp
        method: PATCH
  - type: http
    namespace: oracle
    baseUri: https://lowes-oracle.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: basic
      username: $secrets.oracle_user
      password: $secrets.oracle_password
    resources:
    - name: replenishment
      path: /replenishmentOrders
      operations:
      - name: create-replenishment
        method: POST
Open in Framework → View in Fleet → inventory-reorder-point-optimization.yml

Responds to severe weather events by checking affected store inventory in SAP, adjusting staffing in Workday, and posting operational alerts to Teams.

naftiko: '0.5'
info:
  label: Store Weather Impact Response
  description: Responds to severe weather events by checking affected store inventory in SAP, adjusting staffing in Workday, and posting operational alerts to Teams.
  tags:
  - store-ops
  - sap
  - workday
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: emergency-ops
    port: 8080
    tools:
    - name: respond-weather-impact
      description: Given a region and weather event type, check SAP emergency inventory, adjust Workday staffing, and post Teams alerts.
      inputParameters:
      - name: region
        type: string
        description: Affected geographic region.
      - name: event_type
        type: string
        description: Weather event (hurricane, blizzard, flood, tornado).
      - name: affected_stores
        type: string
        description: Comma-separated store numbers.
      steps:
      - name: check-emergency-stock
        type: call
        call: sap.get-emergency-inventory
        with:
          region: '{{region}}'
          category: emergency_supplies
      - name: adjust-staffing
        type: call
        call: workday.update-schedule
        with:
          stores: '{{affected_stores}}'
          mode: emergency
      - name: post-alert
        type: call
        call: msteams.send-message
        with:
          channel_id: operations-emergency
          text: 'Weather alert ({{event_type}}): {{region}}. Affected stores: {{affected_stores}}. Emergency stock: {{check-emergency-stock.available_units}} units. Staffing adjusted.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://lowes-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-emergency-inventory
        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: schedules
      path: /lowes/schedules
      operations:
      - name: update-schedule
        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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → store-weather-impact-response.yml

Manages installation service appointments by looking up the customer order in Salesforce, checking contractor availability in Workday, and confirming the appointment via HubSpot email.

naftiko: '0.5'
info:
  label: Installation Services Scheduling Pipeline
  description: Manages installation service appointments by looking up the customer order in Salesforce, checking contractor availability in Workday, and confirming the appointment via HubSpot email.
  tags:
  - e-commerce
  - salesforce
  - workday
  - hubspot
capability:
  exposes:
  - type: mcp
    namespace: install-services
    port: 8080
    tools:
    - name: schedule-installation
      description: Given an order ID and preferred date, look up the Salesforce order, find available Workday contractors, and send HubSpot confirmation email.
      inputParameters:
      - name: order_id
        type: string
        description: Salesforce order ID.
      - name: preferred_date
        type: string
        description: Preferred installation date in YYYY-MM-DD format.
      - name: service_type
        type: string
        description: Installation service type (flooring, appliance, roofing, fencing).
      steps:
      - name: get-order
        type: call
        call: salesforce.get-order
        with:
          order_id: '{{order_id}}'
      - name: find-contractor
        type: call
        call: workday.find-available-worker
        with:
          skill: '{{service_type}}'
          date: '{{preferred_date}}'
          region: '{{get-order.shipping_region}}'
      - name: send-confirmation
        type: call
        call: hubspot.send-email
        with:
          to: '{{get-order.customer_email}}'
          template_id: installation-confirmation
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://lowes.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
  - 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: /lowes/workers
      operations:
      - name: find-available-worker
        method: GET
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: emails
      path: /marketing/v3/transactional/single-email/send
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → installation-services-scheduling-pipeline.yml

When a new Pro customer enrolls in the loyalty program via Salesforce, provisions their rewards account, syncs to Snowflake analytics, and sends a welcome email via HubSpot.

naftiko: '0.5'
info:
  label: Loyalty Pro Rewards Enrollment Pipeline
  description: When a new Pro customer enrolls in the loyalty program via Salesforce, provisions their rewards account, syncs to Snowflake analytics, and sends a welcome email via HubSpot.
  tags:
  - loyalty
  - salesforce
  - snowflake
  - hubspot
capability:
  exposes:
  - type: mcp
    namespace: loyalty-ops
    port: 8080
    tools:
    - name: enroll-pro-rewards
      description: Given a Salesforce contact ID, create the Pro rewards profile, sync enrollment data to Snowflake, and trigger a HubSpot welcome email.
      inputParameters:
      - name: contact_id
        type: string
        description: Salesforce contact ID for the Pro customer.
      - name: rewards_tier
        type: string
        description: Initial rewards tier (silver, gold, platinum).
      steps:
      - name: get-contact
        type: call
        call: salesforce.get-contact
        with:
          contact_id: '{{contact_id}}'
      - name: sync-enrollment
        type: call
        call: snowflake.run-query
        with:
          statement: INSERT INTO PRO_REWARDS_ENROLLMENTS VALUES ('{{contact_id}}', '{{get-contact.email}}', '{{rewards_tier}}', CURRENT_TIMESTAMP())
      - name: send-welcome
        type: call
        call: hubspot.send-email
        with:
          to: '{{get-contact.email}}'
          template_id: pro-rewards-welcome
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://lowes.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: snowflake
    baseUri: https://lowes.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: hubspot
    baseUri: https://api.hubapi.com
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: emails
      path: /marketing/v3/transactional/single-email/send
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → loyalty-pro-rewards-enrollment-pipeline.yml

Generates general ledger balance reports by pulling SAP GL data, enriching with Snowflake cost allocations, and publishing to SharePoint.

naftiko: '0.5'
info:
  label: SAP GL Account Balance Report
  description: Generates general ledger balance reports by pulling SAP GL data, enriching with Snowflake cost allocations, and publishing to SharePoint.
  tags:
  - procurement
  - sap
  - snowflake
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: finance-ops
    port: 8080
    tools:
    - name: generate-gl-report
      description: Given a company code and period, pull SAP GL balances, enrich with Snowflake allocations, and upload to SharePoint.
      inputParameters:
      - name: company_code
        type: string
        description: SAP company code.
      - name: fiscal_period
        type: string
        description: Fiscal period (e.g., 2026-03).
      steps:
      - name: get-gl-balances
        type: call
        call: sap.get-gl-balances
        with:
          company_code: '{{company_code}}'
          period: '{{fiscal_period}}'
      - name: get-allocations
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT gl_account, allocation_pct, cost_center FROM COST_ALLOCATIONS WHERE company='{{company_code}}' AND period='{{fiscal_period}}'
      - name: upload-report
        type: call
        call: sharepoint.upload-file
        with:
          folder: /Finance Reports/GL/{{fiscal_period}}
          filename: '{{company_code}}_gl_report.xlsx'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://lowes-s4.sap.com/sap/opu/odata/sap/API_GLACCOUNTBALANCE_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: gl-balances
      path: /A_GLAccountBalance
      operations:
      - name: get-gl-balances
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://lowes.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: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites/lowes.sharepoint.com
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: drive
      path: /drive/root:/{{folder}}/{{filename}}:/content
      operations:
      - name: upload-file
        method: PUT
Open in Framework → View in Fleet → sap-gl-account-balance-report.yml

Generates Pro account spend analysis by pulling Salesforce account data, Snowflake purchase history, and delivering the report via HubSpot email.

naftiko: '0.5'
info:
  label: Pro Account Spend Analysis
  description: Generates Pro account spend analysis by pulling Salesforce account data, Snowflake purchase history, and delivering the report via HubSpot email.
  tags:
  - loyalty
  - salesforce
  - snowflake
  - hubspot
capability:
  exposes:
  - type: mcp
    namespace: pro-services
    port: 8080
    tools:
    - name: generate-spend-analysis
      description: Given a Pro account ID and period, pull Salesforce account, Snowflake spending data, and email the report via HubSpot.
      inputParameters:
      - name: account_id
        type: string
        description: Salesforce Pro account ID.
      - name: period
        type: string
        description: Analysis period (e.g., 2026-Q1).
      steps:
      - name: get-account
        type: call
        call: salesforce.get-account
        with:
          account_id: '{{account_id}}'
      - name: get-spending
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT category, total_spend, order_count FROM PRO_SPEND WHERE account_id='{{account_id}}' AND period='{{period}}'
      - name: send-report
        type: call
        call: hubspot.send-email
        with:
          to: '{{get-account.email}}'
          template_id: pro-spend-report
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://lowes.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /sobjects/Account/{{account_id}}
      inputParameters:
      - name: account_id
        in: path
      operations:
      - name: get-account
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://lowes.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: hubspot
    baseUri: https://api.hubapi.com
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: emails
      path: /marketing/v3/transactional/single-email/send
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → pro-account-spend-analysis.yml

Retrieves pending expense reports from SAP Concur for a cost center and routes high-value reports to the manager for approval via Teams.

naftiko: '0.5'
info:
  label: SAP Concur Expense Report Review
  description: Retrieves pending expense reports from SAP Concur for a cost center and routes high-value reports to the manager for approval via Teams.
  tags:
  - finance
  - expense-management
  - sap-concur
  - microsoft-teams
  - approval
capability:
  exposes:
  - type: mcp
    namespace: expense-ops
    port: 8080
    tools:
    - name: review-pending-expenses
      description: Retrieve pending expense reports from SAP Concur for a given cost center. Flag reports above the policy threshold and send approval requests to the submitter's manager via Teams.
      inputParameters:
      - name: cost_center
        type: string
        description: Cost center code to retrieve pending expense reports for.
      - name: threshold_usd
        type: number
        description: Policy threshold in USD above which manager approval is required.
      steps:
      - name: get-reports
        type: call
        call: concur.list-expense-reports
        with:
          costCenter: '{{cost_center}}'
          approvalStatus: pending
      - name: notify-manager
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-reports.managerEmail}}'
          text: Expense reports pending approval for cost center {{cost_center}} — reports above ${{threshold_usd}} require your 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
      inputParameters:
      - name: costCenter
        in: query
      - name: approvalStatus
        in: query
      operations:
      - name: list-expense-reports
        method: GET
  - 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
Open in Framework → View in Fleet → sap-concur-expense-report-review.yml

Manages new product introductions by creating the material master in SAP, publishing the product listing on BigCommerce, and notifying merchandising via Teams.

naftiko: '0.5'
info:
  label: New Product Introduction Workflow
  description: Manages new product introductions by creating the material master in SAP, publishing the product listing on BigCommerce, and notifying merchandising via Teams.
  tags:
  - inventory
  - sap
  - bigcommerce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: merchandising
    port: 8080
    tools:
    - name: introduce-new-product
      description: Given product details, create SAP material master, publish BigCommerce listing, and notify the merchandising team.
      inputParameters:
      - name: product_name
        type: string
        description: New product name.
      - name: category_code
        type: string
        description: Product category code.
      - name: price
        type: number
        description: Retail price in USD.
      steps:
      - name: create-material
        type: call
        call: sap.create-material
        with:
          description: '{{product_name}}'
          category: '{{category_code}}'
      - name: create-listing
        type: call
        call: bigcommerce.create-product
        with:
          name: '{{product_name}}'
          sku: '{{create-material.material_number}}'
          price: '{{price}}'
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          channel_id: merchandising-new-products
          text: 'New product launched: {{product_name}} (SKU: {{create-material.material_number}}) at ${{price}}. BigCommerce listing: {{create-listing.url}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://lowes-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: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/lowes
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: products
      path: /v3/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: channels
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → new-product-introduction-workflow.yml

Looks up a Salesforce lead by ID, returning current status, lead source, and assigned owner.

naftiko: '0.5'
info:
  label: Salesforce Lead Status Lookup
  description: Looks up a Salesforce lead by ID, returning current status, lead source, and assigned owner.
  tags:
  - sales
  - salesforce
  - crm
capability:
  exposes:
  - type: mcp
    namespace: crm
    port: 8080
    tools:
    - name: get-lead-status
      description: Look up a Salesforce lead record by lead ID. Returns status, source, and owner name.
      inputParameters:
      - name: lead_id
        type: string
        description: Salesforce lead record ID.
      call: salesforce.get-lead
      with:
        lead_id: '{{lead_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.Status
      - name: lead_source
        type: string
        mapping: $.LeadSource
      - name: owner_name
        type: string
        mapping: $.Owner.Name
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://lowes.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: leads
      path: /sobjects/Lead/{{lead_id}}
      inputParameters:
      - name: lead_id
        in: path
      operations:
      - name: get-lead
        method: GET
Open in Framework → View in Fleet → salesforce-lead-status-lookup.yml

Fetches completed Jira sprint issues and story points and posts a velocity digest to the engineering Teams channel.

naftiko: '0.5'
info:
  label: Jira Sprint Velocity Summary
  description: Fetches completed Jira sprint issues and story points 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 total 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}} closed — {{get-sprint-issues.totalPoints}} story points delivered across {{get-sprint-issues.issueCount}} issues.
  consumes:
  - type: http
    namespace: jira
    baseUri: https://lowes.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
Open in Framework → View in Fleet → jira-sprint-velocity-summary.yml

Looks up a purchase order in SAP S/4HANA by PO number and returns current approval status, vendor, and line-item totals.

naftiko: '0.5'
info:
  label: SAP Purchase Order Status Lookup
  description: Looks up a purchase order in SAP S/4HANA by PO number and returns current approval status, vendor, and line-item totals.
  tags:
  - finance
  - procurement
  - sap
  - erp
capability:
  exposes:
  - type: mcp
    namespace: erp
    port: 8080
    tools:
    - name: get-purchase-order
      description: Look up an SAP purchase order by PO number. Returns header status, vendor name, total amount, and currency. Use for procurement approval workflows and spend tracking.
      inputParameters:
      - name: po_number
        type: string
        description: SAP purchase order number (10-digit numeric string).
      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://lowes-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
Open in Framework → View in Fleet → sap-purchase-order-status-lookup.yml

When a ServiceNow access request is approved, provisions the user's Okta group membership and updates the ticket to resolved.

naftiko: '0.5'
info:
  label: Okta Access Request Fulfillment
  description: When a ServiceNow access request is approved, provisions the user's Okta group membership and updates the ticket to resolved.
  tags:
  - identity
  - security
  - okta
  - servicenow
  - access-management
capability:
  exposes:
  - type: mcp
    namespace: identity-ops
    port: 8080
    tools:
    - name: fulfill-access-request
      description: Given an approved ServiceNow access request ticket, assign the user to the appropriate Okta group and mark the ticket resolved. Sends a confirmation via Teams.
      inputParameters:
      - name: snow_ticket_id
        type: string
        description: ServiceNow access request 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: confirm-user
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{user_email}}'
          text: 'Your access request has been fulfilled. You have been added to the requested system (group: {{okta_group_id}}).'
  consumes:
  - type: http
    namespace: okta
    baseUri: https://lowes.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://lowes.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
Open in Framework → View in Fleet → okta-access-request-fulfillment.yml

Queries Teradata for inventory aging data by product category, returning stock age buckets and total on-hand units.

naftiko: '0.5'
info:
  label: Teradata Inventory Aging Report
  description: Queries Teradata for inventory aging data by product category, returning stock age buckets and total on-hand units.
  tags:
  - inventory
  - teradata
  - supply-chain
capability:
  exposes:
  - type: mcp
    namespace: analytics
    port: 8080
    tools:
    - name: get-inventory-aging
      description: Query Teradata for inventory aging breakdown by category. Returns on-hand quantity and age distribution buckets.
      inputParameters:
      - name: category_code
        type: string
        description: Product category code.
      call: teradata.run-query
      with:
        category_code: '{{category_code}}'
      outputParameters:
      - name: total_on_hand
        type: integer
        mapping: $.results[0].total_on_hand
      - name: aging_buckets
        type: object
        mapping: $.results[0].age_distribution
  consumes:
  - type: http
    namespace: teradata
    baseUri: https://lowes-teradata.teradata.com/api/query/v1
    authentication:
      type: basic
      username: $secrets.teradata_user
      password: $secrets.teradata_password
    resources:
    - name: queries
      path: /systems/lowes_edw/queries
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → teradata-inventory-aging-report.yml

Checks the status of a Datadog synthetic monitor for store POS system uptime by monitor ID.

naftiko: '0.5'
info:
  label: Datadog Store POS Monitor Status
  description: Checks the status of a Datadog synthetic monitor for store POS system uptime by monitor ID.
  tags:
  - monitoring
  - datadog
  - store-ops
capability:
  exposes:
  - type: mcp
    namespace: monitoring
    port: 8080
    tools:
    - name: get-pos-monitor
      description: Check Datadog POS monitor status by monitor ID. Returns overall status, last triggered time, and affected stores.
      inputParameters:
      - name: monitor_id
        type: string
        description: 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
    resources:
    - name: monitors
      path: /monitor/{{monitor_id}}
      inputParameters:
      - name: monitor_id
        in: path
      operations:
      - name: get-monitor
        method: GET
Open in Framework → View in Fleet → datadog-store-pos-monitor-status.yml

Queries Oracle EBS for current inventory balance by item number and organization, returning on-hand and reserved quantities.

naftiko: '0.5'
info:
  label: Oracle Inventory Balance Query
  description: Queries Oracle EBS for current inventory balance by item number and organization, returning on-hand and reserved quantities.
  tags:
  - inventory
  - oracle
  - supply-chain
capability:
  exposes:
  - type: mcp
    namespace: inventory
    port: 8080
    tools:
    - name: get-inventory-balance
      description: Query Oracle EBS inventory balance by item and org. Returns on-hand quantity, reserved quantity, and available-to-promise.
      inputParameters:
      - name: item_number
        type: string
        description: Oracle item number.
      - name: org_code
        type: string
        description: Inventory organization code.
      call: oracle.get-onhand
      with:
        item_number: '{{item_number}}'
        org_code: '{{org_code}}'
      outputParameters:
      - name: on_hand
        type: number
        mapping: $.items[0].onHandQuantity
      - name: reserved
        type: number
        mapping: $.items[0].reservedQuantity
      - name: atp
        type: number
        mapping: $.items[0].availableToPromise
  consumes:
  - type: http
    namespace: oracle
    baseUri: https://lowes-oracle.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: basic
      username: $secrets.oracle_user
      password: $secrets.oracle_password
    resources:
    - name: inventory
      path: /inventoryBalances?q=ItemNumber={{item_number}};OrganizationCode={{org_code}}
      inputParameters:
      - name: item_number
        in: query
      - name: org_code
        in: query
      operations:
      - name: get-onhand
        method: GET
Open in Framework → View in Fleet → oracle-inventory-balance-query.yml

Triggers a Terraform Cloud workspace run to provision retail store infrastructure, creates a Jira tracking task, and notifies the DevOps team via Teams.

naftiko: '0.5'
info:
  label: Terraform Infrastructure Provisioning
  description: Triggers a Terraform Cloud workspace run to provision retail store infrastructure, creates a Jira tracking task, and notifies the DevOps team via Teams.
  tags:
  - cloud
  - devops
  - terraform
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: infra-provisioning
    port: 8080
    tools:
    - name: provision-store-infrastructure
      description: Given a Terraform Cloud workspace and change description, trigger an infrastructure run, create a Jira task to track it, and post status to the DevOps Teams channel.
      inputParameters:
      - name: workspace_id
        type: string
        description: Terraform Cloud workspace ID for the store infrastructure.
      - name: change_description
        type: string
        description: Description of the infrastructure change being applied.
      - name: teams_channel_id
        type: string
        description: DevOps Teams channel ID for status updates.
      steps:
      - name: create-run
        type: call
        call: terraform.create-run
        with:
          workspaceId: '{{workspace_id}}'
          message: '{{change_description}}'
      - name: create-task
        type: call
        call: jira.create-issue
        with:
          project_key: INFRA
          issuetype: Task
          summary: 'Terraform: {{change_description}}'
          description: 'Workspace: {{workspace_id}} | Run: {{create-run.runId}}'
      - name: notify-devops
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: '{{teams_channel_id}}'
          text: 'Infrastructure run triggered: {{change_description}} | 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://lowes.atlassian.net/rest/api/3
    authentication:
      type: 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
Open in Framework → View in Fleet → terraform-infrastructure-provisioning.yml

Processes customer returns by looking up the order in BigCommerce, issuing a refund via Salesforce, and updating inventory in SAP.

naftiko: '0.5'
info:
  label: Customer Return Processing Workflow
  description: Processes customer returns by looking up the order in BigCommerce, issuing a refund via Salesforce, and updating inventory in SAP.
  tags:
  - e-commerce
  - bigcommerce
  - salesforce
  - sap
capability:
  exposes:
  - type: mcp
    namespace: returns-ops
    port: 8080
    tools:
    - name: process-customer-return
      description: Given an order number and return reason, look up BigCommerce order, create Salesforce refund case, and adjust SAP inventory.
      inputParameters:
      - name: order_number
        type: string
        description: Original order number.
      - name: return_reason
        type: string
        description: Reason for return.
      - name: sku
        type: string
        description: Product SKU being returned.
      steps:
      - name: get-order
        type: call
        call: bigcommerce.get-order
        with:
          order_number: '{{order_number}}'
      - name: create-refund-case
        type: call
        call: salesforce.create-case
        with:
          subject: 'Return: Order {{order_number}} — {{return_reason}}'
          customer_email: '{{get-order.billing_address.email}}'
          amount: '{{get-order.total_inc_tax}}'
      - name: adjust-inventory
        type: call
        call: sap.post-goods-receipt
        with:
          material_number: '{{sku}}'
          quantity: '1'
          movement_type: '651'
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/lowes
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: orders
      path: /v2/orders/{{order_number}}
      inputParameters:
      - name: order_number
        in: path
      operations:
      - name: get-order
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://lowes.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://lowes-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
Open in Framework → View in Fleet → customer-return-processing-workflow.yml

When a cycle count discrepancy is detected in SAP, creates a ServiceNow investigation ticket, notifies the store manager via Teams, and updates the inventory adjustment log in Snowflake.

naftiko: '0.5'
info:
  label: Store Inventory Cycle Count Orchestrator
  description: When a cycle count discrepancy is detected in SAP, creates a ServiceNow investigation ticket, notifies the store manager via Teams, and updates the inventory adjustment log in Snowflake.
  tags:
  - inventory
  - sap
  - servicenow
  - microsoft-teams
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: inventory-ops
    port: 8080
    tools:
    - name: handle-cycle-count-discrepancy
      description: 'Given an SAP material number and store, orchestrate discrepancy resolution: look up SAP inventory, create a ServiceNow ticket, notify the store manager via Teams, and log the adjustment in Snowflake.'
      inputParameters:
      - name: material_number
        type: string
        description: SAP material number with discrepancy.
      - name: store_number
        type: string
        description: Store where discrepancy was found.
      - name: expected_qty
        type: integer
        description: Expected quantity from system.
      - name: actual_qty
        type: integer
        description: Actual counted quantity.
      steps:
      - name: get-material
        type: call
        call: sap.get-material
        with:
          material_number: '{{material_number}}'
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Cycle count discrepancy: {{get-material.description}} — Store {{store_number}}'
          category: inventory
          assignment_group: Store_Inventory
      - name: notify-manager
        type: call
        call: msteams.send-message
        with:
          channel_id: store-{{store_number}}-ops
          text: 'Inventory discrepancy for {{get-material.description}}: expected {{expected_qty}}, counted {{actual_qty}}. Ticket: {{create-ticket.number}}'
      - name: log-adjustment
        type: call
        call: snowflake.run-query
        with:
          statement: INSERT INTO INVENTORY_ADJUSTMENTS VALUES ('{{material_number}}', '{{store_number}}', {{expected_qty}}, {{actual_qty}}, CURRENT_TIMESTAMP())
  consumes:
  - type: http
    namespace: sap
    baseUri: https://lowes-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: servicenow
    baseUri: https://lowes.service-now.com/api/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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://lowes.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → store-inventory-cycle-count-orchestrator.yml

When a shipment delay is detected in Oracle, retrieves vendor details from SAP, creates a ServiceNow problem ticket, and notifies the supply chain team via Teams.

naftiko: '0.5'
info:
  label: Supply Chain Shipment Delay Escalation
  description: When a shipment delay is detected in Oracle, retrieves vendor details from SAP, creates a ServiceNow problem ticket, and notifies the supply chain team via Teams.
  tags:
  - supply-chain
  - oracle
  - sap
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: supply-chain-ops
    port: 8080
    tools:
    - name: escalate-shipment-delay
      description: Given a purchase order and shipment ID, look up Oracle shipment status, get SAP vendor info, create a ServiceNow escalation ticket, and notify the supply chain channel.
      inputParameters:
      - name: po_number
        type: string
        description: SAP purchase order number.
      - name: shipment_id
        type: string
        description: Oracle shipment tracking ID.
      steps:
      - name: get-po
        type: call
        call: sap.get-po
        with:
          po_number: '{{po_number}}'
      - name: get-shipment
        type: call
        call: oracle.get-shipment
        with:
          shipment_id: '{{shipment_id}}'
      - name: create-problem
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Shipment delay: PO {{po_number}} from {{get-po.vendor}} — ETA slipped'
          category: supply_chain
          priority: '2'
          assignment_group: Supply_Chain_Ops
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          channel_id: supply-chain-alerts
          text: 'Shipment {{shipment_id}} for PO {{po_number}} ({{get-po.vendor}}) is delayed. Ticket: {{create-problem.number}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://lowes-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: oracle
    baseUri: https://lowes-oracle.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: basic
      username: $secrets.oracle_user
      password: $secrets.oracle_password
    resources:
    - name: shipments
      path: /shipments/{{shipment_id}}
      inputParameters:
      - name: shipment_id
        in: path
      operations:
      - name: get-shipment
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://lowes.service-now.com/api/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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → supply-chain-shipment-delay-escalation.yml

Queries promo data for Macy's.

naftiko: '0.5'
info:
  label: Snowflake Promo Performance
  description: Queries promo data for Macy's.
  tags:
  - analytics
  - snowflake
  - e-commerce
capability:
  exposes:
  - type: mcp
    namespace: analytics
    port: 8080
    tools:
    - name: get-promo
      description: Query promos.
      inputParameters:
      - name: promo
        type: string
        description: Promo ID.
      call: snowflake.run-query
      with:
        promo: '{{promo}}'
      outputParameters:
      - name: redemptions
        type: integer
        mapping: $.data[0].REDEMPTIONS
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → snowflake-promo-performance.yml

Orchestrates labor schedule optimizer for Macy's across store-ops, snowflake, workday.

naftiko: '0.5'
info:
  label: Labor Schedule Optimizer
  description: Orchestrates labor schedule optimizer for Macy's across store-ops, snowflake, workday.
  tags:
  - store-ops
  - snowflake
  - workday
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: workforce
    port: 8080
    tools:
    - name: labor-schedule-optimizer
      description: Orchestrates labor schedule optimizer for Macy's across store-ops, snowflake, workday.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: query-data
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT * FROM LABOR_SCHEDULE_OPTIMIZER
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Labor Schedule Optimizer done.
      - name: get-hr
        type: call
        call: workday.get-workers
        with:
          store: '{{store_id}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        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: /macys/workers
      operations:
      - name: get-workers
        method: GET
Open in Framework → View in Fleet → labor-schedule-optimizer.yml

Gets PO items for Macy's.

naftiko: '0.5'
info:
  label: SAP PO Items
  description: Gets PO items for Macy's.
  tags:
  - procurement
  - sap
  - supply-chain
capability:
  exposes:
  - type: mcp
    namespace: erp
    port: 8080
    tools:
    - name: get-po-items
      description: Get PO items.
      inputParameters:
      - name: po
        type: string
        description: PO.
      call: sap.get-items
      with:
        po: '{{po}}'
      outputParameters:
      - name: items
        type: array
        mapping: $.d.results
  consumes:
  - type: http
    namespace: sap
    baseUri: https://macys-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: items
      path: /A_PurchaseOrder('{{po}}')/to_PurchaseOrderItem
      inputParameters:
      - name: po
        in: path
      operations:
      - name: get-items
        method: GET
Open in Framework → View in Fleet → sap-po-items.yml

Checks vendor contract compliance for Macy's by pulling SAP contract data, analyzing Snowflake spend, and creating ServiceNow audit tickets.

naftiko: '0.5'
info:
  label: Vendor Contract Compliance
  description: Checks vendor contract compliance for Macy's by pulling SAP contract data, analyzing Snowflake spend, and creating ServiceNow audit tickets.
  tags:
  - procurement
  - sap
  - snowflake
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: procurement-ops
    port: 8080
    tools:
    - name: vendor-contract-compliance
      description: Checks vendor contract compliance for Macy's by pulling SAP contract data and Snowflake spend analysis.
      inputParameters:
      - name: vendor_id
        type: string
        description: Vendor identifier.
      - name: period
        type: string
        description: Review period.
      steps:
      - name: get-contract
        type: call
        call: sap.get-contract
        with:
          vendor: '{{vendor_id}}'
      - name: analyze-spend
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT total_spend, compliance_pct FROM VENDOR_COMPLIANCE WHERE vendor='{{vendor_id}}' AND period='{{period}}'
      - name: create-audit
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Vendor compliance review: {{vendor_id}}'
          category: procurement
  consumes:
  - type: http
    namespace: sap
    baseUri: https://macys-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: contracts
      path: /A_Supplier('{{vendor}}')
      inputParameters:
      - name: vendor
        in: path
      operations:
      - name: get-contract
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://macys.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://macys.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → vendor-contract-compliance.yml

Orchestrates customer order resolution workflow for Macy's across customer-service, salesforce, snowflake.

naftiko: '0.5'
info:
  label: Customer Order Resolution Workflow
  description: Orchestrates customer order resolution workflow for Macy's across customer-service, salesforce, snowflake.
  tags:
  - customer-service
  - salesforce
  - snowflake
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: customer-ops
    port: 8080
    tools:
    - name: customer-order-resolution-workflow
      description: Orchestrates customer order resolution workflow for Macy's across customer-service, salesforce, snowflake.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: query-data
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT * FROM CUSTOMER_ORDER_RESOLUTION_WORKFLOW
      - name: get-sf
        type: call
        call: salesforce.query
        with:
          q: SELECT Id FROM Account
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: Customer Order Resolution Workflow — {{store_id}}
          category: customer-service
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.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://macys.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: query
      path: /query
      operations:
      - name: query
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://macys.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → customer-order-resolution-workflow.yml

Orchestrates eod reconciliation for Macy's across store-ops, snowflake, sap.

naftiko: '0.5'
info:
  label: Eod Reconciliation
  description: Orchestrates eod reconciliation for Macy's across store-ops, snowflake, sap.
  tags:
  - store-ops
  - snowflake
  - sap
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: finance-ops
    port: 8080
    tools:
    - name: eod-reconciliation
      description: Orchestrates eod reconciliation for Macy's across store-ops, snowflake, sap.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: query-data
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT * FROM EOD_RECONCILIATION
      - name: check-erp
        type: call
        call: sap.get-data
        with:
          entity: '{{store_id}}'
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: Eod Reconciliation — {{store_id}}
          category: store-ops
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.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://macys-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: entities
      path: /A_BusinessPartner
      operations:
      - name: get-data
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://macys.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → eod-reconciliation.yml

Looks up SAP vendor for Macy's.

naftiko: '0.5'
info:
  label: SAP Vendor Lookup
  description: Looks up SAP vendor for Macy's.
  tags:
  - procurement
  - sap
  - supply-chain
capability:
  exposes:
  - type: mcp
    namespace: erp
    port: 8080
    tools:
    - name: get-vendor
      description: Look up vendor.
      inputParameters:
      - name: vendor
        type: string
        description: Vendor number.
      call: sap.get-vendor
      with:
        vendor: '{{vendor}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.d.SupplierName
  consumes:
  - type: http
    namespace: sap
    baseUri: https://macys-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}}')
      inputParameters:
      - name: vendor
        in: path
      operations:
      - name: get-vendor
        method: GET
Open in Framework → View in Fleet → sap-vendor-lookup.yml

Uses Anthropic Claude to classify and summarize a Salesforce Service Cloud case, then routes it to the appropriate ServiceNow queue based on category.

naftiko: '0.5'
info:
  label: Customer Case Triage with AI
  description: Uses Anthropic Claude to classify and summarize a Salesforce Service Cloud case, then routes it to the appropriate ServiceNow queue based on category.
  tags:
  - customer-support
  - ai
  - salesforce
  - servicenow
  - anthropic
capability:
  exposes:
  - type: mcp
    namespace: cx-triage
    port: 8080
    tools:
    - name: triage-customer-case
      description: Given a Salesforce Service Cloud case ID, fetch case details, use Anthropic Claude to classify severity and category, then create a routed ServiceNow incident with the AI 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-case
        type: call
        call: anthropic.create-message
        with:
          model: claude-3-5-sonnet-20241022
          prompt: 'Classify this retail customer complaint by severity (low/medium/high) and category (return, delivery, product, billing). Case: {{get-case.Description}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: '{{get-case.Subject}}'
          description: 'AI Classification: {{classify-case.content}} | Original: {{get-case.Description}}'
          category: customer_experience
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://macys.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://macys.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → customer-case-triage-with-ai.yml

Detects AWS spend anomalies above a threshold and creates a Jira cost-tracking task with a Datadog warning event.

naftiko: '0.5'
info:
  label: Cloud Cost Anomaly Detection
  description: Detects AWS spend anomalies above a threshold and creates a Jira cost-tracking task with a Datadog warning event.
  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, open a Jira task, and post a Datadog warning event. Use when AWS budget alerts trigger.
      inputParameters:
      - name: account_id
        type: string
        description: AWS account ID to check for cost anomalies.
      - name: threshold_usd
        type: number
        description: Anomaly threshold in USD.
      - name: date_from
        type: string
        description: Lookback period start date 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: 'AWS cost anomaly: account {{account_id}}'
          description: '{{get-anomalies.summary}} exceeded {{threshold_usd}} USD'
      - name: post-event
        type: call
        call: datadog.create-event
        with:
          title: 'Cost anomaly: {{account_id}}'
          text: 'Spend above {{threshold_usd}} USD. 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://macys.atlassian.net/rest/api/3
    authentication:
      type: 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
Open in Framework → View in Fleet → cloud-cost-anomaly-detection.yml

Triggers a Power BI dataset refresh for the retail sales dashboard and notifies the merchandising team when the latest data is available.

naftiko: '0.5'
info:
  label: Power BI Retail Dashboard Refresh
  description: Triggers a Power BI dataset refresh for the retail sales dashboard and notifies the merchandising team when the latest data is available.
  tags:
  - data
  - analytics
  - power-bi
  - reporting
  - retail
capability:
  exposes:
  - type: mcp
    namespace: bi-reporting
    port: 8080
    tools:
    - name: refresh-retail-sales-dashboard
      description: Trigger a Power BI dataset refresh for the retail sales dashboard. Notify the merchandising Teams channel when the refresh is initiated.
      inputParameters:
      - name: workspace_id
        type: string
        description: Power BI workspace ID.
      - name: dataset_id
        type: string
        description: Power BI retail sales dataset ID.
      - name: teams_channel_id
        type: string
        description: Merchandising Teams channel ID.
      steps:
      - name: trigger-refresh
        type: call
        call: powerbi.trigger-refresh
        with:
          workspaceId: '{{workspace_id}}'
          datasetId: '{{dataset_id}}'
      - name: notify-merchandising
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: '{{teams_channel_id}}'
          text: Retail sales dashboard refresh triggered. Latest store and online sales data will be available shortly.
  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/{{workspaceId}}/datasets/{{datasetId}}/refreshes
      inputParameters:
      - name: workspaceId
        in: path
      - name: datasetId
        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/merchandising/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → power-bi-retail-dashboard-refresh.yml

Orchestrates app release pipeline for Macy's across devops, github, datadog.

naftiko: '0.5'
info:
  label: App Release Pipeline
  description: Orchestrates app release pipeline for Macy's across devops, github, datadog.
  tags:
  - devops
  - github
  - datadog
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: platform-ops
    port: 8080
    tools:
    - name: app-release-pipeline
      description: Orchestrates app release pipeline for Macy's across devops, github, datadog.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: App Release Pipeline — {{store_id}}
          category: devops
      - name: check-health
        type: call
        call: datadog.get-monitor
        with:
          monitor_id: store-{{store_id}}
      - name: check-repo
        type: call
        call: github.get-repo
        with:
          repo: macys/{{store_id}}
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://macys.service-now.com/api/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: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: monitors
      path: /monitor/{{monitor_id}}
      inputParameters:
      - name: monitor_id
        in: path
      operations:
      - name: get-monitor
        method: GET
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: repos
      path: /repos/{{repo}}
      inputParameters:
      - name: repo
        in: path
      operations:
      - name: get-repo
        method: GET
Open in Framework → View in Fleet → app-release-pipeline.yml

Submits a vendor invoice to SAP Ariba for three-way match, creates an approval task in ServiceNow, and notifies the approver via Teams.

naftiko: '0.5'
info:
  label: Invoice Approval Workflow
  description: Submits a vendor invoice to SAP Ariba for three-way match, creates an approval task in ServiceNow, and notifies the approver via Teams.
  tags:
  - finance
  - procurement
  - sap-ariba
  - servicenow
  - approval
capability:
  exposes:
  - type: mcp
    namespace: ap-ops
    port: 8080
    tools:
    - name: process-vendor-invoice
      description: Given a vendor invoice number, PO reference, and approver UPN, submit to SAP Ariba for matching, create a ServiceNow approval task, and notify the 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 of the finance approver.
      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: 'Approve invoice: {{invoice_number}}'
          assigned_to: '{{approver_upn}}'
          description: 'Ariba invoice ID: {{submit-invoice.invoiceId}} | Amount: {{amount}}'
      - name: notify-approver
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{approver_upn}}'
          text: 'Invoice {{invoice_number}} 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://macys.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
Open in Framework → View in Fleet → invoice-approval-workflow.yml

Triggers a Terraform Cloud workspace run for e-commerce infrastructure changes and notifies the DevOps team via Teams with a Jira tracking task.

naftiko: '0.5'
info:
  label: Terraform Infrastructure Run
  description: Triggers a Terraform Cloud workspace run for e-commerce infrastructure changes and notifies the DevOps team via Teams with a Jira tracking task.
  tags:
  - cloud
  - devops
  - terraform
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: infra-ops
    port: 8080
    tools:
    - name: trigger-infrastructure-run
      description: Given a Terraform workspace ID and change description, trigger an infrastructure plan-and-apply run, create a Jira tracking task, and notify the DevOps Teams channel.
      inputParameters:
      - name: workspace_id
        type: string
        description: Terraform Cloud workspace ID.
      - name: change_description
        type: string
        description: Description of the infrastructure change.
      - name: teams_channel_id
        type: string
        description: DevOps Teams channel ID.
      steps:
      - name: create-run
        type: call
        call: terraform.create-run
        with:
          workspaceId: '{{workspace_id}}'
          message: '{{change_description}}'
      - name: create-task
        type: call
        call: jira.create-issue
        with:
          project_key: INFRA
          issuetype: Task
          summary: 'Terraform: {{change_description}}'
          description: 'Workspace {{workspace_id}} | Run: {{create-run.runId}}'
      - name: notify-devops
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: '{{teams_channel_id}}'
          text: 'Terraform run triggered: {{change_description}} | 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://macys.atlassian.net/rest/api/3
    authentication:
      type: 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
Open in Framework → View in Fleet → terraform-infrastructure-run.yml

Checks SAP material availability for Macy's.

naftiko: '0.5'
info:
  label: SAP Material Availability
  description: Checks SAP material availability for Macy's.
  tags:
  - inventory
  - sap
  - supply-chain
capability:
  exposes:
  - type: mcp
    namespace: erp
    port: 8080
    tools:
    - name: check-material
      description: Check material availability.
      inputParameters:
      - name: material
        type: string
        description: Material.
      - name: plant
        type: string
        description: Plant.
      call: sap.get-stock
      with:
        material: '{{material}}'
        plant: '{{plant}}'
      outputParameters:
      - name: on_hand
        type: number
        mapping: $.d.Quantity
  consumes:
  - type: http
    namespace: sap
    baseUri: https://macys-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-stock
        method: GET
Open in Framework → View in Fleet → sap-material-availability.yml

Orchestrates employee promotion workflow for Macy's across hr, workday, servicenow.

naftiko: '0.5'
info:
  label: Employee Promotion Workflow
  description: Orchestrates employee promotion workflow for Macy's across hr, workday, servicenow.
  tags:
  - hr
  - workday
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-ops
    port: 8080
    tools:
    - name: employee-promotion-workflow
      description: Orchestrates employee promotion workflow for Macy's across hr, workday, servicenow.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: Employee Promotion Workflow — {{store_id}}
          category: hr
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Employee Promotion Workflow done.
      - name: get-hr
        type: call
        call: workday.get-workers
        with:
          store: '{{store_id}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://macys.service-now.com/api/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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        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: /macys/workers
      operations:
      - name: get-workers
        method: GET
Open in Framework → View in Fleet → employee-promotion-workflow.yml

Processes customer refunds for Macy's by looking up Salesforce orders, issuing SAP credit memos, and creating ServiceNow confirmation tickets.

naftiko: '0.5'
info:
  label: Customer Refund Processing
  description: Processes customer refunds for Macy's by looking up Salesforce orders, issuing SAP credit memos, and creating ServiceNow confirmation tickets.
  tags:
  - e-commerce
  - salesforce
  - sap
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: customer-ops
    port: 8080
    tools:
    - name: customer-refund-processing
      description: Processes customer refunds for Macy's by looking up Salesforce orders, issuing SAP credit memos.
      inputParameters:
      - name: order_id
        type: string
        description: Order identifier.
      - name: reason
        type: string
        description: Refund reason.
      steps:
      - name: get-order
        type: call
        call: salesforce.get-order
        with:
          order_id: '{{order_id}}'
      - name: issue-credit
        type: call
        call: sap.create-credit-memo
        with:
          order_ref: '{{order_id}}'
          reason: '{{reason}}'
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Refund processed: {{order_id}}'
          category: e-commerce
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://macys.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
  - type: http
    namespace: sap
    baseUri: https://macys-s4.sap.com/sap/opu/odata/sap/API_CREDIT_MEMO_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: credit-memos
      path: /A_CreditMemoRequest
      operations:
      - name: create-credit-memo
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://macys.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → customer-refund-processing.yml

When an employee separation is processed in Workday, deactivates Okta SSO, disables Microsoft 365, and notifies the store manager via Teams.

naftiko: '0.5'
info:
  label: Associate Offboarding Workflow
  description: When an employee separation is processed in Workday, deactivates Okta SSO, disables Microsoft 365, and notifies the store manager via Teams.
  tags:
  - hr
  - offboarding
  - workday
  - okta
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-offboarding
    port: 8080
    tools:
    - name: trigger-offboarding
      description: Given a Workday employee ID and last day, deactivate Okta SSO, disable Microsoft 365 account, and notify the manager via Teams that offboarding is complete.
      inputParameters:
      - name: employee_id
        type: string
        description: Workday worker ID of the departing associate.
      - name: last_day
        type: string
        description: Last working day in YYYY-MM-DD format.
      steps:
      - name: get-worker
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{employee_id}}'
      - name: deactivate-okta
        type: call
        call: okta.deactivate-user
        with:
          userId: '{{get-worker.work_email}}'
      - name: disable-m365
        type: call
        call: msgraph.update-user
        with:
          user_id: '{{get-worker.work_email}}'
          accountEnabled: 'false'
      - name: notify-manager
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-worker.manager_email}}'
          text: 'Offboarding completed for {{get-worker.full_name}} (last day: {{last_day}}). 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: /macys/workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: okta
    baseUri: https://macys.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_api_token
      placement: header
    resources:
    - name: users
      path: /users/{{userId}}/lifecycle/deactivate
      inputParameters:
      - name: userId
        in: path
      operations:
      - name: deactivate-user
        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/{{user_id}}
      inputParameters:
      - name: user_id
        in: path
      operations:
      - name: update-user
        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
Open in Framework → View in Fleet → associate-offboarding-workflow.yml

Orchestrates site incident response for Macy's across e-commerce, datadog, servicenow.

naftiko: '0.5'
info:
  label: Site Incident Response
  description: Orchestrates site incident response for Macy's across e-commerce, datadog, servicenow.
  tags:
  - e-commerce
  - datadog
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: platform-ops
    port: 8080
    tools:
    - name: site-incident-response
      description: Orchestrates site incident response for Macy's across e-commerce, datadog, servicenow.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: Site Incident Response — {{store_id}}
          category: e-commerce
      - name: check-health
        type: call
        call: datadog.get-monitor
        with:
          monitor_id: store-{{store_id}}
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Site Incident Response done.
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://macys.service-now.com/api/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: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: monitors
      path: /monitor/{{monitor_id}}
      inputParameters:
      - name: monitor_id
        in: path
      operations:
      - name: get-monitor
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → site-incident-response.yml

Creates a ServiceNow change request for a planned system change, routes to the CAB, and notifies the requester via Teams.

naftiko: '0.5'
info:
  label: ServiceNow Change Request Workflow
  description: Creates a ServiceNow change request for a planned system change, routes to the CAB, and notifies the requester via Teams.
  tags:
  - itsm
  - change-management
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: itsm
    port: 8080
    tools:
    - name: submit-change-request
      description: Given a change description, risk level, and scheduled date, create a ServiceNow change request assigned to the CAB and notify the requester via Teams.
      inputParameters:
      - name: short_description
        type: string
        description: Brief description of the planned change.
      - name: risk
        type: string
        description: 'Risk level: low, medium, or high.'
      - name: implementation_date
        type: string
        description: Planned change date in YYYY-MM-DD format.
      - name: requester_upn
        type: string
        description: UPN of the change requester.
      steps:
      - name: create-change
        type: call
        call: servicenow.create-change
        with:
          short_description: '{{short_description}}'
          risk: '{{risk}}'
          start_date: '{{implementation_date}}'
          assignment_group: CAB
      - name: notify-requester
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{requester_upn}}'
          text: 'Change request {{create-change.number}} submitted to CAB. Risk: {{risk}}, Date: {{implementation_date}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://macys.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.msgraph_token
    resources:
    - name: chats
      path: /chats
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → servicenow-change-request-workflow.yml

Orchestrates warehouse capacity planner for Macy's across supply-chain, snowflake, sap.

naftiko: '0.5'
info:
  label: Warehouse Capacity Planner
  description: Orchestrates warehouse capacity planner for Macy's across supply-chain, snowflake, sap.
  tags:
  - supply-chain
  - snowflake
  - sap
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: logistics
    port: 8080
    tools:
    - name: warehouse-capacity-planner
      description: Orchestrates warehouse capacity planner for Macy's across supply-chain, snowflake, sap.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: query-data
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT * FROM WAREHOUSE_CAPACITY_PLANNER
      - name: check-erp
        type: call
        call: sap.get-data
        with:
          entity: '{{store_id}}'
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Warehouse Capacity Planner done.
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.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://macys-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: entities
      path: /A_BusinessPartner
      operations:
      - name: get-data
        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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → warehouse-capacity-planner.yml

Orchestrates daily ops report for Macy's across store-ops, snowflake, datadog.

naftiko: '0.5'
info:
  label: Daily Ops Report
  description: Orchestrates daily ops report for Macy's across store-ops, snowflake, datadog.
  tags:
  - store-ops
  - snowflake
  - datadog
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: store-ops
    port: 8080
    tools:
    - name: daily-ops-report
      description: Orchestrates daily ops report for Macy's across store-ops, snowflake, datadog.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: query-data
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT * FROM DAILY_OPS_REPORT
      - name: check-health
        type: call
        call: datadog.get-monitor
        with:
          monitor_id: store-{{store_id}}
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Daily Ops Report done.
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.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: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: monitors
      path: /monitor/{{monitor_id}}
      inputParameters:
      - name: monitor_id
        in: path
      operations:
      - name: get-monitor
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → daily-ops-report.yml

Searches contacts for Macy's.

naftiko: '0.5'
info:
  label: Salesforce Contact Search
  description: Searches contacts for Macy's.
  tags:
  - crm
  - salesforce
  - customer-service
capability:
  exposes:
  - type: mcp
    namespace: crm
    port: 8080
    tools:
    - name: search-contacts
      description: Search contacts.
      inputParameters:
      - name: email
        type: string
        description: Email.
      call: salesforce.search
      with:
        email: '{{email}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.Name
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://macys.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
        method: GET
Open in Framework → View in Fleet → salesforce-contact-search.yml

Orchestrates offboarding pipeline for Macy's across hr, workday, servicenow.

naftiko: '0.5'
info:
  label: Offboarding Pipeline
  description: Orchestrates offboarding pipeline for Macy's across hr, workday, servicenow.
  tags:
  - hr
  - workday
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-ops
    port: 8080
    tools:
    - name: offboarding-pipeline
      description: Orchestrates offboarding pipeline for Macy's across hr, workday, servicenow.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: Offboarding Pipeline — {{store_id}}
          category: hr
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Offboarding Pipeline done.
      - name: get-hr
        type: call
        call: workday.get-workers
        with:
          store: '{{store_id}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://macys.service-now.com/api/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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        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: /macys/workers
      operations:
      - name: get-workers
        method: GET
Open in Framework → View in Fleet → offboarding-pipeline.yml

Publishes a LinkedIn brand post for a Macy's campaign page and logs the post ID back to the Salesforce campaign record for attribution.

naftiko: '0.5'
info:
  label: LinkedIn Brand Post Publishing
  description: Publishes a LinkedIn brand post for a Macy's campaign page and logs the post ID back to the Salesforce campaign record for attribution.
  tags:
  - marketing
  - social
  - linkedin
  - salesforce
  - content
capability:
  exposes:
  - type: mcp
    namespace: social-publishing
    port: 8080
    tools:
    - name: publish-linkedin-post
      description: Given LinkedIn org URN, post copy, and a Salesforce campaign ID, publish the post to the brand LinkedIn page and log the post ID to the campaign record.
      inputParameters:
      - name: org_urn
        type: string
        description: LinkedIn organization URN for the brand page.
      - name: post_text
        type: string
        description: Post text copy to publish.
      - name: campaign_id
        type: string
        description: Salesforce campaign record ID for attribution tracking.
      steps:
      - name: publish-post
        type: call
        call: linkedin.create-post
        with:
          author: '{{org_urn}}'
          commentary: '{{post_text}}'
      - 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://macys.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
Open in Framework → View in Fleet → linkedin-brand-post-publishing.yml

Manages VIP customer outreach for Macy's by pulling Salesforce profiles, analyzing Snowflake purchase patterns, and notifying stylists via Teams.

naftiko: '0.5'
info:
  label: VIP Customer Outreach
  description: Manages VIP customer outreach for Macy's by pulling Salesforce profiles, analyzing Snowflake purchase patterns, and notifying stylists via Teams.
  tags:
  - loyalty
  - salesforce
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: loyalty-ops
    port: 8080
    tools:
    - name: vip-customer-outreach
      description: Manages VIP customer outreach for Macy's by pulling Salesforce profiles and Snowflake purchase patterns.
      inputParameters:
      - name: tier
        type: string
        description: Loyalty tier to target.
      steps:
      - name: get-vips
        type: call
        call: salesforce.query
        with:
          q: SELECT Id, Name FROM Contact WHERE Loyalty_Tier__c='{{tier}}'
      - name: get-patterns
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT customer_id, preferred_category FROM VIP_PATTERNS WHERE tier='{{tier}}'
      - name: notify-stylists
        type: call
        call: msteams.send-message
        with:
          channel_id: personal-shopping
          text: VIP outreach list ready for {{tier}} tier customers.
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://macys.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: query
      path: /query
      operations:
      - name: query
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://macys.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → vip-customer-outreach.yml

Orchestrates staffing gap alerts for Macy's across store-ops, workday, snowflake.

naftiko: '0.5'
info:
  label: Staffing Gap Alerts
  description: Orchestrates staffing gap alerts for Macy's across store-ops, workday, snowflake.
  tags:
  - store-ops
  - workday
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: workforce
    port: 8080
    tools:
    - name: staffing-gap-alerts
      description: Orchestrates staffing gap alerts for Macy's across store-ops, workday, snowflake.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: query-data
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT * FROM STAFFING_GAP_ALERTS
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Staffing Gap Alerts done.
      - name: get-hr
        type: call
        call: workday.get-workers
        with:
          store: '{{store_id}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        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: /macys/workers
      operations:
      - name: get-workers
        method: GET
Open in Framework → View in Fleet → staffing-gap-alerts.yml

Retrieves PTO balance for Macy's.

naftiko: '0.5'
info:
  label: Workday PTO Balance
  description: Retrieves PTO balance for Macy's.
  tags:
  - hr
  - workday
  - store-ops
capability:
  exposes:
  - type: mcp
    namespace: hr
    port: 8080
    tools:
    - name: get-pto
      description: Check PTO balance.
      inputParameters:
      - name: worker_id
        type: string
        description: Worker ID.
      call: workday.get-pto
      with:
        worker_id: '{{worker_id}}'
      outputParameters:
      - name: available
        type: number
        mapping: $.timeOff.available
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: time-off
      path: /macys/workers/{{worker_id}}/timeOff
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-pto
        method: GET
Open in Framework → View in Fleet → workday-pto-balance.yml

Orchestrates it incident escalation for Macy's across infrastructure, datadog, servicenow.

naftiko: '0.5'
info:
  label: It Incident Escalation
  description: Orchestrates it incident escalation for Macy's across infrastructure, datadog, servicenow.
  tags:
  - infrastructure
  - datadog
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: it-ops
    port: 8080
    tools:
    - name: it-incident-escalation
      description: Orchestrates it incident escalation for Macy's across infrastructure, datadog, servicenow.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: It Incident Escalation — {{store_id}}
          category: infrastructure
      - name: check-health
        type: call
        call: datadog.get-monitor
        with:
          monitor_id: store-{{store_id}}
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: It Incident Escalation done.
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://macys.service-now.com/api/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: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: monitors
      path: /monitor/{{monitor_id}}
      inputParameters:
      - name: monitor_id
        in: path
      operations:
      - name: get-monitor
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → it-incident-escalation.yml

Orchestrates inventory audit pipeline for Macy's across inventory, sap, snowflake.

naftiko: '0.5'
info:
  label: Inventory Audit Pipeline
  description: Orchestrates inventory audit pipeline for Macy's across inventory, sap, snowflake.
  tags:
  - inventory
  - sap
  - snowflake
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: inventory-ops
    port: 8080
    tools:
    - name: inventory-audit-pipeline
      description: Orchestrates inventory audit pipeline for Macy's across inventory, sap, snowflake.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: query-data
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT * FROM INVENTORY_AUDIT_PIPELINE
      - name: check-erp
        type: call
        call: sap.get-data
        with:
          entity: '{{store_id}}'
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: Inventory Audit Pipeline — {{store_id}}
          category: inventory
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.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://macys-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: entities
      path: /A_BusinessPartner
      operations:
      - name: get-data
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://macys.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → inventory-audit-pipeline.yml

Monitors store HVAC temperatures for Macy's by checking Datadog IoT sensors, creating ServiceNow maintenance tickets, and notifying facilities via Teams.

naftiko: '0.5'
info:
  label: Store Temperature Monitoring
  description: Monitors store HVAC temperatures for Macy's by checking Datadog IoT sensors, creating ServiceNow maintenance tickets, and notifying facilities via Teams.
  tags:
  - store-ops
  - datadog
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: facilities
    port: 8080
    tools:
    - name: store-temperature-monitoring
      description: Monitors store HVAC temperatures for Macy's by checking Datadog IoT sensors, creating ServiceNow maintenance tickets.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: check-health
        type: call
        call: datadog.get-monitor
        with:
          monitor_id: store-{{store_id}}
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: Store Temperature Monitoring — {{store_id}}
          category: store-ops
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Store Temperature Monitoring done.
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: monitors
      path: /monitor/{{monitor_id}}
      inputParameters:
      - name: monitor_id
        in: path
      operations:
      - name: get-monitor
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://macys.service-now.com/api/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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → store-temperature-monitoring.yml

Aggregates email and digital campaign performance metrics from Salesforce Marketing Cloud and posts a daily digest to the marketing Teams channel.

naftiko: '0.5'
info:
  label: Marketing Campaign Performance Digest
  description: Aggregates email and digital campaign performance metrics from Salesforce Marketing Cloud and posts a daily digest to the marketing Teams channel.
  tags:
  - marketing
  - reporting
  - salesforce
  - microsoft-teams
  - digest
capability:
  exposes:
  - type: mcp
    namespace: marketing-reporting
    port: 8080
    tools:
    - name: digest-campaign-performance
      description: Fetch digital campaign performance metrics from Salesforce Marketing Cloud for a date range and post a formatted summary to the marketing Teams channel.
      inputParameters:
      - name: date_from
        type: string
        description: Start date for the reporting period in YYYY-MM-DD format.
      - name: date_to
        type: string
        description: End date for the reporting period in YYYY-MM-DD format.
      - name: teams_channel_id
        type: string
        description: Teams channel ID for the marketing team.
      steps:
      - name: get-campaigns
        type: call
        call: sfmc.list-campaigns
        with:
          dateFrom: '{{date_from}}'
          dateTo: '{{date_to}}'
      - name: post-digest
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: '{{teams_channel_id}}'
          text: 'Marketing Campaign Digest ({{date_from}} to {{date_to}}): {{get-campaigns.summary}}'
  consumes:
  - type: http
    namespace: sfmc
    baseUri: https://api.salesforce.com/marketing/v1
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - name: campaigns
      path: /campaigns
      inputParameters:
      - name: dateFrom
        in: query
      - name: dateTo
        in: query
      operations:
      - name: list-campaigns
        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-channel-message
        method: POST
Open in Framework → View in Fleet → marketing-campaign-performance-digest.yml

Orchestrates associate onboarding flow for Macy's across hr, workday, servicenow.

naftiko: '0.5'
info:
  label: Associate Onboarding Flow
  description: Orchestrates associate onboarding flow for Macy's across hr, workday, servicenow.
  tags:
  - hr
  - workday
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-ops
    port: 8080
    tools:
    - name: associate-onboarding-flow
      description: Orchestrates associate onboarding flow for Macy's across hr, workday, servicenow.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: Associate Onboarding Flow — {{store_id}}
          category: hr
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Associate Onboarding Flow done.
      - name: get-hr
        type: call
        call: workday.get-workers
        with:
          store: '{{store_id}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://macys.service-now.com/api/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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        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: /macys/workers
      operations:
      - name: get-workers
        method: GET
Open in Framework → View in Fleet → associate-onboarding-flow.yml

When a Datadog critical monitor fires for a production service, creates a ServiceNow P1 incident and notifies the on-call engineering team via Teams.

naftiko: '0.5'
info:
  label: Datadog Production Alert to ServiceNow
  description: When a Datadog critical monitor fires for a production service, creates a ServiceNow P1 incident and notifies the on-call engineering team via Teams.
  tags:
  - itsm
  - observability
  - datadog
  - servicenow
  - incident-response
capability:
  exposes:
  - type: mcp
    namespace: ops-triage
    port: 8080
    tools:
    - name: handle-production-alert
      description: Given a Datadog monitor ID and affected service, retrieve the monitor state, create a ServiceNow P1 incident, and post to the on-call Teams channel.
      inputParameters:
      - name: monitor_id
        type: string
        description: Datadog monitor ID that triggered the alert.
      - name: affected_service
        type: string
        description: Name of the affected application or service.
      - name: severity
        type: string
        description: 'Alert severity: critical or warning.'
      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: 'Production alert: {{affected_service}} — {{severity}}'
          urgency: '1'
          impact: '1'
          description: 'Monitor {{monitor_id}}: {{get-monitor.message}}'
      - name: notify-oncall
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: on-call-engineering
          text: 'P1 Alert: {{affected_service}} ({{severity}}) | 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://macys.service-now.com/api/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/oncall/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → datadog-production-alert-to-servicenow.yml

When a Salesforce opportunity reaches Closed Won, updates the SAP cost center allocation and sends a win notification to the sales leadership Teams channel.

naftiko: '0.5'
info:
  label: Salesforce Opportunity Won Sync
  description: When a Salesforce opportunity reaches Closed Won, updates the SAP cost center allocation and sends a win notification to the sales leadership Teams channel.
  tags:
  - crm
  - sales
  - salesforce
  - sap
  - finance
capability:
  exposes:
  - type: mcp
    namespace: sales-ops
    port: 8080
    tools:
    - name: sync-opportunity-close
      description: Given a Closed Won Salesforce opportunity ID, fetch the opportunity, update the SAP cost center allocation for the revenue, and post a win announcement to the sales Teams channel.
      inputParameters:
      - name: opportunity_id
        type: string
        description: Salesforce opportunity record ID.
      - name: teams_channel_id
        type: string
        description: Sales leadership Teams channel ID.
      steps:
      - name: get-opportunity
        type: call
        call: salesforce.get-opportunity
        with:
          opportunity_id: '{{opportunity_id}}'
      - name: update-cost-center
        type: call
        call: sap.update-cost-center
        with:
          costCenter: '{{get-opportunity.CostCenter__c}}'
          amount: '{{get-opportunity.Amount}}'
      - name: post-win
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: '{{teams_channel_id}}'
          text: 'Closed Won: {{get-opportunity.Name}} — ${{get-opportunity.Amount}} {{get-opportunity.CurrencyIsoCode}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://macys.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://macys-s4.sap.com/sap/opu/odata/sap/YY1_COSTCENTERACTUALS_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: cost-centers
      path: /CostCenters('{{costCenter}}')
      inputParameters:
      - name: costCenter
        in: path
      operations:
      - name: update-cost-center
        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/sales/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → salesforce-opportunity-won-sync.yml

Plans seasonal hiring for Macy's by analyzing Snowflake traffic forecasts, creating Workday requisitions, and posting updates to Teams.

naftiko: '0.5'
info:
  label: Seasonal Hiring Workflow
  description: Plans seasonal hiring for Macy's by analyzing Snowflake traffic forecasts, creating Workday requisitions, and posting updates to Teams.
  tags:
  - hr
  - snowflake
  - workday
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: workforce
    port: 8080
    tools:
    - name: seasonal-hiring-workflow
      description: Plans seasonal hiring for Macy's by analyzing Snowflake forecasts and creating Workday requisitions.
      inputParameters:
      - name: store_id
        type: string
        description: Store identifier.
      - name: season
        type: string
        description: Season (e.g., holiday-2026).
      steps:
      - name: get-forecast
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT projected_traffic, required_headcount FROM SEASONAL_FORECAST WHERE store='{{store_id}}' AND season='{{season}}'
      - name: create-requisitions
        type: call
        call: workday.create-job-req
        with:
          store: '{{store_id}}'
          type: seasonal
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: hr-recruiting
          text: Seasonal hiring initiated for Store {{store_id}} — {{season}}.
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.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: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: requisitions
      path: /macys/jobRequisitions
      operations:
      - name: create-job-req
        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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → seasonal-hiring-workflow.yml

Sends Teams notification for Macy's.

naftiko: '0.5'
info:
  label: Teams Notification
  description: Sends Teams notification for Macy's.
  tags:
  - communication
  - microsoft-teams
  - store-ops
capability:
  exposes:
  - type: mcp
    namespace: messaging
    port: 8080
    tools:
    - name: send-notif
      description: Send notification.
      inputParameters:
      - name: channel
        type: string
        description: Channel.
      - name: text
        type: string
        description: Message.
      call: msteams.send
      with:
        channel: '{{channel}}'
        text: '{{text}}'
      outputParameters:
      - name: 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: channels
      path: /teams/{{team_id}}/channels/{{channel}}/messages
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → teams-notification.yml

Orchestrates benefits enrollment pipeline for Macy's across hr, workday, servicenow.

naftiko: '0.5'
info:
  label: Benefits Enrollment Pipeline
  description: Orchestrates benefits enrollment pipeline for Macy's across hr, workday, servicenow.
  tags:
  - hr
  - workday
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-ops
    port: 8080
    tools:
    - name: benefits-enrollment-pipeline
      description: Orchestrates benefits enrollment pipeline for Macy's across hr, workday, servicenow.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: Benefits Enrollment Pipeline — {{store_id}}
          category: hr
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Benefits Enrollment Pipeline done.
      - name: get-hr
        type: call
        call: workday.get-workers
        with:
          store: '{{store_id}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://macys.service-now.com/api/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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        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: /macys/workers
      operations:
      - name: get-workers
        method: GET
Open in Framework → View in Fleet → benefits-enrollment-pipeline.yml

Responds to product quality alerts for Macy's by checking SAP inventory, creating ServiceNow cases, and notifying supply chain via Teams.

naftiko: '0.5'
info:
  label: Quality Alert Response
  description: Responds to product quality alerts for Macy's by checking SAP inventory, creating ServiceNow cases, and notifying supply chain via Teams.
  tags:
  - supply-chain
  - sap
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: product-safety
    port: 8080
    tools:
    - name: quality-alert-response
      description: Responds to product quality alerts for Macy's by checking SAP inventory and creating ServiceNow cases.
      inputParameters:
      - name: sku
        type: string
        description: Product SKU.
      - name: alert_type
        type: string
        description: Quality alert type.
      steps:
      - name: check-inventory
        type: call
        call: sap.get-stock
        with:
          material: '{{sku}}'
      - name: create-case
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Quality alert: {{sku}} — {{alert_type}}'
          category: supply-chain
          priority: '2'
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          channel_id: quality-assurance
          text: 'Quality alert for SKU {{sku}}: {{alert_type}}. Case: {{create-case.number}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://macys-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-stock
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://macys.service-now.com/api/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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → quality-alert-response.yml

Orchestrates store opening readiness check for Macy's across store-ops, datadog, workday.

naftiko: '0.5'
info:
  label: Store Opening Readiness Check
  description: Orchestrates store opening readiness check for Macy's across store-ops, datadog, workday.
  tags:
  - store-ops
  - datadog
  - workday
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: store-ops
    port: 8080
    tools:
    - name: store-opening-readiness-check
      description: Orchestrates store opening readiness check for Macy's across store-ops, datadog, workday.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: check-health
        type: call
        call: datadog.get-monitor
        with:
          monitor_id: store-{{store_id}}
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Store Opening Readiness Check done.
      - name: get-hr
        type: call
        call: workday.get-workers
        with:
          store: '{{store_id}}'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: monitors
      path: /monitor/{{monitor_id}}
      inputParameters:
      - name: monitor_id
        in: path
      operations:
      - name: get-monitor
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        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: /macys/workers
      operations:
      - name: get-workers
        method: GET
Open in Framework → View in Fleet → store-opening-readiness-check.yml

Orchestrates security incident handler for Macy's across security, servicenow, datadog.

naftiko: '0.5'
info:
  label: Security Incident Handler
  description: Orchestrates security incident handler for Macy's across security, servicenow, datadog.
  tags:
  - security
  - servicenow
  - datadog
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: security-ops
    port: 8080
    tools:
    - name: security-incident-handler
      description: Orchestrates security incident handler for Macy's across security, servicenow, datadog.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: Security Incident Handler — {{store_id}}
          category: security
      - name: check-health
        type: call
        call: datadog.get-monitor
        with:
          monitor_id: store-{{store_id}}
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Security Incident Handler done.
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://macys.service-now.com/api/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: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: monitors
      path: /monitor/{{monitor_id}}
      inputParameters:
      - name: monitor_id
        in: path
      operations:
      - name: get-monitor
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → security-incident-handler.yml

Orchestrates marketing roi tracker for Macy's across marketing, snowflake, salesforce.

naftiko: '0.5'
info:
  label: Marketing Roi Tracker
  description: Orchestrates marketing roi tracker for Macy's across marketing, snowflake, salesforce.
  tags:
  - marketing
  - snowflake
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: marketing-ops
    port: 8080
    tools:
    - name: marketing-roi-tracker
      description: Orchestrates marketing roi tracker for Macy's across marketing, snowflake, salesforce.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: query-data
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT * FROM MARKETING_ROI_TRACKER
      - name: get-sf
        type: call
        call: salesforce.query
        with:
          q: SELECT Id FROM Account
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Marketing Roi Tracker done.
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.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://macys.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: query
      path: /query
      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: channels
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → marketing-roi-tracker.yml

Retrieves critical Dependabot alerts from GitHub repositories and creates Jira security issues for each critical vulnerability found.

naftiko: '0.5'
info:
  label: GitHub Repository Security Scan
  description: Retrieves critical Dependabot alerts from GitHub repositories and creates Jira security issues for each critical vulnerability found.
  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, list all critical Dependabot alerts and create a Jira security issue for each critical finding. Use during weekly security review cycles.
      inputParameters:
      - name: repo_owner
        type: string
        description: GitHub organization or owner name.
      - name: repo_name
        type: string
        description: GitHub repository name.
      steps:
      - name: get-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 vulnerabilities: {{repo_owner}}/{{repo_name}}'
          description: '{{get-alerts.count}} critical Dependabot alerts. Repo: https://github.com/{{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://macys.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → github-repository-security-scan.yml

Checks change request for Macy's.

naftiko: '0.5'
info:
  label: ServiceNow Change Status
  description: Checks change request for Macy's.
  tags:
  - itsm
  - servicenow
  - infrastructure
capability:
  exposes:
  - type: mcp
    namespace: itsm
    port: 8080
    tools:
    - name: get-change
      description: Look up change.
      inputParameters:
      - name: change
        type: string
        description: Change number.
      call: servicenow.get-change
      with:
        change: '{{change}}'
      outputParameters:
      - name: state
        type: string
        mapping: $.result.state
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://macys.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}}
      inputParameters:
      - name: change
        in: query
      operations:
      - name: get-change
        method: GET
Open in Framework → View in Fleet → servicenow-change-status.yml

Orchestrates vendor invoice matching pipeline for Macy's across procurement, sap, servicenow.

naftiko: '0.5'
info:
  label: Vendor Invoice Matching Pipeline
  description: Orchestrates vendor invoice matching pipeline for Macy's across procurement, sap, servicenow.
  tags:
  - procurement
  - sap
  - servicenow
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: finance-ops
    port: 8080
    tools:
    - name: vendor-invoice-matching-pipeline
      description: Orchestrates vendor invoice matching pipeline for Macy's across procurement, sap, servicenow.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: query-data
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT * FROM VENDOR_INVOICE_MATCHING_PIPELINE
      - name: check-erp
        type: call
        call: sap.get-data
        with:
          entity: '{{store_id}}'
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: Vendor Invoice Matching Pipeline — {{store_id}}
          category: procurement
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.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://macys-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: entities
      path: /A_BusinessPartner
      operations:
      - name: get-data
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://macys.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → vendor-invoice-matching-pipeline.yml

When a ServiceNow access request is approved, provisions the user's Okta group membership and resolves the ticket.

naftiko: '0.5'
info:
  label: Okta Access Provisioning
  description: When a ServiceNow access request is approved, provisions the user's Okta group membership and resolves the ticket.
  tags:
  - identity
  - security
  - okta
  - servicenow
  - access-management
capability:
  exposes:
  - type: mcp
    namespace: identity-ops
    port: 8080
    tools:
    - name: provision-user-access
      description: Given an approved ServiceNow access request, add the user to the specified Okta group, resolve the ticket, and confirm access via Teams.
      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: confirm-user
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{user_email}}'
          text: 'Access granted: you have been added to the requested system group ({{okta_group_id}}).'
  consumes:
  - type: http
    namespace: okta
    baseUri: https://macys.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://macys.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
Open in Framework → View in Fleet → okta-access-provisioning.yml

Queries Snowflake sales data for Macy's.

naftiko: '0.5'
info:
  label: Snowflake Sales Query
  description: Queries Snowflake sales data for Macy's.
  tags:
  - analytics
  - snowflake
  - store-ops
capability:
  exposes:
  - type: mcp
    namespace: analytics
    port: 8080
    tools:
    - name: query-sales
      description: Query sales data.
      inputParameters:
      - name: store_id
        type: string
        description: Store ID.
      - name: period
        type: string
        description: Period.
      call: snowflake.run-query
      with:
        store_id: '{{store_id}}'
        period: '{{period}}'
      outputParameters:
      - name: revenue
        type: number
        mapping: $.data[0].REVENUE
      - name: count
        type: integer
        mapping: $.data[0].TXN_COUNT
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → snowflake-sales-query.yml

Checks synthetic test for Macy's.

naftiko: '0.5'
info:
  label: Datadog Synthetic Test
  description: Checks synthetic test for Macy's.
  tags:
  - monitoring
  - datadog
  - e-commerce
capability:
  exposes:
  - type: mcp
    namespace: monitoring
    port: 8080
    tools:
    - name: get-synthetic
      description: Check synthetic.
      inputParameters:
      - name: test_id
        type: string
        description: Test ID.
      call: datadog.get-test
      with:
        test_id: '{{test_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.results[0].status
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: synthetics
      path: /synthetics/tests/{{test_id}}/results
      inputParameters:
      - name: test_id
        in: path
      operations:
      - name: get-test
        method: GET
Open in Framework → View in Fleet → datadog-synthetic-test.yml

Orchestrates supply chain delay handler for Macy's across supply-chain, sap, servicenow.

naftiko: '0.5'
info:
  label: Supply Chain Delay Handler
  description: Orchestrates supply chain delay handler for Macy's across supply-chain, sap, servicenow.
  tags:
  - supply-chain
  - sap
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: supply-chain-ops
    port: 8080
    tools:
    - name: supply-chain-delay-handler
      description: Orchestrates supply chain delay handler for Macy's across supply-chain, sap, servicenow.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: check-erp
        type: call
        call: sap.get-data
        with:
          entity: '{{store_id}}'
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: Supply Chain Delay Handler — {{store_id}}
          category: supply-chain
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Supply Chain Delay Handler done.
  consumes:
  - type: http
    namespace: sap
    baseUri: https://macys-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: entities
      path: /A_BusinessPartner
      operations:
      - name: get-data
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://macys.service-now.com/api/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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → supply-chain-delay-handler.yml

Orchestrates churn prevention pipeline for Macy's across loyalty, snowflake, salesforce.

naftiko: '0.5'
info:
  label: Churn Prevention Pipeline
  description: Orchestrates churn prevention pipeline for Macy's across loyalty, snowflake, salesforce.
  tags:
  - loyalty
  - snowflake
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: loyalty-ops
    port: 8080
    tools:
    - name: churn-prevention-pipeline
      description: Orchestrates churn prevention pipeline for Macy's across loyalty, snowflake, salesforce.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: query-data
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT * FROM CHURN_PREVENTION_PIPELINE
      - name: get-sf
        type: call
        call: salesforce.query
        with:
          q: SELECT Id FROM Account
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Churn Prevention Pipeline done.
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.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://macys.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: query
      path: /query
      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: channels
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → churn-prevention-pipeline.yml

Orchestrates supplier onboarding flow for Macy's across supply-chain, sap, servicenow.

naftiko: '0.5'
info:
  label: Supplier Onboarding Flow
  description: Orchestrates supplier onboarding flow for Macy's across supply-chain, sap, servicenow.
  tags:
  - supply-chain
  - sap
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: procurement-ops
    port: 8080
    tools:
    - name: supplier-onboarding-flow
      description: Orchestrates supplier onboarding flow for Macy's across supply-chain, sap, servicenow.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: check-erp
        type: call
        call: sap.get-data
        with:
          entity: '{{store_id}}'
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: Supplier Onboarding Flow — {{store_id}}
          category: supply-chain
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Supplier Onboarding Flow done.
  consumes:
  - type: http
    namespace: sap
    baseUri: https://macys-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: entities
      path: /A_BusinessPartner
      operations:
      - name: get-data
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://macys.service-now.com/api/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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → supplier-onboarding-flow.yml

Orchestrates payment processing pipeline for Macy's across procurement, sap, snowflake.

naftiko: '0.5'
info:
  label: Payment Processing Pipeline
  description: Orchestrates payment processing pipeline for Macy's across procurement, sap, snowflake.
  tags:
  - procurement
  - sap
  - snowflake
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: finance-ops
    port: 8080
    tools:
    - name: payment-processing-pipeline
      description: Orchestrates payment processing pipeline for Macy's across procurement, sap, snowflake.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: query-data
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT * FROM PAYMENT_PROCESSING_PIPELINE
      - name: check-erp
        type: call
        call: sap.get-data
        with:
          entity: '{{store_id}}'
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: Payment Processing Pipeline — {{store_id}}
          category: procurement
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.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://macys-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: entities
      path: /A_BusinessPartner
      operations:
      - name: get-data
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://macys.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → payment-processing-pipeline.yml

Orchestrates vendor performance scorecard for Macy's across supply-chain, sap, snowflake.

naftiko: '0.5'
info:
  label: Vendor Performance Scorecard
  description: Orchestrates vendor performance scorecard for Macy's across supply-chain, sap, snowflake.
  tags:
  - supply-chain
  - sap
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: procurement-ops
    port: 8080
    tools:
    - name: vendor-performance-scorecard
      description: Orchestrates vendor performance scorecard for Macy's across supply-chain, sap, snowflake.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: query-data
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT * FROM VENDOR_PERFORMANCE_SCORECARD
      - name: check-erp
        type: call
        call: sap.get-data
        with:
          entity: '{{store_id}}'
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Vendor Performance Scorecard done.
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.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://macys-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: entities
      path: /A_BusinessPartner
      operations:
      - name: get-data
        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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → vendor-performance-scorecard.yml

Orchestrates shrinkage investigation for Macy's across store-ops, snowflake, servicenow.

naftiko: '0.5'
info:
  label: Shrinkage Investigation
  description: Orchestrates shrinkage investigation for Macy's across store-ops, snowflake, servicenow.
  tags:
  - store-ops
  - snowflake
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: loss-prevention
    port: 8080
    tools:
    - name: shrinkage-investigation
      description: Orchestrates shrinkage investigation for Macy's across store-ops, snowflake, servicenow.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: query-data
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT * FROM SHRINKAGE_INVESTIGATION
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: Shrinkage Investigation — {{store_id}}
          category: store-ops
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Shrinkage Investigation done.
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://macys.service-now.com/api/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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → shrinkage-investigation.yml

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

naftiko: '0.5'
info:
  label: New Associate Onboarding Orchestrator
  description: When a new associate is created in Workday, opens a ServiceNow onboarding ticket, provisions a Microsoft 365 account, and sends a Teams welcome message to the new hire.
  tags:
  - hr
  - onboarding
  - workday
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-onboarding
    port: 8080
    tools:
    - name: trigger-onboarding
      description: Given a Workday employee ID and store or department assignment, create a ServiceNow onboarding ticket, provision a Microsoft 365 account, and send a Teams welcome message.
      inputParameters:
      - name: employee_id
        type: string
        description: Workday worker ID for the new associate.
      - name: location
        type: string
        description: Store number or department name the associate is assigned to.
      - name: start_date
        type: string
        description: Employment start date in YYYY-MM-DD format.
      steps:
      - name: get-worker
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{employee_id}}'
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'New associate onboarding: {{get-worker.full_name}} — {{location}}'
          category: hr_onboarding
          assignment_group: IT_Onboarding
      - name: provision-m365
        type: call
        call: msgraph.create-user
        with:
          displayName: '{{get-worker.full_name}}'
          mail: '{{get-worker.work_email}}'
          officeLocation: '{{location}}'
      - name: send-welcome
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-worker.work_email}}'
          text: Welcome to Macy's, {{get-worker.first_name}}! Your onboarding ticket is {{create-ticket.number}}. We're excited to have you on the team.
  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: /macys/workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://macys.service-now.com/api/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: /chats
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → new-associate-onboarding-orchestrator.yml

Manages store signage updates for Macy's by creating ServiceNow print requests, checking SAP material availability, and notifying visual merchandising via Teams.

naftiko: '0.5'
info:
  label: Store Signage Management
  description: Manages store signage updates for Macy's by creating ServiceNow print requests, checking SAP material availability, and notifying visual merchandising via Teams.
  tags:
  - store-ops
  - servicenow
  - sap
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: merchandising
    port: 8080
    tools:
    - name: store-signage-management
      description: Manages store signage updates for Macy's by creating ServiceNow print requests and SAP checks.
      inputParameters:
      - name: store_id
        type: string
        description: Store identifier.
      - name: signage_type
        type: string
        description: Signage type.
      steps:
      - name: create-request
        type: call
        call: servicenow.create-task
        with:
          short_description: 'Signage update: {{signage_type}} — Store {{store_id}}'
          assignment_group: Visual_Merchandising
      - name: check-materials
        type: call
        call: sap.get-stock
        with:
          material: '{{signage_type}}'
          plant: '{{store_id}}'
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: visual-merchandising
          text: 'Signage request for Store {{store_id}}: {{signage_type}}. Task: {{create-request.number}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://macys.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: sap
    baseUri: https://macys-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-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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → store-signage-management.yml

Checks Datadog monitor status for Macy's.

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

Manages inventory write-offs for Macy's by creating SAP adjustments, logging in Snowflake, and creating ServiceNow audit records.

naftiko: '0.5'
info:
  label: Inventory Write-Off Pipeline
  description: Manages inventory write-offs for Macy's by creating SAP adjustments, logging in Snowflake, and creating ServiceNow audit records.
  tags:
  - inventory
  - sap
  - snowflake
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: inventory-ops
    port: 8080
    tools:
    - name: inventory-write-off-pipeline
      description: Manages inventory write-offs for Macy's by creating SAP adjustments and logging in Snowflake.
      inputParameters:
      - name: store_id
        type: string
        description: Store identifier.
      - name: reason
        type: string
        description: Write-off reason.
      steps:
      - name: create-adjustment
        type: call
        call: sap.post-adjustment
        with:
          plant: '{{store_id}}'
          reason: '{{reason}}'
      - name: log-writeoff
        type: call
        call: snowflake.run-query
        with:
          statement: INSERT INTO INVENTORY_WRITEOFFS VALUES ('{{store_id}}', '{{reason}}', CURRENT_TIMESTAMP())
      - name: create-audit
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Inventory write-off: Store {{store_id}} — {{reason}}'
          category: inventory
  consumes:
  - type: http
    namespace: sap
    baseUri: https://macys-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_DOCUMENT_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: adjustments
      path: /A_MaterialDocumentHeader
      operations:
      - name: post-adjustment
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://macys.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://macys.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → inventory-write-off-pipeline.yml

Orchestrates catalog sync pipeline for Macy's across inventory, sap, snowflake.

naftiko: '0.5'
info:
  label: Catalog Sync Pipeline
  description: Orchestrates catalog sync pipeline for Macy's across inventory, sap, snowflake.
  tags:
  - inventory
  - sap
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: merchandising
    port: 8080
    tools:
    - name: catalog-sync-pipeline
      description: Orchestrates catalog sync pipeline for Macy's across inventory, sap, snowflake.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: query-data
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT * FROM CATALOG_SYNC_PIPELINE
      - name: check-erp
        type: call
        call: sap.get-data
        with:
          entity: '{{store_id}}'
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Catalog Sync Pipeline done.
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.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://macys-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: entities
      path: /A_BusinessPartner
      operations:
      - name: get-data
        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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → catalog-sync-pipeline.yml

Orchestrates compliance review pipeline for Macy's across compliance, servicenow, snowflake.

naftiko: '0.5'
info:
  label: Compliance Review Pipeline
  description: Orchestrates compliance review pipeline for Macy's across compliance, servicenow, snowflake.
  tags:
  - compliance
  - servicenow
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: compliance
    port: 8080
    tools:
    - name: compliance-review-pipeline
      description: Orchestrates compliance review pipeline for Macy's across compliance, servicenow, snowflake.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: query-data
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT * FROM COMPLIANCE_REVIEW_PIPELINE
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: Compliance Review Pipeline — {{store_id}}
          category: compliance
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Compliance Review Pipeline done.
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://macys.service-now.com/api/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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → compliance-review-pipeline.yml

Summarizes completed Jira sprint story points and posts a velocity digest to the engineering Teams channel.

naftiko: '0.5'
info:
  label: Jira Sprint Velocity Digest
  description: Summarizes completed Jira sprint story points 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, retrieve completed issues and story points, then post a sprint 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: Engineering Teams channel ID.
      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 across {{get-sprint-issues.issueCount}} issues.
  consumes:
  - type: http
    namespace: jira
    baseUri: https://macys.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
Open in Framework → View in Fleet → jira-sprint-velocity-digest.yml

Orchestrates store safety audit pipeline for Macy's across store-ops, servicenow, workday.

naftiko: '0.5'
info:
  label: Store Safety Audit Pipeline
  description: Orchestrates store safety audit pipeline for Macy's across store-ops, servicenow, workday.
  tags:
  - store-ops
  - servicenow
  - workday
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: safety-ops
    port: 8080
    tools:
    - name: store-safety-audit-pipeline
      description: Orchestrates store safety audit pipeline for Macy's across store-ops, servicenow, workday.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: Store Safety Audit Pipeline — {{store_id}}
          category: store-ops
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Store Safety Audit Pipeline done.
      - name: get-hr
        type: call
        call: workday.get-workers
        with:
          store: '{{store_id}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://macys.service-now.com/api/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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        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: /macys/workers
      operations:
      - name: get-workers
        method: GET
Open in Framework → View in Fleet → store-safety-audit-pipeline.yml

Orchestrates cost optimization pipeline for Macy's across infrastructure, snowflake, servicenow.

naftiko: '0.5'
info:
  label: Cost Optimization Pipeline
  description: Orchestrates cost optimization pipeline for Macy's across infrastructure, snowflake, servicenow.
  tags:
  - infrastructure
  - snowflake
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finops
    port: 8080
    tools:
    - name: cost-optimization-pipeline
      description: Orchestrates cost optimization pipeline for Macy's across infrastructure, snowflake, servicenow.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: query-data
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT * FROM COST_OPTIMIZATION_PIPELINE
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: Cost Optimization Pipeline — {{store_id}}
          category: infrastructure
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Cost Optimization Pipeline done.
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://macys.service-now.com/api/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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → cost-optimization-pipeline.yml

Orchestrates contract renewal alerts for Macy's across procurement, sap, servicenow.

naftiko: '0.5'
info:
  label: Contract Renewal Alerts
  description: Orchestrates contract renewal alerts for Macy's across procurement, sap, servicenow.
  tags:
  - procurement
  - sap
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: procurement-ops
    port: 8080
    tools:
    - name: contract-renewal-alerts
      description: Orchestrates contract renewal alerts for Macy's across procurement, sap, servicenow.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: check-erp
        type: call
        call: sap.get-data
        with:
          entity: '{{store_id}}'
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: Contract Renewal Alerts — {{store_id}}
          category: procurement
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Contract Renewal Alerts done.
  consumes:
  - type: http
    namespace: sap
    baseUri: https://macys-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: entities
      path: /A_BusinessPartner
      operations:
      - name: get-data
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://macys.service-now.com/api/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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → contract-renewal-alerts.yml

Orchestrates shipment tracking pipeline for Macy's across supply-chain, sap, snowflake.

naftiko: '0.5'
info:
  label: Shipment Tracking Pipeline
  description: Orchestrates shipment tracking pipeline for Macy's across supply-chain, sap, snowflake.
  tags:
  - supply-chain
  - sap
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: logistics
    port: 8080
    tools:
    - name: shipment-tracking-pipeline
      description: Orchestrates shipment tracking pipeline for Macy's across supply-chain, sap, snowflake.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: query-data
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT * FROM SHIPMENT_TRACKING_PIPELINE
      - name: check-erp
        type: call
        call: sap.get-data
        with:
          entity: '{{store_id}}'
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Shipment Tracking Pipeline done.
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.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://macys-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: entities
      path: /A_BusinessPartner
      operations:
      - name: get-data
        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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → shipment-tracking-pipeline.yml

Orchestrates loyalty enrollment pipeline for Macy's across loyalty, salesforce, snowflake.

naftiko: '0.5'
info:
  label: Loyalty Enrollment Pipeline
  description: Orchestrates loyalty enrollment pipeline for Macy's across loyalty, salesforce, snowflake.
  tags:
  - loyalty
  - salesforce
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: loyalty-ops
    port: 8080
    tools:
    - name: loyalty-enrollment-pipeline
      description: Orchestrates loyalty enrollment pipeline for Macy's across loyalty, salesforce, snowflake.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: query-data
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT * FROM LOYALTY_ENROLLMENT_PIPELINE
      - name: get-sf
        type: call
        call: salesforce.query
        with:
          q: SELECT Id FROM Account
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Loyalty Enrollment Pipeline done.
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.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://macys.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: query
      path: /query
      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: channels
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → loyalty-enrollment-pipeline.yml

Checks workflow for Macy's.

naftiko: '0.5'
info:
  label: GitHub Workflow Status
  description: Checks workflow for Macy's.
  tags:
  - devops
  - github
  - infrastructure
capability:
  exposes:
  - type: mcp
    namespace: devops
    port: 8080
    tools:
    - name: get-wf
      description: Check workflow.
      inputParameters:
      - name: repo
        type: string
        description: Repo.
      - name: wf
        type: string
        description: Workflow.
      call: github.get-run
      with:
        repo: '{{repo}}'
        wf: '{{wf}}'
      outputParameters:
      - name: conclusion
        type: string
        mapping: $.workflow_runs[0].conclusion
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: runs
      path: /repos/{{repo}}/actions/workflows/{{wf}}/runs?per_page=1
      inputParameters:
      - name: repo
        in: path
      - name: wf
        in: path
      operations:
      - name: get-run
        method: GET
Open in Framework → View in Fleet → github-workflow-status.yml

Orchestrates recall response pipeline for Macy's across inventory, sap, snowflake.

naftiko: '0.5'
info:
  label: Recall Response Pipeline
  description: Orchestrates recall response pipeline for Macy's across inventory, sap, snowflake.
  tags:
  - inventory
  - sap
  - snowflake
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: product-safety
    port: 8080
    tools:
    - name: recall-response-pipeline
      description: Orchestrates recall response pipeline for Macy's across inventory, sap, snowflake.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: query-data
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT * FROM RECALL_RESPONSE_PIPELINE
      - name: check-erp
        type: call
        call: sap.get-data
        with:
          entity: '{{store_id}}'
      - name: get-sf
        type: call
        call: salesforce.query
        with:
          q: SELECT Id FROM Account
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.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://macys-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: entities
      path: /A_BusinessPartner
      operations:
      - name: get-data
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://macys.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: query
      path: /query
      operations:
      - name: query
        method: GET
Open in Framework → View in Fleet → recall-response-pipeline.yml

Extracts cost center budget vs. actuals from SAP S/4HANA and pushes variance rows to Power BI for finance reporting.

naftiko: '0.5'
info:
  label: SAP Budget Variance Report
  description: Extracts cost center budget vs. actuals from SAP S/4HANA and pushes variance rows to Power BI for finance reporting.
  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 and push the variance data to the Power BI finance dashboard dataset.
      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-actuals
        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_finance_dataset_id
          tableName: BudgetVariance
          rows: '{{get-actuals.rows}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://macys-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
Open in Framework → View in Fleet → sap-budget-variance-report.yml

Orchestrates gift card inquiry handler for Macy's across e-commerce, salesforce, snowflake.

naftiko: '0.5'
info:
  label: Gift Card Inquiry Handler
  description: Orchestrates gift card inquiry handler for Macy's across e-commerce, salesforce, snowflake.
  tags:
  - e-commerce
  - salesforce
  - snowflake
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: customer-ops
    port: 8080
    tools:
    - name: gift-card-inquiry-handler
      description: Orchestrates gift card inquiry handler for Macy's across e-commerce, salesforce, snowflake.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: query-data
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT * FROM GIFT_CARD_INQUIRY_HANDLER
      - name: get-sf
        type: call
        call: salesforce.query
        with:
          q: SELECT Id FROM Account
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: Gift Card Inquiry Handler — {{store_id}}
          category: e-commerce
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.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://macys.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: query
      path: /query
      operations:
      - name: query
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://macys.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → gift-card-inquiry-handler.yml

Looks up a Salesforce case by ID for Macy's.

naftiko: '0.5'
info:
  label: Salesforce Case Status Lookup
  description: Looks up a Salesforce case by ID for Macy's.
  tags:
  - crm
  - salesforce
  - customer-service
capability:
  exposes:
  - type: mcp
    namespace: crm
    port: 8080
    tools:
    - name: get-case-status
      description: Look up Salesforce case status.
      inputParameters:
      - name: case_id
        type: string
        description: Salesforce case ID.
      call: salesforce.get-case
      with:
        case_id: '{{case_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.Status
      - name: priority
        type: string
        mapping: $.Priority
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://macys.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: cases
      path: /sobjects/Case/{{case_id}}
      inputParameters:
      - name: case_id
        in: path
      operations:
      - name: get-case
        method: GET
Open in Framework → View in Fleet → salesforce-case-status-lookup.yml

Orchestrates price change pipeline for Macy's across e-commerce, sap, snowflake.

naftiko: '0.5'
info:
  label: Price Change Pipeline
  description: Orchestrates price change pipeline for Macy's across e-commerce, sap, snowflake.
  tags:
  - e-commerce
  - sap
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: pricing-ops
    port: 8080
    tools:
    - name: price-change-pipeline
      description: Orchestrates price change pipeline for Macy's across e-commerce, sap, snowflake.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: query-data
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT * FROM PRICE_CHANGE_PIPELINE
      - name: check-erp
        type: call
        call: sap.get-data
        with:
          entity: '{{store_id}}'
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Price Change Pipeline done.
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.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://macys-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: entities
      path: /A_BusinessPartner
      operations:
      - name: get-data
        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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → price-change-pipeline.yml

Retrieves ServiceNow incident details for Macy's.

naftiko: '0.5'
info:
  label: ServiceNow Incident Detail
  description: Retrieves ServiceNow incident details for Macy's.
  tags:
  - itsm
  - servicenow
  - store-ops
capability:
  exposes:
  - type: mcp
    namespace: itsm
    port: 8080
    tools:
    - name: get-incident-detail
      description: Look up ServiceNow incident.
      inputParameters:
      - name: incident_number
        type: string
        description: Incident number.
      call: servicenow.get-incident
      with:
        incident_number: '{{incident_number}}'
      outputParameters:
      - name: state
        type: string
        mapping: $.result.state
      - name: priority
        type: string
        mapping: $.result.priority
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://macys.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident?sysparm_query=number={{incident_number}}
      inputParameters:
      - name: incident_number
        in: query
      operations:
      - name: get-incident
        method: GET
Open in Framework → View in Fleet → servicenow-incident-detail.yml

Queries customer segments for Macy's.

naftiko: '0.5'
info:
  label: Snowflake Customer Segments
  description: Queries customer segments for Macy's.
  tags:
  - analytics
  - snowflake
  - loyalty
capability:
  exposes:
  - type: mcp
    namespace: analytics
    port: 8080
    tools:
    - name: get-segments
      description: Query segments.
      inputParameters:
      - name: segment
        type: string
        description: Segment.
      call: snowflake.run-query
      with:
        segment: '{{segment}}'
      outputParameters:
      - name: count
        type: integer
        mapping: $.data[0].COUNT
      - name: spend
        type: number
        mapping: $.data[0].AVG_SPEND
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → snowflake-customer-segments.yml

Triggers Power BI refresh for Macy's.

naftiko: '0.5'
info:
  label: Power BI Refresh
  description: Triggers Power BI refresh for Macy's.
  tags:
  - analytics
  - power-bi
  - store-ops
capability:
  exposes:
  - type: mcp
    namespace: analytics
    port: 8080
    tools:
    - name: refresh-dataset
      description: Trigger refresh.
      inputParameters:
      - name: dataset_id
        type: string
        description: Dataset ID.
      call: powerbi.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: refresh
        method: POST
Open in Framework → View in Fleet → power-bi-refresh.yml

Processes employee transfers for Macy's by updating Workday records, adjusting ServiceNow access, and notifying managers via Teams.

naftiko: '0.5'
info:
  label: Employee Transfer Processing
  description: Processes employee transfers for Macy's by updating Workday records, adjusting ServiceNow access, and notifying managers via Teams.
  tags:
  - hr
  - workday
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-ops
    port: 8080
    tools:
    - name: employee-transfer-processing
      description: Processes employee transfers for Macy's by updating Workday records, adjusting ServiceNow access.
      inputParameters:
      - name: worker_id
        type: string
        description: Workday worker ID.
      - name: new_store
        type: string
        description: New store assignment.
      steps:
      - name: get-worker
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{worker_id}}'
      - name: update-access
        type: call
        call: servicenow.create-task
        with:
          short_description: 'Transfer access update: {{worker_id}} to Store {{new_store}}'
          assignment_group: IT_Access
      - name: notify-manager
        type: call
        call: msteams.send-message
        with:
          channel_id: store-{{new_store}}-ops
          text: 'Employee transfer: {{get-worker.full_name}} transferring to Store {{new_store}}.'
  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: /macys/workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://macys.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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → employee-transfer-processing.yml

Orchestrates seasonal promotion setup for Macy's across e-commerce, sap, snowflake.

naftiko: '0.5'
info:
  label: Seasonal Promotion Setup
  description: Orchestrates seasonal promotion setup for Macy's across e-commerce, sap, snowflake.
  tags:
  - e-commerce
  - sap
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: merchandising
    port: 8080
    tools:
    - name: seasonal-promotion-setup
      description: Orchestrates seasonal promotion setup for Macy's across e-commerce, sap, snowflake.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: query-data
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT * FROM SEASONAL_PROMOTION_SETUP
      - name: check-erp
        type: call
        call: sap.get-data
        with:
          entity: '{{store_id}}'
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Seasonal Promotion Setup done.
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.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://macys-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: entities
      path: /A_BusinessPartner
      operations:
      - name: get-data
        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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → seasonal-promotion-setup.yml

Orchestrates energy monitoring pipeline for Macy's across store-ops, snowflake, sap.

naftiko: '0.5'
info:
  label: Energy Monitoring Pipeline
  description: Orchestrates energy monitoring pipeline for Macy's across store-ops, snowflake, sap.
  tags:
  - store-ops
  - snowflake
  - sap
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: facilities
    port: 8080
    tools:
    - name: energy-monitoring-pipeline
      description: Orchestrates energy monitoring pipeline for Macy's across store-ops, snowflake, sap.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: query-data
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT * FROM ENERGY_MONITORING_PIPELINE
      - name: check-erp
        type: call
        call: sap.get-data
        with:
          entity: '{{store_id}}'
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Energy Monitoring Pipeline done.
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.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://macys-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: entities
      path: /A_BusinessPartner
      operations:
      - name: get-data
        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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → energy-monitoring-pipeline.yml

Orchestrates remodel coordination for Macy's across store-ops, sap, servicenow.

naftiko: '0.5'
info:
  label: Remodel Coordination
  description: Orchestrates remodel coordination for Macy's across store-ops, sap, servicenow.
  tags:
  - store-ops
  - sap
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: construction
    port: 8080
    tools:
    - name: remodel-coordination
      description: Orchestrates remodel coordination for Macy's across store-ops, sap, servicenow.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: check-erp
        type: call
        call: sap.get-data
        with:
          entity: '{{store_id}}'
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: Remodel Coordination — {{store_id}}
          category: store-ops
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Remodel Coordination done.
  consumes:
  - type: http
    namespace: sap
    baseUri: https://macys-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: entities
      path: /A_BusinessPartner
      operations:
      - name: get-data
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://macys.service-now.com/api/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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → remodel-coordination.yml

Orchestrates markdown optimization pipeline for Macy's across e-commerce, snowflake, sap.

naftiko: '0.5'
info:
  label: Markdown Optimization Pipeline
  description: Orchestrates markdown optimization pipeline for Macy's across e-commerce, snowflake, sap.
  tags:
  - e-commerce
  - snowflake
  - sap
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: pricing-ops
    port: 8080
    tools:
    - name: markdown-optimization-pipeline
      description: Orchestrates markdown optimization pipeline for Macy's across e-commerce, snowflake, sap.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: query-data
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT * FROM MARKDOWN_OPTIMIZATION_PIPELINE
      - name: check-erp
        type: call
        call: sap.get-data
        with:
          entity: '{{store_id}}'
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Markdown Optimization Pipeline done.
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.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://macys-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: entities
      path: /A_BusinessPartner
      operations:
      - name: get-data
        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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → markdown-optimization-pipeline.yml

Orchestrates loyalty points reconciliation for Macy's across loyalty, salesforce, snowflake.

naftiko: '0.5'
info:
  label: Loyalty Points Reconciliation
  description: Orchestrates loyalty points reconciliation for Macy's across loyalty, salesforce, snowflake.
  tags:
  - loyalty
  - salesforce
  - snowflake
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: loyalty-ops
    port: 8080
    tools:
    - name: loyalty-points-reconciliation
      description: Orchestrates loyalty points reconciliation for Macy's across loyalty, salesforce, snowflake.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: query-data
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT * FROM LOYALTY_POINTS_RECONCILIATION
      - name: get-sf
        type: call
        call: salesforce.query
        with:
          q: SELECT Id FROM Account
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: Loyalty Points Reconciliation — {{store_id}}
          category: loyalty
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.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://macys.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: query
      path: /query
      operations:
      - name: query
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://macys.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → loyalty-points-reconciliation.yml

Orchestrates customer feedback analysis for Macy's across customer-service, salesforce, snowflake.

naftiko: '0.5'
info:
  label: Customer Feedback Analysis
  description: Orchestrates customer feedback analysis for Macy's across customer-service, salesforce, snowflake.
  tags:
  - customer-service
  - salesforce
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: analytics
    port: 8080
    tools:
    - name: customer-feedback-analysis
      description: Orchestrates customer feedback analysis for Macy's across customer-service, salesforce, snowflake.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: query-data
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT * FROM CUSTOMER_FEEDBACK_ANALYSIS
      - name: get-sf
        type: call
        call: salesforce.query
        with:
          q: SELECT Id FROM Account
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Customer Feedback Analysis done.
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.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://macys.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: query
      path: /query
      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: channels
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → customer-feedback-analysis.yml

Monitors Snowflake data pipeline task completions for retail analytics and creates a Jira issue when failure counts exceed a threshold.

naftiko: '0.5'
info:
  label: Snowflake Retail Analytics Pipeline Health
  description: Monitors Snowflake data pipeline task completions for retail analytics and creates a Jira issue when failure counts exceed a threshold.
  tags:
  - data
  - analytics
  - snowflake
  - jira
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: data-ops
    port: 8080
    tools:
    - name: check-analytics-pipeline-health
      description: Query Snowflake task history for the retail analytics database over the past N hours. If failures exceed the threshold, create a Jira issue and alert the data engineering Teams channel.
      inputParameters:
      - name: database
        type: string
        description: Snowflake database name (e.g., RETAIL_DW).
      - name: hours_back
        type: integer
        description: Number of hours to look back for failures.
      - name: failure_threshold
        type: integer
        description: Failure count above which an alert fires.
      steps:
      - name: get-task-history
        type: call
        call: snowflake.query-task-history
        with:
          database: '{{database}}'
          hoursBack: '{{hours_back}}'
      - name: create-issue
        type: call
        call: jira.create-issue
        with:
          project_key: DATA
          issuetype: Bug
          summary: Snowflake failures in {{database}}
          description: '{{get-task-history.failureCount}} task failures in last {{hours_back}}h'
      - name: alert-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: data-engineering
          text: 'Pipeline alert: {{get-task-history.failureCount}} failures in {{database}} (last {{hours_back}}h). Jira: {{create-issue.key}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: task-history
      path: /databases/{{database}}/schemas/information_schema/tasks
      inputParameters:
      - name: database
        in: path
      operations:
      - name: query-task-history
        method: GET
  - type: http
    namespace: jira
    baseUri: https://macys.atlassian.net/rest/api/3
    authentication:
      type: 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/data/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → snowflake-retail-analytics-pipeline-health.yml

Gets headcount for Macy's.

naftiko: '0.5'
info:
  label: Workday Headcount
  description: Gets headcount for Macy's.
  tags:
  - hr
  - workday
  - store-ops
capability:
  exposes:
  - type: mcp
    namespace: hr
    port: 8080
    tools:
    - name: get-hc
      description: Get headcount.
      inputParameters:
      - name: dept
        type: string
        description: Department.
      call: workday.get-hc
      with:
        dept: '{{dept}}'
      outputParameters:
      - name: total
        type: integer
        mapping: $.headcount.total
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: hc
      path: /macys/headcount
      operations:
      - name: get-hc
        method: GET
Open in Framework → View in Fleet → workday-headcount.yml

Retrieves Meta Ads Manager campaign performance metrics for a given Macy's campaign ID and date range for paid social reporting.

naftiko: '0.5'
info:
  label: Meta Retail Ad Performance Lookup
  description: Retrieves Meta Ads Manager campaign performance metrics for a given Macy's campaign ID and date range for paid social reporting.
  tags:
  - marketing
  - social
  - meta
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: meta-ads
    port: 8080
    tools:
    - name: get-meta-campaign-insights
      description: Fetch Meta Ads campaign insights including impressions, reach, clicks, and spend for a given campaign and date range. Use for weekly paid social performance reviews.
      inputParameters:
      - name: campaign_id
        type: string
        description: Meta Ads campaign 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: meta.get-campaign-insights
      with:
        campaign_id: '{{campaign_id}}'
        time_range_since: '{{date_from}}'
        time_range_until: '{{date_to}}'
      outputParameters:
      - name: impressions
        type: string
        mapping: $.data[0].impressions
      - name: reach
        type: string
        mapping: $.data[0].reach
      - name: clicks
        type: string
        mapping: $.data[0].clicks
      - 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: campaign-insights
      path: /{{campaign_id}}/insights
      inputParameters:
      - name: campaign_id
        in: path
      - name: time_range_since
        in: query
      - name: time_range_until
        in: query
      operations:
      - name: get-campaign-insights
        method: GET
Open in Framework → View in Fleet → meta-retail-ad-performance-lookup.yml

Queries inventory for Macy's.

naftiko: '0.5'
info:
  label: Snowflake Inventory Query
  description: Queries inventory for Macy's.
  tags:
  - inventory
  - snowflake
  - supply-chain
capability:
  exposes:
  - type: mcp
    namespace: analytics
    port: 8080
    tools:
    - name: query-inv
      description: Query inventory.
      inputParameters:
      - name: loc
        type: string
        description: Location.
      call: snowflake.run-query
      with:
        loc: '{{loc}}'
      outputParameters:
      - name: units
        type: integer
        mapping: $.data[0].UNITS
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → snowflake-inventory-query.yml

Orchestrates maintenance request workflow for Macy's across store-ops, servicenow, sap.

naftiko: '0.5'
info:
  label: Maintenance Request Workflow
  description: Orchestrates maintenance request workflow for Macy's across store-ops, servicenow, sap.
  tags:
  - store-ops
  - servicenow
  - sap
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: facilities
    port: 8080
    tools:
    - name: maintenance-request-workflow
      description: Orchestrates maintenance request workflow for Macy's across store-ops, servicenow, sap.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: check-erp
        type: call
        call: sap.get-data
        with:
          entity: '{{store_id}}'
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: Maintenance Request Workflow — {{store_id}}
          category: store-ops
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Maintenance Request Workflow done.
  consumes:
  - type: http
    namespace: sap
    baseUri: https://macys-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: entities
      path: /A_BusinessPartner
      operations:
      - name: get-data
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://macys.service-now.com/api/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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → maintenance-request-workflow.yml

Orchestrates emergency notification pipeline for Macy's across store-ops, workday, microsoft-teams.

naftiko: '0.5'
info:
  label: Emergency Notification Pipeline
  description: Orchestrates emergency notification pipeline for Macy's across store-ops, workday, microsoft-teams.
  tags:
  - store-ops
  - workday
  - microsoft-teams
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: emergency-ops
    port: 8080
    tools:
    - name: emergency-notification-pipeline
      description: Orchestrates emergency notification pipeline for Macy's across store-ops, workday, microsoft-teams.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: Emergency Notification Pipeline — {{store_id}}
          category: store-ops
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Emergency Notification Pipeline done.
      - name: get-hr
        type: call
        call: workday.get-workers
        with:
          store: '{{store_id}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://macys.service-now.com/api/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/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        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: /macys/workers
      operations:
      - name: get-workers
        method: GET
Open in Framework → View in Fleet → emergency-notification-pipeline.yml

Orchestrates cx survey pipeline for Macy's across customer-service, salesforce, snowflake.

naftiko: '0.5'
info:
  label: Cx Survey Pipeline
  description: Orchestrates cx survey pipeline for Macy's across customer-service, salesforce, snowflake.
  tags:
  - customer-service
  - salesforce
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: customer-ops
    port: 8080
    tools:
    - name: cx-survey-pipeline
      description: Orchestrates cx survey pipeline for Macy's across customer-service, salesforce, snowflake.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: query-data
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT * FROM CX_SURVEY_PIPELINE
      - name: get-sf
        type: call
        call: salesforce.query
        with:
          q: SELECT Id FROM Account
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Cx Survey Pipeline done.
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.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://macys.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: query
      path: /query
      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: channels
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → cx-survey-pipeline.yml

Orchestrates qbr report generator for Macy's across analytics, snowflake, salesforce.

naftiko: '0.5'
info:
  label: Qbr Report Generator
  description: Orchestrates qbr report generator for Macy's across analytics, snowflake, salesforce.
  tags:
  - analytics
  - snowflake
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finance-ops
    port: 8080
    tools:
    - name: qbr-report-generator
      description: Orchestrates qbr report generator for Macy's across analytics, snowflake, salesforce.
      inputParameters:
      - name: store_id
        type: string
        description: Store or entity identifier.
      - name: date
        type: string
        description: Date in YYYY-MM-DD.
      steps:
      - name: query-data
        type: call
        call: snowflake.run-query
        with:
          statement: SELECT * FROM QBR_REPORT_GENERATOR
      - name: get-sf
        type: call
        call: salesforce.query
        with:
          q: SELECT Id FROM Account
      - name: notify
        type: call
        call: msteams.send-message
        with:
          channel_id: ops-{{store_id}}
          text: Qbr Report Generator done.
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://macys.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://macys.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: query
      path: /query
      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: channels
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → qbr-report-generator.yml

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
Open in Framework → View in Fleet → dynatrace-e-commerce-platform-monitor.yml

Creates Zendesk support tickets for consumer complaints and product inquiries about Mattel toys.

naftiko: '0.5'
info:
  label: Zendesk Consumer Support Ticket
  description: Creates Zendesk support tickets for consumer complaints and product inquiries about Mattel toys.
  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.
      - name: product_name
        in: body
        type: string
        description: Product name.
      - name: issue_type
        in: body
        type: string
        description: Issue type (defect, missing-parts, safety, warranty).
      - 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://mattel.zendesk.com/api/v2
    authentication:
      type: bearer
      token: $secrets.zendesk_token
    resources:
    - name: tickets
      path: /tickets
      operations:
      - name: create-ticket
        method: POST
Open in Framework → View in Fleet → zendesk-consumer-support-ticket.yml

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
Open in Framework → View in Fleet → google-maps-distribution-center-locator.yml

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
Open in Framework → View in Fleet → adobe-analytics-brand-website-performance.yml

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
Open in Framework → View in Fleet → slack-daily-retail-sales-alert.yml

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
Open in Framework → View in Fleet → circana-market-share-intelligence.yml

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
Open in Framework → View in Fleet → f5-load-balancer-health-check.yml

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
Open in Framework → View in Fleet → mattel-data-lookup-10.yml

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
Open in Framework → View in Fleet → mattel-workflow-3.yml

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
Open in Framework → View in Fleet → mattel-workflow-16.yml

Monitors Palo Alto Networks firewall configurations at Mattel manufacturing plants and corporate offices for security compliance.

naftiko: '0.5'
info:
  label: Palo Alto Network Security Monitor
  description: Monitors Palo Alto Networks firewall configurations at Mattel manufacturing plants and corporate offices for security compliance.
  tags:
  - security
  - palo-alto-networks
  - compliance
capability:
  exposes:
  - type: mcp
    namespace: network-security
    port: 8080
    tools:
    - name: audit-firewall-rules
      description: Audit Palo Alto firewall rules for a Mattel facility.
      inputParameters:
      - name: device_group
        in: body
        type: string
        description: Palo Alto device group.
      call: paloalto.get-security-rules
      with:
        device_group: '{{device_group}}'
  consumes:
  - type: http
    namespace: paloalto
    baseUri: https://mattel-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
Open in Framework → View in Fleet → palo-alto-network-security-monitor.yml

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
Open in Framework → View in Fleet → mattel-workflow-17.yml

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
Open in Framework → View in Fleet → mattel-workflow-2.yml

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
Open in Framework → View in Fleet → e-commerce-order-fulfillment-sync.yml

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
Open in Framework → View in Fleet → product-safety-recall-manager.yml

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
Open in Framework → View in Fleet → mattel-data-lookup-11.yml

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
Open in Framework → View in Fleet → toy-safety-compliance-document-manager.yml

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
Open in Framework → View in Fleet → google-analytics-brand-website-tracker.yml

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
Open in Framework → View in Fleet → mattel-data-lookup-13.yml

Retrieves retail customer account details from Salesforce for Mattel's major retail partners including order history and account tier.

naftiko: '0.5'
info:
  label: Salesforce Retail Account Lookup
  description: Retrieves retail customer account details from Salesforce for Mattel's major retail partners including order history and account tier.
  tags:
  - retail
  - salesforce
  - account-management
capability:
  exposes:
  - type: mcp
    namespace: retail-crm
    port: 8080
    tools:
    - name: get-retail-account
      description: Look up a retail account in Salesforce.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: Salesforce account ID.
      call: salesforce.get-account
      with:
        account_id: '{{account_id}}'
  consumes:
  - 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: /sobjects/Account/{{account_id}}
      inputParameters:
      - name: account_id
        in: path
      operations:
      - name: get-account
        method: GET
Open in Framework → View in Fleet → salesforce-retail-account-lookup.yml

Publishes Mattel brand 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 Mattel brand 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-brand-content
      description: Pull creative and publish across social media platforms for a Mattel brand.
      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: Mattel 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}} #Mattel'
      - 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
Open in Framework → View in Fleet → social-media-brand-campaign-publisher.yml

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
Open in Framework → View in Fleet → mattel-workflow-15.yml

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
Open in Framework → View in Fleet → mattel-workflow-29.yml

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
Open in Framework → View in Fleet → mattel-workflow-28.yml

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
Open in Framework → View in Fleet → mattel-workflow-14.yml

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
Open in Framework → View in Fleet → mattel-workflow-1.yml

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
Open in Framework → View in Fleet → mattel-data-lookup-12.yml

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
Open in Framework → View in Fleet → mattel-data-lookup-9.yml

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
Open in Framework → View in Fleet → zoom-toy-fair-virtual-event-manager.yml

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
Open in Framework → View in Fleet → mattel-workflow-5.yml

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
Open in Framework → View in Fleet → mattel-workflow-10.yml

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
Open in Framework → View in Fleet → mattel-workflow-11.yml

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
Open in Framework → View in Fleet → mattel-workflow-4.yml

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
Open in Framework → View in Fleet → mattel-data-lookup-8.yml

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
Open in Framework → View in Fleet → mattel-data-lookup-15.yml

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
Open in Framework → View in Fleet → licensing-deal-tracker.yml

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
Open in Framework → View in Fleet → mattel-workflow-6.yml

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
Open in Framework → View in Fleet → mailchimp-brand-newsletter-manager.yml

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
Open in Framework → View in Fleet → mattel-workflow-13.yml

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
Open in Framework → View in Fleet → mattel-workflow-12.yml

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
Open in Framework → View in Fleet → mattel-workflow-7.yml

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
Open in Framework → View in Fleet → microsoft-planner-product-development-tracker.yml

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
Open in Framework → View in Fleet → datadog-application-performance-monitor.yml

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
Open in Framework → View in Fleet → sap-sales-order-lookup.yml

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
Open in Framework → View in Fleet → inventory-demand-forecast-pipeline.yml

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
Open in Framework → View in Fleet → mattel-data-lookup-14.yml

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
Open in Framework → View in Fleet → cloudflare-e-commerce-cdn-monitor.yml

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
Open in Framework → View in Fleet → mattel-data-lookup-6.yml

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
Open in Framework → View in Fleet → asana-brand-marketing-tracker.yml

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
Open in Framework → View in Fleet → mattel-workflow-23.yml

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
Open in Framework → View in Fleet → mattel-workflow-22.yml

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
Open in Framework → View in Fleet → microsoft-excel-financial-report-builder.yml

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
Open in Framework → View in Fleet → mattel-data-lookup-7.yml

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
Open in Framework → View in Fleet → canva-brand-design-asset-manager.yml

Monitors Jira sprint progress for Mattel digital and product development teams, tracking story completion and blockers.

naftiko: '0.5'
info:
  label: Jira Product Development Sprint Tracker
  description: Monitors Jira sprint progress for Mattel digital and product development teams, tracking story completion 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://mattel.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
Open in Framework → View in Fleet → jira-product-development-sprint-tracker.yml

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
Open in Framework → View in Fleet → mattel-data-lookup-5.yml

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
Open in Framework → View in Fleet → google-tag-manager-tracking-validator.yml

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
Open in Framework → View in Fleet → mattel-workflow-9.yml

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
Open in Framework → View in Fleet → mattel-workflow-34.yml

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
Open in Framework → View in Fleet → mattel-workflow-20.yml

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
Open in Framework → View in Fleet → mattel-workflow-21.yml

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
Open in Framework → View in Fleet → mattel-workflow-35.yml

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
Open in Framework → View in Fleet → mattel-workflow-8.yml

Refreshes the Power BI manufacturing dashboard with latest production, quality, and equipment effectiveness data for Mattel factories.

naftiko: '0.5'
info:
  label: Power BI Manufacturing Dashboard
  description: Refreshes the Power BI manufacturing dashboard with latest production, quality, and equipment effectiveness data for Mattel factories.
  tags:
  - manufacturing
  - power-bi
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: mfg-bi
    port: 8080
    tools:
    - name: refresh-mfg-dashboard
      description: Trigger a Power BI dataset refresh for manufacturing analytics.
      inputParameters:
      - name: dataset_id
        in: body
        type: string
        description: Power BI dataset ID.
      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
Open in Framework → View in Fleet → power-bi-manufacturing-dashboard.yml

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
Open in Framework → View in Fleet → perforce-design-asset-version-control.yml

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
Open in Framework → View in Fleet → mattel-data-lookup-4.yml

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
Open in Framework → View in Fleet → vendor-quality-audit-pipeline.yml

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
Open in Framework → View in Fleet → confluence-product-knowledge-base.yml

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
Open in Framework → View in Fleet → mattel-workflow-19.yml

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
Open in Framework → View in Fleet → mattel-workflow-31.yml

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
Open in Framework → View in Fleet → mattel-workflow-25.yml

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
Open in Framework → View in Fleet → product-design-review-pipeline.yml

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
Open in Framework → View in Fleet → mattel-workflow-24.yml

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
Open in Framework → View in Fleet → sap-concur-expense-report-lookup.yml

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
Open in Framework → View in Fleet → mattel-workflow-30.yml

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
Open in Framework → View in Fleet → mattel-workflow-18.yml

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
Open in Framework → View in Fleet → mattel-data-lookup-1.yml

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
Open in Framework → View in Fleet → azure-devops-ci-pipeline-monitor.yml

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
Open in Framework → View in Fleet → mattel-data-lookup-3.yml

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
Open in Framework → View in Fleet → mattel-workflow-26.yml

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
Open in Framework → View in Fleet → mattel-workflow-32.yml

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
Open in Framework → View in Fleet → mattel-workflow-33.yml

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
Open in Framework → View in Fleet → mattel-workflow-27.yml

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
Open in Framework → View in Fleet → github-actions-ci-pipeline-monitor.yml

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
Open in Framework → View in Fleet → hubspot-consumer-marketing-campaign.yml

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
Open in Framework → View in Fleet → mattel-data-lookup-2.yml

Publishes Mattel employer brand content to LinkedIn, highlighting design culture, innovation, and career opportunities.

naftiko: '0.5'
info:
  label: LinkedIn Employer Brand Publisher
  description: Publishes Mattel employer brand content to LinkedIn, highlighting design 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 Mattel LinkedIn page.
      inputParameters:
      - name: content_text
        in: body
        type: string
        description: Post content text.
      - name: image_url
        in: body
        type: string
        description: Image URL.
      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
Open in Framework → View in Fleet → linkedin-employer-brand-publisher.yml

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
Open in Framework → View in Fleet → xbox-gaming-integration-tracker.yml

Creates ServiceNow incidents for IT issues at Mattel offices, manufacturing plants, and design studios.

naftiko: '0.5'
info:
  label: ServiceNow IT Incident Creator
  description: Creates ServiceNow incidents for IT issues at Mattel offices, manufacturing plants, and design studios.
  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://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
Open in Framework → View in Fleet → servicenow-it-incident-creator.yml

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
Open in Framework → View in Fleet → informatica-product-master-data-pipeline.yml

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
Open in Framework → View in Fleet → youtube-brand-content-uploader.yml

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
Open in Framework → View in Fleet → microsoft-power-automate-order-routing.yml

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
Open in Framework → View in Fleet → new-toy-launch-orchestrator.yml

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
Open in Framework → View in Fleet → workday-recruiting-pipeline.yml

Refreshes the Tableau retail analytics dashboard with latest sell-through data, inventory levels, and retailer performance metrics.

naftiko: '0.5'
info:
  label: Tableau Retail Analytics Dashboard
  description: Refreshes the Tableau retail analytics dashboard with latest sell-through data, inventory levels, and retailer performance metrics.
  tags:
  - retail
  - tableau
  - reporting
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: retail-analytics
    port: 8080
    tools:
    - name: refresh-retail-dashboard
      description: Trigger a Tableau dataset refresh for retail 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://mattel-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
Open in Framework → View in Fleet → tableau-retail-analytics-dashboard.yml

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
Open in Framework → View in Fleet → marketo-campaign-launch-orchestrator.yml

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
Open in Framework → View in Fleet → axway-api-gateway-traffic-monitor.yml

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
Open in Framework → View in Fleet → ollama-internal-ai-assistant-monitor.yml

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
Open in Framework → View in Fleet → nike-direct-inventory-replenishment-trigger.yml

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
Open in Framework → View in Fleet → dynamodb-session-lookup.yml

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
Open in Framework → View in Fleet → figma-brand-asset-compliance-checker.yml

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
Open in Framework → View in Fleet → sailpoint-access-review-campaign.yml

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
Open in Framework → View in Fleet → sap-concur-athlete-travel-compliance.yml

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
Open in Framework → View in Fleet → workday-new-hire-onboarding-orchestrator.yml

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
Open in Framework → View in Fleet → okta-access-review-and-compliance-audit.yml

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
Open in Framework → View in Fleet → aws-lambda-function-error-handler.yml

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
Open in Framework → View in Fleet → microsoft-sentinel-security-alert-handler.yml

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
Open in Framework → View in Fleet → jira-sprint-status-report.yml

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
Open in Framework → View in Fleet → workday-headcount-by-cost-center.yml

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
Open in Framework → View in Fleet → workday-headcount-vs-plan-tracker.yml

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
Open in Framework → View in Fleet → apache-airflow-dag-failure-handler.yml

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
Open in Framework → View in Fleet → google-tag-manager-nike-com-audit.yml

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
Open in Framework → View in Fleet → zendesk-customer-sentiment-escalation.yml

When a termination is confirmed in Workday, deactivates Okta access, disables the Microsoft 365 account, closes open ServiceNow tickets, and notifies the manager via Teams.

naftiko: '0.5'
info:
  label: Employee Offboarding and Access Revocation
  description: When a termination is confirmed in Workday, deactivates Okta access, disables the Microsoft 365 account, closes open ServiceNow tickets, and notifies the manager via Teams.
  tags:
  - hr
  - offboarding
  - workday
  - okta
  - microsoft-365
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: hr-offboarding
    port: 8080
    tools:
    - name: trigger-offboarding
      description: Given a Workday employee ID, deactivate their Okta account, disable Microsoft 365 access, and notify the manager in Teams. Invoke when HR confirms a termination in Workday.
      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 employee's last day in YYYY-MM-DD format.
      steps:
      - name: get-employee
        type: call
        call: workday-off.get-worker
        with:
          worker_id: '{{employee_id}}'
      - name: deactivate-okta
        type: call
        call: okta-off.deactivate-user
        with:
          login: '{{get-employee.work_email}}'
      - name: disable-m365
        type: call
        call: msgraph-off.disable-user
        with:
          user_upn: '{{get-employee.work_email}}'
      - name: notify-manager
        type: call
        call: msteams-off.send-message
        with:
          recipient_upn: '{{get-employee.manager_email}}'
          text: 'Offboarding complete for {{get-employee.full_name}} (last day: {{termination_date}}). All system access has been revoked.'
  consumes:
  - type: http
    namespace: workday-off
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /nike/workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: okta-off
    baseUri: https://nike.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_api_token
      placement: header
    resources:
    - name: user-lifecycle
      path: /users/{{login}}/lifecycle/deactivate
      inputParameters:
      - name: login
        in: path
      operations:
      - name: deactivate-user
        method: POST
  - type: http
    namespace: msgraph-off
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: users
      path: /users/{{user_upn}}
      inputParameters:
      - name: user_upn
        in: path
      operations:
      - name: disable-user
        method: PATCH
  - type: http
    namespace: msteams-off
    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
Open in Framework → View in Fleet → employee-offboarding-and-access-revocation.yml

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
Open in Framework → View in Fleet → workday-performance-review-campaign-launch.yml

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
Open in Framework → View in Fleet → paradox-recruiting-chatbot-analytics.yml

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
Open in Framework → View in Fleet → athlete-endorsement-contract-tracker.yml

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
Open in Framework → View in Fleet → sap-concur-expense-approval-escalation.yml

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
Open in Framework → View in Fleet → coupa-procurement-request-router.yml

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
Open in Framework → View in Fleet → adobe-analytics-product-campaign-digest.yml

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
Open in Framework → View in Fleet → notion-product-roadmap-sync.yml

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
Open in Framework → View in Fleet → servicenow-it-incident-p1-escalation.yml

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
Open in Framework → View in Fleet → salesforce-zoominfo-lead-enrichment.yml

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
Open in Framework → View in Fleet → sap-period-close-checklist-automation.yml

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
Open in Framework → View in Fleet → docusign-contract-execution-tracker.yml

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
Open in Framework → View in Fleet → nike-app-user-engagement-analyzer.yml

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
Open in Framework → View in Fleet → datadog-slo-compliance-weekly-report.yml

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
Open in Framework → View in Fleet → github-dependabot-alert-triage.yml

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
Open in Framework → View in Fleet → sap-ariba-procurement-request-routing.yml

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
Open in Framework → View in Fleet → sap-cost-center-lookup.yml

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
Open in Framework → View in Fleet → slack-to-jira-product-feedback-pipeline.yml

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
Open in Framework → View in Fleet → microsoft-teams-channel-message-sender.yml

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
Open in Framework → View in Fleet → docker-container-vulnerability-scanner.yml

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
Open in Framework → View in Fleet → airtable-sample-tracking-workflow.yml

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
Open in Framework → View in Fleet → sap-customs-import-duty-calculator.yml

Monitors Azure Data Factory pipelines in Snowflake, logs execution metrics, creates ServiceNow incidents for failures, and alerts the data team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Azure Data Factory Pipeline Monitor
  description: Monitors Azure Data Factory pipelines in Snowflake, logs execution metrics, creates ServiceNow incidents for failures, and alerts the data team via Microsoft Teams.
  tags:
  - data-engineering
  - azure-data-factory
  - snowflake
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: azure_data_factory_p
    port: 8080
    tools:
    - name: azure-data
      description: Given an execution date, run the azure data factory pipeline 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.AZURE_DATA_FACTORY_PIPELINE_MONITOR LIMIT 100
      - name: process-results
        type: call
        call: snowflake.execute-statement
        with:
          statement: INSERT INTO ANALYTICS.AZURE_DATA_FACTORY_PIPELINE_MO_RESULTS SELECT * FROM staging
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          category: data-engineering
          short_description: Azure Data Factory Pipeline Monitor processing complete
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          channel_id: $secrets.teams_azure_data_factory_p_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
Open in Framework → View in Fleet → azure-data-factory-pipeline-monitor.yml

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
Open in Framework → View in Fleet → github-copilot-adoption-tracker.yml

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
Open in Framework → View in Fleet → workday-integration-failure-handler.yml

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
Open in Framework → View in Fleet → salesforce-customer-onboarding-orchestrator.yml

Retrieves a Zendesk support ticket by ID.

naftiko: '0.5'
info:
  label: Zendesk Support Ticket Lookup
  description: Retrieves a Zendesk support ticket by ID.
  tags:
  - support
  - zendesk
  - customer-service
capability:
  exposes:
  - type: mcp
    namespace: customer-support
    port: 8080
    tools:
    - name: get-ticket
      description: Given a Zendesk ticket ID, retrieve details. Use for support escalations.
      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
  consumes:
  - type: http
    namespace: zendesk
    baseUri: https://nike.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
Open in Framework → View in Fleet → zendesk-support-ticket-lookup.yml

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
Open in Framework → View in Fleet → aws-cloud-cost-anomaly-alert.yml

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
Open in Framework → View in Fleet → workday-benefits-open-enrollment-reminder.yml

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
Open in Framework → View in Fleet → workday-payroll-reconciliation-workflow.yml

Monitors MuleSoft API integration health in Snowflake, creates ServiceNow incidents for failing integrations, and alerts the integration team via Microsoft Teams.

naftiko: '0.5'
info:
  label: MuleSoft Integration Health Monitor
  description: Monitors MuleSoft API integration health 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_integration
    port: 8080
    tools:
    - name: mulesoft-integration
      description: Given an execution date, run the mulesoft integration health 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.MULESOFT_INTEGRATION_HEALTH_MONITOR LIMIT 100
      - name: process-results
        type: call
        call: snowflake.execute-statement
        with:
          statement: INSERT INTO ANALYTICS.MULESOFT_INTEGRATION_HEALTH_MO_RESULTS SELECT * FROM staging
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          category: integration
          short_description: MuleSoft Integration Health Monitor processing complete
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          channel_id: $secrets.teams_mulesoft_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
Open in Framework → View in Fleet → mulesoft-integration-health-monitor.yml

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
Open in Framework → View in Fleet → okta-user-lookup.yml

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
Open in Framework → View in Fleet → sap-seasonal-allocation-planner.yml

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
Open in Framework → View in Fleet → salesforce-lead-enrichment-via-zoominfo.yml

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
Open in Framework → View in Fleet → kubernetes-cluster-cost-allocation-reporter.yml

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
Open in Framework → View in Fleet → sap-return-merchandise-authorization-processor.yml

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
Open in Framework → View in Fleet → sap-ariba-footwear-supplier-onboarding.yml

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
Open in Framework → View in Fleet → marketo-campaign-performance-sync.yml

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
Open in Framework → View in Fleet → workday-retail-staffing-forecast.yml

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
Open in Framework → View in Fleet → sap-inventory-aging-alert.yml

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
Open in Framework → View in Fleet → github-ci-cd-pipeline-failure-response.yml

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
Open in Framework → View in Fleet → sustainable-materials-sourcing-tracker.yml

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
Open in Framework → View in Fleet → warehouse-pick-pack-ship-optimizer.yml

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
Open in Framework → View in Fleet → snowflake-e-commerce-data-pipeline-monitor.yml

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
Open in Framework → View in Fleet → workday-performance-review-cycle-launcher.yml

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
Open in Framework → View in Fleet → workday-job-requisition-to-linkedin-posting.yml

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
Open in Framework → View in Fleet → e-commerce-checkout-conversion-monitor.yml

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
Open in Framework → View in Fleet → snkrs-app-release-monitoring-chain.yml

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
Open in Framework → View in Fleet → anthropic-product-content-generator.yml

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

naftiko: '0.5'
info:
  label: SAP S/4HANA Purchase Order Lookup
  description: Looks up a SAP S/4HANA purchase order by number and returns header status, vendor, total value, and delivery schedule for procurement and finance teams.
  tags:
  - finance
  - procurement
  - sap
  - purchase-order
capability:
  exposes:
  - type: mcp
    namespace: erp
    port: 8080
    tools:
    - name: get-purchase-order
      description: Look up a SAP purchase order by PO number. Returns header status, vendor, total value, currency, and delivery schedule. Use for invoice matching, supplier queries, and spend reporting.
      inputParameters:
      - name: po_number
        in: body
        type: string
        description: The SAP purchase order number (e.g., 4500012345).
      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://nike-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
Open in Framework → View in Fleet → sap-s-4hana-purchase-order-lookup.yml

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
Open in Framework → View in Fleet → adobe-analytics-nike-com-traffic-digest.yml

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
Open in Framework → View in Fleet → airtable-product-catalog-lookup.yml

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
Open in Framework → View in Fleet → sap-period-end-close-checklist.yml

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
Open in Framework → View in Fleet → github-repository-info-lookup.yml

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
Open in Framework → View in Fleet → sneaker-launch-demand-signal-processor.yml

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
Open in Framework → View in Fleet → salesforce-wholesale-pipeline-digest.yml

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
Open in Framework → View in Fleet → retail-store-traffic-analytics-pipeline.yml

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
Open in Framework → View in Fleet → open-enrollment-benefits-sync.yml

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
Open in Framework → View in Fleet → anthropic-product-description-generator.yml

Retrieves a Confluence page by ID.

naftiko: '0.5'
info:
  label: Confluence Page Lookup
  description: Retrieves a Confluence page by ID.
  tags:
  - documentation
  - confluence
  - knowledge-management
capability:
  exposes:
  - type: mcp
    namespace: knowledge
    port: 8080
    tools:
    - name: get-page
      description: Given a Confluence page ID, retrieve details. Use for documentation reviews.
      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
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://nike.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
Open in Framework → View in Fleet → confluence-page-lookup.yml

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
Open in Framework → View in Fleet → canva-design-asset-lookup.yml

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
Open in Framework → View in Fleet → product-design-to-development-handoff.yml

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
Open in Framework → View in Fleet → workday-job-requisition-approval-chain.yml

Retrieves metadata for a Figma design file.

naftiko: '0.5'
info:
  label: Figma Design File Lookup
  description: Retrieves metadata for a Figma design file.
  tags:
  - design
  - figma
  - creative
capability:
  exposes:
  - type: mcp
    namespace: design
    port: 8080
    tools:
    - name: get-design-file
      description: Given a Figma file key, retrieve metadata. Use for design review workflows.
      inputParameters:
      - name: file_key
        in: body
        type: string
        description: The Figma file key.
      call: figma.get-file
      with:
        file_key: '{{file_key}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.name
      - name: last_modified
        type: string
        mapping: $.lastModified
  consumes:
  - type: http
    namespace: figma
    baseUri: https://api.figma.com/v1
    authentication:
      type: bearer
      token: $secrets.figma_token
    resources:
    - name: files
      path: /files/{{file_key}}
      inputParameters:
      - name: file_key
        in: path
      operations:
      - name: get-file
        method: GET
Open in Framework → View in Fleet → figma-design-file-lookup.yml

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
Open in Framework → View in Fleet → databricks-product-recommendation-pipeline.yml

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
Open in Framework → View in Fleet → workday-worker-profile-lookup.yml

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
Open in Framework → View in Fleet → sap-sustainability-reporting-pipeline.yml

Sends notifications to Nordstrom Slack channels for internal team communications and alerts.

naftiko: '0.5'
info:
  label: Slack Internal Communications
  description: Sends notifications to Nordstrom Slack channels for internal team communications and alerts.
  tags:
  - collaboration
  - slack
  - notifications
capability:
  exposes:
  - type: mcp
    namespace: notifications
    port: 8080
    tools:
    - name: send-slack-notification
      description: Send a message to a Slack channel.
      inputParameters:
      - name: channel
        in: body
        type: string
        description: The Slack channel.
      - name: message
        in: body
        type: string
        description: The message text.
      call: slack.post-message
      with:
        channel: '{{channel}}'
        text: '{{message}}'
      outputParameters:
      - name: message_ts
        type: string
        mapping: $.ts
  consumes:
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → slack-internal-communications.yml

Retrieves e-commerce performance metrics from Google Analytics for Nordstrom.com, returning revenue, conversion rate, and average order value.

naftiko: '0.5'
info:
  label: Google Analytics E-Commerce Metrics
  description: Retrieves e-commerce performance metrics from Google Analytics for Nordstrom.com, returning revenue, conversion rate, and average order value.
  tags:
  - e-commerce
  - analytics
  - google-analytics
capability:
  exposes:
  - type: mcp
    namespace: e-commerce-analytics
    port: 8080
    tools:
    - name: get-ecommerce-metrics
      description: Fetch e-commerce metrics from Google Analytics by 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.run-report
      with:
        start_date: '{{start_date}}'
        end_date: '{{end_date}}'
      outputParameters:
      - name: revenue
        type: string
        mapping: $.rows[0].metricValues[0].value
      - name: conversion_rate
        type: string
        mapping: $.rows[0].metricValues[1].value
      - name: avg_order_value
        type: string
        mapping: $.rows[0].metricValues[2].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: run-report
        method: POST
Open in Framework → View in Fleet → google-analytics-e-commerce-metrics.yml

Queries Datadog for the current health status of Nordstrom infrastructure.

naftiko: '0.5'
info:
  label: Datadog Infrastructure Health Check
  description: Queries Datadog for the current health status of Nordstrom infrastructure.
  tags:
  - infrastructure
  - monitoring
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: infra-monitoring
    port: 8080
    tools:
    - name: get-infra-health
      description: Retrieve Datadog infrastructure health summary.
      inputParameters:
      - name: environment
        in: body
        type: string
        description: The environment to check (production, staging).
      call: datadog.get-monitors
      with:
        environment: '{{environment}}'
      outputParameters:
      - name: total_hosts
        type: string
        mapping: $.total_hosts
      - name: active_alerts
        type: string
        mapping: $.alert_count
  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
      operations:
      - name: get-monitors
        method: GET
Open in Framework → View in Fleet → datadog-infrastructure-health-check.yml

Invokes the Azure ML product recommendation model for personalized shopping experiences.

naftiko: '0.5'
info:
  label: Azure Machine Learning Recommendation Model
  description: Invokes the Azure ML product recommendation model for personalized shopping experiences.
  tags:
  - e-commerce
  - azure-machine-learning
  - personalization
capability:
  exposes:
  - type: mcp
    namespace: ml-recommendations
    port: 8080
    tools:
    - name: get-recommendations
      description: Get product recommendations by customer profile.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The customer identifier.
      - name: context
        in: body
        type: string
        description: Shopping context (browsing, cart, checkout).
      call: azureml.predict-recommendations
      with:
        customer_id: '{{customer_id}}'
        context: '{{context}}'
      outputParameters:
      - name: recommendations
        type: array
        mapping: $.result.products
  consumes:
  - type: http
    namespace: azureml
    baseUri: https://nordstrom-ml.eastus.inference.ml.azure.com
    authentication:
      type: bearer
      token: $secrets.azureml_token
    resources:
    - name: scoring
      path: /score
      operations:
      - name: predict-recommendations
        method: POST
Open in Framework → View in Fleet → azure-machine-learning-recommendation-model.yml

Manages compensation reviews by pulling employee performance data from Workday, market benchmarks from Oracle, and notifying HR leaders via Microsoft Teams.

naftiko: '0.5'
info:
  label: Workday Compensation Review Orchestrator
  description: Manages compensation reviews by pulling employee performance data from Workday, market benchmarks from Oracle, and notifying HR leaders via Microsoft Teams.
  tags:
  - hr
  - compensation
  - workday
  - oracle-cloud
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-compensation
    port: 8080
    tools:
    - name: initiate-comp-review
      description: Given a department and review cycle, pull performance data, benchmarks, and notify HR.
      inputParameters:
      - name: department
        in: body
        type: string
        description: The department name.
      - name: review_cycle
        in: body
        type: string
        description: The review cycle (e.g., 2025-annual).
      steps:
      - name: get-performance
        type: call
        call: workday.get-department-reviews
        with:
          department: '{{department}}'
          cycle: '{{review_cycle}}'
      - name: get-benchmarks
        type: call
        call: oracle.get-market-benchmarks
        with:
          department: '{{department}}'
      - name: notify-hr
        type: call
        call: msteams.send-message
        with:
          channel_id: hr-compensation
          text: 'Comp review ready for {{department}} ({{review_cycle}}). Employees: {{get-performance.count}}. Avg performance: {{get-performance.avg_rating}}. Market midpoint: {{get-benchmarks.market_midpoint}}.'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: reviews
      path: /performanceReviews
      operations:
      - name: get-department-reviews
        method: POST
  - type: http
    namespace: oracle
    baseUri: https://nordstrom.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: bearer
      token: $secrets.oracle_cloud_token
    resources:
    - name: benchmarks
      path: /compensationBenchmarks
      operations:
      - name: get-market-benchmarks
        method: POST
  - 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
Open in Framework → View in Fleet → workday-compensation-review-orchestrator.yml

Checks the status of an Azure DevOps build pipeline for Nordstrom engineering.

naftiko: '0.5'
info:
  label: Azure DevOps Pipeline Status
  description: Checks the status of an Azure DevOps build pipeline for Nordstrom engineering.
  tags:
  - development
  - azure-devops
  - ci-cd
capability:
  exposes:
  - type: mcp
    namespace: ci-cd
    port: 8080
    tools:
    - name: get-pipeline-status
      description: Check Azure DevOps pipeline build status.
      inputParameters:
      - name: build_id
        in: body
        type: string
        description: The build identifier.
      call: azuredevops.get-build
      with:
        build_id: '{{build_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.status
      - name: result
        type: string
        mapping: $.result
  consumes:
  - type: http
    namespace: azuredevops
    baseUri: https://dev.azure.com/nordstrom
    authentication:
      type: bearer
      token: $secrets.azuredevops_token
    resources:
    - name: builds
      path: /{{project}}/_apis/build/builds/{{build_id}}?api-version=7.0
      inputParameters:
      - name: project
        in: path
      - name: build_id
        in: path
      operations:
      - name: get-build
        method: GET
Open in Framework → View in Fleet → azure-devops-pipeline-status.yml

Retrieves application performance metrics from New Relic for Nordstrom digital properties.

naftiko: '0.5'
info:
  label: New Relic Application Performance Lookup
  description: Retrieves application performance metrics from New Relic for Nordstrom digital properties.
  tags:
  - monitoring
  - new-relic
  - application-performance
capability:
  exposes:
  - type: mcp
    namespace: apm
    port: 8080
    tools:
    - name: get-app-performance
      description: Look up New Relic application performance by app name.
      inputParameters:
      - name: app_name
        in: body
        type: string
        description: The New Relic application name.
      call: newrelic.get-app-metrics
      with:
        app_name: '{{app_name}}'
      outputParameters:
      - name: response_time
        type: string
        mapping: $.application.application_summary.response_time
      - name: throughput
        type: string
        mapping: $.application.application_summary.throughput
      - name: error_rate
        type: string
        mapping: $.application.application_summary.error_rate
  consumes:
  - type: http
    namespace: newrelic
    baseUri: https://api.newrelic.com/v2
    authentication:
      type: apiKey
      key: $secrets.newrelic_api_key
    resources:
    - name: applications
      path: /applications.json?filter[name]={{app_name}}
      inputParameters:
      - name: app_name
        in: query
      operations:
      - name: get-app-metrics
        method: GET
Open in Framework → View in Fleet → new-relic-application-performance-lookup.yml

Manages store associate schedules by pulling staffing needs from Oracle, checking employee availability in Workday, generating optimal schedules, and posting assignments to Microsoft Teams.

naftiko: '0.5'
info:
  label: Store Associate Schedule Manager
  description: Manages store associate schedules by pulling staffing needs from Oracle, checking employee availability in Workday, generating optimal schedules, and posting assignments to Microsoft Teams.
  tags:
  - retail
  - scheduling
  - oracle-cloud
  - workday
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: store-scheduling
    port: 8080
    tools:
    - name: generate-store-schedule
      description: Given a store ID and week, pull staffing needs, check availability, and publish the schedule.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: The store identifier.
      - name: week_start
        in: body
        type: string
        description: The week start date in YYYY-MM-DD format.
      steps:
      - name: get-staffing-needs
        type: call
        call: oracle.get-staffing-forecast
        with:
          store_id: '{{store_id}}'
          week: '{{week_start}}'
      - name: check-availability
        type: call
        call: workday.get-store-availability
        with:
          store_id: '{{store_id}}'
          week: '{{week_start}}'
      - name: post-schedule
        type: call
        call: msteams.send-message
        with:
          channel_id: store-{{store_id}}-schedule
          text: 'Schedule for week of {{week_start}}: Staffing need: {{get-staffing-needs.total_hours}} hours. Available associates: {{check-availability.available_count}}. Coverage: {{check-availability.coverage_pct}}%.'
  consumes:
  - type: http
    namespace: oracle
    baseUri: https://nordstrom.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: bearer
      token: $secrets.oracle_cloud_token
    resources:
    - name: staffing
      path: /staffingForecasts
      operations:
      - name: get-staffing-forecast
        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: availability
      path: /workers/availability
      operations:
      - name: get-store-availability
        method: POST
  - 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
Open in Framework → View in Fleet → store-associate-schedule-manager.yml

Processes a loyalty points redemption by validating the member's balance in Salesforce, applying the discount to the order, updating the points ledger, and sending a confirmation via Adobe Campaign.

naftiko: '0.5'
info:
  label: Loyalty Points Redemption Orchestrator
  description: Processes a loyalty points redemption by validating the member's balance in Salesforce, applying the discount to the order, updating the points ledger, and sending a confirmation via Adobe Campaign.
  tags:
  - loyalty
  - redemption
  - salesforce
  - adobe-campaign
capability:
  exposes:
  - type: mcp
    namespace: loyalty-redemption
    port: 8080
    tools:
    - name: redeem-loyalty-points
      description: Given a member ID, order ID, and points to redeem, validate balance, apply discount, update ledger, and confirm.
      inputParameters:
      - name: member_id
        in: body
        type: string
        description: The loyalty member identifier.
      - name: order_id
        in: body
        type: string
        description: The order to apply redemption to.
      - name: points_to_redeem
        in: body
        type: string
        description: Number of points to redeem.
      steps:
      - name: validate-balance
        type: call
        call: salesforce.get-loyalty-member
        with:
          member_id: '{{member_id}}'
      - name: apply-discount
        type: call
        call: salesforce.apply-loyalty-discount
        with:
          order_id: '{{order_id}}'
          points: '{{points_to_redeem}}'
          member_id: '{{member_id}}'
      - name: update-ledger
        type: call
        call: salesforce.debit-points
        with:
          member_id: '{{member_id}}'
          points: '{{points_to_redeem}}'
      - name: send-confirmation
        type: call
        call: adobe-campaign.trigger-email
        with:
          template: points_redemption
          recipient_email: '{{validate-balance.email}}'
          points_redeemed: '{{points_to_redeem}}'
          new_balance: '{{update-ledger.new_balance}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://nordstrom.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: loyalty-members
      path: /sobjects/Loyalty_Member__c/{{member_id}}
      inputParameters:
      - name: member_id
        in: path
      operations:
      - name: get-loyalty-member
        method: GET
    - name: loyalty-discounts
      path: /sobjects/Loyalty_Discount__c
      operations:
      - name: apply-loyalty-discount
        method: POST
    - name: points-ledger
      path: /sobjects/Points_Ledger__c
      operations:
      - name: debit-points
        method: POST
  - type: http
    namespace: adobe-campaign
    baseUri: https://mc.adobe.io/nordstrom/campaign
    authentication:
      type: bearer
      token: $secrets.adobe_campaign_token
    resources:
    - name: email-triggers
      path: /profileAndServicesExt/aemTriggerEvent
      operations:
      - name: trigger-email
        method: POST
Open in Framework → View in Fleet → loyalty-points-redemption-orchestrator.yml

Retrieves the current status of a Nordstrom GitHub repository.

naftiko: '0.5'
info:
  label: GitHub Repository Status
  description: Retrieves the current status of a Nordstrom GitHub repository.
  tags:
  - development
  - github
capability:
  exposes:
  - type: mcp
    namespace: dev-ops
    port: 8080
    tools:
    - name: get-repo-status
      description: Look up GitHub repository status by repo name.
      inputParameters:
      - name: repo_name
        in: body
        type: string
        description: The GitHub repository name.
      call: github.get-repo
      with:
        repo: '{{repo_name}}'
      outputParameters:
      - name: open_prs
        type: string
        mapping: $.open_issues_count
      - name: default_branch
        type: string
        mapping: $.default_branch
      - name: last_push
        type: string
        mapping: $.pushed_at
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: repos
      path: /repos/nordstrom/{{repo}}
      inputParameters:
      - name: repo
        in: path
      operations:
      - name: get-repo
        method: GET
Open in Framework → View in Fleet → github-repository-status.yml

Searches the Nordstrom product catalog via Elasticsearch by keyword, returning product name, price, availability, and brand.

naftiko: '0.5'
info:
  label: E-Commerce Product Search
  description: Searches the Nordstrom product catalog via Elasticsearch by keyword, returning product name, price, availability, and brand.
  tags:
  - e-commerce
  - product-catalog
  - elasticsearch
capability:
  exposes:
  - type: mcp
    namespace: catalog
    port: 8080
    tools:
    - name: search-products
      description: Search the product catalog by keyword.
      inputParameters:
      - name: query
        in: body
        type: string
        description: The search query keywords.
      - name: category
        in: body
        type: string
        description: Product category filter.
      call: elasticsearch.search-products
      with:
        query: '{{query}}'
        category: '{{category}}'
      outputParameters:
      - name: products
        type: array
        mapping: $.hits.hits
      - name: total_results
        type: string
        mapping: $.hits.total.value
  consumes:
  - type: http
    namespace: elasticsearch
    baseUri: https://nordstrom-catalog.es.amazonaws.com
    authentication:
      type: bearer
      token: $secrets.elasticsearch_token
    resources:
    - name: products
      path: /products/_search
      operations:
      - name: search-products
        method: POST
Open in Framework → View in Fleet → e-commerce-product-search.yml

Synchronizes product listings between Nordstrom's catalog and BigCommerce marketplace by pulling catalog data from Elasticsearch, updating BigCommerce listings, and logging results in SharePoint.

naftiko: '0.5'
info:
  label: BigCommerce Marketplace Sync
  description: Synchronizes product listings between Nordstrom's catalog and BigCommerce marketplace by pulling catalog data from Elasticsearch, updating BigCommerce listings, and logging results in SharePoint.
  tags:
  - e-commerce
  - marketplace
  - elasticsearch
  - bigcommerce
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: marketplace-sync
    port: 8080
    tools:
    - name: sync-marketplace-listings
      description: Given a product category, sync catalog data to BigCommerce and log the results.
      inputParameters:
      - name: category
        in: body
        type: string
        description: The product category to sync.
      steps:
      - name: get-catalog-data
        type: call
        call: elasticsearch.get-category-products
        with:
          category: '{{category}}'
      - name: update-bigcommerce
        type: call
        call: bigcommerce.bulk-update-products
        with:
          products: '{{get-catalog-data.products}}'
      - name: log-sync
        type: call
        call: sharepoint.upload-file
        with:
          site_id: marketplace_site
          folder_path: SyncLogs/{{category}}
          file_name: sync_log.json
          content: 'Category: {{category}} | Synced: {{update-bigcommerce.updated_count}} | Errors: {{update-bigcommerce.error_count}}'
  consumes:
  - type: http
    namespace: elasticsearch
    baseUri: https://nordstrom-catalog.es.amazonaws.com
    authentication:
      type: bearer
      token: $secrets.elasticsearch_token
    resources:
    - name: products
      path: /products/_search
      operations:
      - name: get-category-products
        method: POST
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/{{store_hash}}/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    inputParameters:
    - name: store_hash
      in: path
      value: $secrets.bigcommerce_store_hash
    resources:
    - name: products
      path: /catalog/products
      operations:
      - name: bulk-update-products
        method: PUT
  - 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
Open in Framework → View in Fleet → bigcommerce-marketplace-sync.yml

Retrieves a Nordy Club loyalty member's profile from Salesforce, returning tier status, points balance, lifetime spend, and reward certificates.

naftiko: '0.5'
info:
  label: Loyalty Program Member Lookup
  description: Retrieves a Nordy Club loyalty member's profile from Salesforce, returning tier status, points balance, lifetime spend, and reward certificates.
  tags:
  - loyalty
  - customer-experience
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: loyalty
    port: 8080
    tools:
    - name: get-loyalty-member
      description: Look up a Nordy Club loyalty member by member ID.
      inputParameters:
      - name: member_id
        in: body
        type: string
        description: The loyalty program member identifier.
      call: salesforce.get-loyalty-member
      with:
        member_id: '{{member_id}}'
      outputParameters:
      - name: tier_status
        type: string
        mapping: $.Tier_Status__c
      - name: points_balance
        type: string
        mapping: $.Points_Balance__c
      - name: lifetime_spend
        type: string
        mapping: $.Lifetime_Spend__c
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://nordstrom.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: loyalty-members
      path: /sobjects/Loyalty_Member__c/{{member_id}}
      inputParameters:
      - name: member_id
        in: path
      operations:
      - name: get-loyalty-member
        method: GET
Open in Framework → View in Fleet → loyalty-program-member-lookup.yml

Retrieves ad campaign performance metrics from Meta/Facebook Marketing API.

naftiko: '0.5'
info:
  label: Facebook Campaign Performance Lookup
  description: Retrieves ad campaign performance metrics from Meta/Facebook Marketing API.
  tags:
  - marketing
  - facebook
  - meta
  - advertising
capability:
  exposes:
  - type: mcp
    namespace: social-advertising
    port: 8080
    tools:
    - name: get-fb-campaign
      description: Look up Facebook ad campaign metrics by campaign ID.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: The Facebook campaign identifier.
      call: facebook.get-campaign-insights
      with:
        campaign_id: '{{campaign_id}}'
      outputParameters:
      - name: impressions
        type: string
        mapping: $.data[0].impressions
      - name: reach
        type: string
        mapping: $.data[0].reach
      - name: spend
        type: string
        mapping: $.data[0].spend
  consumes:
  - type: http
    namespace: facebook
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.facebook_token
    resources:
    - name: insights
      path: /{{campaign_id}}/insights
      inputParameters:
      - name: campaign_id
        in: path
      operations:
      - name: get-campaign-insights
        method: GET
Open in Framework → View in Fleet → facebook-campaign-performance-lookup.yml

Optimizes seasonal markdowns by pulling sell-through rates from Teradata, running pricing models in Azure ML, updating prices in Oracle, and notifying store managers via Microsoft Teams.

naftiko: '0.5'
info:
  label: Seasonal Markdown Optimization Pipeline
  description: Optimizes seasonal markdowns by pulling sell-through rates from Teradata, running pricing models in Azure ML, updating prices in Oracle, and notifying store managers via Microsoft Teams.
  tags:
  - retail
  - pricing
  - teradata
  - azure-machine-learning
  - oracle-cloud
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: pricing-optimization
    port: 8080
    tools:
    - name: optimize-markdowns
      description: Given a product category and target sell-through, analyze data, optimize prices, update systems, and notify.
      inputParameters:
      - name: category
        in: body
        type: string
        description: The product category.
      - name: target_sellthrough
        in: body
        type: string
        description: Target sell-through percentage.
      steps:
      - name: get-sellthrough
        type: call
        call: teradata.query-sellthrough
        with:
          category: '{{category}}'
      - name: optimize-pricing
        type: call
        call: azureml.predict-optimal-markdown
        with:
          sellthrough_data: '{{get-sellthrough.results}}'
          target: '{{target_sellthrough}}'
      - name: update-prices
        type: call
        call: oracle.update-pricing
        with:
          category: '{{category}}'
          markdown_data: '{{optimize-pricing.recommendations}}'
      - name: notify-managers
        type: call
        call: msteams.send-message
        with:
          channel_id: merchandising-alerts
          text: 'Markdown optimization for {{category}}: {{optimize-pricing.items_updated}} items updated. Average markdown: {{optimize-pricing.avg_markdown_pct}}%. Target sellthrough: {{target_sellthrough}}%.'
  consumes:
  - type: http
    namespace: teradata
    baseUri: https://nordstrom-analytics.teradata.com/api/v1
    authentication:
      type: bearer
      token: $secrets.teradata_token
    resources:
    - name: sellthrough
      path: /query
      operations:
      - name: query-sellthrough
        method: POST
  - type: http
    namespace: azureml
    baseUri: https://nordstrom-ml.eastus.inference.ml.azure.com
    authentication:
      type: bearer
      token: $secrets.azureml_token
    resources:
    - name: scoring
      path: /score
      operations:
      - name: predict-optimal-markdown
        method: POST
  - type: http
    namespace: oracle
    baseUri: https://nordstrom.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: bearer
      token: $secrets.oracle_cloud_token
    resources:
    - name: pricing
      path: /priceLists
      operations:
      - name: update-pricing
        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
Open in Framework → View in Fleet → seasonal-markdown-optimization-pipeline.yml

Checks the status of AWS CloudWatch alarms for Nordstrom cloud infrastructure.

naftiko: '0.5'
info:
  label: AWS CloudWatch Alarm Status
  description: Checks the status of AWS CloudWatch alarms for Nordstrom cloud infrastructure.
  tags:
  - monitoring
  - cloudwatch
  - cloud
capability:
  exposes:
  - type: mcp
    namespace: cloud-monitoring
    port: 8080
    tools:
    - name: get-alarm-status
      description: Check CloudWatch alarm status by alarm name.
      inputParameters:
      - name: alarm_name
        in: body
        type: string
        description: The CloudWatch alarm name.
      call: cloudwatch.describe-alarm
      with:
        alarm_name: '{{alarm_name}}'
      outputParameters:
      - name: state
        type: string
        mapping: $.MetricAlarms[0].StateValue
      - name: reason
        type: string
        mapping: $.MetricAlarms[0].StateReason
  consumes:
  - type: http
    namespace: cloudwatch
    baseUri: https://monitoring.us-east-1.amazonaws.com
    authentication:
      type: aws
      accessKeyId: $secrets.aws_access_key
      secretAccessKey: $secrets.aws_secret_key
    resources:
    - name: alarms
      path: /?Action=DescribeAlarms&AlarmNames.member.1={{alarm_name}}
      inputParameters:
      - name: alarm_name
        in: query
      operations:
      - name: describe-alarm
        method: GET
Open in Framework → View in Fleet → aws-cloudwatch-alarm-status.yml

Queries Cloudflare analytics for Nordstrom web properties, returning bandwidth, cache hit ratio, and threat counts.

naftiko: '0.5'
info:
  label: Cloudflare CDN Performance Check
  description: Queries Cloudflare analytics for Nordstrom web properties, returning bandwidth, cache hit ratio, and threat counts.
  tags:
  - infrastructure
  - cloudflare
  - cdn
capability:
  exposes:
  - type: mcp
    namespace: cdn
    port: 8080
    tools:
    - name: get-cdn-performance
      description: Retrieve Cloudflare CDN performance metrics for a given zone.
      inputParameters:
      - name: zone_id
        in: body
        type: string
        description: The Cloudflare zone identifier.
      call: cloudflare.get-zone-analytics
      with:
        zone_id: '{{zone_id}}'
      outputParameters:
      - name: bandwidth
        type: string
        mapping: $.result.totals.bandwidth.all
      - name: cache_hit_ratio
        type: string
        mapping: $.result.totals.bandwidth.cached
      - name: threats
        type: string
        mapping: $.result.totals.threats.all
  consumes:
  - type: http
    namespace: cloudflare
    baseUri: https://api.cloudflare.com/client/v4
    authentication:
      type: bearer
      token: $secrets.cloudflare_token
    resources:
    - name: zone-analytics
      path: /zones/{{zone_id}}/analytics/dashboard
      inputParameters:
      - name: zone_id
        in: path
      operations:
      - name: get-zone-analytics
        method: GET
Open in Framework → View in Fleet → cloudflare-cdn-performance-check.yml

Creates shoppable Instagram posts by generating product images via Adobe Creative Cloud, publishing to Instagram, and tracking engagement in Google Analytics.

naftiko: '0.5'
info:
  label: Instagram Social Commerce Post
  description: Creates shoppable Instagram posts by generating product images via Adobe Creative Cloud, publishing to Instagram, and tracking engagement in Google Analytics.
  tags:
  - marketing
  - social-commerce
  - adobe-creative-cloud
  - instagram
  - google-analytics
capability:
  exposes:
  - type: mcp
    namespace: social-commerce
    port: 8080
    tools:
    - name: create-shoppable-post
      description: Given a product ID and campaign name, create visual assets, post to Instagram, and set up tracking.
      inputParameters:
      - name: product_id
        in: body
        type: string
        description: The product identifier.
      - name: campaign_name
        in: body
        type: string
        description: The marketing campaign name.
      - name: caption
        in: body
        type: string
        description: The Instagram post caption.
      steps:
      - name: create-assets
        type: call
        call: adobe-cc.generate-product-image
        with:
          product_id: '{{product_id}}'
          template: instagram_square
      - name: publish-post
        type: call
        call: instagram.create-post
        with:
          image_url: '{{create-assets.image_url}}'
          caption: '{{caption}} #Nordstrom #ShopNow'
      - name: track-engagement
        type: call
        call: google-analytics.create-campaign-tracking
        with:
          campaign_name: '{{campaign_name}}'
          source: instagram
          medium: social
  consumes:
  - type: http
    namespace: adobe-cc
    baseUri: https://cc-api-storage.adobe.io/v1
    authentication:
      type: bearer
      token: $secrets.adobe_cc_token
    resources:
    - name: images
      path: /renditions
      operations:
      - name: generate-product-image
        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-post
        method: POST
  - type: http
    namespace: google-analytics
    baseUri: https://analyticsdata.googleapis.com/v1beta
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: campaign-tracking
      path: /properties/{{property_id}}/customDimensions
      inputParameters:
      - name: property_id
        in: path
      operations:
      - name: create-campaign-tracking
        method: POST
Open in Framework → View in Fleet → instagram-social-commerce-post.yml

Retrieves website performance metrics from Adobe Analytics for Nordstrom.com, returning page views, unique visitors, and bounce rate.

naftiko: '0.5'
info:
  label: Adobe Analytics Site Performance
  description: Retrieves website performance metrics from Adobe Analytics for Nordstrom.com, returning page views, unique visitors, and bounce rate.
  tags:
  - e-commerce
  - analytics
  - adobe-analytics
capability:
  exposes:
  - type: mcp
    namespace: site-analytics
    port: 8080
    tools:
    - name: get-site-performance
      description: Fetch Adobe Analytics site performance metrics by 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: adobe-analytics.get-report
      with:
        start_date: '{{start_date}}'
        end_date: '{{end_date}}'
      outputParameters:
      - name: page_views
        type: string
        mapping: $.totalCount
      - name: unique_visitors
        type: string
        mapping: $.summaryData.uniqueVisitors
      - name: bounce_rate
        type: string
        mapping: $.summaryData.bounceRate
  consumes:
  - type: http
    namespace: adobe-analytics
    baseUri: https://analytics.adobe.io/api/nordstrom/reports
    authentication:
      type: bearer
      token: $secrets.adobe_analytics_token
    resources:
    - name: reports
      path: /ranked
      operations:
      - name: get-report
        method: POST
Open in Framework → View in Fleet → adobe-analytics-site-performance.yml

Orchestrates a personalized omnichannel experience by pulling customer profile from Salesforce, fetching browsing history from Adobe Analytics, generating personalized recommendations via TensorFlow, and delivering via Adobe Campaign.

naftiko: '0.5'
info:
  label: Omnichannel Customer Experience Pipeline
  description: Orchestrates a personalized omnichannel experience by pulling customer profile from Salesforce, fetching browsing history from Adobe Analytics, generating personalized recommendations via TensorFlow, and delivering via Adobe Campaign.
  tags:
  - e-commerce
  - personalization
  - salesforce
  - adobe-analytics
  - tensorflow
  - adobe-campaign
capability:
  exposes:
  - type: mcp
    namespace: personalization
    port: 8080
    tools:
    - name: deliver-personalized-experience
      description: Given a customer ID and channel, pull profile and behavior data, generate recommendations, and deliver personalized content.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The customer identifier.
      - name: channel
        in: body
        type: string
        description: The delivery channel (email, app-push, sms).
      steps:
      - name: get-profile
        type: call
        call: salesforce.get-customer
        with:
          customer_id: '{{customer_id}}'
      - name: get-behavior
        type: call
        call: adobe-analytics.get-customer-behavior
        with:
          customer_id: '{{customer_id}}'
      - name: generate-recommendations
        type: call
        call: tensorflow.predict-recommendations
        with:
          customer_profile: '{{get-profile}}'
          browsing_history: '{{get-behavior.recent_views}}'
      - name: deliver-content
        type: call
        call: adobe-campaign.trigger-personalized
        with:
          customer_email: '{{get-profile.email}}'
          channel: '{{channel}}'
          recommendations: '{{generate-recommendations.products}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://nordstrom.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: customers
      path: /sobjects/Customer__c/{{customer_id}}
      inputParameters:
      - name: customer_id
        in: path
      operations:
      - name: get-customer
        method: GET
  - type: http
    namespace: adobe-analytics
    baseUri: https://analytics.adobe.io/api/nordstrom
    authentication:
      type: bearer
      token: $secrets.adobe_analytics_token
    resources:
    - name: customer-behavior
      path: /reports/customer/{{customer_id}}
      inputParameters:
      - name: customer_id
        in: path
      operations:
      - name: get-customer-behavior
        method: GET
  - type: http
    namespace: tensorflow
    baseUri: https://nordstrom-ml.amazonaws.com/v1
    authentication:
      type: bearer
      token: $secrets.tensorflow_serving_token
    resources:
    - name: models
      path: /models/product_recommendations:predict
      operations:
      - name: predict-recommendations
        method: POST
  - type: http
    namespace: adobe-campaign
    baseUri: https://mc.adobe.io/nordstrom/campaign
    authentication:
      type: bearer
      token: $secrets.adobe_campaign_token
    resources:
    - name: personalized-triggers
      path: /profileAndServicesExt/aemTriggerEvent
      operations:
      - name: trigger-personalized
        method: POST
Open in Framework → View in Fleet → omnichannel-customer-experience-pipeline.yml

Creates and manages LinkedIn job postings for Nordstrom retail positions.

naftiko: '0.5'
info:
  label: LinkedIn Job Posting Manager
  description: Creates and manages LinkedIn job postings for Nordstrom retail positions.
  tags:
  - recruiting
  - linkedin
  - talent-acquisition
capability:
  exposes:
  - type: mcp
    namespace: recruiting
    port: 8080
    tools:
    - name: create-job-posting
      description: Create a LinkedIn job posting.
      inputParameters:
      - name: title
        in: body
        type: string
        description: The job title.
      - name: description
        in: body
        type: string
        description: The job description.
      - name: location
        in: body
        type: string
        description: The job location.
      call: linkedin.create-job
      with:
        title: '{{title}}'
        description: '{{description}}'
        location: '{{location}}'
      outputParameters:
      - name: job_id
        type: string
        mapping: $.id
      - name: status
        type: string
        mapping: $.status
  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
        method: POST
Open in Framework → View in Fleet → linkedin-job-posting-manager.yml

Captures leads from HubSpot forms, enriches with ZoomInfo data, creates contacts in Salesforce, and assigns to the appropriate sales team via Microsoft Teams notification.

naftiko: '0.5'
info:
  label: HubSpot Lead Capture Pipeline
  description: Captures leads from HubSpot forms, enriches with ZoomInfo data, creates contacts in Salesforce, and assigns to the appropriate sales team via Microsoft Teams notification.
  tags:
  - marketing
  - lead-capture
  - hubspot
  - zoominfo
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: lead-management
    port: 8080
    tools:
    - name: process-lead
      description: Given a HubSpot form submission ID, enrich with ZoomInfo, create in Salesforce, and notify sales.
      inputParameters:
      - name: submission_id
        in: body
        type: string
        description: The HubSpot form submission identifier.
      steps:
      - name: get-submission
        type: call
        call: hubspot.get-form-submission
        with:
          submission_id: '{{submission_id}}'
      - name: enrich-data
        type: call
        call: zoominfo.enrich-contact
        with:
          email: '{{get-submission.email}}'
      - name: create-lead
        type: call
        call: salesforce.create-lead
        with:
          name: '{{get-submission.name}}'
          email: '{{get-submission.email}}'
          company: '{{enrich-data.company}}'
          title: '{{enrich-data.title}}'
      - name: notify-sales
        type: call
        call: msteams.send-message
        with:
          channel_id: sales-leads
          text: 'New lead: {{get-submission.name}} from {{enrich-data.company}} ({{enrich-data.title}}). Salesforce: {{create-lead.id}}.'
  consumes:
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: submissions
      path: /form-integrations/v1/submissions/{{submission_id}}
      inputParameters:
      - name: submission_id
        in: path
      operations:
      - name: get-form-submission
        method: GET
  - type: http
    namespace: zoominfo
    baseUri: https://api.zoominfo.com/v2
    authentication:
      type: bearer
      token: $secrets.zoominfo_token
    resources:
    - name: contacts
      path: /contacts/enrich
      operations:
      - name: enrich-contact
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://nordstrom.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: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → hubspot-lead-capture-pipeline.yml

Generates demand forecasts by pulling sales history from Teradata, running the ML forecast model in Azure Machine Learning, and publishing results to SharePoint for the merchandising team.

naftiko: '0.5'
info:
  label: Supply Chain Demand Forecast Pipeline
  description: Generates demand forecasts by pulling sales history from Teradata, running the ML forecast model in Azure Machine Learning, and publishing results to SharePoint for the merchandising team.
  tags:
  - supply-chain
  - forecasting
  - teradata
  - azure-machine-learning
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: demand-forecast
    port: 8080
    tools:
    - name: generate-demand-forecast
      description: Given a product category and forecast horizon, pull sales history, run the forecast model, and publish results.
      inputParameters:
      - name: category
        in: body
        type: string
        description: The product category.
      - name: horizon_weeks
        in: body
        type: string
        description: Forecast horizon in weeks.
      steps:
      - name: get-sales-history
        type: call
        call: teradata.query-sales
        with:
          category: '{{category}}'
      - name: run-forecast
        type: call
        call: azureml.predict-demand
        with:
          sales_data: '{{get-sales-history.results}}'
          horizon: '{{horizon_weeks}}'
      - name: publish-forecast
        type: call
        call: sharepoint.upload-file
        with:
          site_id: merchandising_site
          folder_path: DemandForecasts/{{category}}
          file_name: forecast_{{horizon_weeks}}wk.json
          content: '{{run-forecast.forecast_data}}'
  consumes:
  - type: http
    namespace: teradata
    baseUri: https://nordstrom-analytics.teradata.com/api/v1
    authentication:
      type: bearer
      token: $secrets.teradata_token
    resources:
    - name: queries
      path: /query
      operations:
      - name: query-sales
        method: POST
  - type: http
    namespace: azureml
    baseUri: https://nordstrom-ml.eastus.inference.ml.azure.com
    authentication:
      type: bearer
      token: $secrets.azureml_token
    resources:
    - name: scoring
      path: /score
      operations:
      - name: predict-demand
        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}}/{{file_name}}:/content
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      - name: file_name
        in: path
      operations:
      - name: upload-file
        method: PUT
Open in Framework → View in Fleet → supply-chain-demand-forecast-pipeline.yml

Executes a sales analytics query against Teradata, returning department revenue, units sold, and average selling price.

naftiko: '0.5'
info:
  label: Teradata Sales Analytics Query
  description: Executes a sales analytics query against Teradata, returning department revenue, units sold, and average selling price.
  tags:
  - analytics
  - teradata
  - sales
capability:
  exposes:
  - type: mcp
    namespace: sales-analytics
    port: 8080
    tools:
    - name: query-sales-analytics
      description: Run a Teradata sales analytics query by department and date range.
      inputParameters:
      - name: department
        in: body
        type: string
        description: The merchandise department.
      - name: start_date
        in: body
        type: string
        description: Start date in YYYY-MM-DD.
      - name: end_date
        in: body
        type: string
        description: End date in YYYY-MM-DD.
      call: teradata.query-sales
      with:
        department: '{{department}}'
        start_date: '{{start_date}}'
        end_date: '{{end_date}}'
      outputParameters:
      - name: total_revenue
        type: string
        mapping: $.results[0].total_revenue
      - name: units_sold
        type: string
        mapping: $.results[0].units_sold
      - name: avg_selling_price
        type: string
        mapping: $.results[0].avg_price
  consumes:
  - type: http
    namespace: teradata
    baseUri: https://nordstrom-analytics.teradata.com/api/v1
    authentication:
      type: bearer
      token: $secrets.teradata_token
    resources:
    - name: queries
      path: /query
      operations:
      - name: query-sales
        method: POST
Open in Framework → View in Fleet → teradata-sales-analytics-query.yml

Retrieves Tableau dashboard metadata for Nordstrom business reporting.

naftiko: '0.5'
info:
  label: Tableau Reporting Dashboard Lookup
  description: Retrieves Tableau dashboard metadata for Nordstrom business reporting.
  tags:
  - analytics
  - tableau
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: bi-reporting
    port: 8080
    tools:
    - name: get-tableau-dashboard
      description: Look up a Tableau workbook by ID.
      inputParameters:
      - name: workbook_id
        in: body
        type: string
        description: The Tableau workbook identifier.
      call: tableau.get-workbook
      with:
        workbook_id: '{{workbook_id}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.workbook.name
      - name: view_count
        type: string
        mapping: $.workbook.viewCount
      - name: updated_at
        type: string
        mapping: $.workbook.updatedAt
  consumes:
  - type: http
    namespace: tableau
    baseUri: https://nordstrom.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: site_id
        in: path
      - name: workbook_id
        in: path
      operations:
      - name: get-workbook
        method: GET
Open in Framework → View in Fleet → tableau-reporting-dashboard-lookup.yml

Retrieves Google Ads campaign performance metrics for Nordstrom digital marketing.

naftiko: '0.5'
info:
  label: Google Ads Campaign Performance
  description: Retrieves Google Ads campaign performance metrics for Nordstrom digital marketing.
  tags:
  - marketing
  - google-ads
  - advertising
capability:
  exposes:
  - type: mcp
    namespace: paid-media
    port: 8080
    tools:
    - name: get-google-ads-performance
      description: Fetch Google Ads campaign metrics by campaign ID.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: The Google Ads campaign identifier.
      call: googleads.get-campaign-metrics
      with:
        campaign_id: '{{campaign_id}}'
      outputParameters:
      - name: impressions
        type: string
        mapping: $.results[0].metrics.impressions
      - name: clicks
        type: string
        mapping: $.results[0].metrics.clicks
      - name: cost
        type: string
        mapping: $.results[0].metrics.costMicros
  consumes:
  - type: http
    namespace: googleads
    baseUri: https://googleads.googleapis.com/v15
    authentication:
      type: bearer
      token: $secrets.google_ads_token
    resources:
    - name: campaigns
      path: /customers/{{customer_id}}/googleAds:searchStream
      inputParameters:
      - name: customer_id
        in: path
      operations:
      - name: get-campaign-metrics
        method: POST
Open in Framework → View in Fleet → google-ads-campaign-performance.yml

Retrieves a financial report from Oracle Cloud Financials for a given period and cost center.

naftiko: '0.5'
info:
  label: Oracle Cloud Financial Report
  description: Retrieves a financial report from Oracle Cloud Financials for a given period and cost center.
  tags:
  - finance
  - oracle-cloud
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: get-financial-report
      description: Extract Oracle Cloud financial report by period and cost center.
      inputParameters:
      - name: fiscal_period
        in: body
        type: string
        description: The fiscal period.
      - name: cost_center
        in: body
        type: string
        description: The cost center code.
      call: oracle.get-financials
      with:
        period: '{{fiscal_period}}'
        cost_center: '{{cost_center}}'
      outputParameters:
      - name: revenue
        type: string
        mapping: $.data.revenue
      - name: expenses
        type: string
        mapping: $.data.expenses
  consumes:
  - type: http
    namespace: oracle
    baseUri: https://nordstrom.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: bearer
      token: $secrets.oracle_cloud_token
    resources:
    - name: financials
      path: /financialReports
      operations:
      - name: get-financials
        method: POST
Open in Framework → View in Fleet → oracle-cloud-financial-report.yml

Retrieves the current sprint status from Jira.

naftiko: '0.5'
info:
  label: Jira Sprint Status Lookup
  description: Retrieves the current sprint status from Jira.
  tags:
  - development
  - jira
  - agile
capability:
  exposes:
  - type: mcp
    namespace: agile
    port: 8080
    tools:
    - name: get-sprint-status
      description: Look up Jira active sprint by board ID.
      inputParameters:
      - name: board_id
        in: body
        type: string
        description: The Jira board identifier.
      call: jira.get-active-sprint
      with:
        board_id: '{{board_id}}'
      outputParameters:
      - name: sprint_name
        type: string
        mapping: $.values[0].name
      - name: start_date
        type: string
        mapping: $.values[0].startDate
      - name: end_date
        type: string
        mapping: $.values[0].endDate
  consumes:
  - type: http
    namespace: jira
    baseUri: https://nordstrom.atlassian.net/rest/agile/1.0
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: sprints
      path: /board/{{board_id}}/sprint?state=active
      inputParameters:
      - name: board_id
        in: path
      operations:
      - name: get-active-sprint
        method: GET
Open in Framework → View in Fleet → jira-sprint-status-lookup.yml

Processes a customer return by validating the order in Salesforce, initiating the refund via Mastercard, updating inventory in Oracle, and sending a return confirmation email via Adobe Campaign.

naftiko: '0.5'
info:
  label: Returns Processing Orchestrator
  description: Processes a customer return by validating the order in Salesforce, initiating the refund via Mastercard, updating inventory in Oracle, and sending a return confirmation email via Adobe Campaign.
  tags:
  - e-commerce
  - returns
  - salesforce
  - mastercard
  - oracle-cloud
  - adobe-campaign
capability:
  exposes:
  - type: mcp
    namespace: returns
    port: 8080
    tools:
    - name: process-return
      description: Given an order number, return reason, and items, validate, refund, restock, and confirm.
      inputParameters:
      - name: order_number
        in: body
        type: string
        description: The original order number.
      - name: return_reason
        in: body
        type: string
        description: Reason for return.
      - name: items
        in: body
        type: string
        description: JSON array of items being returned.
      steps:
      - name: validate-order
        type: call
        call: salesforce.get-order
        with:
          order_number: '{{order_number}}'
      - name: process-refund
        type: call
        call: mastercard.process-refund
        with:
          order_id: '{{order_number}}'
          amount: '{{validate-order.total_amount}}'
      - name: restock-inventory
        type: call
        call: oracle.restock-items
        with:
          items: '{{items}}'
      - name: send-confirmation
        type: call
        call: adobe-campaign.trigger-email
        with:
          template: return_confirmation
          recipient_email: '{{validate-order.customer_email}}'
          order_number: '{{order_number}}'
          refund_amount: '{{process-refund.refund_amount}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://nordstrom.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: orders
      path: /sobjects/Order/{{order_number}}
      inputParameters:
      - name: order_number
        in: path
      operations:
      - name: get-order
        method: GET
  - type: http
    namespace: mastercard
    baseUri: https://gateway.mastercard.com/api/rest/version/73
    authentication:
      type: basic
      username: $secrets.mastercard_merchant_id
      password: $secrets.mastercard_api_password
    resources:
    - name: refunds
      path: /merchant/{{merchant_id}}/order/{{order_id}}/transaction/refund
      inputParameters:
      - name: merchant_id
        in: path
      - name: order_id
        in: path
      operations:
      - name: process-refund
        method: PUT
  - type: http
    namespace: oracle
    baseUri: https://nordstrom.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: bearer
      token: $secrets.oracle_cloud_token
    resources:
    - name: restock
      path: /inventoryTransactions
      operations:
      - name: restock-items
        method: POST
  - type: http
    namespace: adobe-campaign
    baseUri: https://mc.adobe.io/nordstrom/campaign
    authentication:
      type: bearer
      token: $secrets.adobe_campaign_token
    resources:
    - name: email-triggers
      path: /profileAndServicesExt/aemTriggerEvent
      operations:
      - name: trigger-email
        method: POST
Open in Framework → View in Fleet → returns-processing-orchestrator.yml

When an order is placed, validates inventory in Oracle, assigns to the nearest fulfillment center, creates a shipping label via the logistics API, and notifies the warehouse team in Microsoft Teams.

naftiko: '0.5'
info:
  label: Supply Chain Order Fulfillment Orchestrator
  description: When an order is placed, validates inventory in Oracle, assigns to the nearest fulfillment center, creates a shipping label via the logistics API, and notifies the warehouse team in Microsoft Teams.
  tags:
  - supply-chain
  - fulfillment
  - oracle-cloud
  - microsoft-teams
  - logistics
capability:
  exposes:
  - type: mcp
    namespace: fulfillment
    port: 8080
    tools:
    - name: fulfill-order
      description: Given an order ID and SKU list, validate inventory, assign fulfillment center, create shipping, and notify warehouse.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The order identifier.
      - name: sku_list
        in: body
        type: string
        description: Comma-separated list of SKUs.
      - name: customer_zip
        in: body
        type: string
        description: Customer shipping ZIP code.
      steps:
      - name: validate-inventory
        type: call
        call: oracle.check-inventory
        with:
          skus: '{{sku_list}}'
      - name: assign-fulfillment
        type: call
        call: oracle.assign-warehouse
        with:
          skus: '{{sku_list}}'
          zip: '{{customer_zip}}'
      - name: create-shipment
        type: call
        call: logistics.create-shipping-label
        with:
          order_id: '{{order_id}}'
          warehouse: '{{assign-fulfillment.warehouse_id}}'
          destination_zip: '{{customer_zip}}'
      - name: notify-warehouse
        type: call
        call: msteams.send-message
        with:
          channel_id: warehouse-ops
          text: 'New fulfillment order: {{order_id}}. Warehouse: {{assign-fulfillment.warehouse_id}}. SKUs: {{sku_list}}. Shipping label: {{create-shipment.tracking_number}}.'
  consumes:
  - type: http
    namespace: oracle
    baseUri: https://nordstrom.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: bearer
      token: $secrets.oracle_cloud_token
    resources:
    - name: inventory-check
      path: /inventoryBalances
      operations:
      - name: check-inventory
        method: POST
    - name: warehouse-assignment
      path: /fulfillmentCenters/assign
      operations:
      - name: assign-warehouse
        method: POST
  - type: http
    namespace: logistics
    baseUri: https://logistics.nordstrom.com/api/v2
    authentication:
      type: bearer
      token: $secrets.logistics_token
    resources:
    - name: shipments
      path: /shipments
      operations:
      - name: create-shipping-label
        method: POST
  - 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
Open in Framework → View in Fleet → supply-chain-order-fulfillment-orchestrator.yml

Retrieves a vendor purchase order from Oracle Cloud by PO number, returning status, vendor name, total value, and delivery date.

naftiko: '0.5'
info:
  label: Vendor Purchase Order Status
  description: Retrieves a vendor purchase order from Oracle Cloud by PO number, returning status, vendor name, total value, and delivery date.
  tags:
  - supply-chain
  - procurement
  - oracle-cloud
capability:
  exposes:
  - type: mcp
    namespace: procurement
    port: 8080
    tools:
    - name: get-purchase-order
      description: Look up an Oracle Cloud purchase order by PO number.
      inputParameters:
      - name: po_number
        in: body
        type: string
        description: The purchase order number.
      call: oracle.get-po
      with:
        po_number: '{{po_number}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.Status
      - name: vendor
        type: string
        mapping: $.Supplier
      - name: total_value
        type: string
        mapping: $.TotalAmount
      - name: delivery_date
        type: string
        mapping: $.NeedByDate
  consumes:
  - type: http
    namespace: oracle
    baseUri: https://nordstrom.oraclecloud.com/fscmRestApi/resources/v1
    authentication:
      type: bearer
      token: $secrets.oracle_cloud_token
    resources:
    - name: purchase-orders
      path: /purchaseOrders/{{po_number}}
      inputParameters:
      - name: po_number
        in: path
      operations:
      - name: get-po
        method: GET
Open in Framework → View in Fleet → vendor-purchase-order-status.yml

Creates personalized marketing campaigns by pulling customer segments from Salesforce, generating personalized content via Adobe Creative Cloud, scheduling email delivery in Adobe Campaign, and tracking engagement in Google Analytics.

naftiko: '0.5'
info:
  label: Personalized Marketing Campaign Orchestrator
  description: Creates personalized marketing campaigns by pulling customer segments from Salesforce, generating personalized content via Adobe Creative Cloud, scheduling email delivery in Adobe Campaign, and tracking engagement in Google Analytics.
  tags:
  - marketing
  - personalization
  - salesforce
  - adobe-creative-cloud
  - adobe-campaign
  - google-analytics
capability:
  exposes:
  - type: mcp
    namespace: marketing
    port: 8080
    tools:
    - name: launch-personalized-campaign
      description: Given a segment name and campaign theme, pull customer data, create content, schedule delivery, and set up tracking.
      inputParameters:
      - name: segment_name
        in: body
        type: string
        description: The customer segment name.
      - name: campaign_theme
        in: body
        type: string
        description: The campaign theme or promotion.
      - name: send_date
        in: body
        type: string
        description: The scheduled send date.
      steps:
      - name: get-segment
        type: call
        call: salesforce.get-segment
        with:
          segment_name: '{{segment_name}}'
      - name: create-content
        type: call
        call: adobe-cc.create-campaign-assets
        with:
          theme: '{{campaign_theme}}'
          audience_size: '{{get-segment.member_count}}'
      - name: schedule-campaign
        type: call
        call: adobe-campaign.schedule-delivery
        with:
          segment_id: '{{get-segment.segment_id}}'
          template: '{{campaign_theme}}'
          assets: '{{create-content.asset_urls}}'
          send_date: '{{send_date}}'
      - name: setup-tracking
        type: call
        call: google-analytics.create-campaign-tracking
        with:
          campaign_name: '{{campaign_theme}}'
          campaign_id: '{{schedule-campaign.campaign_id}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://nordstrom.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: segments
      path: /query/?q=SELECT+Id,Member_Count__c+FROM+Customer_Segment__c+WHERE+Name='{{segment_name}}'
      inputParameters:
      - name: segment_name
        in: query
      operations:
      - name: get-segment
        method: GET
  - type: http
    namespace: adobe-cc
    baseUri: https://cc-api-storage.adobe.io/v1
    authentication:
      type: bearer
      token: $secrets.adobe_cc_token
    resources:
    - name: projects
      path: /projects
      operations:
      - name: create-campaign-assets
        method: POST
  - type: http
    namespace: adobe-campaign
    baseUri: https://mc.adobe.io/nordstrom/campaign
    authentication:
      type: bearer
      token: $secrets.adobe_campaign_token
    resources:
    - name: deliveries
      path: /profileAndServicesExt/aemScheduleDelivery
      operations:
      - name: schedule-delivery
        method: POST
  - type: http
    namespace: google-analytics
    baseUri: https://analyticsdata.googleapis.com/v1beta
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: campaign-tracking
      path: /properties/{{property_id}}/customDimensions
      inputParameters:
      - name: property_id
        in: path
      operations:
      - name: create-campaign-tracking
        method: POST
Open in Framework → View in Fleet → personalized-marketing-campaign-orchestrator.yml

Orchestrates brand launch coordination pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Brand Launch Coordination Pipeline
  description: Orchestrates brand launch coordination pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - brand
  - sephora
  - snowflake
  - slack
  - jira
capability:
  exposes:
  - type: mcp
    namespace: brand
    port: 8080
    tools:
    - name: brand-launch-coordination-pipeline
      description: Orchestrates brand launch coordination pipeline across beauty retail 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: jira.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://sephora.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/brand
      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/brand
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: jira
    baseUri: https://sephora.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
Open in Framework → View in Fleet → brand-launch-coordination-pipeline.yml

Retrieves product clean beauty certification data from the Sephora beauty retail systems.

naftiko: '0.5'
info:
  label: Product Clean Beauty Certification
  description: Retrieves product clean beauty certification data from the Sephora beauty retail systems.
  tags:
  - product
  - sephora
  - certification
capability:
  exposes:
  - type: mcp
    namespace: product
    port: 8080
    tools:
    - name: product-clean-beauty-certification
      description: Retrieves product clean beauty certification data from the Sephora beauty retail systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: sephora.product-clean-beauty-certification
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: sephora
    baseUri: https://api.sephora.com/v2
    authentication:
      type: bearer
      token: $secrets.sephora_api_token
    resources:
    - name: resource
      path: /product/clean/beauty/certification/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: product-clean-beauty-certification
        method: GET
Open in Framework → View in Fleet → product-clean-beauty-certification.yml

Retrieves Facebook Ads campaign performance metrics for the Sephora marketing team.

naftiko: '0.5'
info:
  label: Facebook Ads Campaign Performance
  description: Retrieves Facebook Ads campaign performance metrics for the Sephora marketing team.
  tags:
  - marketing
  - advertising
  - facebook
capability:
  exposes:
  - type: mcp
    namespace: paid-media
    port: 8080
    tools:
    - name: get-fb-campaign-performance
      description: Retrieve Facebook Ads campaign metrics.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: The Facebook campaign ID.
      call: facebook.get-campaign-insights
      with:
        campaign_id: '{{campaign_id}}'
  consumes:
  - type: http
    namespace: facebook
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.facebook_token
    resources:
    - name: insights
      path: /{{campaign_id}}/insights?fields=impressions,clicks,spend,actions
      inputParameters:
      - name: campaign_id
        in: path
      operations:
      - name: get-campaign-insights
        method: GET
Open in Framework → View in Fleet → facebook-ads-campaign-performance.yml

Orchestrates product exclusivity management pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Product Exclusivity Management Pipeline
  description: Orchestrates product exclusivity management pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - product
  - sephora
  - snowflake
  - slack
  - jira
capability:
  exposes:
  - type: mcp
    namespace: product
    port: 8080
    tools:
    - name: product-exclusivity-management-pipeline
      description: Orchestrates product exclusivity management pipeline across beauty retail 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: jira.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://sephora.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: jira
    baseUri: https://sephora.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
Open in Framework → View in Fleet → product-exclusivity-management-pipeline.yml

Retrieves LinkedIn job posting status.

naftiko: '0.5'
info:
  label: LinkedIn Recruitment Status
  description: Retrieves LinkedIn job posting status.
  tags:
  - recruitment
  - linkedin
capability:
  exposes:
  - type: mcp
    namespace: recruitment
    port: 8080
    tools:
    - name: get-job-posting-status
      description: Look up a LinkedIn job posting.
      inputParameters:
      - name: job_posting_id
        in: body
        type: string
        description: The LinkedIn job posting ID.
      call: linkedin.get-job-posting
      with:
        job_posting_id: '{{job_posting_id}}'
  consumes:
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: job-postings
      path: /jobPostings/{{job_posting_id}}
      inputParameters:
      - name: job_posting_id
        in: path
      operations:
      - name: get-job-posting
        method: GET
Open in Framework → View in Fleet → linkedin-recruitment-status.yml

Orchestrates customer cross sell pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Customer Cross Sell Pipeline
  description: Orchestrates customer cross sell pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - customer
  - sephora
  - sendgrid
  - shopify
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: customer
    port: 8080
    tools:
    - name: customer-cross-sell-pipeline
      description: Orchestrates customer cross sell pipeline across beauty retail 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: sendgrid.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: shopify.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: datadog.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: sendgrid-resource
      path: /api/customer
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: shopify
    baseUri: https://sephora.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_token
    resources:
    - name: shopify-resource
      path: /api/customer
      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/customer
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → customer-cross-sell-pipeline.yml

Orchestrates customer skincare consultation pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Customer Skincare Consultation Pipeline
  description: Orchestrates customer skincare consultation pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - customer
  - sephora
  - shopify
  - datadog
  - sephora
capability:
  exposes:
  - type: mcp
    namespace: customer
    port: 8080
    tools:
    - name: customer-skincare-consultation-pipeline
      description: Orchestrates customer skincare consultation pipeline across beauty retail 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: shopify.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: sephora.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: shopify
    baseUri: https://sephora.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_token
    resources:
    - name: shopify-resource
      path: /api/customer
      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/customer
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: sephora
    baseUri: https://api.sephora.com/v2
    authentication:
      type: bearer
      token: $secrets.sephora_api_token
    resources:
    - name: sephora-resource
      path: /api/customer
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → customer-skincare-consultation-pipeline.yml

Generates release notes from Jira issues and publishes to Confluence.

naftiko: '0.5'
info:
  label: Jira to Confluence Release Notes
  description: Generates release notes from Jira issues and publishes to Confluence.
  tags:
  - engineering
  - release-management
  - jira
  - confluence
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: release-mgmt
    port: 8080
    tools:
    - name: generate-release-notes
      description: Fetch Jira issues and publish release notes.
      inputParameters:
      - name: project_key
        in: body
        type: string
        description: Jira project key.
      - name: version_name
        in: body
        type: string
        description: Release version.
      steps:
      - name: get-issues
        type: call
        call: jira.search-issues
        with:
          jql: project = {{project_key}} AND fixVersion = '{{version_name}}' AND status = Done
      - name: create-notes
        type: call
        call: confluence.create-page
        with:
          space_key: ENG
          title: 'Release Notes: {{project_key}} {{version_name}}'
          body: 'Release {{version_name}}. Issues: {{get-issues.total}}.'
      - name: notify-team
        type: call
        call: msteams.send-message
        with:
          channel_id: engineering_releases
          text: 'Release notes: {{project_key}} {{version_name}}. URL: {{create-notes.url}}.'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://sephora.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: search
      path: /search?jql={{jql}}
      inputParameters:
      - name: jql
        in: path
      operations:
      - name: search-issues
        method: GET
  - type: http
    namespace: confluence
    baseUri: https://sephora.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: content
      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/{{channel_id}}/channels/general/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → jira-to-confluence-release-notes.yml

Orchestrates beauty advisor performance pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Beauty Advisor Performance Pipeline
  description: Orchestrates beauty advisor performance pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - beauty
  - sephora
  - jira
  - teams
  - sendgrid
capability:
  exposes:
  - type: mcp
    namespace: beauty
    port: 8080
    tools:
    - name: beauty-advisor-performance-pipeline
      description: Orchestrates beauty advisor performance pipeline across beauty retail 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: teams.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: sendgrid.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://sephora.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/beauty
      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/beauty
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: sendgrid-resource
      path: /api/beauty
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → beauty-advisor-performance-pipeline.yml

Checks SAP inventory levels for beauty products, compares against reorder points, creates a SAP purchase requisition when stock is low, and notifies the supply chain team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Inventory Replenishment Alert Pipeline
  description: Checks SAP inventory levels for beauty products, compares against reorder points, creates a SAP purchase requisition when stock is low, and notifies the supply chain team via Microsoft Teams.
  tags:
  - supply-chain
  - inventory
  - sap
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: inventory-replenish
    port: 8080
    tools:
    - name: check-and-reorder
      description: Given a material number and plant, check stock levels and create a requisition if low.
      inputParameters:
      - name: material_number
        in: body
        type: string
        description: The SAP material number.
      - name: plant
        in: body
        type: string
        description: The SAP plant (store or DC) code.
      steps:
      - name: get-stock
        type: call
        call: sap.get-material-stock
        with:
          material_number: '{{material_number}}'
          plant: '{{plant}}'
      - name: create-requisition
        type: call
        call: sap.create-requisition
        with:
          material_number: '{{material_number}}'
          plant: '{{plant}}'
          quantity: '{{get-stock.reorder_quantity}}'
      - name: notify-supply-chain
        type: call
        call: msteams.send-message
        with:
          channel_id: supply_chain_ops
          text: 'Inventory Alert: {{material_number}} at {{plant}}. Current stock: {{get-stock.available_quantity}}. Reorder point: {{get-stock.reorder_point}}. Requisition: {{create-requisition.req_number}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://sephora-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: 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/{{channel_id}}/channels/general/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → inventory-replenishment-alert-pipeline.yml

Orchestrates customer review moderation pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Customer Review Moderation Pipeline
  description: Orchestrates customer review moderation pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - customer
  - sephora
  - salesforce
  - servicenow
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: customer
    port: 8080
    tools:
    - name: customer-review-moderation-pipeline
      description: Orchestrates customer review moderation pipeline across beauty retail 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://sephora.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: salesforce-resource
      path: /api/customer
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://sephora.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/customer
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://sephora.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/customer
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → customer-review-moderation-pipeline.yml

Retrieves DocuSign envelope status for brand partnership agreements.

naftiko: '0.5'
info:
  label: DocuSign Agreement Status
  description: Retrieves DocuSign envelope status for brand partnership agreements.
  tags:
  - legal
  - document-signing
  - docusign
capability:
  exposes:
  - type: mcp
    namespace: doc-signing
    port: 8080
    tools:
    - name: get-envelope-status
      description: Look up a DocuSign envelope.
      inputParameters:
      - name: envelope_id
        in: body
        type: string
        description: 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/$secrets.docusign_account_id
    authentication:
      type: bearer
      token: $secrets.docusign_token
    resources:
    - name: envelopes
      path: /envelopes/{{envelope_id}}
      inputParameters:
      - name: envelope_id
        in: path
      operations:
      - name: get-envelope
        method: GET
Open in Framework → View in Fleet → docusign-agreement-status.yml

Orchestrates customer accessibility pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Customer Accessibility Pipeline
  description: Orchestrates customer accessibility pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - customer
  - sephora
  - salesforce
  - servicenow
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: customer
    port: 8080
    tools:
    - name: customer-accessibility-pipeline
      description: Orchestrates customer accessibility pipeline across beauty retail 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://sephora.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: salesforce-resource
      path: /api/customer
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://sephora.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/customer
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://sephora.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/customer
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → customer-accessibility-pipeline.yml

Retrieves Figma file metadata for beauty product design assets.

naftiko: '0.5'
info:
  label: Figma Design File Viewer
  description: Retrieves Figma file metadata for beauty product design assets.
  tags:
  - design
  - ux
  - figma
capability:
  exposes:
  - type: mcp
    namespace: design
    port: 8080
    tools:
    - name: get-figma-file
      description: Retrieve Figma file metadata.
      inputParameters:
      - name: file_key
        in: body
        type: string
        description: Figma file key.
      call: figma.get-file
      with:
        file_key: '{{file_key}}'
  consumes:
  - type: http
    namespace: figma
    baseUri: https://api.figma.com/v1
    authentication:
      type: bearer
      token: $secrets.figma_token
    resources:
    - name: files
      path: /files/{{file_key}}
      inputParameters:
      - name: file_key
        in: path
      operations:
      - name: get-file
        method: GET
Open in Framework → View in Fleet → figma-design-file-viewer.yml

Orchestrates influencer partnership pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Influencer Partnership Pipeline
  description: Orchestrates influencer partnership pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - influencer
  - sephora
  - sendgrid
  - shopify
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: influencer
    port: 8080
    tools:
    - name: influencer-partnership-pipeline
      description: Orchestrates influencer partnership pipeline across beauty retail 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: sendgrid.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: shopify.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: datadog.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: sendgrid-resource
      path: /api/influencer
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: shopify
    baseUri: https://sephora.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_token
    resources:
    - name: shopify-resource
      path: /api/influencer
      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/influencer
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → influencer-partnership-pipeline.yml

Fetches new product reviews from SAP Commerce Cloud, runs sentiment analysis via Azure Machine Learning, updates Salesforce product ratings, and alerts the brand team via Microsoft Teams for negative sentiment spikes.

naftiko: '0.5'
info:
  label: Product Review Sentiment Pipeline
  description: Fetches new product reviews from SAP Commerce Cloud, runs sentiment analysis via Azure Machine Learning, updates Salesforce product ratings, and alerts the brand team via Microsoft Teams for negative sentiment spikes.
  tags:
  - marketing
  - sentiment-analysis
  - sap-commerce-cloud
  - azure-machine-learning
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: review-sentiment
    port: 8080
    tools:
    - name: analyze-product-reviews
      description: Given a product ID, fetch reviews, run sentiment analysis, update ratings, and alert on negative trends.
      inputParameters:
      - name: product_id
        in: body
        type: string
        description: The product ID.
      - name: brand_name
        in: body
        type: string
        description: The brand name.
      steps:
      - name: get-reviews
        type: call
        call: sapcc.get-product-reviews
        with:
          product_id: '{{product_id}}'
      - name: analyze-sentiment
        type: call
        call: azureml.score-sentiment
        with:
          reviews: '{{get-reviews.review_texts}}'
      - name: update-ratings
        type: call
        call: salesforce.update-product-sentiment
        with:
          product_id: '{{product_id}}'
          avg_sentiment: '{{analyze-sentiment.avg_score}}'
          negative_pct: '{{analyze-sentiment.negative_pct}}'
      - name: alert-brand-team
        type: call
        call: msteams.send-message
        with:
          channel_id: brand_management
          text: 'Review Sentiment Alert: {{brand_name}} product {{product_id}}. Avg sentiment: {{analyze-sentiment.avg_score}}. Negative: {{analyze-sentiment.negative_pct}}%. Reviews analyzed: {{get-reviews.count}}.'
  consumes:
  - type: http
    namespace: sapcc
    baseUri: https://api.sephora.com/sap-commerce/v2
    authentication:
      type: bearer
      token: $secrets.sapcc_token
    resources:
    - name: reviews
      path: /products/{{product_id}}/reviews
      inputParameters:
      - name: product_id
        in: path
      operations:
      - name: get-product-reviews
        method: GET
  - type: http
    namespace: azureml
    baseUri: https://sephora-sentiment.inference.ml.azure.com
    authentication:
      type: bearer
      token: $secrets.azure_ml_token
    resources:
    - name: scoring
      path: /score
      operations:
      - name: score-sentiment
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://sephora.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: products
      path: /sobjects/Product__c/{{product_id}}
      inputParameters:
      - name: product_id
        in: path
      operations:
      - name: update-product-sentiment
        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
Open in Framework → View in Fleet → product-review-sentiment-pipeline.yml

Retrieves skincare routine recommendation data from the Sephora beauty retail systems.

naftiko: '0.5'
info:
  label: Skincare Routine Recommendation
  description: Retrieves skincare routine recommendation data from the Sephora beauty retail systems.
  tags:
  - skincare
  - sephora
  - recommendation
capability:
  exposes:
  - type: mcp
    namespace: skincare
    port: 8080
    tools:
    - name: skincare-routine-recommendation
      description: Retrieves skincare routine recommendation data from the Sephora beauty retail systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: sephora.skincare-routine-recommendation
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: sephora
    baseUri: https://api.sephora.com/v2
    authentication:
      type: bearer
      token: $secrets.sephora_api_token
    resources:
    - name: resource
      path: /skincare/routine/recommendation/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: skincare-routine-recommendation
        method: GET
Open in Framework → View in Fleet → skincare-routine-recommendation.yml

Orchestrates store event coordination pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Store Event Coordination Pipeline
  description: Orchestrates store event coordination pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - store
  - sephora
  - teams
  - sendgrid
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: store
    port: 8080
    tools:
    - name: store-event-coordination-pipeline
      description: Orchestrates store event coordination pipeline across beauty retail 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: sendgrid.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: shopify.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/store
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: sendgrid-resource
      path: /api/store
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: shopify
    baseUri: https://sephora.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_token
    resources:
    - name: shopify-resource
      path: /api/store
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → store-event-coordination-pipeline.yml

Retrieves gift set availability check data from the Sephora beauty retail systems.

naftiko: '0.5'
info:
  label: Gift Set Availability Check
  description: Retrieves gift set availability check data from the Sephora beauty retail systems.
  tags:
  - gift
  - sephora
  - check
capability:
  exposes:
  - type: mcp
    namespace: gift
    port: 8080
    tools:
    - name: gift-set-availability-check
      description: Retrieves gift set availability check data from the Sephora beauty retail systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: sephora.gift-set-availability-check
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: sephora
    baseUri: https://api.sephora.com/v2
    authentication:
      type: bearer
      token: $secrets.sephora_api_token
    resources:
    - name: resource
      path: /gift/set/availability/check/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: gift-set-availability-check
        method: GET
Open in Framework → View in Fleet → gift-set-availability-check.yml

Retrieves virtual try on session status data from the Sephora beauty retail systems.

naftiko: '0.5'
info:
  label: Virtual Try On Session Status
  description: Retrieves virtual try on session status data from the Sephora beauty retail systems.
  tags:
  - virtual
  - sephora
  - status
capability:
  exposes:
  - type: mcp
    namespace: virtual
    port: 8080
    tools:
    - name: virtual-try-on-session-status
      description: Retrieves virtual try on session status data from the Sephora beauty retail systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: sephora.virtual-try-on-session-status
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: sephora
    baseUri: https://api.sephora.com/v2
    authentication:
      type: bearer
      token: $secrets.sephora_api_token
    resources:
    - name: resource
      path: /virtual/try/on/session/status/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: virtual-try-on-session-status
        method: GET
Open in Framework → View in Fleet → virtual-try-on-session-status.yml

Retrieves e-commerce funnel analytics from Google Analytics for the Sephora website.

naftiko: '0.5'
info:
  label: Google Analytics E-Commerce Funnel
  description: Retrieves e-commerce funnel analytics from Google Analytics for the Sephora website.
  tags:
  - marketing
  - analytics
  - google-analytics
  - e-commerce
capability:
  exposes:
  - type: mcp
    namespace: web-analytics
    port: 8080
    tools:
    - name: get-ecommerce-funnel
      description: Retrieve e-commerce funnel metrics.
      inputParameters:
      - name: property_id
        in: body
        type: string
        description: Google Analytics property ID.
      - name: start_date
        in: body
        type: string
        description: Start date.
      - name: end_date
        in: body
        type: string
        description: End date.
      call: ga.run-report
      with:
        property_id: '{{property_id}}'
        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
      inputParameters:
      - name: property_id
        in: path
      operations:
      - name: run-report
        method: POST
Open in Framework → View in Fleet → google-analytics-e-commerce-funnel.yml

Orchestrates social commerce pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Social Commerce Pipeline
  description: Orchestrates social commerce pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - social
  - sephora
  - datadog
  - sephora
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: social
    port: 8080
    tools:
    - name: social-commerce-pipeline
      description: Orchestrates social commerce pipeline across beauty retail 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: sephora.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/social
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: sephora
    baseUri: https://api.sephora.com/v2
    authentication:
      type: bearer
      token: $secrets.sephora_api_token
    resources:
    - name: sephora-resource
      path: /api/social
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://sephora.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: salesforce-resource
      path: /api/social
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → social-commerce-pipeline.yml

When a new beauty brand supplier is onboarded, validates compliance documents in SAP, runs a background check via ServiceNow, and notifies the procurement team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Supplier Compliance Review Pipeline
  description: When a new beauty brand supplier is onboarded, validates compliance documents in SAP, runs a background check via ServiceNow, and notifies the procurement team via Microsoft Teams.
  tags:
  - procurement
  - supplier-management
  - compliance
  - sap
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: supplier-compliance
    port: 8080
    tools:
    - name: review-supplier-compliance
      description: Given a supplier ID, validate compliance docs, open review task, and notify procurement.
      inputParameters:
      - name: supplier_id
        in: body
        type: string
        description: The SAP supplier ID.
      - name: brand_name
        in: body
        type: string
        description: The beauty brand name.
      steps:
      - name: get-supplier
        type: call
        call: sap.get-supplier
        with:
          supplier_id: '{{supplier_id}}'
      - name: create-compliance-task
        type: call
        call: servicenow.create-task
        with:
          short_description: 'Supplier Compliance Review: {{brand_name}} ({{supplier_id}})'
          assigned_group: Procurement_Compliance
          description: 'Supplier {{get-supplier.name}} ({{supplier_id}}). Brand: {{brand_name}}. Country: {{get-supplier.country}}. Review required certifications and ingredient safety docs.'
      - name: notify-procurement
        type: call
        call: msteams.send-message
        with:
          channel_id: procurement_team
          text: 'Supplier Compliance Review: {{brand_name}} ({{get-supplier.name}}). Task: {{create-compliance-task.number}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://sephora-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
  - type: http
    namespace: servicenow
    baseUri: https://sephora.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/{{channel_id}}/channels/general/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → supplier-compliance-review-pipeline.yml

Orchestrates beauty class enrollment pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Beauty Class Enrollment Pipeline
  description: Orchestrates beauty class enrollment pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - beauty
  - sephora
  - sephora
  - salesforce
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: beauty
    port: 8080
    tools:
    - name: beauty-class-enrollment-pipeline
      description: Orchestrates beauty class enrollment pipeline across beauty retail 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: sephora.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: sephora
    baseUri: https://api.sephora.com/v2
    authentication:
      type: bearer
      token: $secrets.sephora_api_token
    resources:
    - name: sephora-resource
      path: /api/beauty
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://sephora.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: salesforce-resource
      path: /api/beauty
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://sephora.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/beauty
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → beauty-class-enrollment-pipeline.yml

Retrieves email campaign performance metrics from Salesforce Marketing Cloud, including open rates, click rates, and conversion metrics.

naftiko: '0.5'
info:
  label: Email Campaign Performance Tracker
  description: Retrieves email campaign performance metrics from Salesforce Marketing Cloud, including open rates, click rates, and conversion metrics.
  tags:
  - marketing
  - email
  - salesforce-marketing-cloud
capability:
  exposes:
  - type: mcp
    namespace: email-performance
    port: 8080
    tools:
    - name: get-campaign-performance
      description: Retrieve SFMC email campaign performance metrics.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: The SFMC campaign ID.
      call: sfmc.get-campaign-metrics
      with:
        campaign_id: '{{campaign_id}}'
  consumes:
  - type: http
    namespace: sfmc
    baseUri: https://sephora.rest.marketingcloudapis.com/v1
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - name: campaigns
      path: /campaigns/{{campaign_id}}/metrics
      inputParameters:
      - name: campaign_id
        in: path
      operations:
      - name: get-campaign-metrics
        method: GET
Open in Framework → View in Fleet → email-campaign-performance-tracker.yml

Retrieves product ingredient list data from the Sephora beauty retail systems.

naftiko: '0.5'
info:
  label: Product Ingredient List
  description: Retrieves product ingredient list data from the Sephora beauty retail systems.
  tags:
  - product
  - sephora
  - list
capability:
  exposes:
  - type: mcp
    namespace: product
    port: 8080
    tools:
    - name: product-ingredient-list
      description: Retrieves product ingredient list data from the Sephora beauty retail systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: sephora.product-ingredient-list
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: sephora
    baseUri: https://api.sephora.com/v2
    authentication:
      type: bearer
      token: $secrets.sephora_api_token
    resources:
    - name: resource
      path: /product/ingredient/list/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: product-ingredient-list
        method: GET
Open in Framework → View in Fleet → product-ingredient-list.yml

Fetches active sprint details from Jira.

naftiko: '0.5'
info:
  label: Jira Sprint Tracker
  description: Fetches active sprint details from Jira.
  tags:
  - engineering
  - project-management
  - jira
capability:
  exposes:
  - type: mcp
    namespace: engineering-pm
    port: 8080
    tools:
    - name: get-sprint-status
      description: Retrieve active sprint for a Jira board.
      inputParameters:
      - name: board_id
        in: body
        type: string
        description: The Jira board ID.
      call: jira.get-active-sprint
      with:
        board_id: '{{board_id}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://sephora.atlassian.net/rest/agile/1.0
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: sprints
      path: /board/{{board_id}}/sprint?state=active
      inputParameters:
      - name: board_id
        in: path
      operations:
      - name: get-active-sprint
        method: GET
Open in Framework → View in Fleet → jira-sprint-tracker.yml

Orchestrates personalized product discovery pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Personalized Product Discovery Pipeline
  description: Orchestrates personalized product discovery pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - personalized
  - sephora
  - salesforce
  - servicenow
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: personalized
    port: 8080
    tools:
    - name: personalized-product-discovery-pipeline
      description: Orchestrates personalized product discovery pipeline across beauty retail 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://sephora.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: salesforce-resource
      path: /api/personalized
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://sephora.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/personalized
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://sephora.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/personalized
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → personalized-product-discovery-pipeline.yml

Orchestrates customer loyalty program analytics pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Customer Loyalty Program Analytics Pipeline
  description: Orchestrates customer loyalty program analytics pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - customer
  - sephora
  - sendgrid
  - shopify
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: customer
    port: 8080
    tools:
    - name: customer-loyalty-program-analytics-pipeline
      description: Orchestrates customer loyalty program analytics pipeline across beauty retail 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: sendgrid.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: shopify.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: datadog.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: sendgrid-resource
      path: /api/customer
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: shopify
    baseUri: https://sephora.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_token
    resources:
    - name: shopify-resource
      path: /api/customer
      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/customer
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → customer-loyalty-program-analytics-pipeline.yml

Orchestrates store loss prevention pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Store Loss Prevention Pipeline
  description: Orchestrates store loss prevention pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - store
  - sephora
  - sephora
  - salesforce
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: store
    port: 8080
    tools:
    - name: store-loss-prevention-pipeline
      description: Orchestrates store loss prevention pipeline across beauty retail 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: sephora.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: sephora
    baseUri: https://api.sephora.com/v2
    authentication:
      type: bearer
      token: $secrets.sephora_api_token
    resources:
    - name: sephora-resource
      path: /api/store
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://sephora.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: salesforce-resource
      path: /api/store
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://sephora.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/store
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → store-loss-prevention-pipeline.yml

Retrieves Palo Alto firewall rules for security auditing.

naftiko: '0.5'
info:
  label: Palo Alto Firewall Audit
  description: Retrieves Palo Alto firewall rules for security auditing.
  tags:
  - security
  - firewall
  - palo-alto-networks
capability:
  exposes:
  - type: mcp
    namespace: security-audit
    port: 8080
    tools:
    - name: audit-firewall-rules
      description: Query Palo Alto for firewall rules.
      inputParameters:
      - name: device_group
        in: body
        type: string
        description: Device group.
      call: paloalto.get-security-rules
      with:
        device_group: '{{device_group}}'
  consumes:
  - type: http
    namespace: paloalto
    baseUri: https://panorama.sephora.com/restapi/v10.2
    authentication:
      type: apiKey
      key: $secrets.paloalto_api_key
    resources:
    - name: security-rules
      path: /Policies/SecurityRules?location=device-group&device-group={{device_group}}
      inputParameters:
      - name: device_group
        in: path
      operations:
      - name: get-security-rules
        method: GET
Open in Framework → View in Fleet → palo-alto-firewall-audit.yml

Retrieves product sustainability score data from the Sephora beauty retail systems.

naftiko: '0.5'
info:
  label: Product Sustainability Score
  description: Retrieves product sustainability score data from the Sephora beauty retail systems.
  tags:
  - product
  - sephora
  - score
capability:
  exposes:
  - type: mcp
    namespace: product
    port: 8080
    tools:
    - name: product-sustainability-score
      description: Retrieves product sustainability score data from the Sephora beauty retail systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: sephora.product-sustainability-score
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: sephora
    baseUri: https://api.sephora.com/v2
    authentication:
      type: bearer
      token: $secrets.sephora_api_token
    resources:
    - name: resource
      path: /product/sustainability/score/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: product-sustainability-score
        method: GET
Open in Framework → View in Fleet → product-sustainability-score.yml

Orchestrates beauty insider tier evaluation pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Beauty Insider Tier Evaluation Pipeline
  description: Orchestrates beauty insider tier evaluation pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - beauty
  - sephora
  - sephora
  - salesforce
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: beauty
    port: 8080
    tools:
    - name: beauty-insider-tier-evaluation-pipeline
      description: Orchestrates beauty insider tier evaluation pipeline across beauty retail 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: sephora.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: sephora
    baseUri: https://api.sephora.com/v2
    authentication:
      type: bearer
      token: $secrets.sephora_api_token
    resources:
    - name: sephora-resource
      path: /api/beauty
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://sephora.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: salesforce-resource
      path: /api/beauty
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://sephora.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/beauty
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → beauty-insider-tier-evaluation-pipeline.yml

Checks Informatica data integration job status for retail data pipelines.

naftiko: '0.5'
info:
  label: Informatica Data Integration Monitor
  description: Checks Informatica data integration job status for retail data pipelines.
  tags:
  - data-engineering
  - etl
  - informatica
capability:
  exposes:
  - type: mcp
    namespace: data-integration
    port: 8080
    tools:
    - name: get-job-status
      description: Check Informatica job status.
      inputParameters:
      - name: job_id
        in: body
        type: string
        description: Informatica job ID.
      call: informatica.get-job
      with:
        job_id: '{{job_id}}'
  consumes:
  - type: http
    namespace: informatica
    baseUri: https://dm-us.informaticacloud.com/saas/api/v2
    authentication:
      type: bearer
      token: $secrets.informatica_token
    resources:
    - name: jobs
      path: /job/{{job_id}}
      inputParameters:
      - name: job_id
        in: path
      operations:
      - name: get-job
        method: GET
Open in Framework → View in Fleet → informatica-data-integration-monitor.yml

Orchestrates customer data enrichment pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Customer Data Enrichment Pipeline
  description: Orchestrates customer data enrichment pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - customer
  - sephora
  - sephora
  - salesforce
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: customer
    port: 8080
    tools:
    - name: customer-data-enrichment-pipeline
      description: Orchestrates customer data enrichment pipeline across beauty retail 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: sephora.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: sephora
    baseUri: https://api.sephora.com/v2
    authentication:
      type: bearer
      token: $secrets.sephora_api_token
    resources:
    - name: sephora-resource
      path: /api/customer
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://sephora.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: salesforce-resource
      path: /api/customer
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://sephora.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/customer
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → customer-data-enrichment-pipeline.yml

Retrieves shade finder recommendation data from the Sephora beauty retail systems.

naftiko: '0.5'
info:
  label: Shade Finder Recommendation
  description: Retrieves shade finder recommendation data from the Sephora beauty retail systems.
  tags:
  - shade
  - sephora
  - recommendation
capability:
  exposes:
  - type: mcp
    namespace: shade
    port: 8080
    tools:
    - name: shade-finder-recommendation
      description: Retrieves shade finder recommendation data from the Sephora beauty retail systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: sephora.shade-finder-recommendation
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: sephora
    baseUri: https://api.sephora.com/v2
    authentication:
      type: bearer
      token: $secrets.sephora_api_token
    resources:
    - name: resource
      path: /shade/finder/recommendation/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: shade-finder-recommendation
        method: GET
Open in Framework → View in Fleet → shade-finder-recommendation.yml

Searches Confluence for retail operations and brand documentation.

naftiko: '0.5'
info:
  label: Confluence Documentation Search
  description: Searches Confluence for retail operations and brand documentation.
  tags:
  - documentation
  - knowledge-management
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: knowledge
    port: 8080
    tools:
    - name: search-docs
      description: Search Confluence for documentation.
      inputParameters:
      - name: query
        in: body
        type: string
        description: The search keyword.
      call: confluence.search
      with:
        query: '{{query}}'
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://sephora.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: search
      path: /search?cql=type=page AND text~"{{query}}"
      inputParameters:
      - name: query
        in: path
      operations:
      - name: search
        method: GET
Open in Framework → View in Fleet → confluence-documentation-search.yml

Retrieves product sample availability data from the Sephora beauty retail systems.

naftiko: '0.5'
info:
  label: Product Sample Availability
  description: Retrieves product sample availability data from the Sephora beauty retail systems.
  tags:
  - product
  - sephora
  - availability
capability:
  exposes:
  - type: mcp
    namespace: product
    port: 8080
    tools:
    - name: product-sample-availability
      description: Retrieves product sample availability data from the Sephora beauty retail systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: sephora.product-sample-availability
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: sephora
    baseUri: https://api.sephora.com/v2
    authentication:
      type: bearer
      token: $secrets.sephora_api_token
    resources:
    - name: resource
      path: /product/sample/availability/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: product-sample-availability
        method: GET
Open in Framework → View in Fleet → product-sample-availability.yml

Triggers Postman collection test runs for e-commerce API testing.

naftiko: '0.5'
info:
  label: Postman API Test Runner
  description: Triggers Postman collection test runs for e-commerce API testing.
  tags:
  - engineering
  - testing
  - postman
capability:
  exposes:
  - type: mcp
    namespace: api-testing
    port: 8080
    tools:
    - name: run-api-tests
      description: Trigger a Postman collection run.
      inputParameters:
      - name: collection_id
        in: body
        type: string
        description: Postman collection ID.
      call: postman.run-collection
      with:
        collection_id: '{{collection_id}}'
  consumes:
  - type: http
    namespace: postman
    baseUri: https://api.getpostman.com
    authentication:
      type: apiKey
      key: $secrets.postman_api_key
    resources:
    - name: monitors
      path: /monitors/{{collection_id}}/run
      inputParameters:
      - name: collection_id
        in: path
      operations:
      - name: run-collection
        method: POST
Open in Framework → View in Fleet → postman-api-test-runner.yml

Retrieves a secret from Azure Key Vault.

naftiko: '0.5'
info:
  label: Azure Key Vault Secret Retrieval
  description: Retrieves a secret from Azure Key Vault.
  tags:
  - security
  - credentials
  - azure-key-vault
capability:
  exposes:
  - type: mcp
    namespace: secret-mgmt
    port: 8080
    tools:
    - name: get-secret
      description: Retrieve a secret from Azure Key Vault.
      inputParameters:
      - name: secret_name
        in: body
        type: string
        description: Secret name.
      call: keyvault.get-secret
      with:
        secret_name: '{{secret_name}}'
  consumes:
  - type: http
    namespace: keyvault
    baseUri: https://sephora-vault.vault.azure.net
    authentication:
      type: bearer
      token: $secrets.azure_keyvault_token
    resources:
    - name: secrets
      path: /secrets/{{secret_name}}?api-version=7.4
      inputParameters:
      - name: secret_name
        in: path
      operations:
      - name: get-secret
        method: GET
Open in Framework → View in Fleet → azure-key-vault-secret-retrieval.yml

Retrieves expense reports from SAP Concur, validates against Workday cost center, and opens a ServiceNow task.

naftiko: '0.5'
info:
  label: Expense Report Review Pipeline
  description: Retrieves expense reports from SAP Concur, validates against Workday cost center, and opens a ServiceNow task.
  tags:
  - finance
  - expense
  - sap-concur
  - workday
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: expense-review
    port: 8080
    tools:
    - name: review-expense-report
      description: Validate and flag expense exceptions.
      inputParameters:
      - name: expense_report_id
        in: body
        type: string
        description: Concur report ID.
      - name: employee_id
        in: body
        type: string
        description: Workday employee ID.
      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 review: {{get-expense-report.report_name}} — {{get-employee.full_name}}'
          assigned_group: Finance_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/{{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://sephora.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tasks
      path: /table/task
      operations:
      - name: create-task
        method: POST
Open in Framework → View in Fleet → expense-report-review-pipeline.yml

Orchestrates customer birthday reward pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Customer Birthday Reward Pipeline
  description: Orchestrates customer birthday reward pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - customer
  - sephora
  - slack
  - jira
  - teams
capability:
  exposes:
  - type: mcp
    namespace: customer
    port: 8080
    tools:
    - name: customer-birthday-reward-pipeline
      description: Orchestrates customer birthday reward pipeline across beauty retail 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: jira.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/customer
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: jira
    baseUri: https://sephora.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/customer
      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/customer
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → customer-birthday-reward-pipeline.yml

Orchestrates inventory allocation optimization pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Inventory Allocation Optimization Pipeline
  description: Orchestrates inventory allocation optimization pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - inventory
  - sephora
  - teams
  - sendgrid
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: inventory
    port: 8080
    tools:
    - name: inventory-allocation-optimization-pipeline
      description: Orchestrates inventory allocation optimization pipeline across beauty retail 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: sendgrid.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: shopify.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/inventory
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: sendgrid-resource
      path: /api/inventory
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: shopify
    baseUri: https://sephora.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_token
    resources:
    - name: shopify-resource
      path: /api/inventory
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → inventory-allocation-optimization-pipeline.yml

Orchestrates product safety compliance pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Product Safety Compliance Pipeline
  description: Orchestrates product safety compliance pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - product
  - sephora
  - slack
  - jira
  - teams
capability:
  exposes:
  - type: mcp
    namespace: product
    port: 8080
    tools:
    - name: product-safety-compliance-pipeline
      description: Orchestrates product safety compliance pipeline across beauty retail 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: jira.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/product
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: jira
    baseUri: https://sephora.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/product
      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/product
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → product-safety-compliance-pipeline.yml

Retrieves GitHub pull request status.

naftiko: '0.5'
info:
  label: GitHub Pull Request Status
  description: Retrieves GitHub pull request status.
  tags:
  - engineering
  - ci-cd
  - github
capability:
  exposes:
  - type: mcp
    namespace: engineering-ci
    port: 8080
    tools:
    - name: get-pr-status
      description: Look up a GitHub pull request.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: The repo in owner/repo format.
      - name: pr_number
        in: body
        type: string
        description: The PR number.
      call: github.get-pull-request
      with:
        repo: '{{repo}}'
        pr_number: '{{pr_number}}'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com/repos
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: pull-requests
      path: /{{repo}}/pulls/{{pr_number}}
      inputParameters:
      - name: repo
        in: path
      - name: pr_number
        in: path
      operations:
      - name: get-pull-request
        method: GET
Open in Framework → View in Fleet → github-pull-request-status.yml

When a Beauty Insider member reaches a reward threshold in Salesforce, updates their tier, sends a personalized reward email via Salesforce Marketing Cloud, and notifies the loyalty program team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Customer Loyalty Reward Orchestrator
  description: When a Beauty Insider member reaches a reward threshold in Salesforce, updates their tier, sends a personalized reward email via Salesforce Marketing Cloud, and notifies the loyalty program team via Microsoft Teams.
  tags:
  - loyalty
  - customer-engagement
  - salesforce
  - salesforce-marketing-cloud
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: loyalty-rewards
    port: 8080
    tools:
    - name: process-loyalty-reward
      description: Given a customer ID and new tier, update Salesforce, send reward email, and notify the team.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The Salesforce customer record ID.
      - name: new_tier
        in: body
        type: string
        description: The new Beauty Insider tier (Insider, VIB, Rouge).
      - name: points_balance
        in: body
        type: number
        description: Current points balance.
      steps:
      - name: get-customer
        type: call
        call: salesforce.get-customer
        with:
          customer_id: '{{customer_id}}'
      - name: update-tier
        type: call
        call: salesforce.update-customer-tier
        with:
          customer_id: '{{customer_id}}'
          new_tier: '{{new_tier}}'
      - name: send-reward-email
        type: call
        call: sfmc.send-triggered-email
        with:
          template_id: loyalty_tier_upgrade
          subscriber_key: '{{customer_id}}'
          data: customer_name={{get-customer.name}},old_tier={{get-customer.loyalty_tier}},new_tier={{new_tier}},points={{points_balance}}
      - name: notify-loyalty-team
        type: call
        call: msteams.send-message
        with:
          channel_id: loyalty_program
          text: 'Loyalty Upgrade: {{get-customer.name}} moved from {{get-customer.loyalty_tier}} to {{new_tier}}. Points: {{points_balance}}.'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://sephora.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: customers
      path: /sobjects/Account/{{customer_id}}
      inputParameters:
      - name: customer_id
        in: path
      operations:
      - name: get-customer
        method: GET
      - name: update-customer-tier
        method: PATCH
  - type: http
    namespace: sfmc
    baseUri: https://sephora.rest.marketingcloudapis.com/messaging/v1
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - name: triggered-emails
      path: /messageDefinitionSends/{{template_id}}/send
      inputParameters:
      - name: template_id
        in: path
      operations:
      - name: send-triggered-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
Open in Framework → View in Fleet → customer-loyalty-reward-orchestrator.yml

Queries SolarWinds for store network health.

naftiko: '0.5'
info:
  label: SolarWinds Network Health
  description: Queries SolarWinds for store network health.
  tags:
  - networking
  - infrastructure
  - solarwinds
capability:
  exposes:
  - type: mcp
    namespace: network-health
    port: 8080
    tools:
    - name: get-network-health
      description: Query SolarWinds network nodes.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: Store ID.
      call: solarwinds.query-nodes
      with:
        store_id: '{{store_id}}'
  consumes:
  - type: http
    namespace: solarwinds
    baseUri: https://solarwinds.sephora.com:17778/SolarWinds/InformationService/v3/Json
    authentication:
      type: basic
      username: $secrets.solarwinds_user
      password: $secrets.solarwinds_password
    resources:
    - name: nodes
      path: /Query?query=SELECT+NodeID,Caption,Status+FROM+Orion.Nodes+WHERE+Location='{{store_id}}'
      inputParameters:
      - name: store_id
        in: path
      operations:
      - name: query-nodes
        method: GET
Open in Framework → View in Fleet → solarwinds-network-health.yml

Creates a beauty consultation appointment in Salesforce, sends a confirmation to the customer via Salesforce Marketing Cloud, and notifies the store beauty advisor via Microsoft Teams.

naftiko: '0.5'
info:
  label: Store Visit Appointment Scheduler
  description: Creates a beauty consultation appointment in Salesforce, sends a confirmation to the customer via Salesforce Marketing Cloud, and notifies the store beauty advisor via Microsoft Teams.
  tags:
  - retail
  - appointments
  - salesforce
  - salesforce-marketing-cloud
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: appointments
    port: 8080
    tools:
    - name: book-consultation
      description: Given customer and store details, create an appointment, send confirmation, and notify the advisor.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The Salesforce customer ID.
      - name: store_id
        in: body
        type: string
        description: The store ID.
      - name: appointment_date
        in: body
        type: string
        description: The appointment date and time.
      - name: service_type
        in: body
        type: string
        description: The consultation type (e.g., skincare, makeup, fragrance).
      steps:
      - name: get-customer
        type: call
        call: salesforce.get-customer
        with:
          customer_id: '{{customer_id}}'
      - name: create-appointment
        type: call
        call: salesforce.create-appointment
        with:
          customer_id: '{{customer_id}}'
          store_id: '{{store_id}}'
          datetime: '{{appointment_date}}'
          type: '{{service_type}}'
      - name: send-confirmation
        type: call
        call: sfmc.send-triggered-email
        with:
          template_id: appointment_confirmation
          subscriber_key: '{{customer_id}}'
          data: customer_name={{get-customer.name}},date={{appointment_date}},service={{service_type}},store={{store_id}}
      - name: notify-advisor
        type: call
        call: msteams.send-message
        with:
          channel_id: store_{{store_id}}
          text: 'New {{service_type}} consultation: {{get-customer.name}} ({{get-customer.loyalty_tier}}) on {{appointment_date}}.'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://sephora.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: customers
      path: /sobjects/Account/{{customer_id}}
      inputParameters:
      - name: customer_id
        in: path
      operations:
      - name: get-customer
        method: GET
    - name: appointments
      path: /sobjects/Appointment__c
      operations:
      - name: create-appointment
        method: POST
  - type: http
    namespace: sfmc
    baseUri: https://sephora.rest.marketingcloudapis.com/messaging/v1
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - name: triggered-emails
      path: /messageDefinitionSends/{{template_id}}/send
      inputParameters:
      - name: template_id
        in: path
      operations:
      - name: send-triggered-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
Open in Framework → View in Fleet → store-visit-appointment-scheduler.yml

Orchestrates store staffing optimization pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Store Staffing Optimization Pipeline
  description: Orchestrates store staffing optimization pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - store
  - sephora
  - salesforce
  - servicenow
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: store
    port: 8080
    tools:
    - name: store-staffing-optimization-pipeline
      description: Orchestrates store staffing optimization pipeline across beauty retail 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://sephora.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: salesforce-resource
      path: /api/store
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://sephora.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/store
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://sephora.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/store
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → store-staffing-optimization-pipeline.yml

Queries SAP for product allocation data, checks store-level inventory, and creates allocation adjustments when distribution is unbalanced, notifying the merchandising team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Store Allocation Planning Pipeline
  description: Queries SAP for product allocation data, checks store-level inventory, and creates allocation adjustments when distribution is unbalanced, notifying the merchandising team via Microsoft Teams.
  tags:
  - retail
  - supply-chain
  - allocation
  - sap
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: store-allocation
    port: 8080
    tools:
    - name: rebalance-allocation
      description: Given a material number and region, check allocation balance and adjust.
      inputParameters:
      - name: material_number
        in: body
        type: string
        description: The SAP material number.
      - name: region
        in: body
        type: string
        description: The store region.
      steps:
      - name: get-allocation
        type: call
        call: sap.get-allocation
        with:
          material_number: '{{material_number}}'
          region: '{{region}}'
      - name: adjust-allocation
        type: call
        call: sap.adjust-allocation
        with:
          material_number: '{{material_number}}'
          region: '{{region}}'
          adjustment: '{{get-allocation.recommended_adjustment}}'
      - name: notify-merchandising
        type: call
        call: msteams.send-message
        with:
          channel_id: merchandising
          text: 'Allocation Adjustment: {{material_number}} in {{region}}. Current imbalance: {{get-allocation.imbalance_pct}}%. Adjustment: {{adjust-allocation.units_moved}} units.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://sephora-s4.sap.com/sap/opu/odata/sap/ALLOCATION_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: allocation
      path: /Allocations?$filter=Material eq '{{material_number}}' and Region eq '{{region}}'
      inputParameters:
      - name: material_number
        in: path
      - name: region
        in: path
      operations:
      - name: get-allocation
        method: GET
    - name: adjustments
      path: /AllocationAdjustments
      operations:
      - name: adjust-allocation
        method: POST
  - 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
Open in Framework → View in Fleet → store-allocation-planning-pipeline.yml

Retrieves store beauty advisor schedule data from the Sephora beauty retail systems.

naftiko: '0.5'
info:
  label: Store Beauty Advisor Schedule
  description: Retrieves store beauty advisor schedule data from the Sephora beauty retail systems.
  tags:
  - store
  - sephora
  - schedule
capability:
  exposes:
  - type: mcp
    namespace: store
    port: 8080
    tools:
    - name: store-beauty-advisor-schedule
      description: Retrieves store beauty advisor schedule data from the Sephora beauty retail systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: sephora.store-beauty-advisor-schedule
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: sephora
    baseUri: https://api.sephora.com/v2
    authentication:
      type: bearer
      token: $secrets.sephora_api_token
    resources:
    - name: resource
      path: /store/beauty/advisor/schedule/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: store-beauty-advisor-schedule
        method: GET
Open in Framework → View in Fleet → store-beauty-advisor-schedule.yml

Orchestrates store visual merchandising pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Store Visual Merchandising Pipeline
  description: Orchestrates store visual merchandising pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - store
  - sephora
  - servicenow
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: store
    port: 8080
    tools:
    - name: store-visual-merchandising-pipeline
      description: Orchestrates store visual merchandising pipeline across beauty retail 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://sephora.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/store
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://sephora.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/store
      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/store
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → store-visual-merchandising-pipeline.yml

Retrieves latest GitLab CI pipeline status.

naftiko: '0.5'
info:
  label: GitLab CI Pipeline Status
  description: Retrieves latest GitLab CI pipeline status.
  tags:
  - ci-cd
  - engineering
  - gitlab
capability:
  exposes:
  - type: mcp
    namespace: gitlab-ci
    port: 8080
    tools:
    - name: get-pipeline-status
      description: Look up latest GitLab pipeline.
      inputParameters:
      - name: project_id
        in: body
        type: string
        description: GitLab project ID.
      call: gitlab.get-latest-pipeline
      with:
        project_id: '{{project_id}}'
  consumes:
  - type: http
    namespace: gitlab
    baseUri: https://gitlab.sephora.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-latest-pipeline
        method: GET
Open in Framework → View in Fleet → gitlab-ci-pipeline-status.yml

Retrieves engagement metrics for Sephora Instagram posts.

naftiko: '0.5'
info:
  label: Instagram Beauty Content Tracker
  description: Retrieves engagement metrics for Sephora Instagram posts.
  tags:
  - marketing
  - social-media
  - instagram
capability:
  exposes:
  - type: mcp
    namespace: social-media
    port: 8080
    tools:
    - name: get-instagram-engagement
      description: Retrieve engagement metrics for an Instagram post.
      inputParameters:
      - name: post_id
        in: body
        type: string
        description: The Instagram media ID.
      call: instagram.get-media-insights
      with:
        post_id: '{{post_id}}'
  consumes:
  - type: http
    namespace: instagram
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.instagram_token
    resources:
    - name: media-insights
      path: /{{post_id}}/insights?metric=likes,comments,reach
      inputParameters:
      - name: post_id
        in: path
      operations:
      - name: get-media-insights
        method: GET
Open in Framework → View in Fleet → instagram-beauty-content-tracker.yml

When a purchase requisition exceeds threshold, routes for approval via Workday and notifies via Microsoft Teams.

naftiko: '0.5'
info:
  label: Procurement Approval Pipeline
  description: When a purchase requisition exceeds threshold, routes for approval via Workday and notifies via Microsoft Teams.
  tags:
  - procurement
  - approval
  - workday
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: procurement-approval
    port: 8080
    tools:
    - name: route-requisition-approval
      description: Route a requisition for manager approval.
      inputParameters:
      - name: requisition_id
        in: body
        type: string
        description: The requisition ID.
      - name: requestor_employee_id
        in: body
        type: string
        description: Workday employee ID.
      - name: spend_amount
        in: body
        type: number
        description: The spend amount.
      steps:
      - 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:
          channel_id: procurement_approvals
          text: 'Approval Required: Requisition {{requisition_id}} from {{get-requestor.full_name}} for ${{spend_amount}}.'
  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: 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
Open in Framework → View in Fleet → procurement-approval-pipeline.yml

Retrieves beauty insider points lookup data from the Sephora beauty retail systems.

naftiko: '0.5'
info:
  label: Beauty Insider Points Lookup
  description: Retrieves beauty insider points lookup data from the Sephora beauty retail systems.
  tags:
  - beauty
  - sephora
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: beauty
    port: 8080
    tools:
    - name: beauty-insider-points-lookup
      description: Retrieves beauty insider points lookup data from the Sephora beauty retail systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: sephora.beauty-insider-points-lookup
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: sephora
    baseUri: https://api.sephora.com/v2
    authentication:
      type: bearer
      token: $secrets.sephora_api_token
    resources:
    - name: resource
      path: /beauty/insider/points/lookup/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: beauty-insider-points-lookup
        method: GET
Open in Framework → View in Fleet → beauty-insider-points-lookup.yml

Orchestrates product sustainability audit pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Product Sustainability Audit Pipeline
  description: Orchestrates product sustainability audit pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - product
  - sephora
  - shopify
  - datadog
  - sephora
capability:
  exposes:
  - type: mcp
    namespace: product
    port: 8080
    tools:
    - name: product-sustainability-audit-pipeline
      description: Orchestrates product sustainability audit pipeline across beauty retail 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: shopify.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: sephora.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: shopify
    baseUri: https://sephora.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_token
    resources:
    - name: shopify-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: sephora
    baseUri: https://api.sephora.com/v2
    authentication:
      type: bearer
      token: $secrets.sephora_api_token
    resources:
    - name: sephora-resource
      path: /api/product
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → product-sustainability-audit-pipeline.yml

Retrieves fragrance profile matcher data from the Sephora beauty retail systems.

naftiko: '0.5'
info:
  label: Fragrance Profile Matcher
  description: Retrieves fragrance profile matcher data from the Sephora beauty retail systems.
  tags:
  - fragrance
  - sephora
  - matcher
capability:
  exposes:
  - type: mcp
    namespace: fragrance
    port: 8080
    tools:
    - name: fragrance-profile-matcher
      description: Retrieves fragrance profile matcher data from the Sephora beauty retail systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: sephora.fragrance-profile-matcher
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: sephora
    baseUri: https://api.sephora.com/v2
    authentication:
      type: bearer
      token: $secrets.sephora_api_token
    resources:
    - name: resource
      path: /fragrance/profile/matcher/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: fragrance-profile-matcher
        method: GET
Open in Framework → View in Fleet → fragrance-profile-matcher.yml

Orchestrates beauty trend analysis pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Beauty Trend Analysis Pipeline
  description: Orchestrates beauty trend analysis pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - beauty
  - sephora
  - jira
  - teams
  - sendgrid
capability:
  exposes:
  - type: mcp
    namespace: beauty
    port: 8080
    tools:
    - name: beauty-trend-analysis-pipeline
      description: Orchestrates beauty trend analysis pipeline across beauty retail 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: teams.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: sendgrid.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://sephora.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/beauty
      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/beauty
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: sendgrid-resource
      path: /api/beauty
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → beauty-trend-analysis-pipeline.yml

Orchestrates vendor compliance audit pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Vendor Compliance Audit Pipeline
  description: Orchestrates vendor compliance audit pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - vendor
  - sephora
  - shopify
  - datadog
  - sephora
capability:
  exposes:
  - type: mcp
    namespace: vendor
    port: 8080
    tools:
    - name: vendor-compliance-audit-pipeline
      description: Orchestrates vendor compliance audit pipeline across beauty retail 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: shopify.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: sephora.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: shopify
    baseUri: https://sephora.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_token
    resources:
    - name: shopify-resource
      path: /api/vendor
      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/vendor
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: sephora
    baseUri: https://api.sephora.com/v2
    authentication:
      type: bearer
      token: $secrets.sephora_api_token
    resources:
    - name: sephora-resource
      path: /api/vendor
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → vendor-compliance-audit-pipeline.yml

Fetches customer purchase history from Salesforce, runs a recommendation model in Azure Machine Learning, and delivers personalized recommendations via Salesforce Marketing Cloud email.

naftiko: '0.5'
info:
  label: Personalized Product Recommendation Pipeline
  description: Fetches customer purchase history from Salesforce, runs a recommendation model in Azure Machine Learning, and delivers personalized recommendations via Salesforce Marketing Cloud email.
  tags:
  - personalization
  - machine-learning
  - salesforce
  - azure-machine-learning
  - salesforce-marketing-cloud
capability:
  exposes:
  - type: mcp
    namespace: recommendations
    port: 8080
    tools:
    - name: send-personalized-recs
      description: Given a customer ID, fetch history, run recommendations, and send personalized email.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The Salesforce customer ID.
      steps:
      - name: get-purchase-history
        type: call
        call: salesforce.get-purchase-history
        with:
          customer_id: '{{customer_id}}'
      - name: get-recommendations
        type: call
        call: azureml.recommend
        with:
          customer_id: '{{customer_id}}'
          recent_products: '{{get-purchase-history.recent_skus}}'
      - name: send-rec-email
        type: call
        call: sfmc.send-triggered-email
        with:
          template_id: personalized_recommendations
          subscriber_key: '{{customer_id}}'
          data: product_1={{get-recommendations.items[0].name}},product_2={{get-recommendations.items[1].name}},product_3={{get-recommendations.items[2].name}}
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://sephora.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: purchase-history
      path: /sobjects/Account/{{customer_id}}/Purchase_History__r
      inputParameters:
      - name: customer_id
        in: path
      operations:
      - name: get-purchase-history
        method: GET
  - type: http
    namespace: azureml
    baseUri: https://sephora-recs.inference.ml.azure.com
    authentication:
      type: bearer
      token: $secrets.azure_ml_token
    resources:
    - name: scoring
      path: /score
      operations:
      - name: recommend
        method: POST
  - type: http
    namespace: sfmc
    baseUri: https://sephora.rest.marketingcloudapis.com/messaging/v1
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - name: triggered-emails
      path: /messageDefinitionSends/{{template_id}}/send
      inputParameters:
      - name: template_id
        in: path
      operations:
      - name: send-triggered-email
        method: POST
Open in Framework → View in Fleet → personalized-product-recommendation-pipeline.yml

Orchestrates beauty box subscription pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Beauty Box Subscription Pipeline
  description: Orchestrates beauty box subscription pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - beauty
  - sephora
  - jira
  - teams
  - sendgrid
capability:
  exposes:
  - type: mcp
    namespace: beauty
    port: 8080
    tools:
    - name: beauty-box-subscription-pipeline
      description: Orchestrates beauty box subscription pipeline across beauty retail 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: teams.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: sendgrid.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://sephora.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/beauty
      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/beauty
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: sendgrid-resource
      path: /api/beauty
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → beauty-box-subscription-pipeline.yml

Retrieves product allergen check data from the Sephora beauty retail systems.

naftiko: '0.5'
info:
  label: Product Allergen Check
  description: Retrieves product allergen check data from the Sephora beauty retail systems.
  tags:
  - product
  - sephora
  - check
capability:
  exposes:
  - type: mcp
    namespace: product
    port: 8080
    tools:
    - name: product-allergen-check
      description: Retrieves product allergen check data from the Sephora beauty retail systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: sephora.product-allergen-check
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: sephora
    baseUri: https://api.sephora.com/v2
    authentication:
      type: bearer
      token: $secrets.sephora_api_token
    resources:
    - name: resource
      path: /product/allergen/check/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: product-allergen-check
        method: GET
Open in Framework → View in Fleet → product-allergen-check.yml

Creates a marketing campaign in Salesforce Marketing Cloud, sets up Google Analytics tracking, configures Google Tag Manager events, and notifies the marketing team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Marketing Campaign Launch Pipeline
  description: Creates a marketing campaign in Salesforce Marketing Cloud, sets up Google Analytics tracking, configures Google Tag Manager events, and notifies the marketing team via Microsoft Teams.
  tags:
  - marketing
  - campaigns
  - salesforce-marketing-cloud
  - google-analytics
  - google-tag-manager
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: marketing-campaigns
    port: 8080
    tools:
    - name: launch-campaign
      description: Given campaign details, create in SFMC, configure analytics, and notify the team.
      inputParameters:
      - name: campaign_name
        in: body
        type: string
        description: The campaign name.
      - name: target_segment
        in: body
        type: string
        description: The target audience segment.
      - name: launch_date
        in: body
        type: string
        description: The campaign launch date.
      - name: utm_campaign
        in: body
        type: string
        description: The UTM campaign parameter.
      steps:
      - name: create-campaign
        type: call
        call: sfmc.create-campaign
        with:
          name: '{{campaign_name}}'
          segment: '{{target_segment}}'
          launch_date: '{{launch_date}}'
      - name: setup-gtm-tag
        type: call
        call: gtm.create-tag
        with:
          tag_name: campaign_{{utm_campaign}}
          trigger_type: pageview
          utm_campaign: '{{utm_campaign}}'
      - name: notify-marketing
        type: call
        call: msteams.send-message
        with:
          channel_id: marketing_campaigns
          text: 'Campaign Launched: {{campaign_name}} targeting {{target_segment}}. Launch: {{launch_date}}. UTM: {{utm_campaign}}. SFMC ID: {{create-campaign.campaign_id}}.'
  consumes:
  - type: http
    namespace: sfmc
    baseUri: https://sephora.rest.marketingcloudapis.com/v1
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - name: campaigns
      path: /campaigns
      operations:
      - name: create-campaign
        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/$secrets.gtm_account_id/containers/$secrets.gtm_container_id/workspaces/default/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/{{channel_id}}/channels/general/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → marketing-campaign-launch-pipeline.yml

Orchestrates seasonal collection planning pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Seasonal Collection Planning Pipeline
  description: Orchestrates seasonal collection planning pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - seasonal
  - sephora
  - datadog
  - sephora
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: seasonal
    port: 8080
    tools:
    - name: seasonal-collection-planning-pipeline
      description: Orchestrates seasonal collection planning pipeline across beauty retail 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: sephora.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/seasonal
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: sephora
    baseUri: https://api.sephora.com/v2
    authentication:
      type: bearer
      token: $secrets.sephora_api_token
    resources:
    - name: sephora-resource
      path: /api/seasonal
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://sephora.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: salesforce-resource
      path: /api/seasonal
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → seasonal-collection-planning-pipeline.yml

Retrieves brand page catalog lookup data from the Sephora beauty retail systems.

naftiko: '0.5'
info:
  label: Brand Page Catalog Lookup
  description: Retrieves brand page catalog lookup data from the Sephora beauty retail systems.
  tags:
  - brand
  - sephora
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: brand
    port: 8080
    tools:
    - name: brand-page-catalog-lookup
      description: Retrieves brand page catalog lookup data from the Sephora beauty retail systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: sephora.brand-page-catalog-lookup
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: sephora
    baseUri: https://api.sephora.com/v2
    authentication:
      type: bearer
      token: $secrets.sephora_api_token
    resources:
    - name: resource
      path: /brand/page/catalog/lookup/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: brand-page-catalog-lookup
        method: GET
Open in Framework → View in Fleet → brand-page-catalog-lookup.yml

Orchestrates customer gifting experience pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Customer Gifting Experience Pipeline
  description: Orchestrates customer gifting experience pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - customer
  - sephora
  - slack
  - jira
  - teams
capability:
  exposes:
  - type: mcp
    namespace: customer
    port: 8080
    tools:
    - name: customer-gifting-experience-pipeline
      description: Orchestrates customer gifting experience pipeline across beauty retail 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: jira.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/customer
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: jira
    baseUri: https://sephora.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/customer
      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/customer
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → customer-gifting-experience-pipeline.yml

Orchestrates digital content creation pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Digital Content Creation Pipeline
  description: Orchestrates digital content creation pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - digital
  - sephora
  - servicenow
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: digital
    port: 8080
    tools:
    - name: digital-content-creation-pipeline
      description: Orchestrates digital content creation pipeline across beauty retail 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://sephora.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/digital
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://sephora.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/digital
      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/digital
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → digital-content-creation-pipeline.yml

Queries Splunk for security-related events.

naftiko: '0.5'
info:
  label: Splunk Security Log Search
  description: Queries Splunk for security-related events.
  tags:
  - security
  - logging
  - splunk
capability:
  exposes:
  - type: mcp
    namespace: security-logs
    port: 8080
    tools:
    - name: search-security-logs
      description: Search Splunk for security events.
      inputParameters:
      - name: search_query
        in: body
        type: string
        description: Splunk search query.
      call: splunk.search
      with:
        search: '{{search_query}}'
  consumes:
  - type: http
    namespace: splunk
    baseUri: https://splunk.sephora.com:8089/services
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - name: search
      path: /search/jobs
      operations:
      - name: search
        method: POST
Open in Framework → View in Fleet → splunk-security-log-search.yml

Retrieves a Salesforce opportunity for B2B brand partnerships.

naftiko: '0.5'
info:
  label: Salesforce Opportunity Lookup
  description: Retrieves a Salesforce opportunity for B2B brand partnerships.
  tags:
  - sales
  - crm
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: sales-crm
    port: 8080
    tools:
    - name: get-opportunity
      description: Look up a Salesforce opportunity.
      inputParameters:
      - name: opportunity_id
        in: body
        type: string
        description: The opportunity ID.
      call: salesforce.get-opportunity
      with:
        opportunity_id: '{{opportunity_id}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://sephora.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
Open in Framework → View in Fleet → salesforce-opportunity-lookup.yml

Orchestrates brand performance reporting pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Brand Performance Reporting Pipeline
  description: Orchestrates brand performance reporting pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - brand
  - sephora
  - datadog
  - sephora
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: brand
    port: 8080
    tools:
    - name: brand-performance-reporting-pipeline
      description: Orchestrates brand performance reporting pipeline across beauty retail 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: sephora.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/brand
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: sephora
    baseUri: https://api.sephora.com/v2
    authentication:
      type: bearer
      token: $secrets.sephora_api_token
    resources:
    - name: sephora-resource
      path: /api/brand
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://sephora.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-3
        method: POST
Open in Framework → View in Fleet → brand-performance-reporting-pipeline.yml

Orchestrates store associate training pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Store Associate Training Pipeline
  description: Orchestrates store associate training pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - store
  - sephora
  - servicenow
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: store
    port: 8080
    tools:
    - name: store-associate-training-pipeline
      description: Orchestrates store associate training pipeline across beauty retail 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://sephora.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: servicenow-resource
      path: /api/store
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://sephora.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/store
      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/store
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → store-associate-training-pipeline.yml

Orchestrates beauty tech innovation pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Beauty Tech Innovation Pipeline
  description: Orchestrates beauty tech innovation pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - beauty
  - sephora
  - snowflake
  - slack
  - jira
capability:
  exposes:
  - type: mcp
    namespace: beauty
    port: 8080
    tools:
    - name: beauty-tech-innovation-pipeline
      description: Orchestrates beauty tech innovation pipeline across beauty retail 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: jira.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://sephora.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/beauty
      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/beauty
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: jira
    baseUri: https://sephora.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/beauty
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → beauty-tech-innovation-pipeline.yml

Retrieves compensation data from Workday and sends a review to the manager via Outlook.

naftiko: '0.5'
info:
  label: Workday Compensation Review
  description: Retrieves compensation data from Workday and sends a review to the manager via Outlook.
  tags:
  - hr
  - compensation
  - workday
  - microsoft-outlook
capability:
  exposes:
  - type: mcp
    namespace: hr-compensation
    port: 8080
    tools:
    - name: generate-comp-review
      description: Generate a compensation review.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: Workday employee ID.
      steps:
      - name: get-employee
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{employee_id}}'
      - name: get-compensation
        type: call
        call: workday.get-compensation
        with:
          worker_id: '{{employee_id}}'
      - name: send-review
        type: call
        call: outlook.send-mail
        with:
          recipient: '{{get-employee.manager_email}}'
          subject: 'Compensation Review: {{get-employee.full_name}}'
          body: 'Employee: {{get-employee.full_name}}. Base: {{get-compensation.base_pay}}. Performance: {{get-compensation.performance_rating}}.'
  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
    - name: compensation
      path: /workers/{{worker_id}}/compensation
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-compensation
        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-mail
        method: POST
Open in Framework → View in Fleet → workday-compensation-review.yml

Orchestrates customer win back pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Customer Win Back Pipeline
  description: Orchestrates customer win back pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - customer
  - sephora
  - snowflake
  - slack
  - jira
capability:
  exposes:
  - type: mcp
    namespace: customer
    port: 8080
    tools:
    - name: customer-win-back-pipeline
      description: Orchestrates customer win back pipeline across beauty retail 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: jira.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://sephora.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/customer
      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/customer
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: jira
    baseUri: https://sephora.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/customer
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → customer-win-back-pipeline.yml

Orchestrates customer replenishment reminder pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Customer Replenishment Reminder Pipeline
  description: Orchestrates customer replenishment reminder pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - customer
  - sephora
  - slack
  - jira
  - teams
capability:
  exposes:
  - type: mcp
    namespace: customer
    port: 8080
    tools:
    - name: customer-replenishment-reminder-pipeline
      description: Orchestrates customer replenishment reminder pipeline across beauty retail 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: jira.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/customer
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: jira
    baseUri: https://sephora.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/customer
      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/customer
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → customer-replenishment-reminder-pipeline.yml

Retrieves beauty class schedule lookup data from the Sephora beauty retail systems.

naftiko: '0.5'
info:
  label: Beauty Class Schedule Lookup
  description: Retrieves beauty class schedule lookup data from the Sephora beauty retail systems.
  tags:
  - beauty
  - sephora
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: beauty
    port: 8080
    tools:
    - name: beauty-class-schedule-lookup
      description: Retrieves beauty class schedule lookup data from the Sephora beauty retail systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: sephora.beauty-class-schedule-lookup
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: sephora
    baseUri: https://api.sephora.com/v2
    authentication:
      type: bearer
      token: $secrets.sephora_api_token
    resources:
    - name: resource
      path: /beauty/class/schedule/lookup/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: beauty-class-schedule-lookup
        method: GET
Open in Framework → View in Fleet → beauty-class-schedule-lookup.yml

Retrieves a Looker dashboard for retail performance analytics.

naftiko: '0.5'
info:
  label: Looker Retail Analytics Dashboard
  description: Retrieves a Looker dashboard for retail performance analytics.
  tags:
  - analytics
  - retail
  - looker
capability:
  exposes:
  - type: mcp
    namespace: looker-analytics
    port: 8080
    tools:
    - name: get-retail-dashboard
      description: Retrieve a Looker retail dashboard.
      inputParameters:
      - name: dashboard_id
        in: body
        type: string
        description: Looker dashboard ID.
      call: looker.get-dashboard
      with:
        dashboard_id: '{{dashboard_id}}'
  consumes:
  - type: http
    namespace: looker
    baseUri: https://sephora.looker.com/api/4.0
    authentication:
      type: bearer
      token: $secrets.looker_token
    resources:
    - name: dashboards
      path: /dashboards/{{dashboard_id}}
      inputParameters:
      - name: dashboard_id
        in: path
      operations:
      - name: get-dashboard
        method: GET
Open in Framework → View in Fleet → looker-retail-analytics-dashboard.yml

Orchestrates store experience enhancement pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Store Experience Enhancement Pipeline
  description: Orchestrates store experience enhancement pipeline across beauty retail systems, coordinating multiple services and notifying stakeholders.
  tags:
  - store
  - sephora
  - teams
  - sendgrid
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: store
    port: 8080
    tools:
    - name: store-experience-enhancement-pipeline
      description: Orchestrates store experience enhancement pipeline across beauty retail 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: sendgrid.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: shopify.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/store
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: sendgrid-resource
      path: /api/store
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: shopify
    baseUri: https://sephora.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_token
    resources:
    - name: shopify-resource
      path: /api/store
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → store-experience-enhancement-pipeline.yml

Retrieves customer beauty profile lookup data from the Sephora beauty retail systems.

naftiko: '0.5'
info:
  label: Customer Beauty Profile Lookup
  description: Retrieves customer beauty profile lookup data from the Sephora beauty retail systems.
  tags:
  - customer
  - sephora
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: customer
    port: 8080
    tools:
    - name: customer-beauty-profile-lookup
      description: Retrieves customer beauty profile lookup data from the Sephora beauty retail systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: sephora.customer-beauty-profile-lookup
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: sephora
    baseUri: https://api.sephora.com/v2
    authentication:
      type: bearer
      token: $secrets.sephora_api_token
    resources:
    - name: resource
      path: /customer/beauty/profile/lookup/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: customer-beauty-profile-lookup
        method: GET
Open in Framework → View in Fleet → customer-beauty-profile-lookup.yml

Monitors New Relic for error rate spikes on the Shopify storefront app, creates a PagerDuty incident if the threshold is breached, and posts diagnostic context to the engineering Slack channel.

naftiko: '0.5'
info:
  label: New Relic Error Spike Responder
  description: Monitors New Relic for error rate spikes on the Shopify storefront app, creates a PagerDuty incident if the threshold is breached, and posts diagnostic context to the engineering Slack channel.
  tags:
  - e-commerce
  - platform-engineering
  - monitoring
  - new-relic
  - slack
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: error-monitoring
    port: 8080
    tools:
    - name: respond-to-error-spike
      description: Query New Relic for error rates. If above threshold, create a PagerDuty incident and alert Slack.
      inputParameters:
      - name: app_id
        in: body
        type: string
        description: The New Relic application ID.
      - name: error_rate_threshold
        in: body
        type: number
        description: The error rate percentage threshold.
      steps:
      - name: query-error-rate
        type: call
        call: newrelic.get-error-rate
        with:
          app_id: '{{app_id}}'
      - name: create-pagerduty-incident
        type: call
        call: pagerduty.create-incident
        with:
          service_id: '{{pagerduty_service_id}}'
          title: 'Shopify storefront error rate spike: {{query-error-rate.error_rate}}%'
          urgency: high
          body: 'Error rate {{query-error-rate.error_rate}}% exceeds threshold {{error_rate_threshold}}%. App: {{app_id}}'
      - name: alert-engineering
        type: call
        call: slack.post-message
        with:
          channel: '#platform-engineering'
          text: 'ERROR SPIKE: Storefront app {{app_id}} error rate at {{query-error-rate.error_rate}}% (threshold: {{error_rate_threshold}}%). PagerDuty incident created. Top error: {{query-error-rate.top_error}}'
  consumes:
  - type: http
    namespace: newrelic
    baseUri: https://api.newrelic.com/v2
    authentication:
      type: bearer
      token: $secrets.newrelic_api_key
    resources:
    - name: error-rate
      path: /applications/{{app_id}}/metrics/data.json
      inputParameters:
      - name: app_id
        in: path
      operations:
      - name: get-error-rate
        method: GET
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_api_key
    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
Open in Framework → View in Fleet → new-relic-error-spike-responder.yml

Retrieves inventory location listing data from the Shopify e-commerce platform systems.

naftiko: '0.5'
info:
  label: Inventory Location Listing
  description: Retrieves inventory location listing data from the Shopify e-commerce platform systems.
  tags:
  - inventory
  - shopify
  - listing
capability:
  exposes:
  - type: mcp
    namespace: inventory
    port: 8080
    tools:
    - name: inventory-location-listing
      description: Retrieves inventory location listing data from the Shopify e-commerce platform systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: shopify.inventory-location-listing
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: shopify
    baseUri: https://shopify.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_access_token
    resources:
    - name: resource
      path: /inventory/location/listing/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: inventory-location-listing
        method: GET
Open in Framework → View in Fleet → inventory-location-listing.yml

Fetches a single Shopify product by product ID, returning title, description, variants with pricing, images, and published status.

naftiko: '0.5'
info:
  label: Product Listing Retrieval
  description: Fetches a single Shopify product by product ID, returning title, description, variants with pricing, images, and published status.
  tags:
  - e-commerce
  - products
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: product-catalog
    port: 8080
    tools:
    - name: get-product
      description: Retrieve a Shopify product by ID. Returns title, body HTML, variants, images, and status.
      inputParameters:
      - name: product_id
        in: body
        type: string
        description: The Shopify product ID.
      call: shopify-admin.get-product
      with:
        product_id: '{{product_id}}'
      outputParameters:
      - name: title
        type: string
        mapping: $.product.title
      - name: status
        type: string
        mapping: $.product.status
      - name: vendor
        type: string
        mapping: $.product.vendor
      - name: product_type
        type: string
        mapping: $.product.product_type
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: products
      path: /products/{{product_id}}.json
      inputParameters:
      - name: product_id
        in: path
      operations:
      - name: get-product
        method: GET
Open in Framework → View in Fleet → product-listing-retrieval.yml

On new Shopify order creation, runs fraud analysis using order risk data, checks the customer against an internal blocklist, and if flagged, places the order on hold, creates a Zendesk investigation ticket, and alerts the fraud team in Slack.

naftiko: '0.5'
info:
  label: Fraud Detection and Order Hold Pipeline
  description: On new Shopify order creation, runs fraud analysis using order risk data, checks the customer against an internal blocklist, and if flagged, places the order on hold, creates a Zendesk investigation ticket, and alerts the fraud team in Slack.
  tags:
  - e-commerce
  - fraud-detection
  - security
  - zendesk
  - slack
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: fraud-prevention
    port: 8080
    tools:
    - name: check-and-hold-fraud-order
      description: Given an order ID, check Shopify order risks and internal blocklist. If high risk, hold the order, create a Zendesk ticket, and alert Slack.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The Shopify order ID to evaluate.
      steps:
      - name: get-order
        type: call
        call: shopify-admin.get-order
        with:
          order_id: '{{order_id}}'
      - name: get-risks
        type: call
        call: shopify-admin.get-order-risks
        with:
          order_id: '{{order_id}}'
      - name: create-investigation
        type: call
        call: zendesk.create-ticket
        with:
          subject: 'Fraud investigation: Order #{{get-order.order_number}}'
          description: 'High-risk order detected.


            Order: #{{get-order.order_number}}

            Amount: {{get-order.total_price}} {{get-order.currency}}

            Customer: {{get-order.customer.email}}

            Risk assessment: {{get-risks.risks[0].message}}

            Recommendation: {{get-risks.risks[0].recommendation}}'
          priority: urgent
          tags: fraud,shopify,investigation
      - name: alert-fraud-team
        type: call
        call: slack.post-message
        with:
          channel: '#fraud-alerts'
          text: 'FRAUD ALERT: Order #{{get-order.order_number}} flagged. Amount: {{get-order.total_price}} {{get-order.currency}}. Customer: {{get-order.customer.email}}. Risk: {{get-risks.risks[0].recommendation}}. Zendesk: {{create-investigation.id}}'
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: orders
      path: /orders/{{order_id}}.json
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-order
        method: GET
    - name: order-risks
      path: /orders/{{order_id}}/risks.json
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-order-risks
        method: GET
  - type: http
    namespace: zendesk
    baseUri: https://{{zendesk_subdomain}}.zendesk.com/api/v2
    authentication:
      type: bearer
      token: $secrets.zendesk_api_token
    resources:
    - name: tickets
      path: /tickets.json
      operations:
      - name: create-ticket
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → fraud-detection-and-order-hold-pipeline.yml

Processes an international Shopify order by fetching live exchange rates, calculating the converted total, updating the order note with conversion details, and notifying the finance team in Slack.

naftiko: '0.5'
info:
  label: International Order with Currency Conversion
  description: Processes an international Shopify order by fetching live exchange rates, calculating the converted total, updating the order note with conversion details, and notifying the finance team in Slack.
  tags:
  - e-commerce
  - orders
  - payments
  - currencies
  - slack
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: intl-orders
    port: 8080
    tools:
    - name: process-international-order
      description: Given an order ID and target currency, fetch exchange rate, calculate conversion, annotate the order, and notify finance.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The Shopify order ID.
      - name: target_currency
        in: body
        type: string
        description: The target currency code, e.g. EUR, GBP.
      steps:
      - name: get-order
        type: call
        call: shopify-admin.get-order
        with:
          order_id: '{{order_id}}'
      - name: get-exchange-rate
        type: call
        call: exchange-rate.get-rate
        with:
          from: '{{get-order.currency}}'
          to: '{{target_currency}}'
      - name: update-order-note
        type: call
        call: shopify-admin.update-order
        with:
          order_id: '{{order_id}}'
          note: 'Currency conversion: {{get-order.total_price}} {{get-order.currency}} = {{converted_amount}} {{target_currency}} at rate {{get-exchange-rate.rate}}'
      - name: notify-finance
        type: call
        call: slack.post-message
        with:
          channel: '#finance-intl'
          text: 'International order #{{get-order.order_number}}: {{get-order.total_price}} {{get-order.currency}} ({{target_currency}} equivalent at {{get-exchange-rate.rate}}). Customer: {{get-order.customer.email}}'
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: orders
      path: /orders/{{order_id}}.json
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-order
        method: GET
      - name: update-order
        method: PUT
  - type: http
    namespace: exchange-rate
    baseUri: https://api.exchangerate-api.com/v4
    authentication:
      type: bearer
      token: $secrets.exchange_rate_api_key
    resources:
    - name: rates
      path: /latest/{{from}}
      inputParameters:
      - name: from
        in: path
      operations:
      - name: get-rate
        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
Open in Framework → View in Fleet → international-order-with-currency-conversion.yml

Orchestrates customer segmentation pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Customer Segmentation Pipeline
  description: Orchestrates customer segmentation pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - customer
  - shopify
  - slack
  - jira
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: customer
    port: 8080
    tools:
    - name: customer-segmentation-pipeline
      description: Orchestrates customer segmentation pipeline across e-commerce platform 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: jira.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: datadog.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/customer
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: jira
    baseUri: https://shopify.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/customer
      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/customer
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → customer-segmentation-pipeline.yml

Queries Datadog for Shopify storefront latency metrics, compares against SLO thresholds, and if degraded, creates a ServiceNow incident and alerts the engineering team in Slack.

naftiko: '0.5'
info:
  label: Datadog Performance Monitoring for Storefront
  description: Queries Datadog for Shopify storefront latency metrics, compares against SLO thresholds, and if degraded, creates a ServiceNow incident and alerts the engineering team in Slack.
  tags:
  - e-commerce
  - platform-engineering
  - monitoring
  - datadog
  - servicenow
  - slack
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: storefront-monitoring
    port: 8080
    tools:
    - name: check-storefront-health
      description: Query Datadog for storefront latency metrics. If above threshold, create a ServiceNow incident and alert the engineering Slack channel.
      inputParameters:
      - name: metric_query
        in: body
        type: string
        description: The Datadog metric query, e.g. avg:shopify.storefront.latency{env:production}.
      - name: threshold_ms
        in: body
        type: number
        description: Latency threshold in milliseconds.
      - name: time_range_seconds
        in: body
        type: number
        description: Look-back window in seconds.
      steps:
      - name: query-metrics
        type: call
        call: datadog.query-metrics
        with:
          query: '{{metric_query}}'
          from: '{{time_range_seconds}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: Storefront latency degradation detected
          category: performance
          description: 'Shopify storefront latency exceeded {{threshold_ms}}ms. Current avg: {{query-metrics.series[0].pointlist[-1][1]}}ms. Metric: {{metric_query}}'
          urgency: '2'
      - name: alert-engineering
        type: call
        call: slack.post-message
        with:
          channel: '#platform-engineering'
          text: 'Storefront latency alert: {{metric_query}} exceeded {{threshold_ms}}ms. ServiceNow incident: {{create-incident.number}}. 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: metrics
      path: /query
      operations:
      - name: query-metrics
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://{{servicenow_instance}}.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → datadog-performance-monitoring-for-storefront.yml

Retrieves draft order details lookup data from the Shopify e-commerce platform systems.

naftiko: '0.5'
info:
  label: Draft Order Details Lookup
  description: Retrieves draft order details lookup data from the Shopify e-commerce platform systems.
  tags:
  - draft
  - shopify
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: draft
    port: 8080
    tools:
    - name: draft-order-details-lookup
      description: Retrieves draft order details lookup data from the Shopify e-commerce platform systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: shopify.draft-order-details-lookup
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: shopify
    baseUri: https://shopify.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_access_token
    resources:
    - name: resource
      path: /draft/order/details/lookup/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: draft-order-details-lookup
        method: GET
Open in Framework → View in Fleet → draft-order-details-lookup.yml

Orchestrates merchant financial reporting pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Merchant Financial Reporting Pipeline
  description: Orchestrates merchant financial reporting pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - merchant
  - shopify
  - slack
  - jira
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: merchant
    port: 8080
    tools:
    - name: merchant-financial-reporting-pipeline
      description: Orchestrates merchant financial reporting pipeline across e-commerce platform 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: jira.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: datadog.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/merchant
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: jira
    baseUri: https://shopify.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/merchant
      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/merchant
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → merchant-financial-reporting-pipeline.yml

Orchestrates merchant support escalation pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Merchant Support Escalation Pipeline
  description: Orchestrates merchant support escalation pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - merchant
  - shopify
  - jira
  - datadog
  - hubspot
capability:
  exposes:
  - type: mcp
    namespace: merchant
    port: 8080
    tools:
    - name: merchant-support-escalation-pipeline
      description: Orchestrates merchant support escalation pipeline across e-commerce platform 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: datadog.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: hubspot.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://shopify.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/merchant
      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/merchant
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: hubspot-resource
      path: /api/merchant
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → merchant-support-escalation-pipeline.yml

Reads a metafield value for the shop resource by namespace and key. Used to retrieve custom configuration, feature flags, or store-level metadata.

naftiko: '0.5'
info:
  label: Shop Metafield Reader
  description: Reads a metafield value for the shop resource by namespace and key. Used to retrieve custom configuration, feature flags, or store-level metadata.
  tags:
  - e-commerce
  - configuration
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: shop-config
    port: 8080
    tools:
    - name: get-shop-metafield
      description: Retrieve a shop-level metafield by namespace and key.
      inputParameters:
      - name: namespace
        in: body
        type: string
        description: The metafield namespace.
      - name: key
        in: body
        type: string
        description: The metafield key.
      call: shopify-admin.list-shop-metafields
      with:
        namespace: '{{namespace}}'
        key: '{{key}}'
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: shop-metafields
      path: /metafields.json
      inputParameters:
      - name: namespace
        in: query
      - name: key
        in: query
      operations:
      - name: list-shop-metafields
        method: GET
Open in Framework → View in Fleet → shop-metafield-reader.yml

Orchestrates b2b wholesale pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: B2B Wholesale Pipeline
  description: Orchestrates b2b wholesale pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - b2b
  - shopify
  - zendesk
  - github
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: b2b
    port: 8080
    tools:
    - name: b2b-wholesale-pipeline
      description: Orchestrates b2b wholesale pipeline across e-commerce platform 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: zendesk.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: github.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: shopify.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: zendesk
    baseUri: https://shopify.zendesk.com/api/v2
    authentication:
      type: bearer
      token: $secrets.zendesk_token
    resources:
    - name: zendesk-resource
      path: /api/b2b
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: github-resource
      path: /api/b2b
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: shopify
    baseUri: https://shopify.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_access_token
    resources:
    - name: shopify-resource
      path: /api/b2b
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → b2b-wholesale-pipeline.yml

Orchestrates merchant marketing automation pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Merchant Marketing Automation Pipeline
  description: Orchestrates merchant marketing automation pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - merchant
  - shopify
  - shopify
  - stripe
  - sendgrid
capability:
  exposes:
  - type: mcp
    namespace: merchant
    port: 8080
    tools:
    - name: merchant-marketing-automation-pipeline
      description: Orchestrates merchant marketing automation pipeline across e-commerce platform 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: shopify.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: stripe.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: sendgrid.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: shopify
    baseUri: https://shopify.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_access_token
    resources:
    - name: shopify-resource
      path: /api/merchant
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: stripe
    baseUri: https://api.stripe.com/v1
    authentication:
      type: bearer
      token: $secrets.stripe_secret_key
    resources:
    - name: stripe-resource
      path: /api/merchant
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: sendgrid-resource
      path: /api/merchant
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → merchant-marketing-automation-pipeline.yml

Fetches a customer's purchase history from Shopify, generates personalized product recommendations using Claude, and sends the recommendations via a personalized email through SendGrid.

naftiko: '0.5'
info:
  label: AI Product Recommendation Engine
  description: Fetches a customer's purchase history from Shopify, generates personalized product recommendations using Claude, and sends the recommendations via a personalized email through SendGrid.
  tags:
  - e-commerce
  - ai-ml
  - recommendations
  - claude
  - sendgrid
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: recommendations
    port: 8080
    tools:
    - name: generate-recommendations
      description: Given a customer ID, analyze purchase history with Claude and send personalized product recommendations via email.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The Shopify customer ID.
      - name: max_recommendations
        in: body
        type: number
        description: Maximum number of product recommendations to generate.
      steps:
      - name: get-customer
        type: call
        call: shopify-admin.get-customer
        with:
          customer_id: '{{customer_id}}'
      - name: get-order-history
        type: call
        call: shopify-admin.list-customer-orders
        with:
          customer_id: '{{customer_id}}'
          status: any
      - name: get-all-products
        type: call
        call: shopify-admin.list-products
        with:
          status: active
          limit: '50'
      - name: generate-recs
        type: call
        call: claude.create-message
        with:
          model: claude-sonnet-4-20250514
          prompt: 'Based on this customer''s purchase history, recommend up to {{max_recommendations}} products they would likely enjoy. Purchase history: {{get-order-history.orders}}. Available products: {{get-all-products.products}}. Return JSON array of product IDs with reasoning.'
      - name: send-email
        type: call
        call: sendgrid.send-email
        with:
          to: '{{get-customer.email}}'
          subject: Products picked just for you, {{get-customer.first_name}}!
          body: 'Hi {{get-customer.first_name}}, based on your recent purchases, we think you will love these: {{generate-recs.content}}'
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: customers
      path: /customers/{{customer_id}}.json
      inputParameters:
      - name: customer_id
        in: path
      operations:
      - name: get-customer
        method: GET
    - name: customer-orders
      path: /customers/{{customer_id}}/orders.json
      inputParameters:
      - name: customer_id
        in: path
      - name: status
        in: query
      operations:
      - name: list-customer-orders
        method: GET
    - name: products
      path: /products.json
      inputParameters:
      - name: status
        in: query
      - name: limit
        in: query
      operations:
      - name: list-products
        method: GET
  - type: http
    namespace: claude
    baseUri: https://api.anthropic.com/v1
    authentication:
      type: bearer
      token: $secrets.anthropic_api_key
    inputParameters:
    - name: anthropic-version
      in: header
      value: '2023-06-01'
    resources:
    - name: messages
      path: /messages
      operations:
      - name: create-message
        method: POST
  - type: http
    namespace: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: mail
      path: /mail/send
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → ai-product-recommendation-engine.yml

Orchestrates checkout conversion optimization pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Checkout Conversion Optimization Pipeline
  description: Orchestrates checkout conversion optimization pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - checkout
  - shopify
  - hubspot
  - zendesk
  - github
capability:
  exposes:
  - type: mcp
    namespace: checkout
    port: 8080
    tools:
    - name: checkout-conversion-optimization-pipeline
      description: Orchestrates checkout conversion optimization pipeline across e-commerce platform 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: hubspot.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: zendesk.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: github.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: hubspot-resource
      path: /api/checkout
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: zendesk
    baseUri: https://shopify.zendesk.com/api/v2
    authentication:
      type: bearer
      token: $secrets.zendesk_token
    resources:
    - name: zendesk-resource
      path: /api/checkout
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: github-resource
      path: /api/checkout
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → checkout-conversion-optimization-pipeline.yml

Fetches product reviews from Shopify product metafields, analyzes sentiment using Claude, updates the product description with a review summary, and posts insights to Slack.

naftiko: '0.5'
info:
  label: Product Review Aggregator and Sentiment Analyzer
  description: Fetches product reviews from Shopify product metafields, analyzes sentiment using Claude, updates the product description with a review summary, and posts insights to Slack.
  tags:
  - e-commerce
  - products
  - ai-ml
  - claude
  - slack
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: review-analytics
    port: 8080
    tools:
    - name: analyze-product-reviews
      description: Given a product ID, fetch reviews, analyze sentiment with Claude, update the product with a summary, and notify Slack.
      inputParameters:
      - name: product_id
        in: body
        type: string
        description: The Shopify product ID.
      steps:
      - name: get-product
        type: call
        call: shopify-admin.get-product
        with:
          product_id: '{{product_id}}'
      - name: get-reviews
        type: call
        call: shopify-admin.get-product-metafields
        with:
          product_id: '{{product_id}}'
          namespace: reviews
      - name: analyze-sentiment
        type: call
        call: claude.create-message
        with:
          model: claude-sonnet-4-20250514
          prompt: 'Analyze the sentiment of these product reviews for ''{{get-product.title}}''. Provide: average sentiment (positive/neutral/negative), top 3 praised features, top 3 complaints, and a 2-sentence summary. Reviews: {{get-reviews.metafields}}'
      - name: notify-insights
        type: call
        call: slack.post-message
        with:
          channel: '#product-insights'
          text: 'Review analysis for {{get-product.title}}: {{analyze-sentiment.content}}'
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: products
      path: /products/{{product_id}}.json
      inputParameters:
      - name: product_id
        in: path
      operations:
      - name: get-product
        method: GET
    - name: product-metafields
      path: /products/{{product_id}}/metafields.json
      inputParameters:
      - name: product_id
        in: path
      - name: namespace
        in: query
      operations:
      - name: get-product-metafields
        method: GET
  - type: http
    namespace: claude
    baseUri: https://api.anthropic.com/v1
    authentication:
      type: bearer
      token: $secrets.anthropic_api_key
    inputParameters:
    - name: anthropic-version
      in: header
      value: '2023-06-01'
    resources:
    - name: messages
      path: /messages
      operations:
      - name: create-message
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → product-review-aggregator-and-sentiment-analyzer.yml

Retrieves a specific theme asset file by key from the active Shopify theme. Used by front-end teams to inspect liquid templates, CSS, and JavaScript assets.

naftiko: '0.5'
info:
  label: Theme Asset Reader
  description: Retrieves a specific theme asset file by key from the active Shopify theme. Used by front-end teams to inspect liquid templates, CSS, and JavaScript assets.
  tags:
  - e-commerce
  - storefront
  - themes
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: storefront-themes
    port: 8080
    tools:
    - name: get-theme-asset
      description: Retrieve a single theme asset by theme ID and asset key.
      inputParameters:
      - name: theme_id
        in: body
        type: string
        description: The Shopify theme ID.
      - name: asset_key
        in: body
        type: string
        description: The asset key path, e.g. templates/index.liquid.
      call: shopify-admin.get-asset
      with:
        theme_id: '{{theme_id}}'
        asset_key: '{{asset_key}}'
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: theme-assets
      path: /themes/{{theme_id}}/assets.json
      inputParameters:
      - name: theme_id
        in: path
      - name: asset_key
        in: query
        value: '{{asset_key}}'
      operations:
      - name: get-asset
        method: GET
Open in Framework → View in Fleet → theme-asset-reader.yml

Orchestrates merchant data export pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Merchant Data Export Pipeline
  description: Orchestrates merchant data export pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - merchant
  - shopify
  - stripe
  - sendgrid
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: merchant
    port: 8080
    tools:
    - name: merchant-data-export-pipeline
      description: Orchestrates merchant data export pipeline across e-commerce platform 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: stripe.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: sendgrid.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: snowflake.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: stripe
    baseUri: https://api.stripe.com/v1
    authentication:
      type: bearer
      token: $secrets.stripe_secret_key
    resources:
    - name: stripe-resource
      path: /api/merchant
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: sendgrid-resource
      path: /api/merchant
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://shopify.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/merchant
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → merchant-data-export-pipeline.yml

Retrieves tender transaction listing data from the Shopify e-commerce platform systems.

naftiko: '0.5'
info:
  label: Tender Transaction Listing
  description: Retrieves tender transaction listing data from the Shopify e-commerce platform systems.
  tags:
  - tender
  - shopify
  - listing
capability:
  exposes:
  - type: mcp
    namespace: tender
    port: 8080
    tools:
    - name: tender-transaction-listing
      description: Retrieves tender transaction listing data from the Shopify e-commerce platform systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: shopify.tender-transaction-listing
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: shopify
    baseUri: https://shopify.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_access_token
    resources:
    - name: resource
      path: /tender/transaction/listing/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: tender-transaction-listing
        method: GET
Open in Framework → View in Fleet → tender-transaction-listing.yml

Lists all installed Shopify apps on the store, returning app name, API key, and access scopes. Used by platform engineering for audit and compliance.

naftiko: '0.5'
info:
  label: App Installation Listing
  description: Lists all installed Shopify apps on the store, returning app name, API key, and access scopes. Used by platform engineering for audit and compliance.
  tags:
  - e-commerce
  - platform-engineering
  - app-ecosystem
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: app-management
    port: 8080
    tools:
    - name: list-installed-apps
      description: List all installed apps on the Shopify store. Returns app title, API key, and access scopes.
      inputParameters: []
      call: shopify-admin.list-apps
      with: {}
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: apps
      path: /installed_apps.json
      operations:
      - name: list-apps
        method: GET
Open in Framework → View in Fleet → app-installation-listing.yml

Creates a recurring subscription for a Shopify customer using Stripe Billing, stores the subscription reference as a customer metafield in Shopify, and sends a welcome email via SendGrid.

naftiko: '0.5'
info:
  label: Subscription Order Creator via Stripe Billing
  description: Creates a recurring subscription for a Shopify customer using Stripe Billing, stores the subscription reference as a customer metafield in Shopify, and sends a welcome email via SendGrid.
  tags:
  - e-commerce
  - subscriptions
  - payments
  - stripe
  - sendgrid
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: subscriptions
    port: 8080
    tools:
    - name: create-subscription
      description: Given a Shopify customer ID, Stripe price ID, and payment method, create a Stripe subscription, store the reference in Shopify, and send a confirmation email.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The Shopify customer ID.
      - name: stripe_customer_id
        in: body
        type: string
        description: The Stripe customer ID.
      - name: stripe_price_id
        in: body
        type: string
        description: The Stripe recurring price ID.
      steps:
      - name: get-customer
        type: call
        call: shopify-admin.get-customer
        with:
          customer_id: '{{customer_id}}'
      - name: create-stripe-sub
        type: call
        call: stripe.create-subscription
        with:
          customer: '{{stripe_customer_id}}'
          price: '{{stripe_price_id}}'
      - name: store-metafield
        type: call
        call: shopify-admin.create-customer-metafield
        with:
          customer_id: '{{customer_id}}'
          namespace: subscriptions
          key: stripe_subscription_id
          value: '{{create-stripe-sub.id}}'
          type: single_line_text_field
      - name: send-welcome
        type: call
        call: sendgrid.send-email
        with:
          to: '{{get-customer.email}}'
          subject: Welcome to your subscription!
          body: 'Hi {{get-customer.first_name}}, your subscription is now active. Subscription ID: {{create-stripe-sub.id}}. You will be billed automatically each cycle.'
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: customers
      path: /customers/{{customer_id}}.json
      inputParameters:
      - name: customer_id
        in: path
      operations:
      - name: get-customer
        method: GET
    - name: customer-metafields
      path: /customers/{{customer_id}}/metafields.json
      inputParameters:
      - name: customer_id
        in: path
      operations:
      - name: create-customer-metafield
        method: POST
  - type: http
    namespace: stripe
    baseUri: https://api.stripe.com/v1
    authentication:
      type: bearer
      token: $secrets.stripe_secret_key
    resources:
    - name: subscriptions
      path: /subscriptions
      operations:
      - name: create-subscription
        method: POST
  - type: http
    namespace: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: mail
      path: /mail/send
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → subscription-order-creator-via-stripe-billing.yml

Orchestrates multi location inventory sync pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Multi Location Inventory Sync Pipeline
  description: Orchestrates multi location inventory sync pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - multi
  - shopify
  - snowflake
  - slack
  - jira
capability:
  exposes:
  - type: mcp
    namespace: multi
    port: 8080
    tools:
    - name: multi-location-inventory-sync-pipeline
      description: Orchestrates multi location inventory sync pipeline across e-commerce platform 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: jira.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://shopify.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/multi
      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/multi
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: jira
    baseUri: https://shopify.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/multi
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → multi-location-inventory-sync-pipeline.yml

Allows warehouse staff to adjust Shopify inventory levels via a Slack slash command, validates the request, applies the adjustment, and confirms the change back in Slack.

naftiko: '0.5'
info:
  label: Slack-Triggered Inventory Adjustment
  description: Allows warehouse staff to adjust Shopify inventory levels via a Slack slash command, validates the request, applies the adjustment, and confirms the change back in Slack.
  tags:
  - e-commerce
  - inventory
  - slack
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: inventory-slack
    port: 8080
    tools:
    - name: adjust-inventory-from-slack
      description: Given a SKU, location ID, and adjustment quantity from a Slack request, update the Shopify inventory and confirm in Slack.
      inputParameters:
      - name: sku
        in: body
        type: string
        description: The product SKU.
      - name: location_id
        in: body
        type: string
        description: The Shopify location ID.
      - name: adjustment
        in: body
        type: number
        description: The quantity adjustment (positive to add, negative to remove).
      - name: slack_channel
        in: body
        type: string
        description: The Slack channel to confirm the adjustment in.
      - name: requester
        in: body
        type: string
        description: The Slack user who requested the adjustment.
      steps:
      - name: adjust-inventory
        type: call
        call: shopify-admin.adjust-inventory-level
        with:
          location_id: '{{location_id}}'
          sku: '{{sku}}'
          adjustment: '{{adjustment}}'
      - name: confirm-in-slack
        type: call
        call: slack.post-message
        with:
          channel: '{{slack_channel}}'
          text: 'Inventory adjusted by <@{{requester}}>: SKU {{sku}} at location {{location_id}} adjusted by {{adjustment}} units. New available: {{adjust-inventory.available}}.'
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: inventory-levels
      path: /inventory_levels/adjust.json
      operations:
      - name: adjust-inventory-level
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → slack-triggered-inventory-adjustment.yml

Orchestrates merchant tax compliance pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Merchant Tax Compliance Pipeline
  description: Orchestrates merchant tax compliance pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - merchant
  - shopify
  - sendgrid
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: merchant
    port: 8080
    tools:
    - name: merchant-tax-compliance-pipeline
      description: Orchestrates merchant tax compliance pipeline across e-commerce platform 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: sendgrid.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: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: sendgrid-resource
      path: /api/merchant
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://shopify.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/merchant
      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/merchant
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → merchant-tax-compliance-pipeline.yml

Orchestrates seasonal sale preparation pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Seasonal Sale Preparation Pipeline
  description: Orchestrates seasonal sale preparation pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - seasonal
  - shopify
  - slack
  - jira
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: seasonal
    port: 8080
    tools:
    - name: seasonal-sale-preparation-pipeline
      description: Orchestrates seasonal sale preparation pipeline across e-commerce platform 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: jira.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: datadog.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/seasonal
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: jira
    baseUri: https://shopify.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/seasonal
      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/seasonal
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → seasonal-sale-preparation-pipeline.yml

Orchestrates product bundling strategy pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Product Bundling Strategy Pipeline
  description: Orchestrates product bundling strategy pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - product
  - shopify
  - datadog
  - hubspot
  - zendesk
capability:
  exposes:
  - type: mcp
    namespace: product
    port: 8080
    tools:
    - name: product-bundling-strategy-pipeline
      description: Orchestrates product bundling strategy pipeline across e-commerce platform 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: hubspot.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: zendesk.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: hubspot
    baseUri: https://api.hubapi.com
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: hubspot-resource
      path: /api/product
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: zendesk
    baseUri: https://shopify.zendesk.com/api/v2
    authentication:
      type: bearer
      token: $secrets.zendesk_token
    resources:
    - name: zendesk-resource
      path: /api/product
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → product-bundling-strategy-pipeline.yml

Orchestrates merchant migration pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Merchant Migration Pipeline
  description: Orchestrates merchant migration pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - merchant
  - shopify
  - github
  - shopify
  - stripe
capability:
  exposes:
  - type: mcp
    namespace: merchant
    port: 8080
    tools:
    - name: merchant-migration-pipeline
      description: Orchestrates merchant migration pipeline across e-commerce platform 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: github.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: shopify.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: stripe.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: github-resource
      path: /api/merchant
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: shopify
    baseUri: https://shopify.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_access_token
    resources:
    - name: shopify-resource
      path: /api/merchant
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: stripe
    baseUri: https://api.stripe.com/v1
    authentication:
      type: bearer
      token: $secrets.stripe_secret_key
    resources:
    - name: stripe-resource
      path: /api/merchant
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → merchant-migration-pipeline.yml

Retrieves a Shopify order, compares shipping rates from multiple carriers via ShipStation, selects the cheapest option, creates the shipping label, and updates the order fulfillment with tracking info.

naftiko: '0.5'
info:
  label: Shipping Label Generator with Carrier Selection
  description: Retrieves a Shopify order, compares shipping rates from multiple carriers via ShipStation, selects the cheapest option, creates the shipping label, and updates the order fulfillment with tracking info.
  tags:
  - e-commerce
  - shipping
  - fulfillment
  - shipstation
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: shipping-automation
    port: 8080
    tools:
    - name: generate-shipping-label
      description: Given an order ID, fetch rates from ShipStation, select the optimal carrier, create a label, and update the Shopify fulfillment.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The Shopify order ID.
      - name: location_id
        in: body
        type: string
        description: The Shopify fulfillment location ID.
      steps:
      - name: get-order
        type: call
        call: shopify-admin.get-order
        with:
          order_id: '{{order_id}}'
      - name: get-rates
        type: call
        call: shipstation.get-rates
        with:
          from_postal_code: '{{warehouse_postal_code}}'
          to_postal_code: '{{get-order.shipping_address.zip}}'
          to_country: '{{get-order.shipping_address.country_code}}'
          weight_oz: '{{get-order.total_weight}}'
      - name: create-label
        type: call
        call: shipstation.create-label
        with:
          carrier_code: '{{get-rates.rates[0].carrier_code}}'
          service_code: '{{get-rates.rates[0].service_code}}'
          to_name: '{{get-order.shipping_address.name}}'
          to_address1: '{{get-order.shipping_address.address1}}'
          to_city: '{{get-order.shipping_address.city}}'
          to_state: '{{get-order.shipping_address.province_code}}'
          to_postal_code: '{{get-order.shipping_address.zip}}'
          to_country: '{{get-order.shipping_address.country_code}}'
          weight_oz: '{{get-order.total_weight}}'
      - name: create-fulfillment
        type: call
        call: shopify-admin.create-fulfillment
        with:
          order_id: '{{order_id}}'
          tracking_number: '{{create-label.tracking_number}}'
          tracking_company: '{{create-label.carrier}}'
          location_id: '{{location_id}}'
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: orders
      path: /orders/{{order_id}}.json
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-order
        method: GET
    - name: fulfillments
      path: /orders/{{order_id}}/fulfillments.json
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: create-fulfillment
        method: POST
  - type: http
    namespace: shipstation
    baseUri: https://ssapi.shipstation.com
    authentication:
      type: basic
      username: $secrets.shipstation_api_key
      password: $secrets.shipstation_api_secret
    resources:
    - name: rates
      path: /shipments/getrates
      operations:
      - name: get-rates
        method: POST
    - name: labels
      path: /shipments/createlabel
      operations:
      - name: create-label
        method: POST
Open in Framework → View in Fleet → shipping-label-generator-with-carrier-selection.yml

Retrieves details for a specific Shopify discount code including usage count, value, and expiration. Used by marketing and support teams.

naftiko: '0.5'
info:
  label: Discount Code Lookup
  description: Retrieves details for a specific Shopify discount code including usage count, value, and expiration. Used by marketing and support teams.
  tags:
  - e-commerce
  - discounts
  - marketing
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: promotions
    port: 8080
    tools:
    - name: get-discount-code
      description: Look up a Shopify price rule discount code by price rule ID and discount code ID. Returns code string, usage count, and creation date.
      inputParameters:
      - name: price_rule_id
        in: body
        type: string
        description: The Shopify price rule ID.
      - name: discount_code_id
        in: body
        type: string
        description: The Shopify discount code ID.
      call: shopify-admin.get-discount
      with:
        price_rule_id: '{{price_rule_id}}'
        discount_code_id: '{{discount_code_id}}'
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: discount-codes
      path: /price_rules/{{price_rule_id}}/discount_codes/{{discount_code_id}}.json
      inputParameters:
      - name: price_rule_id
        in: path
      - name: discount_code_id
        in: path
      operations:
      - name: get-discount
        method: GET
Open in Framework → View in Fleet → discount-code-lookup.yml

Retrieves all active Shopify store locations including name, address, phone, and whether the location is active for fulfillment. Used by operations teams for warehouse and store planning.

naftiko: '0.5'
info:
  label: Shop Location Listing
  description: Retrieves all active Shopify store locations including name, address, phone, and whether the location is active for fulfillment. Used by operations teams for warehouse and store planning.
  tags:
  - e-commerce
  - logistics
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: locations
    port: 8080
    tools:
    - name: list-locations
      description: List all active locations for the Shopify store. Returns location name, address, and fulfillment status.
      inputParameters: []
      call: shopify-admin.list-locations
      with: {}
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: locations
      path: /locations.json
      operations:
      - name: list-locations
        method: GET
Open in Framework → View in Fleet → shop-location-listing.yml

Orchestrates order fulfillment optimization pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Order Fulfillment Optimization Pipeline
  description: Orchestrates order fulfillment optimization pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - order
  - shopify
  - shopify
  - stripe
  - sendgrid
capability:
  exposes:
  - type: mcp
    namespace: order
    port: 8080
    tools:
    - name: order-fulfillment-optimization-pipeline
      description: Orchestrates order fulfillment optimization pipeline across e-commerce platform 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: shopify.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: stripe.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: sendgrid.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: shopify
    baseUri: https://shopify.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_access_token
    resources:
    - name: shopify-resource
      path: /api/order
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: stripe
    baseUri: https://api.stripe.com/v1
    authentication:
      type: bearer
      token: $secrets.stripe_secret_key
    resources:
    - name: stripe-resource
      path: /api/order
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: sendgrid-resource
      path: /api/order
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → order-fulfillment-optimization-pipeline.yml

When a new Shopify customer is created, syncs the customer profile to HubSpot CRM as a contact, including order history summary and lifetime value, then sends a welcome drip campaign trigger.

naftiko: '0.5'
info:
  label: HubSpot CRM Customer Sync
  description: When a new Shopify customer is created, syncs the customer profile to HubSpot CRM as a contact, including order history summary and lifetime value, then sends a welcome drip campaign trigger.
  tags:
  - e-commerce
  - customers
  - crm
  - hubspot
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: crm-sync
    port: 8080
    tools:
    - name: sync-customer-to-hubspot
      description: Given a Shopify customer ID, create or update the contact in HubSpot CRM with order stats and trigger a welcome campaign.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The Shopify customer ID.
      steps:
      - name: get-customer
        type: call
        call: shopify-admin.get-customer
        with:
          customer_id: '{{customer_id}}'
      - name: create-hubspot-contact
        type: call
        call: hubspot.create-contact
        with:
          email: '{{get-customer.email}}'
          firstname: '{{get-customer.first_name}}'
          lastname: '{{get-customer.last_name}}'
          phone: '{{get-customer.phone}}'
          shopify_orders_count: '{{get-customer.orders_count}}'
          shopify_total_spent: '{{get-customer.total_spent}}'
          shopify_customer_id: '{{customer_id}}'
      - name: enroll-in-workflow
        type: call
        call: hubspot.enroll-in-workflow
        with:
          contact_id: '{{create-hubspot-contact.id}}'
          workflow_id: '{{welcome_workflow_id}}'
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: customers
      path: /customers/{{customer_id}}.json
      inputParameters:
      - name: customer_id
        in: path
      operations:
      - name: get-customer
        method: GET
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com
    authentication:
      type: bearer
      token: $secrets.hubspot_api_key
    resources:
    - name: contacts
      path: /crm/v3/objects/contacts
      operations:
      - name: create-contact
        method: POST
    - name: workflows
      path: /automation/v4/flows/{{workflow_id}}/enrollments
      inputParameters:
      - name: workflow_id
        in: path
      operations:
      - name: enroll-in-workflow
        method: POST
Open in Framework → View in Fleet → hubspot-crm-customer-sync.yml

When an order is marked as fulfilled in Shopify, creates the fulfillment record, then sends shipping confirmation with tracking details to the customer via SendGrid and posts a notification to the operations Slack channel.

naftiko: '0.5'
info:
  label: Order Fulfillment and Tracking Notifier
  description: When an order is marked as fulfilled in Shopify, creates the fulfillment record, then sends shipping confirmation with tracking details to the customer via SendGrid and posts a notification to the operations Slack channel.
  tags:
  - e-commerce
  - fulfillment
  - shipping
  - sendgrid
  - slack
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: fulfillment-ops
    port: 8080
    tools:
    - name: fulfill-and-notify
      description: Given an order ID, tracking number, and carrier, create a fulfillment in Shopify, email the customer via SendGrid, and notify the ops Slack channel.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The Shopify order ID to fulfill.
      - name: tracking_number
        in: body
        type: string
        description: The carrier tracking number.
      - name: tracking_company
        in: body
        type: string
        description: The shipping carrier name.
      - name: location_id
        in: body
        type: string
        description: The Shopify location ID fulfilling the order.
      steps:
      - name: get-order
        type: call
        call: shopify-admin.get-order
        with:
          order_id: '{{order_id}}'
      - name: create-fulfillment
        type: call
        call: shopify-admin.create-fulfillment
        with:
          order_id: '{{order_id}}'
          tracking_number: '{{tracking_number}}'
          tracking_company: '{{tracking_company}}'
          location_id: '{{location_id}}'
      - name: email-customer
        type: call
        call: sendgrid.send-email
        with:
          to: '{{get-order.customer.email}}'
          subject: 'Your order #{{get-order.order_number}} has shipped!'
          body: 'Hi {{get-order.customer.first_name}}, your order has been shipped via {{tracking_company}}. Tracking number: {{tracking_number}}'
      - name: notify-ops
        type: call
        call: slack.post-message
        with:
          channel: '#fulfillment-ops'
          text: 'Order #{{get-order.order_number}} fulfilled. Tracking: {{tracking_number}} ({{tracking_company}}). Customer: {{get-order.customer.email}}'
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: orders
      path: /orders/{{order_id}}.json
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-order
        method: GET
    - name: fulfillments
      path: /orders/{{order_id}}/fulfillments.json
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: create-fulfillment
        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
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → order-fulfillment-and-tracking-notifier.yml

Orchestrates merchant accessibility compliance pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Merchant Accessibility Compliance Pipeline
  description: Orchestrates merchant accessibility compliance pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - merchant
  - shopify
  - hubspot
  - zendesk
  - github
capability:
  exposes:
  - type: mcp
    namespace: merchant
    port: 8080
    tools:
    - name: merchant-accessibility-compliance-pipeline
      description: Orchestrates merchant accessibility compliance pipeline across e-commerce platform 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: hubspot.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: zendesk.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: github.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: hubspot-resource
      path: /api/merchant
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: zendesk
    baseUri: https://shopify.zendesk.com/api/v2
    authentication:
      type: bearer
      token: $secrets.zendesk_token
    resources:
    - name: zendesk-resource
      path: /api/merchant
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: github-resource
      path: /api/merchant
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → merchant-accessibility-compliance-pipeline.yml

When a Shopify order has a complaint, retrieves order and customer data, creates a Zendesk ticket with full context, assigns it to the right team based on issue type, and notifies the support lead in Slack.

naftiko: '0.5'
info:
  label: Customer Support Escalation Pipeline
  description: When a Shopify order has a complaint, retrieves order and customer data, creates a Zendesk ticket with full context, assigns it to the right team based on issue type, and notifies the support lead in Slack.
  tags:
  - e-commerce
  - customer-service
  - zendesk
  - slack
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: support-escalation
    port: 8080
    tools:
    - name: escalate-order-issue
      description: Given an order ID and issue description, gather order context, create a Zendesk ticket, and notify support in Slack.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The Shopify order ID.
      - name: issue_type
        in: body
        type: string
        description: 'The issue category: damaged, missing, wrong_item, delayed, other.'
      - name: issue_description
        in: body
        type: string
        description: Detailed description of the customer complaint.
      steps:
      - name: get-order
        type: call
        call: shopify-admin.get-order
        with:
          order_id: '{{order_id}}'
      - name: get-customer
        type: call
        call: shopify-admin.get-customer
        with:
          customer_id: '{{get-order.customer.id}}'
      - name: create-ticket
        type: call
        call: zendesk.create-ticket
        with:
          subject: '[{{issue_type}}] Order #{{get-order.order_number}} - {{get-customer.first_name}} {{get-customer.last_name}}'
          description: 'Issue: {{issue_description}}


            Order: #{{get-order.order_number}}

            Total: {{get-order.total_price}} {{get-order.currency}}

            Fulfillment: {{get-order.fulfillment_status}}

            Customer: {{get-customer.email}} ({{get-customer.orders_count}} orders, {{get-customer.total_spent}} lifetime)'
          requester_email: '{{get-customer.email}}'
          priority: high
          tags: shopify,{{issue_type}}
      - name: notify-support
        type: call
        call: slack.post-message
        with:
          channel: '#support-escalations'
          text: 'Escalation: {{issue_type}} for order #{{get-order.order_number}}. Customer: {{get-customer.email}} ({{get-customer.orders_count}} orders). Zendesk ticket: {{create-ticket.id}}'
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: orders
      path: /orders/{{order_id}}.json
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-order
        method: GET
    - name: customers
      path: /customers/{{customer_id}}.json
      inputParameters:
      - name: customer_id
        in: path
      operations:
      - name: get-customer
        method: GET
  - type: http
    namespace: zendesk
    baseUri: https://{{zendesk_subdomain}}.zendesk.com/api/v2
    authentication:
      type: bearer
      token: $secrets.zendesk_api_token
    resources:
    - name: tickets
      path: /tickets.json
      operations:
      - name: create-ticket
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → customer-support-escalation-pipeline.yml

Retrieves collection smart rules lookup data from the Shopify e-commerce platform systems.

naftiko: '0.5'
info:
  label: Collection Smart Rules Lookup
  description: Retrieves collection smart rules lookup data from the Shopify e-commerce platform systems.
  tags:
  - collection
  - shopify
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: collection
    port: 8080
    tools:
    - name: collection-smart-rules-lookup
      description: Retrieves collection smart rules lookup data from the Shopify e-commerce platform systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: shopify.collection-smart-rules-lookup
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: shopify
    baseUri: https://shopify.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_access_token
    resources:
    - name: resource
      path: /collection/smart/rules/lookup/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: collection-smart-rules-lookup
        method: GET
Open in Framework → View in Fleet → collection-smart-rules-lookup.yml

Pulls Shopify order data and Google Analytics campaign attribution for a given date range, cross-references revenue by UTM source, and logs the attribution report in Google Sheets.

naftiko: '0.5'
info:
  label: Google Analytics Sales Attribution Reporter
  description: Pulls Shopify order data and Google Analytics campaign attribution for a given date range, cross-references revenue by UTM source, and logs the attribution report in Google Sheets.
  tags:
  - e-commerce
  - analytics
  - google-analytics
  - google-sheets
  - marketing
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: sales-attribution
    port: 8080
    tools:
    - name: generate-attribution-report
      description: Given a date range, pull Shopify orders and Google Analytics campaign data, then log an attribution report in Google Sheets.
      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-orders
        type: call
        call: shopify-admin.list-orders
        with:
          created_at_min: '{{start_date}}'
          created_at_max: '{{end_date}}'
          status: any
      - name: get-ga-data
        type: call
        call: google-analytics.run-report
        with:
          property_id: '{{ga_property_id}}'
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
          dimensions: sessionSource,sessionMedium,sessionCampaignName
          metrics: transactions,totalRevenue
      - name: log-report
        type: call
        call: gsheets.append-row
        with:
          spreadsheet_id: '{{attribution_sheet_id}}'
          range: Attribution!A:D
          values:
          - '{{start_date}} - {{end_date}}'
          - '{{get-orders.count}}'
          - '{{get-ga-data.rows}}'
          - generated
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: orders
      path: /orders.json
      inputParameters:
      - name: created_at_min
        in: query
      - name: created_at_max
        in: query
      - name: status
        in: query
      operations:
      - name: list-orders
        method: GET
  - type: http
    namespace: google-analytics
    baseUri: https://analyticsdata.googleapis.com/v1beta
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: reports
      path: /properties/{{property_id}}:runReport
      inputParameters:
      - name: property_id
        in: path
      operations:
      - name: run-report
        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
Open in Framework → View in Fleet → google-analytics-sales-attribution-reporter.yml

Orchestrates shop performance benchmark pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Shop Performance Benchmark Pipeline
  description: Orchestrates shop performance benchmark pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - shop
  - shopify
  - shopify
  - stripe
  - sendgrid
capability:
  exposes:
  - type: mcp
    namespace: shop
    port: 8080
    tools:
    - name: shop-performance-benchmark-pipeline
      description: Orchestrates shop performance benchmark pipeline across e-commerce platform 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: shopify.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: stripe.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: sendgrid.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: shopify
    baseUri: https://shopify.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_access_token
    resources:
    - name: shopify-resource
      path: /api/shop
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: stripe
    baseUri: https://api.stripe.com/v1
    authentication:
      type: bearer
      token: $secrets.stripe_secret_key
    resources:
    - name: stripe-resource
      path: /api/shop
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: sendgrid-resource
      path: /api/shop
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → shop-performance-benchmark-pipeline.yml

Retrieves smart collection listing data from the Shopify e-commerce platform systems.

naftiko: '0.5'
info:
  label: Smart Collection Listing
  description: Retrieves smart collection listing data from the Shopify e-commerce platform systems.
  tags:
  - smart
  - shopify
  - listing
capability:
  exposes:
  - type: mcp
    namespace: smart
    port: 8080
    tools:
    - name: smart-collection-listing
      description: Retrieves smart collection listing data from the Shopify e-commerce platform systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: shopify.smart-collection-listing
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: shopify
    baseUri: https://shopify.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_access_token
    resources:
    - name: resource
      path: /smart/collection/listing/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: smart-collection-listing
        method: GET
Open in Framework → View in Fleet → smart-collection-listing.yml

Retrieves custom collection products data from the Shopify e-commerce platform systems.

naftiko: '0.5'
info:
  label: Custom Collection Products
  description: Retrieves custom collection products data from the Shopify e-commerce platform systems.
  tags:
  - custom
  - shopify
  - products
capability:
  exposes:
  - type: mcp
    namespace: custom
    port: 8080
    tools:
    - name: custom-collection-products
      description: Retrieves custom collection products data from the Shopify e-commerce platform systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: shopify.custom-collection-products
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: shopify
    baseUri: https://shopify.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_access_token
    resources:
    - name: resource
      path: /custom/collection/products/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: custom-collection-products
        method: GET
Open in Framework → View in Fleet → custom-collection-products.yml

Processes a wholesale draft order in Shopify with volume discounts, updates the corresponding Salesforce opportunity stage, and sends the B2B invoice details via email.

naftiko: '0.5'
info:
  label: Wholesale B2B Order with Salesforce Opportunity Update
  description: Processes a wholesale draft order in Shopify with volume discounts, updates the corresponding Salesforce opportunity stage, and sends the B2B invoice details via email.
  tags:
  - e-commerce
  - b2b
  - wholesale
  - salesforce
  - sendgrid
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: b2b-orders
    port: 8080
    tools:
    - name: process-wholesale-order
      description: Given a Shopify draft order ID and Salesforce opportunity ID, complete the draft order, update the SF opportunity, and email the invoice.
      inputParameters:
      - name: draft_order_id
        in: body
        type: string
        description: The Shopify draft order ID.
      - name: opportunity_id
        in: body
        type: string
        description: The Salesforce opportunity ID.
      steps:
      - name: get-draft-order
        type: call
        call: shopify-admin.get-draft-order
        with:
          draft_order_id: '{{draft_order_id}}'
      - name: complete-draft
        type: call
        call: shopify-admin.complete-draft-order
        with:
          draft_order_id: '{{draft_order_id}}'
      - name: update-opportunity
        type: call
        call: salesforce.update-opportunity
        with:
          opportunity_id: '{{opportunity_id}}'
          stage: Closed Won
          amount: '{{get-draft-order.total_price}}'
          close_date: '{{get-draft-order.created_at}}'
      - name: send-invoice
        type: call
        call: sendgrid.send-email
        with:
          to: '{{get-draft-order.customer.email}}'
          subject: 'Your wholesale order #{{complete-draft.order_id}} has been confirmed'
          body: 'Thank you for your wholesale order. Total: {{get-draft-order.total_price}} {{get-draft-order.currency}}. Your invoice is attached to this order.'
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: draft-orders
      path: /draft_orders/{{draft_order_id}}.json
      inputParameters:
      - name: draft_order_id
        in: path
      operations:
      - name: get-draft-order
        method: GET
    - name: draft-order-complete
      path: /draft_orders/{{draft_order_id}}/complete.json
      inputParameters:
      - name: draft_order_id
        in: path
      operations:
      - name: complete-draft-order
        method: PUT
  - type: http
    namespace: salesforce
    baseUri: https://{{salesforce_instance}}.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
  - type: http
    namespace: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: mail
      path: /mail/send
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → wholesale-b2b-order-with-salesforce-opportunity-update.yml

Creates a wholesale agreement envelope in DocuSign using Shopify customer and draft order data, sends it for signature, and updates the draft order note with the envelope status.

naftiko: '0.5'
info:
  label: DocuSign Contract for B2B Wholesale Agreement
  description: Creates a wholesale agreement envelope in DocuSign using Shopify customer and draft order data, sends it for signature, and updates the draft order note with the envelope status.
  tags:
  - e-commerce
  - b2b
  - legal
  - docusign
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: b2b-contracts
    port: 8080
    tools:
    - name: send-wholesale-agreement
      description: Given a Shopify customer ID and draft order ID, create a DocuSign envelope for the wholesale agreement and track signature status.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The Shopify customer ID.
      - name: draft_order_id
        in: body
        type: string
        description: The Shopify draft order ID.
      - name: template_id
        in: body
        type: string
        description: The DocuSign template ID for the wholesale agreement.
      steps:
      - name: get-customer
        type: call
        call: shopify-admin.get-customer
        with:
          customer_id: '{{customer_id}}'
      - name: get-draft-order
        type: call
        call: shopify-admin.get-draft-order
        with:
          draft_order_id: '{{draft_order_id}}'
      - name: create-envelope
        type: call
        call: docusign.create-envelope
        with:
          template_id: '{{template_id}}'
          signer_email: '{{get-customer.email}}'
          signer_name: '{{get-customer.first_name}} {{get-customer.last_name}}'
          order_total: '{{get-draft-order.total_price}}'
      - name: update-draft-note
        type: call
        call: shopify-admin.update-draft-order
        with:
          draft_order_id: '{{draft_order_id}}'
          note: DocuSign envelope {{create-envelope.envelopeId}} sent to {{get-customer.email}} for signature.
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: customers
      path: /customers/{{customer_id}}.json
      inputParameters:
      - name: customer_id
        in: path
      operations:
      - name: get-customer
        method: GET
    - name: draft-orders
      path: /draft_orders/{{draft_order_id}}.json
      inputParameters:
      - name: draft_order_id
        in: path
      operations:
      - name: get-draft-order
        method: GET
      - name: update-draft-order
        method: PUT
  - type: http
    namespace: docusign
    baseUri: https://{{docusign_base_url}}/restapi/v2.1/accounts/{{docusign_account_id}}
    authentication:
      type: bearer
      token: $secrets.docusign_access_token
    resources:
    - name: envelopes
      path: /envelopes
      operations:
      - name: create-envelope
        method: POST
Open in Framework → View in Fleet → docusign-contract-for-b2b-wholesale-agreement.yml

Orchestrates app ecosystem integration pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: App Ecosystem Integration Pipeline
  description: Orchestrates app ecosystem integration pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - app
  - shopify
  - jira
  - datadog
  - hubspot
capability:
  exposes:
  - type: mcp
    namespace: app
    port: 8080
    tools:
    - name: app-ecosystem-integration-pipeline
      description: Orchestrates app ecosystem integration pipeline across e-commerce platform 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: datadog.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: hubspot.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://shopify.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/app
      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/app
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: hubspot-resource
      path: /api/app
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → app-ecosystem-integration-pipeline.yml

Calculates sales tax for a Shopify draft order using Avalara AvaTax, updates the draft order with computed tax lines, and logs the tax calculation in a Google Sheet for compliance.

naftiko: '0.5'
info:
  label: Order Tax Calculation with Avalara
  description: Calculates sales tax for a Shopify draft order using Avalara AvaTax, updates the draft order with computed tax lines, and logs the tax calculation in a Google Sheet for compliance.
  tags:
  - e-commerce
  - taxes
  - avalara
  - google-sheets
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: tax-compliance
    port: 8080
    tools:
    - name: calculate-and-apply-tax
      description: Given a draft order ID, calculate tax via Avalara AvaTax, apply it to the draft order, and log the result.
      inputParameters:
      - name: draft_order_id
        in: body
        type: string
        description: The Shopify draft order ID.
      steps:
      - name: get-draft-order
        type: call
        call: shopify-admin.get-draft-order
        with:
          draft_order_id: '{{draft_order_id}}'
      - name: calculate-tax
        type: call
        call: avalara.create-transaction
        with:
          type: SalesOrder
          customerCode: '{{get-draft-order.customer.id}}'
          addresses:
            shipTo:
              line1: '{{get-draft-order.shipping_address.address1}}'
              city: '{{get-draft-order.shipping_address.city}}'
              region: '{{get-draft-order.shipping_address.province_code}}'
              postalCode: '{{get-draft-order.shipping_address.zip}}'
              country: '{{get-draft-order.shipping_address.country_code}}'
          amount: '{{get-draft-order.subtotal_price}}'
      - name: update-draft-order
        type: call
        call: shopify-admin.update-draft-order
        with:
          draft_order_id: '{{draft_order_id}}'
          tax_amount: '{{calculate-tax.totalTax}}'
      - name: log-tax
        type: call
        call: gsheets.append-row
        with:
          spreadsheet_id: '{{tax_log_sheet_id}}'
          range: TaxLog!A:F
          values:
          - '{{draft_order_id}}'
          - '{{get-draft-order.subtotal_price}}'
          - '{{calculate-tax.totalTax}}'
          - '{{get-draft-order.shipping_address.province_code}}'
          - '{{calculate-tax.id}}'
          - '{{get-draft-order.created_at}}'
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: draft-orders
      path: /draft_orders/{{draft_order_id}}.json
      inputParameters:
      - name: draft_order_id
        in: path
      operations:
      - name: get-draft-order
        method: GET
      - name: update-draft-order
        method: PUT
  - 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: create-transaction
        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
Open in Framework → View in Fleet → order-tax-calculation-with-avalara.yml

Orchestrates product recommendation pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Product Recommendation Pipeline
  description: Orchestrates product recommendation pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - product
  - shopify
  - datadog
  - hubspot
  - zendesk
capability:
  exposes:
  - type: mcp
    namespace: product
    port: 8080
    tools:
    - name: product-recommendation-pipeline
      description: Orchestrates product recommendation pipeline across e-commerce platform 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: hubspot.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: zendesk.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: hubspot
    baseUri: https://api.hubapi.com
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: hubspot-resource
      path: /api/product
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: zendesk
    baseUri: https://shopify.zendesk.com/api/v2
    authentication:
      type: bearer
      token: $secrets.zendesk_token
    resources:
    - name: zendesk-resource
      path: /api/product
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → product-recommendation-pipeline.yml

Orchestrates multi currency pricing pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Multi Currency Pricing Pipeline
  description: Orchestrates multi currency pricing pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - multi
  - shopify
  - slack
  - jira
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: multi
    port: 8080
    tools:
    - name: multi-currency-pricing-pipeline
      description: Orchestrates multi currency pricing pipeline across e-commerce platform 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: jira.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: datadog.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/multi
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: jira
    baseUri: https://shopify.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/multi
      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/multi
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → multi-currency-pricing-pipeline.yml

Retrieves a Shopify customer's order history, calculates loyalty points based on spend tiers, updates the customer's loyalty metafield, and emails the points statement via SendGrid.

naftiko: '0.5'
info:
  label: Customer Loyalty Points Calculator
  description: Retrieves a Shopify customer's order history, calculates loyalty points based on spend tiers, updates the customer's loyalty metafield, and emails the points statement via SendGrid.
  tags:
  - e-commerce
  - customers
  - loyalty
  - sendgrid
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: loyalty-program
    port: 8080
    tools:
    - name: calculate-loyalty-points
      description: Given a customer ID, tally order history, compute loyalty points, update the customer metafield, and send a points statement email.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The Shopify customer ID.
      - name: points_per_dollar
        in: body
        type: number
        description: Points awarded per dollar spent.
      steps:
      - name: get-customer
        type: call
        call: shopify-admin.get-customer
        with:
          customer_id: '{{customer_id}}'
      - name: get-orders
        type: call
        call: shopify-admin.list-customer-orders
        with:
          customer_id: '{{customer_id}}'
          status: any
      - name: update-points
        type: call
        call: shopify-admin.create-customer-metafield
        with:
          customer_id: '{{customer_id}}'
          namespace: loyalty
          key: points_balance
          value: '{{calculated_points}}'
          type: number_integer
      - name: send-statement
        type: call
        call: sendgrid.send-email
        with:
          to: '{{get-customer.email}}'
          subject: Your loyalty points statement
          body: Hi {{get-customer.first_name}}, you have earned loyalty points from {{get-orders.count}} orders. Your current balance has been updated. Keep shopping to earn more rewards!
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: customers
      path: /customers/{{customer_id}}.json
      inputParameters:
      - name: customer_id
        in: path
      operations:
      - name: get-customer
        method: GET
    - name: customer-orders
      path: /customers/{{customer_id}}/orders.json
      inputParameters:
      - name: customer_id
        in: path
      - name: status
        in: query
      operations:
      - name: list-customer-orders
        method: GET
    - name: customer-metafields
      path: /customers/{{customer_id}}/metafields.json
      inputParameters:
      - name: customer_id
        in: path
      operations:
      - name: create-customer-metafield
        method: POST
  - type: http
    namespace: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: mail
      path: /mail/send
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → customer-loyalty-points-calculator.yml

Retrieves app reviews from the Shopify App Store Partner API, analyzes common themes using Claude, and posts a weekly summary to Confluence and Slack for the product team.

naftiko: '0.5'
info:
  label: App Review and Rating Collector
  description: Retrieves app reviews from the Shopify App Store Partner API, analyzes common themes using Claude, and posts a weekly summary to Confluence and Slack for the product team.
  tags:
  - e-commerce
  - app-ecosystem
  - ai-ml
  - claude
  - confluence
  - slack
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: app-reviews
    port: 8080
    tools:
    - name: analyze-app-reviews
      description: Given an app ID, fetch recent reviews from the Partner API, analyze themes with Claude, post a summary to Confluence, and notify Slack.
      inputParameters:
      - name: app_id
        in: body
        type: string
        description: The Shopify Partner app ID.
      - name: days_back
        in: body
        type: number
        description: Number of days of reviews to analyze.
      steps:
      - name: get-reviews
        type: call
        call: shopify-partner.get-app-reviews
        with:
          app_id: '{{app_id}}'
          days_back: '{{days_back}}'
      - name: analyze-themes
        type: call
        call: claude.create-message
        with:
          model: claude-sonnet-4-20250514
          prompt: 'Analyze these Shopify app reviews. Identify the top 5 feature requests, top 5 complaints, and overall sentiment trend. Reviews: {{get-reviews.reviews}}'
      - name: post-to-confluence
        type: call
        call: confluence.create-page
        with:
          space_key: PRODUCT
          title: App Review Analysis - {{app_id}} - Week of {{current_date}}
          body: '{{analyze-themes.content}}'
      - name: notify-product
        type: call
        call: slack.post-message
        with:
          channel: '#product-feedback'
          text: 'Weekly app review analysis posted for app {{app_id}}. Confluence: {{post-to-confluence.url}}. Summary: {{analyze-themes.content}}'
  consumes:
  - type: http
    namespace: shopify-partner
    baseUri: https://partners.shopify.com/api/v1
    authentication:
      type: bearer
      token: $secrets.shopify_partner_token
    resources:
    - name: app-reviews
      path: /apps/{{app_id}}/reviews.json
      inputParameters:
      - name: app_id
        in: path
      - name: days_back
        in: query
      operations:
      - name: get-app-reviews
        method: GET
  - type: http
    namespace: claude
    baseUri: https://api.anthropic.com/v1
    authentication:
      type: bearer
      token: $secrets.anthropic_api_key
    inputParameters:
    - name: anthropic-version
      in: header
      value: '2023-06-01'
    resources:
    - name: messages
      path: /messages
      operations:
      - name: create-message
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://{{confluence_domain}}.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: content
      path: /content
      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
Open in Framework → View in Fleet → app-review-and-rating-collector.yml

Retrieves Shopify payment transaction details for an order including gateway, amount, currency, authorization code, and error codes.

naftiko: '0.5'
info:
  label: Payment Transaction Lookup
  description: Retrieves Shopify payment transaction details for an order including gateway, amount, currency, authorization code, and error codes.
  tags:
  - e-commerce
  - payments
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: payments
    port: 8080
    tools:
    - name: get-transactions
      description: Retrieve payment transactions for a Shopify order. Returns gateway, amount, kind, status, and authorization.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The Shopify order ID.
      call: shopify-admin.list-transactions
      with:
        order_id: '{{order_id}}'
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: transactions
      path: /orders/{{order_id}}/transactions.json
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: list-transactions
        method: GET
Open in Framework → View in Fleet → payment-transaction-lookup.yml

Orchestrates merchant security review pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Merchant Security Review Pipeline
  description: Orchestrates merchant security review pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - merchant
  - shopify
  - snowflake
  - slack
  - jira
capability:
  exposes:
  - type: mcp
    namespace: merchant
    port: 8080
    tools:
    - name: merchant-security-review-pipeline
      description: Orchestrates merchant security review pipeline across e-commerce platform 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: jira.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://shopify.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/merchant
      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/merchant
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: jira
    baseUri: https://shopify.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/merchant
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → merchant-security-review-pipeline.yml

Retrieves the fulfillment record for a specific order, returning tracking number, carrier, status, and shipment timestamps.

naftiko: '0.5'
info:
  label: Fulfillment Status Check
  description: Retrieves the fulfillment record for a specific order, returning tracking number, carrier, status, and shipment timestamps.
  tags:
  - e-commerce
  - fulfillment
  - shipping
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: fulfillment
    port: 8080
    tools:
    - name: get-fulfillment
      description: Retrieve fulfillment details for an order. Returns tracking number, carrier, status, and timestamps.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The Shopify order ID.
      - name: fulfillment_id
        in: body
        type: string
        description: The Shopify fulfillment ID.
      call: shopify-admin.get-fulfillment
      with:
        order_id: '{{order_id}}'
        fulfillment_id: '{{fulfillment_id}}'
      outputParameters:
      - name: tracking_number
        type: string
        mapping: $.fulfillment.tracking_number
      - name: tracking_company
        type: string
        mapping: $.fulfillment.tracking_company
      - name: status
        type: string
        mapping: $.fulfillment.status
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: fulfillments
      path: /orders/{{order_id}}/fulfillments/{{fulfillment_id}}.json
      inputParameters:
      - name: order_id
        in: path
      - name: fulfillment_id
        in: path
      operations:
      - name: get-fulfillment
        method: GET
Open in Framework → View in Fleet → fulfillment-status-check.yml

Triggers a GitHub Actions workflow to deploy a Shopify theme, monitors the workflow run status, updates the theme in Shopify, and notifies the engineering Slack channel with deployment results.

naftiko: '0.5'
info:
  label: GitHub Actions Deployment Pipeline for Shopify Theme
  description: Triggers a GitHub Actions workflow to deploy a Shopify theme, monitors the workflow run status, updates the theme in Shopify, and notifies the engineering Slack channel with deployment results.
  tags:
  - e-commerce
  - platform-engineering
  - ci-cd
  - github-actions
  - slack
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: theme-deployment
    port: 8080
    tools:
    - name: deploy-theme
      description: Trigger a GitHub Actions workflow to build and deploy a Shopify theme, then notify the team.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: The GitHub repository in owner/repo format.
      - name: branch
        in: body
        type: string
        description: The branch to deploy from.
      - name: theme_id
        in: body
        type: string
        description: The Shopify theme ID to update.
      steps:
      - name: trigger-workflow
        type: call
        call: github.dispatch-workflow
        with:
          repo: '{{repo}}'
          workflow_id: deploy-theme.yml
          ref: '{{branch}}'
      - name: get-run-status
        type: call
        call: github.get-workflow-run
        with:
          repo: '{{repo}}'
          run_id: '{{trigger-workflow.id}}'
      - name: notify-engineering
        type: call
        call: slack.post-message
        with:
          channel: '#theme-deployments'
          text: 'Theme deployment for {{repo}}@{{branch}} to theme {{theme_id}}: {{get-run-status.conclusion}}. Run: {{get-run-status.html_url}}'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: workflow-dispatches
      path: /repos/{{repo}}/actions/workflows/{{workflow_id}}/dispatches
      inputParameters:
      - name: repo
        in: path
      - name: workflow_id
        in: path
      operations:
      - name: dispatch-workflow
        method: POST
    - 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: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → github-actions-deployment-pipeline-for-shopify-theme.yml

Reconciles a Shopify order payment with Stripe by fetching the Shopify transaction, looking up the corresponding Stripe charge, comparing amounts, and logging discrepancies to a Google Sheet.

naftiko: '0.5'
info:
  label: Stripe Payment Reconciliation
  description: Reconciles a Shopify order payment with Stripe by fetching the Shopify transaction, looking up the corresponding Stripe charge, comparing amounts, and logging discrepancies to a Google Sheet.
  tags:
  - e-commerce
  - payments
  - stripe
  - google-sheets
  - reconciliation
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: payment-reconciliation
    port: 8080
    tools:
    - name: reconcile-payment
      description: Given a Shopify order ID and Stripe charge ID, compare transaction amounts and log any discrepancies.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The Shopify order ID.
      - name: stripe_charge_id
        in: body
        type: string
        description: The Stripe charge ID.
      steps:
      - name: get-shopify-transactions
        type: call
        call: shopify-admin.list-transactions
        with:
          order_id: '{{order_id}}'
      - name: get-stripe-charge
        type: call
        call: stripe.get-charge
        with:
          charge_id: '{{stripe_charge_id}}'
      - name: log-reconciliation
        type: call
        call: gsheets.append-row
        with:
          spreadsheet_id: '{{reconciliation_sheet_id}}'
          range: Reconciliation!A:F
          values:
          - '{{order_id}}'
          - '{{stripe_charge_id}}'
          - '{{get-shopify-transactions.transactions[0].amount}}'
          - '{{get-stripe-charge.amount}}'
          - '{{get-stripe-charge.currency}}'
          - '{{get-stripe-charge.status}}'
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: transactions
      path: /orders/{{order_id}}/transactions.json
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: list-transactions
        method: GET
  - type: http
    namespace: stripe
    baseUri: https://api.stripe.com/v1
    authentication:
      type: bearer
      token: $secrets.stripe_secret_key
    resources:
    - name: charges
      path: /charges/{{charge_id}}
      inputParameters:
      - name: charge_id
        in: path
      operations:
      - name: get-charge
        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}}:append
      inputParameters:
      - name: spreadsheet_id
        in: path
      - name: range
        in: path
      operations:
      - name: append-row
        method: POST
Open in Framework → View in Fleet → stripe-payment-reconciliation.yml

Pulls the previous day's Shopify orders, aggregates revenue by product and channel, generates a formatted summary with Claude, posts it to Slack, and archives the report in Google Drive.

naftiko: '0.5'
info:
  label: Daily Sales Report Generator
  description: Pulls the previous day's Shopify orders, aggregates revenue by product and channel, generates a formatted summary with Claude, posts it to Slack, and archives the report in Google Drive.
  tags:
  - e-commerce
  - analytics
  - reporting
  - claude
  - slack
  - google-drive
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: sales-reporting
    port: 8080
    tools:
    - name: generate-daily-report
      description: Generate a daily sales report from Shopify orders, format with Claude, post to Slack, and archive in Google Drive.
      inputParameters:
      - name: report_date
        in: body
        type: string
        description: The date to report on in YYYY-MM-DD format.
      steps:
      - name: get-orders
        type: call
        call: shopify-admin.list-orders
        with:
          created_at_min: '{{report_date}}T00:00:00Z'
          created_at_max: '{{report_date}}T23:59:59Z'
          status: any
      - name: format-report
        type: call
        call: claude.create-message
        with:
          model: claude-sonnet-4-20250514
          prompt: 'Generate a daily sales report summary for {{report_date}}. Orders data: {{get-orders.orders}}. Include: total revenue, order count, average order value, top 5 products by revenue, breakdown by payment gateway. Format for Slack markdown.'
      - name: post-to-slack
        type: call
        call: slack.post-message
        with:
          channel: '#daily-sales'
          text: 'Daily Sales Report - {{report_date}}


            {{format-report.content}}'
      - name: archive-to-drive
        type: call
        call: gdrive.create-file
        with:
          name: Sales_Report_{{report_date}}.txt
          parents: '{{reports_folder_id}}'
          content: '{{format-report.content}}'
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: orders
      path: /orders.json
      inputParameters:
      - name: created_at_min
        in: query
      - name: created_at_max
        in: query
      - name: status
        in: query
      operations:
      - name: list-orders
        method: GET
  - type: http
    namespace: claude
    baseUri: https://api.anthropic.com/v1
    authentication:
      type: bearer
      token: $secrets.anthropic_api_key
    inputParameters:
    - name: anthropic-version
      in: header
      value: '2023-06-01'
    resources:
    - name: messages
      path: /messages
      operations:
      - name: create-message
        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: gdrive
    baseUri: https://www.googleapis.com/upload/drive/v3
    authentication:
      type: bearer
      token: $secrets.google_drive_token
    resources:
    - name: files
      path: /files
      operations:
      - name: create-file
        method: POST
Open in Framework → View in Fleet → daily-sales-report-generator.yml

Retrieves storefront access tokens for the shop, returning token, title, and creation date. Used for validating headless commerce API access.

naftiko: '0.5'
info:
  label: Storefront Access Token Check
  description: Retrieves storefront access tokens for the shop, returning token, title, and creation date. Used for validating headless commerce API access.
  tags:
  - e-commerce
  - storefront
  - platform-engineering
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: storefront-auth
    port: 8080
    tools:
    - name: list-storefront-tokens
      description: List storefront access tokens for the Shopify store.
      inputParameters: []
      call: shopify-admin.list-storefront-tokens
      with: {}
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: storefront-tokens
      path: /storefront_access_tokens.json
      operations:
      - name: list-storefront-tokens
        method: GET
Open in Framework → View in Fleet → storefront-access-token-check.yml

Retrieves script tag listing check data from the Shopify e-commerce platform systems.

naftiko: '0.5'
info:
  label: Script Tag Listing Check
  description: Retrieves script tag listing check data from the Shopify e-commerce platform systems.
  tags:
  - script
  - shopify
  - check
capability:
  exposes:
  - type: mcp
    namespace: script
    port: 8080
    tools:
    - name: script-tag-listing-check
      description: Retrieves script tag listing check data from the Shopify e-commerce platform systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: shopify.script-tag-listing-check
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: shopify
    baseUri: https://shopify.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_access_token
    resources:
    - name: resource
      path: /script/tag/listing/check/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: script-tag-listing-check
        method: GET
Open in Framework → View in Fleet → script-tag-listing-check.yml

Exports Shopify product catalog data and submits it to Google Merchant Center for Google Shopping listings, then logs the sync status in a Google Sheet.

naftiko: '0.5'
info:
  label: Product Catalog Export to Google Merchant Center
  description: Exports Shopify product catalog data and submits it to Google Merchant Center for Google Shopping listings, then logs the sync status in a Google Sheet.
  tags:
  - e-commerce
  - products
  - google
  - marketing
  - google-sheets
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: merchant-feed
    port: 8080
    tools:
    - name: export-to-merchant-center
      description: Given a product collection ID, fetch products from Shopify and submit them to Google Merchant Center, then log the result.
      inputParameters:
      - name: collection_id
        in: body
        type: string
        description: The Shopify collection ID to export.
      - name: merchant_id
        in: body
        type: string
        description: The Google Merchant Center account ID.
      steps:
      - name: get-collection-products
        type: call
        call: shopify-admin.get-collection-products
        with:
          collection_id: '{{collection_id}}'
      - name: submit-to-merchant
        type: call
        call: google-merchant.insert-products
        with:
          merchant_id: '{{merchant_id}}'
          products: '{{get-collection-products.products}}'
      - name: log-sync
        type: call
        call: gsheets.append-row
        with:
          spreadsheet_id: '{{merchant_sync_sheet_id}}'
          range: MerchantSync!A:D
          values:
          - '{{collection_id}}'
          - '{{get-collection-products.products.length}}'
          - '{{submit-to-merchant.status}}'
          - synced
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: collection-products
      path: /collections/{{collection_id}}/products.json
      inputParameters:
      - name: collection_id
        in: path
      operations:
      - name: get-collection-products
        method: GET
  - type: http
    namespace: google-merchant
    baseUri: https://shoppingcontent.googleapis.com/content/v2.1
    authentication:
      type: bearer
      token: $secrets.google_merchant_token
    resources:
    - name: products
      path: /{{merchant_id}}/products
      inputParameters:
      - name: merchant_id
        in: path
      operations:
      - name: insert-products
        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
Open in Framework → View in Fleet → product-catalog-export-to-google-merchant-center.yml

Fetches competitor pricing data from a pricing intelligence API, compares against current Shopify product prices, applies bulk price adjustments via the Shopify Admin API, and logs all changes in a Google Sheet.

naftiko: '0.5'
info:
  label: Bulk Price Update with Competitor Monitoring
  description: Fetches competitor pricing data from a pricing intelligence API, compares against current Shopify product prices, applies bulk price adjustments via the Shopify Admin API, and logs all changes in a Google Sheet.
  tags:
  - e-commerce
  - pricing
  - products
  - google-sheets
  - competitive-analysis
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: price-intelligence
    port: 8080
    tools:
    - name: adjust-prices-from-competitors
      description: Given a product ID and competitor data source, compare pricing and apply adjustments in Shopify, then log changes.
      inputParameters:
      - name: product_id
        in: body
        type: string
        description: The Shopify product ID.
      - name: competitor_sku
        in: body
        type: string
        description: The SKU to look up in the competitor pricing system.
      - name: adjustment_strategy
        in: body
        type: string
        description: 'Pricing strategy: match, undercut_5_percent, or premium_10_percent.'
      steps:
      - name: get-product
        type: call
        call: shopify-admin.get-product
        with:
          product_id: '{{product_id}}'
      - name: get-competitor-price
        type: call
        call: pricing-api.get-competitor-price
        with:
          sku: '{{competitor_sku}}'
      - name: update-price
        type: call
        call: shopify-admin.update-product-variant
        with:
          product_id: '{{product_id}}'
          variant_id: '{{get-product.variants[0].id}}'
          price: '{{get-competitor-price.adjusted_price}}'
      - name: log-change
        type: call
        call: gsheets.append-row
        with:
          spreadsheet_id: '{{pricing_sheet_id}}'
          range: PriceChanges!A:F
          values:
          - '{{product_id}}'
          - '{{get-product.title}}'
          - '{{get-product.variants[0].price}}'
          - '{{get-competitor-price.adjusted_price}}'
          - '{{adjustment_strategy}}'
          - '{{get-competitor-price.competitor_name}}'
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: products
      path: /products/{{product_id}}.json
      inputParameters:
      - name: product_id
        in: path
      operations:
      - name: get-product
        method: GET
    - name: variants
      path: /products/{{product_id}}/variants/{{variant_id}}.json
      inputParameters:
      - name: product_id
        in: path
      - name: variant_id
        in: path
      operations:
      - name: update-product-variant
        method: PUT
  - type: http
    namespace: pricing-api
    baseUri: https://api.prisync.com/api/v2
    authentication:
      type: bearer
      token: $secrets.prisync_api_key
    resources:
    - name: competitor-prices
      path: /products/{{sku}}/competitor-prices
      inputParameters:
      - name: sku
        in: path
      operations:
      - name: get-competitor-price
        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}}:append
      inputParameters:
      - name: spreadsheet_id
        in: path
      - name: range
        in: path
      operations:
      - name: append-row
        method: POST
Open in Framework → View in Fleet → bulk-price-update-with-competitor-monitoring.yml

Registers a new webhook subscription in Shopify for a specified topic, validates the endpoint availability, and logs the registration in Confluence for team documentation.

naftiko: '0.5'
info:
  label: Shopify Flow Trigger via Webhook Registration
  description: Registers a new webhook subscription in Shopify for a specified topic, validates the endpoint availability, and logs the registration in Confluence for team documentation.
  tags:
  - e-commerce
  - platform-engineering
  - webhooks
  - confluence
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: webhook-management
    port: 8080
    tools:
    - name: register-and-document-webhook
      description: Given a webhook topic and callback URL, register the webhook in Shopify and document it in Confluence.
      inputParameters:
      - name: topic
        in: body
        type: string
        description: The webhook topic, e.g. orders/create, products/update.
      - name: address
        in: body
        type: string
        description: The callback URL for the webhook.
      - name: format
        in: body
        type: string
        description: 'The webhook format: json or xml.'
      steps:
      - name: create-webhook
        type: call
        call: shopify-admin.create-webhook
        with:
          topic: '{{topic}}'
          address: '{{address}}'
          format: '{{format}}'
      - name: document-in-confluence
        type: call
        call: confluence.create-page
        with:
          space_key: ENGINEERING
          title: 'Webhook: {{topic}} -> {{address}}'
          body: 'Webhook registered on {{current_date}}.


            Topic: {{topic}}

            Address: {{address}}

            Format: {{format}}

            Shopify Webhook ID: {{create-webhook.id}}'
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: webhooks
      path: /webhooks.json
      operations:
      - name: create-webhook
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://{{confluence_domain}}.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: content
      path: /content
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → shopify-flow-trigger-via-webhook-registration.yml

Retrieves blog article listing data from the Shopify e-commerce platform systems.

naftiko: '0.5'
info:
  label: Blog Article Listing
  description: Retrieves blog article listing data from the Shopify e-commerce platform systems.
  tags:
  - blog
  - shopify
  - listing
capability:
  exposes:
  - type: mcp
    namespace: blog
    port: 8080
    tools:
    - name: blog-article-listing
      description: Retrieves blog article listing data from the Shopify e-commerce platform systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: shopify.blog-article-listing
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: shopify
    baseUri: https://shopify.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_access_token
    resources:
    - name: resource
      path: /blog/article/listing/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: blog-article-listing
        method: GET
Open in Framework → View in Fleet → blog-article-listing.yml

Fetches product images from Shopify, sends them to Cloudflare Images for optimization and resizing, updates the Shopify product with optimized image URLs, and logs the optimization results.

naftiko: '0.5'
info:
  label: Product Image Optimization Pipeline
  description: Fetches product images from Shopify, sends them to Cloudflare Images for optimization and resizing, updates the Shopify product with optimized image URLs, and logs the optimization results.
  tags:
  - e-commerce
  - products
  - storefront
  - cloudflare
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: image-optimization
    port: 8080
    tools:
    - name: optimize-product-images
      description: Given a product ID, fetch images, optimize them via Cloudflare Images, and update the Shopify product.
      inputParameters:
      - name: product_id
        in: body
        type: string
        description: The Shopify product ID.
      steps:
      - name: get-product
        type: call
        call: shopify-admin.get-product
        with:
          product_id: '{{product_id}}'
      - name: upload-to-cloudflare
        type: call
        call: cloudflare.upload-image
        with:
          url: '{{get-product.images[0].src}}'
          requireSignedURLs: false
      - name: update-product-image
        type: call
        call: shopify-admin.update-product-image
        with:
          product_id: '{{product_id}}'
          image_id: '{{get-product.images[0].id}}'
          src: '{{upload-to-cloudflare.variants[0]}}'
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: products
      path: /products/{{product_id}}.json
      inputParameters:
      - name: product_id
        in: path
      operations:
      - name: get-product
        method: GET
    - name: product-images
      path: /products/{{product_id}}/images/{{image_id}}.json
      inputParameters:
      - name: product_id
        in: path
      - name: image_id
        in: path
      operations:
      - name: update-product-image
        method: PUT
  - type: http
    namespace: cloudflare
    baseUri: https://api.cloudflare.com/client/v4/accounts/{{cloudflare_account_id}}
    authentication:
      type: bearer
      token: $secrets.cloudflare_api_token
    resources:
    - name: images
      path: /images/v1
      operations:
      - name: upload-image
        method: POST
Open in Framework → View in Fleet → product-image-optimization-pipeline.yml

Queries available shipping rates for a given checkout or draft order, returning carrier names, prices, and estimated delivery windows.

naftiko: '0.5'
info:
  label: Shipping Rate Lookup
  description: Queries available shipping rates for a given checkout or draft order, returning carrier names, prices, and estimated delivery windows.
  tags:
  - e-commerce
  - shipping
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: shipping
    port: 8080
    tools:
    - name: get-shipping-rates
      description: Retrieve available shipping rates for a Shopify draft order. Returns carrier service names, rates, and delivery estimates.
      inputParameters:
      - name: draft_order_id
        in: body
        type: string
        description: The Shopify draft order ID to retrieve shipping rates for.
      call: shopify-admin.get-draft-order-shipping
      with:
        draft_order_id: '{{draft_order_id}}'
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: draft-order-shipping
      path: /draft_orders/{{draft_order_id}}/shipping_rates.json
      inputParameters:
      - name: draft_order_id
        in: path
      operations:
      - name: get-draft-order-shipping
        method: GET
Open in Framework → View in Fleet → shipping-rate-lookup.yml

Retrieves a Shopify order by order ID and returns order status, line items, fulfillment state, and customer details. Used by support and operations teams to quickly inspect order health.

naftiko: '0.5'
info:
  label: Order Lookup
  description: Retrieves a Shopify order by order ID and returns order status, line items, fulfillment state, and customer details. Used by support and operations teams to quickly inspect order health.
  tags:
  - e-commerce
  - orders
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: order-management
    port: 8080
    tools:
    - name: get-order
      description: Look up a Shopify order by ID. Returns status, line items, fulfillment state, total price, and customer email.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The Shopify order ID.
      call: shopify-admin.get-order
      with:
        order_id: '{{order_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.order.financial_status
      - name: fulfillment_status
        type: string
        mapping: $.order.fulfillment_status
      - name: total_price
        type: string
        mapping: $.order.total_price
      - name: customer_email
        type: string
        mapping: $.order.customer.email
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: orders
      path: /orders/{{order_id}}.json
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-order
        method: GET
Open in Framework → View in Fleet → order-lookup.yml

Orchestrates social selling integration pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Social Selling Integration Pipeline
  description: Orchestrates social selling integration pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - social
  - shopify
  - github
  - shopify
  - stripe
capability:
  exposes:
  - type: mcp
    namespace: social
    port: 8080
    tools:
    - name: social-selling-integration-pipeline
      description: Orchestrates social selling integration pipeline across e-commerce platform 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: github.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: shopify.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: stripe.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: github-resource
      path: /api/social
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: shopify
    baseUri: https://shopify.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_access_token
    resources:
    - name: shopify-resource
      path: /api/social
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: stripe
    baseUri: https://api.stripe.com/v1
    authentication:
      type: bearer
      token: $secrets.stripe_secret_key
    resources:
    - name: stripe-resource
      path: /api/social
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → social-selling-integration-pipeline.yml

Orchestrates customer lifetime value pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Customer Lifetime Value Pipeline
  description: Orchestrates customer lifetime value pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - customer
  - shopify
  - snowflake
  - slack
  - jira
capability:
  exposes:
  - type: mcp
    namespace: customer
    port: 8080
    tools:
    - name: customer-lifetime-value-pipeline
      description: Orchestrates customer lifetime value pipeline across e-commerce platform 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: jira.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://shopify.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/customer
      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/customer
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: jira
    baseUri: https://shopify.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/customer
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → customer-lifetime-value-pipeline.yml

Retrieves carrier service listing data from the Shopify e-commerce platform systems.

naftiko: '0.5'
info:
  label: Carrier Service Listing
  description: Retrieves carrier service listing data from the Shopify e-commerce platform systems.
  tags:
  - carrier
  - shopify
  - listing
capability:
  exposes:
  - type: mcp
    namespace: carrier
    port: 8080
    tools:
    - name: carrier-service-listing
      description: Retrieves carrier service listing data from the Shopify e-commerce platform systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: shopify.carrier-service-listing
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: shopify
    baseUri: https://shopify.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_access_token
    resources:
    - name: resource
      path: /carrier/service/listing/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: carrier-service-listing
        method: GET
Open in Framework → View in Fleet → carrier-service-listing.yml

Retrieves price rule details check data from the Shopify e-commerce platform systems.

naftiko: '0.5'
info:
  label: Price Rule Details Check
  description: Retrieves price rule details check data from the Shopify e-commerce platform systems.
  tags:
  - price
  - shopify
  - check
capability:
  exposes:
  - type: mcp
    namespace: price
    port: 8080
    tools:
    - name: price-rule-details-check
      description: Retrieves price rule details check data from the Shopify e-commerce platform systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: shopify.price-rule-details-check
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: shopify
    baseUri: https://shopify.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_access_token
    resources:
    - name: resource
      path: /price/rule/details/check/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: price-rule-details-check
        method: GET
Open in Framework → View in Fleet → price-rule-details-check.yml

Orchestrates merchant churn prediction pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Merchant Churn Prediction Pipeline
  description: Orchestrates merchant churn prediction pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - merchant
  - shopify
  - datadog
  - hubspot
  - zendesk
capability:
  exposes:
  - type: mcp
    namespace: merchant
    port: 8080
    tools:
    - name: merchant-churn-prediction-pipeline
      description: Orchestrates merchant churn prediction pipeline across e-commerce platform 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: hubspot.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: zendesk.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/merchant
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: hubspot-resource
      path: /api/merchant
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: zendesk
    baseUri: https://shopify.zendesk.com/api/v2
    authentication:
      type: bearer
      token: $secrets.zendesk_token
    resources:
    - name: zendesk-resource
      path: /api/merchant
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → merchant-churn-prediction-pipeline.yml

Sends an order confirmation SMS to the customer via Twilio after a Shopify order is placed, including order number, total, and estimated delivery date.

naftiko: '0.5'
info:
  label: Twilio SMS Order Confirmation
  description: Sends an order confirmation SMS to the customer via Twilio after a Shopify order is placed, including order number, total, and estimated delivery date.
  tags:
  - e-commerce
  - orders
  - notifications
  - twilio
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: order-notifications
    port: 8080
    tools:
    - name: send-order-sms
      description: Given a Shopify order ID, retrieve order details and send a confirmation SMS via Twilio.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The Shopify order ID.
      steps:
      - name: get-order
        type: call
        call: shopify-admin.get-order
        with:
          order_id: '{{order_id}}'
      - name: send-sms
        type: call
        call: twilio.send-sms
        with:
          to: '{{get-order.customer.phone}}'
          from: '{{twilio_phone_number}}'
          body: 'Hi {{get-order.customer.first_name}}! Your order #{{get-order.order_number}} ({{get-order.total_price}} {{get-order.currency}}) has been confirmed. We will notify you when it ships!'
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: orders
      path: /orders/{{order_id}}.json
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-order
        method: GET
  - type: http
    namespace: twilio
    baseUri: https://api.twilio.com/2010-04-01/Accounts/{{twilio_account_sid}}
    authentication:
      type: basic
      username: $secrets.twilio_account_sid
      password: $secrets.twilio_auth_token
    resources:
    - name: messages
      path: /Messages.json
      operations:
      - name: send-sms
        method: POST
Open in Framework → View in Fleet → twilio-sms-order-confirmation.yml

Orchestrates customer feedback loop pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Customer Feedback Loop Pipeline
  description: Orchestrates customer feedback loop pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - customer
  - shopify
  - sendgrid
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: customer
    port: 8080
    tools:
    - name: customer-feedback-loop-pipeline
      description: Orchestrates customer feedback loop pipeline across e-commerce platform 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: sendgrid.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: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: sendgrid-resource
      path: /api/customer
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://shopify.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/customer
      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/customer
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → customer-feedback-loop-pipeline.yml

Segments Shopify customers by purchase behavior, syncs the segment to MailChimp as a tagged audience list, and triggers a targeted email campaign for the segment.

naftiko: '0.5'
info:
  label: Email Marketing Segment Sync
  description: Segments Shopify customers by purchase behavior, syncs the segment to MailChimp as a tagged audience list, and triggers a targeted email campaign for the segment.
  tags:
  - e-commerce
  - marketing
  - customers
  - mailchimp
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: email-segmentation
    port: 8080
    tools:
    - name: sync-segment-to-mailchimp
      description: Given Shopify customer search parameters, retrieve matching customers, add them to a MailChimp audience with tags, and trigger a campaign.
      inputParameters:
      - name: customer_query
        in: body
        type: string
        description: The Shopify customer search query, e.g. orders_count:>5.
      - name: mailchimp_list_id
        in: body
        type: string
        description: The MailChimp audience list ID.
      - name: segment_tag
        in: body
        type: string
        description: The tag to apply to synced members.
      - name: campaign_template_id
        in: body
        type: string
        description: The MailChimp campaign template ID.
      steps:
      - name: search-customers
        type: call
        call: shopify-admin.search-customers
        with:
          query: '{{customer_query}}'
      - name: add-to-audience
        type: call
        call: mailchimp.batch-add-members
        with:
          list_id: '{{mailchimp_list_id}}'
          members: '{{search-customers.customers}}'
          tag: '{{segment_tag}}'
      - name: create-campaign
        type: call
        call: mailchimp.create-campaign
        with:
          list_id: '{{mailchimp_list_id}}'
          template_id: '{{campaign_template_id}}'
          segment_tag: '{{segment_tag}}'
          subject: Special offer for our loyal customers
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: customer-search
      path: /customers/search.json
      inputParameters:
      - name: query
        in: query
      operations:
      - name: search-customers
        method: GET
  - type: http
    namespace: mailchimp
    baseUri: https://{{mailchimp_dc}}.api.mailchimp.com/3.0
    authentication:
      type: basic
      username: anystring
      password: $secrets.mailchimp_api_key
    resources:
    - name: list-members
      path: /lists/{{list_id}}/members
      inputParameters:
      - name: list_id
        in: path
      operations:
      - name: batch-add-members
        method: POST
    - name: campaigns
      path: /campaigns
      operations:
      - name: create-campaign
        method: POST
Open in Framework → View in Fleet → email-marketing-segment-sync.yml

Orchestrates theme quality assurance pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Theme Quality Assurance Pipeline
  description: Orchestrates theme quality assurance pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - theme
  - shopify
  - stripe
  - sendgrid
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: theme
    port: 8080
    tools:
    - name: theme-quality-assurance-pipeline
      description: Orchestrates theme quality assurance pipeline across e-commerce platform 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: stripe.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: sendgrid.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: snowflake.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: stripe
    baseUri: https://api.stripe.com/v1
    authentication:
      type: bearer
      token: $secrets.stripe_secret_key
    resources:
    - name: stripe-resource
      path: /api/theme
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: sendgrid-resource
      path: /api/theme
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://shopify.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/theme
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → theme-quality-assurance-pipeline.yml

Handles a customer return request by verifying the order in Shopify, creating a return shipping label via ShipStation, initiating the Shopify refund, and updating the Zendesk ticket with resolution details.

naftiko: '0.5'
info:
  label: Automated Returns Processing
  description: Handles a customer return request by verifying the order in Shopify, creating a return shipping label via ShipStation, initiating the Shopify refund, and updating the Zendesk ticket with resolution details.
  tags:
  - e-commerce
  - returns
  - refunds
  - shipstation
  - zendesk
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: returns-management
    port: 8080
    tools:
    - name: process-return
      description: Given an order ID and Zendesk ticket ID, verify the order, create a return label, initiate a refund, and update the support ticket.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The Shopify order ID.
      - name: ticket_id
        in: body
        type: string
        description: The Zendesk ticket ID for the return request.
      - name: return_reason
        in: body
        type: string
        description: The reason for the return.
      steps:
      - name: get-order
        type: call
        call: shopify-admin.get-order
        with:
          order_id: '{{order_id}}'
      - name: create-return-label
        type: call
        call: shipstation.create-label
        with:
          carrier_code: stamps_com
          service_code: usps_priority_mail
          to_name: Returns Department
          to_address1: '{{warehouse_address}}'
          to_city: '{{warehouse_city}}'
          to_state: '{{warehouse_state}}'
          to_postal_code: '{{warehouse_postal_code}}'
          to_country: US
          from_name: '{{get-order.shipping_address.name}}'
          from_address1: '{{get-order.shipping_address.address1}}'
          from_city: '{{get-order.shipping_address.city}}'
          from_state: '{{get-order.shipping_address.province_code}}'
          from_postal_code: '{{get-order.shipping_address.zip}}'
      - name: initiate-refund
        type: call
        call: shopify-admin.create-refund
        with:
          order_id: '{{order_id}}'
          amount: '{{get-order.total_price}}'
          reason: '{{return_reason}}'
      - name: update-ticket
        type: call
        call: zendesk.update-ticket
        with:
          ticket_id: '{{ticket_id}}'
          status: solved
          comment: 'Return processed. Return label: {{create-return-label.tracking_number}}. Refund of {{get-order.total_price}} {{get-order.currency}} initiated. Reason: {{return_reason}}'
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: orders
      path: /orders/{{order_id}}.json
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-order
        method: GET
    - name: refunds
      path: /orders/{{order_id}}/refunds.json
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: create-refund
        method: POST
  - type: http
    namespace: shipstation
    baseUri: https://ssapi.shipstation.com
    authentication:
      type: basic
      username: $secrets.shipstation_api_key
      password: $secrets.shipstation_api_secret
    resources:
    - name: labels
      path: /shipments/createlabel
      operations:
      - name: create-label
        method: POST
  - type: http
    namespace: zendesk
    baseUri: https://{{zendesk_subdomain}}.zendesk.com/api/v2
    authentication:
      type: bearer
      token: $secrets.zendesk_api_token
    resources:
    - name: tickets
      path: /tickets/{{ticket_id}}.json
      inputParameters:
      - name: ticket_id
        in: path
      operations:
      - name: update-ticket
        method: PUT
Open in Framework → View in Fleet → automated-returns-processing.yml

When Shopify inventory changes, broadcasts the updated quantity to Amazon Seller Central and BigCommerce to keep all sales channels in sync, then posts a summary to Slack.

naftiko: '0.5'
info:
  label: Multi-Channel Inventory Broadcaster
  description: When Shopify inventory changes, broadcasts the updated quantity to Amazon Seller Central and BigCommerce to keep all sales channels in sync, then posts a summary to Slack.
  tags:
  - e-commerce
  - inventory
  - multi-channel
  - amazon-web-services
  - bigcommerce
  - slack
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: inventory-broadcast
    port: 8080
    tools:
    - name: broadcast-inventory
      description: Given a SKU and new quantity, update inventory on Shopify, Amazon, and BigCommerce, then notify Slack.
      inputParameters:
      - name: sku
        in: body
        type: string
        description: The product SKU.
      - name: quantity
        in: body
        type: number
        description: The new available quantity.
      - name: inventory_item_id
        in: body
        type: string
        description: The Shopify inventory item ID.
      - name: location_id
        in: body
        type: string
        description: The Shopify location ID.
      steps:
      - name: update-shopify
        type: call
        call: shopify-admin.set-inventory-level
        with:
          inventory_item_id: '{{inventory_item_id}}'
          location_id: '{{location_id}}'
          available: '{{quantity}}'
      - name: update-amazon
        type: call
        call: amazon-sp.update-inventory
        with:
          sku: '{{sku}}'
          quantity: '{{quantity}}'
      - name: update-bigcommerce
        type: call
        call: bigcommerce.update-variant-inventory
        with:
          sku: '{{sku}}'
          inventory_level: '{{quantity}}'
      - name: notify-slack
        type: call
        call: slack.post-message
        with:
          channel: '#inventory-sync'
          text: 'Inventory broadcast complete for SKU {{sku}}: {{quantity}} units synced to Shopify, Amazon, and BigCommerce.'
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: inventory-levels
      path: /inventory_levels/set.json
      operations:
      - name: set-inventory-level
        method: POST
  - type: http
    namespace: amazon-sp
    baseUri: https://sellingpartnerapi-na.amazon.com
    authentication:
      type: bearer
      token: $secrets.amazon_sp_token
    resources:
    - name: inventory
      path: /fba/inventory/v1/items/{{sku}}
      inputParameters:
      - name: sku
        in: path
      operations:
      - name: update-inventory
        method: PUT
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/{{bigcommerce_store_hash}}/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_api_token
    resources:
    - name: variants
      path: /catalog/variants
      operations:
      - name: update-variant-inventory
        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
Open in Framework → View in Fleet → multi-channel-inventory-broadcaster.yml

Orchestrates product variant management pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Product Variant Management Pipeline
  description: Orchestrates product variant management pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - product
  - shopify
  - stripe
  - sendgrid
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: product
    port: 8080
    tools:
    - name: product-variant-management-pipeline
      description: Orchestrates product variant management pipeline across e-commerce platform 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: stripe.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: sendgrid.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: snowflake.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: stripe
    baseUri: https://api.stripe.com/v1
    authentication:
      type: bearer
      token: $secrets.stripe_secret_key
    resources:
    - name: stripe-resource
      path: /api/product
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: sendgrid-resource
      path: /api/product
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://shopify.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/product
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → product-variant-management-pipeline.yml

Retrieves customer saved search listing data from the Shopify e-commerce platform systems.

naftiko: '0.5'
info:
  label: Customer Saved Search Listing
  description: Retrieves customer saved search listing data from the Shopify e-commerce platform systems.
  tags:
  - customer
  - shopify
  - listing
capability:
  exposes:
  - type: mcp
    namespace: customer
    port: 8080
    tools:
    - name: customer-saved-search-listing
      description: Retrieves customer saved search listing data from the Shopify e-commerce platform systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: shopify.customer-saved-search-listing
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: shopify
    baseUri: https://shopify.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_access_token
    resources:
    - name: resource
      path: /customer/saved/search/listing/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: customer-saved-search-listing
        method: GET
Open in Framework → View in Fleet → customer-saved-search-listing.yml

Retrieves abandoned checkout listing data from the Shopify e-commerce platform systems.

naftiko: '0.5'
info:
  label: Abandoned Checkout Listing
  description: Retrieves abandoned checkout listing data from the Shopify e-commerce platform systems.
  tags:
  - abandoned
  - shopify
  - listing
capability:
  exposes:
  - type: mcp
    namespace: abandoned
    port: 8080
    tools:
    - name: abandoned-checkout-listing
      description: Retrieves abandoned checkout listing data from the Shopify e-commerce platform systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: shopify.abandoned-checkout-listing
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: shopify
    baseUri: https://shopify.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_access_token
    resources:
    - name: resource
      path: /abandoned/checkout/listing/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: abandoned-checkout-listing
        method: GET
Open in Framework → View in Fleet → abandoned-checkout-listing.yml

Fetches a Shopify product, generates SEO-optimized title and description using Claude, updates the product in Shopify, and submits the URL to Google Search Console for indexing.

naftiko: '0.5'
info:
  label: SEO Product Description Generator
  description: Fetches a Shopify product, generates SEO-optimized title and description using Claude, updates the product in Shopify, and submits the URL to Google Search Console for indexing.
  tags:
  - e-commerce
  - products
  - seo
  - ai-ml
  - claude
  - google-search-console
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: seo-automation
    port: 8080
    tools:
    - name: generate-seo-content
      description: Given a product ID, generate SEO-optimized content with Claude, update the Shopify product, and submit the URL for indexing.
      inputParameters:
      - name: product_id
        in: body
        type: string
        description: The Shopify product ID.
      - name: target_keywords
        in: body
        type: string
        description: Comma-separated target keywords for SEO optimization.
      steps:
      - name: get-product
        type: call
        call: shopify-admin.get-product
        with:
          product_id: '{{product_id}}'
      - name: generate-seo
        type: call
        call: claude.create-message
        with:
          model: claude-sonnet-4-20250514
          prompt: 'Generate an SEO-optimized product title (max 70 chars) and meta description (max 160 chars) and body HTML (300-500 words) for this product: {{get-product.title}}. Current description: {{get-product.body_html}}. Target keywords: {{target_keywords}}. Return JSON with keys: seo_title, meta_description, body_html.'
      - name: update-product
        type: call
        call: shopify-admin.update-product
        with:
          product_id: '{{product_id}}'
          title: '{{generate-seo.seo_title}}'
          body_html: '{{generate-seo.body_html}}'
          metafields_global_title_tag: '{{generate-seo.seo_title}}'
          metafields_global_description_tag: '{{generate-seo.meta_description}}'
      - name: submit-for-indexing
        type: call
        call: google-search-console.submit-url
        with:
          site_url: https://{{shop_domain}}
          url: https://{{shop_domain}}/products/{{get-product.handle}}
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: products
      path: /products/{{product_id}}.json
      inputParameters:
      - name: product_id
        in: path
      operations:
      - name: get-product
        method: GET
      - name: update-product
        method: PUT
  - type: http
    namespace: claude
    baseUri: https://api.anthropic.com/v1
    authentication:
      type: bearer
      token: $secrets.anthropic_api_key
    inputParameters:
    - name: anthropic-version
      in: header
      value: '2023-06-01'
    resources:
    - name: messages
      path: /messages
      operations:
      - name: create-message
        method: POST
  - type: http
    namespace: google-search-console
    baseUri: https://searchconsole.googleapis.com/v1
    authentication:
      type: bearer
      token: $secrets.google_search_console_token
    resources:
    - name: url-inspection
      path: /urlInspection/index:inspect
      operations:
      - name: submit-url
        method: POST
Open in Framework → View in Fleet → seo-product-description-generator.yml

Retrieves a Shopify customer record by customer ID, returning contact details, order count, total spend, and tags. Used by support agents and marketing teams.

naftiko: '0.5'
info:
  label: Customer Profile Lookup
  description: Retrieves a Shopify customer record by customer ID, returning contact details, order count, total spend, and tags. Used by support agents and marketing teams.
  tags:
  - e-commerce
  - customers
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: customer-management
    port: 8080
    tools:
    - name: get-customer
      description: Look up a Shopify customer by ID. Returns name, email, order count, total spent, and customer tags.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The Shopify customer ID.
      call: shopify-admin.get-customer
      with:
        customer_id: '{{customer_id}}'
      outputParameters:
      - name: email
        type: string
        mapping: $.customer.email
      - name: first_name
        type: string
        mapping: $.customer.first_name
      - name: orders_count
        type: number
        mapping: $.customer.orders_count
      - name: total_spent
        type: string
        mapping: $.customer.total_spent
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: customers
      path: /customers/{{customer_id}}.json
      inputParameters:
      - name: customer_id
        in: path
      operations:
      - name: get-customer
        method: GET
Open in Framework → View in Fleet → customer-profile-lookup.yml

Retrieves redirect url listing data from the Shopify e-commerce platform systems.

naftiko: '0.5'
info:
  label: Redirect Url Listing
  description: Retrieves redirect url listing data from the Shopify e-commerce platform systems.
  tags:
  - redirect
  - shopify
  - listing
capability:
  exposes:
  - type: mcp
    namespace: redirect
    port: 8080
    tools:
    - name: redirect-url-listing
      description: Retrieves redirect url listing data from the Shopify e-commerce platform systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: shopify.redirect-url-listing
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: shopify
    baseUri: https://shopify.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_access_token
    resources:
    - name: resource
      path: /redirect/url/listing/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: redirect-url-listing
        method: GET
Open in Framework → View in Fleet → redirect-url-listing.yml

Orchestrates product seo optimization pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Product Seo Optimization Pipeline
  description: Orchestrates product seo optimization pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - product
  - shopify
  - stripe
  - sendgrid
  - snowflake
capability:
  exposes:
  - type: mcp
    namespace: product
    port: 8080
    tools:
    - name: product-seo-optimization-pipeline
      description: Orchestrates product seo optimization pipeline across e-commerce platform 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: stripe.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: sendgrid.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: snowflake.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: stripe
    baseUri: https://api.stripe.com/v1
    authentication:
      type: bearer
      token: $secrets.stripe_secret_key
    resources:
    - name: stripe-resource
      path: /api/product
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: sendgrid-resource
      path: /api/product
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://shopify.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/product
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → product-seo-optimization-pipeline.yml

Orchestrates app store review response pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: App Store Review Response Pipeline
  description: Orchestrates app store review response pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - app
  - shopify
  - jira
  - datadog
  - hubspot
capability:
  exposes:
  - type: mcp
    namespace: app
    port: 8080
    tools:
    - name: app-store-review-response-pipeline
      description: Orchestrates app store review response pipeline across e-commerce platform 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: datadog.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: hubspot.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://shopify.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/app
      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/app
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: hubspot-resource
      path: /api/app
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → app-store-review-response-pipeline.yml

Orchestrates order fraud review pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Order Fraud Review Pipeline
  description: Orchestrates order fraud review pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - order
  - shopify
  - sendgrid
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: order
    port: 8080
    tools:
    - name: order-fraud-review-pipeline
      description: Orchestrates order fraud review pipeline across e-commerce platform 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: sendgrid.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: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: sendgrid-resource
      path: /api/order
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://shopify.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/order
      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/order
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → order-fraud-review-pipeline.yml

Retrieves order risk assessment lookup data from the Shopify e-commerce platform systems.

naftiko: '0.5'
info:
  label: Order Risk Assessment Lookup
  description: Retrieves order risk assessment lookup data from the Shopify e-commerce platform systems.
  tags:
  - order
  - shopify
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: order
    port: 8080
    tools:
    - name: order-risk-assessment-lookup
      description: Retrieves order risk assessment lookup data from the Shopify e-commerce platform systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: shopify.order-risk-assessment-lookup
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: shopify
    baseUri: https://shopify.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_access_token
    resources:
    - name: resource
      path: /order/risk/assessment/lookup/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: order-risk-assessment-lookup
        method: GET
Open in Framework → View in Fleet → order-risk-assessment-lookup.yml

Retrieves marketing event listing data from the Shopify e-commerce platform systems.

naftiko: '0.5'
info:
  label: Marketing Event Listing
  description: Retrieves marketing event listing data from the Shopify e-commerce platform systems.
  tags:
  - marketing
  - shopify
  - listing
capability:
  exposes:
  - type: mcp
    namespace: marketing
    port: 8080
    tools:
    - name: marketing-event-listing
      description: Retrieves marketing event listing data from the Shopify e-commerce platform systems.
      inputParameters:
      - name: input_id
        in: body
        type: string
        description: The input id.
      call: shopify.marketing-event-listing
      with:
        input_id: '{{input_id}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.data
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: shopify
    baseUri: https://shopify.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_access_token
    resources:
    - name: resource
      path: /marketing/event/listing/{{input_id}}
      inputParameters:
      - name: input_id
        in: path
      operations:
      - name: marketing-event-listing
        method: GET
Open in Framework → View in Fleet → marketing-event-listing.yml

Lists all active webhook subscriptions for the Shopify store. Returns topic, address, and format for each registered webhook.

naftiko: '0.5'
info:
  label: Webhook Subscription Listing
  description: Lists all active webhook subscriptions for the Shopify store. Returns topic, address, and format for each registered webhook.
  tags:
  - e-commerce
  - platform-engineering
  - webhooks
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: platform-ops
    port: 8080
    tools:
    - name: list-webhooks
      description: List all webhook subscriptions for the Shopify store. Returns topic, callback address, and format.
      inputParameters: []
      call: shopify-admin.list-webhooks
      with: {}
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: webhooks
      path: /webhooks.json
      operations:
      - name: list-webhooks
        method: GET
Open in Framework → View in Fleet → webhook-subscription-listing.yml

Orchestrates pos inventory sync pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Pos Inventory Sync Pipeline
  description: Orchestrates pos inventory sync pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - pos
  - shopify
  - github
  - shopify
  - stripe
capability:
  exposes:
  - type: mcp
    namespace: pos
    port: 8080
    tools:
    - name: pos-inventory-sync-pipeline
      description: Orchestrates pos inventory sync pipeline across e-commerce platform 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: github.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: shopify.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: stripe.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: github-resource
      path: /api/pos
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: shopify
    baseUri: https://shopify.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_access_token
    resources:
    - name: shopify-resource
      path: /api/pos
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: stripe
    baseUri: https://api.stripe.com/v1
    authentication:
      type: bearer
      token: $secrets.stripe_secret_key
    resources:
    - name: stripe-resource
      path: /api/pos
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → pos-inventory-sync-pipeline.yml

When a product variant inventory drops below threshold, adjusts the Shopify inventory level based on warehouse system data, and sends a low-stock alert to the procurement Slack channel.

naftiko: '0.5'
info:
  label: Inventory Sync with Warehouse and Slack Alert
  description: When a product variant inventory drops below threshold, adjusts the Shopify inventory level based on warehouse system data, and sends a low-stock alert to the procurement Slack channel.
  tags:
  - e-commerce
  - inventory
  - warehouse
  - slack
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: inventory-sync
    port: 8080
    tools:
    - name: sync-inventory-and-alert
      description: Given an inventory item ID and location ID, fetch the warehouse quantity, update Shopify inventory, and alert Slack if below threshold.
      inputParameters:
      - name: inventory_item_id
        in: body
        type: string
        description: The Shopify inventory item ID.
      - name: location_id
        in: body
        type: string
        description: The Shopify location ID.
      - name: sku
        in: body
        type: string
        description: The product SKU for warehouse lookup.
      - name: low_stock_threshold
        in: body
        type: number
        description: The threshold below which a low-stock alert is triggered.
      steps:
      - name: get-warehouse-stock
        type: call
        call: warehouse-api.get-stock
        with:
          sku: '{{sku}}'
      - name: update-inventory
        type: call
        call: shopify-admin.set-inventory-level
        with:
          inventory_item_id: '{{inventory_item_id}}'
          location_id: '{{location_id}}'
          available: '{{get-warehouse-stock.quantity}}'
      - name: alert-slack
        type: call
        call: slack.post-message
        with:
          channel: '#procurement-alerts'
          text: 'Low stock alert: SKU {{sku}} has {{get-warehouse-stock.quantity}} units in warehouse. Threshold: {{low_stock_threshold}}.'
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: inventory-levels
      path: /inventory_levels/set.json
      operations:
      - name: set-inventory-level
        method: POST
  - type: http
    namespace: warehouse-api
    baseUri: https://wms.{{company_domain}}/api/v1
    authentication:
      type: bearer
      token: $secrets.warehouse_api_token
    resources:
    - name: stock
      path: /stock/{{sku}}
      inputParameters:
      - name: sku
        in: path
      operations:
      - name: get-stock
        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
Open in Framework → View in Fleet → inventory-sync-with-warehouse-and-slack-alert.yml

Orchestrates dropshipping supplier pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Dropshipping Supplier Pipeline
  description: Orchestrates dropshipping supplier pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - dropshipping
  - shopify
  - zendesk
  - github
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: dropshipping
    port: 8080
    tools:
    - name: dropshipping-supplier-pipeline
      description: Orchestrates dropshipping supplier pipeline across e-commerce platform 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: zendesk.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: github.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: shopify.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: zendesk
    baseUri: https://shopify.zendesk.com/api/v2
    authentication:
      type: bearer
      token: $secrets.zendesk_token
    resources:
    - name: zendesk-resource
      path: /api/dropshipping
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: github-resource
      path: /api/dropshipping
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: shopify
    baseUri: https://shopify.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_access_token
    resources:
    - name: shopify-resource
      path: /api/dropshipping
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → dropshipping-supplier-pipeline.yml

Orchestrates subscription billing pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Subscription Billing Pipeline
  description: Orchestrates subscription billing pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - subscription
  - shopify
  - snowflake
  - slack
  - jira
capability:
  exposes:
  - type: mcp
    namespace: subscription
    port: 8080
    tools:
    - name: subscription-billing-pipeline
      description: Orchestrates subscription billing pipeline across e-commerce platform 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: jira.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://shopify.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: snowflake-resource
      path: /api/subscription
      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/subscription
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: jira
    baseUri: https://shopify.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: jira-resource
      path: /api/subscription
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → subscription-billing-pipeline.yml

Orchestrates merchant onboarding pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Merchant Onboarding Pipeline
  description: Orchestrates merchant onboarding pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - merchant
  - shopify
  - shopify
  - stripe
  - sendgrid
capability:
  exposes:
  - type: mcp
    namespace: merchant
    port: 8080
    tools:
    - name: merchant-onboarding-pipeline
      description: Orchestrates merchant onboarding pipeline across e-commerce platform 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: shopify.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: stripe.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: sendgrid.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: shopify
    baseUri: https://shopify.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_access_token
    resources:
    - name: shopify-resource
      path: /api/merchant
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: stripe
    baseUri: https://api.stripe.com/v1
    authentication:
      type: bearer
      token: $secrets.stripe_secret_key
    resources:
    - name: stripe-resource
      path: /api/merchant
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: sendgrid-resource
      path: /api/merchant
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → merchant-onboarding-pipeline.yml

Orchestrates merchant growth advisory pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.

naftiko: '0.5'
info:
  label: Merchant Growth Advisory Pipeline
  description: Orchestrates merchant growth advisory pipeline across e-commerce platform systems, coordinating multiple services and notifying stakeholders.
  tags:
  - merchant
  - shopify
  - zendesk
  - github
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: merchant
    port: 8080
    tools:
    - name: merchant-growth-advisory-pipeline
      description: Orchestrates merchant growth advisory pipeline across e-commerce platform 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: zendesk.execute-1
        with:
          input: '{{input_id}}'
      - name: step-2
        type: call
        call: github.execute-2
        with:
          input: '{{input_id}}'
      - name: step-3
        type: call
        call: shopify.execute-3
        with:
          input: '{{input_id}}'
  consumes:
  - type: http
    namespace: zendesk
    baseUri: https://shopify.zendesk.com/api/v2
    authentication:
      type: bearer
      token: $secrets.zendesk_token
    resources:
    - name: zendesk-resource
      path: /api/merchant
      operations:
      - name: execute-1
        method: POST
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: github-resource
      path: /api/merchant
      operations:
      - name: execute-2
        method: POST
  - type: http
    namespace: shopify
    baseUri: https://shopify.myshopify.com/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_access_token
    resources:
    - name: shopify-resource
      path: /api/merchant
      operations:
      - name: execute-3
        method: POST
Open in Framework → View in Fleet → merchant-growth-advisory-pipeline.yml

Processes a refund on a Shopify order, creates a Zendesk support ticket documenting the refund, and sends a refund confirmation email to the customer via SendGrid.

naftiko: '0.5'
info:
  label: Refund Processing with Zendesk Ticket
  description: Processes a refund on a Shopify order, creates a Zendesk support ticket documenting the refund, and sends a refund confirmation email to the customer via SendGrid.
  tags:
  - e-commerce
  - refunds
  - payments
  - zendesk
  - sendgrid
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: refund-ops
    port: 8080
    tools:
    - name: process-refund
      description: Given an order ID and refund amount, process the refund in Shopify, create a Zendesk ticket, and email the customer confirmation.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The Shopify order ID.
      - name: refund_amount
        in: body
        type: string
        description: The amount to refund.
      - name: reason
        in: body
        type: string
        description: The reason for the refund.
      steps:
      - name: get-order
        type: call
        call: shopify-admin.get-order
        with:
          order_id: '{{order_id}}'
      - name: create-refund
        type: call
        call: shopify-admin.create-refund
        with:
          order_id: '{{order_id}}'
          amount: '{{refund_amount}}'
          reason: '{{reason}}'
      - name: create-ticket
        type: call
        call: zendesk.create-ticket
        with:
          subject: 'Refund processed for order #{{get-order.order_number}}'
          description: 'Refund of {{refund_amount}} {{get-order.currency}} processed for {{get-order.customer.email}}. Reason: {{reason}}'
          requester_email: '{{get-order.customer.email}}'
          priority: normal
      - name: email-confirmation
        type: call
        call: sendgrid.send-email
        with:
          to: '{{get-order.customer.email}}'
          subject: 'Refund confirmation for order #{{get-order.order_number}}'
          body: 'Hi {{get-order.customer.first_name}}, your refund of {{refund_amount}} {{get-order.currency}} has been processed. Reason: {{reason}}. It may take 5-10 business days to appear on your statement.'
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: orders
      path: /orders/{{order_id}}.json
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-order
        method: GET
    - name: refunds
      path: /orders/{{order_id}}/refunds.json
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: create-refund
        method: POST
  - type: http
    namespace: zendesk
    baseUri: https://{{zendesk_subdomain}}.zendesk.com/api/v2
    authentication:
      type: bearer
      token: $secrets.zendesk_api_token
    resources:
    - name: tickets
      path: /tickets.json
      operations:
      - name: create-ticket
        method: POST
  - type: http
    namespace: sendgrid
    baseUri: https://api.sendgrid.com/v3
    authentication:
      type: bearer
      token: $secrets.sendgrid_api_key
    resources:
    - name: mail
      path: /mail/send
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → refund-processing-with-zendesk-ticket.yml

Fetches a Shopify custom collection by ID, returning title, description, image, published status, and sort order.

naftiko: '0.5'
info:
  label: Storefront Collection Retrieval
  description: Fetches a Shopify custom collection by ID, returning title, description, image, published status, and sort order.
  tags:
  - e-commerce
  - collections
  - shopify
capability:
  exposes:
  - type: mcp
    namespace: product-catalog
    port: 8080
    tools:
    - name: get-collection
      description: Retrieve a Shopify custom collection by ID. Returns title, body HTML, image, and sort order.
      inputParameters:
      - name: collection_id
        in: body
        type: string
        description: The Shopify custom collection ID.
      call: shopify-admin.get-collection
      with:
        collection_id: '{{collection_id}}'
  consumes:
  - type: http
    namespace: shopify-admin
    baseUri: https://{{shop_domain}}/admin/api/2024-01
    authentication:
      type: bearer
      token: $secrets.shopify_admin_token
    resources:
    - name: custom-collections
      path: /custom_collections/{{collection_id}}.json
      inputParameters:
      - name: collection_id
        in: path
      operations:
      - name: get-collection
        method: GET
Open in Framework → View in Fleet → storefront-collection-retrieval.yml

When a guest complaint is received, creates a Salesforce case, looks up the order in Oracle, and notifies the guest services team via Slack.

naftiko: '0.5'
info:
  label: Customer Complaint to Case and Refund
  description: When a guest complaint is received, creates a Salesforce case, looks up the order in Oracle, and notifies the guest services team via Slack.
  tags:
  - customer-service
  - salesforce
  - oracle
  - slack
  - refund
capability:
  exposes:
  - type: mcp
    namespace: guest-services
    port: 8080
    tools:
    - name: process-guest-complaint
      description: Given a guest email and order number, create a Salesforce case, look up the Oracle order, and notify guest services. Use for guest complaint resolution.
      inputParameters:
      - name: guest_email
        in: body
        type: string
        description: Guest email address.
      - name: order_number
        in: body
        type: string
        description: Order number.
      - name: complaint_description
        in: body
        type: string
        description: Complaint description.
      steps:
      - name: lookup-order
        type: call
        call: oracle.get-order
        with:
          order_number: '{{order_number}}'
      - name: create-case
        type: call
        call: salesforce.create-case
        with:
          subject: 'Guest complaint: Order {{order_number}}'
          description: '{{complaint_description}}'
          contact_email: '{{guest_email}}'
      - name: notify-team
        type: call
        call: slack.post-message
        with:
          channel: guest-services
          text: 'New complaint case {{create-case.case_number}} for order {{order_number}}. Guest: {{guest_email}}.'
  consumes:
  - type: http
    namespace: oracle
    baseUri: https://target.oraclecloud.com/fscmRestApi/resources/v2
    authentication:
      type: basic
      username: $secrets.oracle_user
      password: $secrets.oracle_password
    resources:
    - name: orders
      path: /salesOrders/{{order_number}}
      inputParameters:
      - name: order_number
        in: path
      operations:
      - name: get-order
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://target.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: cases
      path: /sobjects/Case
      operations:
      - name: create-case
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → customer-complaint-to-case-and-refund.yml

When a HubSpot contact meets lead criteria, creates a Salesforce lead and notifies sales via Slack.

naftiko: '0.5'
info:
  label: HubSpot Lead to Salesforce Sync
  description: When a HubSpot contact meets lead criteria, creates a Salesforce lead and notifies sales via Slack.
  tags:
  - marketing
  - hubspot
  - salesforce
  - slack
capability:
  exposes:
  - type: mcp
    namespace: lead-ops
    port: 8080
    tools:
    - name: sync-lead
      description: Given a HubSpot contact ID, fetch details, create Salesforce lead, and notify sales.
      inputParameters:
      - name: contact_id
        in: body
        type: string
        description: HubSpot contact ID.
      steps:
      - name: get-contact
        type: call
        call: hubspot.get-contact
        with:
          contact_id: '{{contact_id}}'
      - name: create-lead
        type: call
        call: salesforce.create-lead
        with:
          first_name: '{{get-contact.firstname}}'
          last_name: '{{get-contact.lastname}}'
          email: '{{get-contact.email}}'
          company: '{{get-contact.company}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: sales-leads
          text: 'New MQL: {{get-contact.firstname}} {{get-contact.lastname}} at {{get-contact.company}}. Lead: {{create-lead.id}}.'
  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/{{contact_id}}
      inputParameters:
      - name: contact_id
        in: path
      operations:
      - name: get-contact
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://target.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: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → hubspot-lead-to-salesforce-sync.yml

Fetches open pull requests across Target engineering repositories and posts a morning digest to the engineering Microsoft Teams channel to prioritize daily code review.

naftiko: '0.5'
info:
  label: GitHub Pull Request Morning Digest
  description: Fetches open pull requests across Target engineering repositories and posts a morning digest to the engineering Microsoft Teams channel to prioritize daily code review.
  tags:
  - devops
  - github
  - microsoft-teams
  - code-review
  - reporting
  - engineering
capability:
  exposes:
  - type: mcp
    namespace: eng-morning
    port: 8080
    tools:
    - name: publish-pr-digest
      description: Given a GitHub repo, fetch all open pull requests and post a morning digest to the Microsoft Teams engineering channel with PR count and oldest PR age. Use as a daily 8am scheduled agent.
      inputParameters:
      - name: owner
        in: body
        type: string
        description: GitHub organization or owner name.
      - name: repo
        in: body
        type: string
        description: GitHub repository name.
      steps:
      - name: get-open-prs
        type: call
        call: github-prs.list-pull-requests
        with:
          owner: '{{owner}}'
          repo: '{{repo}}'
          state: open
      - name: post-pr-digest
        type: call
        call: msteams-eng-digest.send-channel-message
        with:
          team_id: $secrets.msteams_eng_team_id
          channel_id: $secrets.msteams_eng_channel_id
          content: 'Good morning! Open PRs in {{repo}}: {{get-open-prs.total_count}}. Review and merge to keep the pipeline green.'
  consumes:
  - type: http
    namespace: github-prs
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: pull-requests
      path: /repos/{{owner}}/{{repo}}/pulls
      inputParameters:
      - name: owner
        in: path
      - name: repo
        in: path
      - name: state
        in: query
      operations:
      - name: list-pull-requests
        method: GET
  - type: http
    namespace: msteams-eng-digest
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → github-pull-request-morning-digest.yml

Retrieves A/B test performance data from Adobe Analytics for Target.com digital experiments and posts a results summary to the digital product Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Adobe Analytics A/B Test Results Digest
  description: Retrieves A/B test performance data from Adobe Analytics for Target.com digital experiments and posts a results summary to the digital product Microsoft Teams channel.
  tags:
  - marketing
  - adobe-analytics
  - microsoft-teams
  - ab-testing
  - digital
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: experimentation
    port: 8080
    tools:
    - name: digest-ab-test-results
      description: Given an Adobe Analytics report suite and test segment IDs, fetch conversion metrics for A/B test variants and post a winner summary to the digital product Microsoft Teams channel. Use at experiment conclusion or weekly experiment review.
      inputParameters:
      - name: report_suite_id
        in: body
        type: string
        description: Adobe Analytics report suite ID containing test data.
      - name: test_name
        in: body
        type: string
        description: Name of the A/B test to report on.
      - name: start_date
        in: body
        type: string
        description: Test start date in YYYY-MM-DD format.
      - name: end_date
        in: body
        type: string
        description: Test end date in YYYY-MM-DD format.
      steps:
      - name: get-test-metrics
        type: call
        call: adobe-ab.run-report
        with:
          report_suite_id: '{{report_suite_id}}'
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
      - name: post-results
        type: call
        call: msteams-product.send-channel-message
        with:
          team_id: $secrets.msteams_product_team_id
          channel_id: $secrets.msteams_product_channel_id
          content: 'A/B test results: {{test_name}} | Period: {{start_date}} to {{end_date}} | Metrics retrieved from Adobe Analytics. Review full breakdown for statistical significance.'
  consumes:
  - type: http
    namespace: adobe-ab
    baseUri: https://analytics.adobe.io/api
    authentication:
      type: bearer
      token: $secrets.adobe_access_token
    resources:
    - name: reports
      path: /{{report_suite_id}}/reports
      inputParameters:
      - name: report_suite_id
        in: path
      operations:
      - name: run-report
        method: POST
  - type: http
    namespace: msteams-product
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → adobe-analytics-a-b-test-results-digest.yml

When an employee is terminated in Workday, deactivates their Microsoft 365 account, closes their open ServiceNow tickets, and notifies HR operations via Microsoft Teams.

naftiko: '0.5'
info:
  label: Workday Employee Offboarding
  description: When an employee is terminated in Workday, deactivates their Microsoft 365 account, closes their open ServiceNow tickets, and notifies HR operations via Microsoft Teams.
  tags:
  - hr
  - workday
  - microsoft-teams
  - servicenow
  - offboarding
capability:
  exposes:
  - type: mcp
    namespace: hr-offboarding
    port: 8080
    tools:
    - name: offboard-employee
      description: 'Given a Workday worker ID and Microsoft 365 user ID, deactivate the M365 account via Microsoft Graph, search for open ServiceNow tickets, and notify #hr-ops in Teams. Use on confirmed termination in Workday.'
      inputParameters:
      - name: worker_id
        in: body
        type: string
        description: Workday worker ID of the departing employee.
      - name: m365_user_id
        in: body
        type: string
        description: Microsoft 365 user object ID to deactivate.
      - name: snow_user_email
        in: body
        type: string
        description: ServiceNow user email to search for open tickets.
      steps:
      - name: disable-m365-account
        type: call
        call: graph-users.update-user
        with:
          user_id: '{{m365_user_id}}'
          accountEnabled: 'false'
      - name: find-open-tickets
        type: call
        call: snow-offboard.query-incidents
        with:
          caller_id: '{{snow_user_email}}'
          state: '1'
      - name: notify-hr
        type: call
        call: msteams-hr.send-channel-message
        with:
          team_id: $secrets.msteams_hr_team_id
          channel_id: $secrets.msteams_hr_channel_id
          content: 'Offboarding complete for worker {{worker_id}}. M365 account {{m365_user_id}} disabled. Open ServiceNow tickets: {{find-open-tickets.total_count}} — reassign before departure.'
  consumes:
  - type: http
    namespace: graph-users
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: user-record
      path: /users/{{user_id}}
      inputParameters:
      - name: user_id
        in: path
      operations:
      - name: update-user
        method: PATCH
  - type: http
    namespace: snow-offboard
    baseUri: https://target.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      inputParameters:
      - name: caller_id
        in: query
      - name: state
        in: query
      operations:
      - name: query-incidents
        method: GET
  - type: http
    namespace: msteams-hr
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → workday-employee-offboarding.yml

When New Relic detects an error rate spike post-deployment, triggers a GitHub Actions rollback and creates a ServiceNow incident.

naftiko: '0.5'
info:
  label: New Relic Error Rate Rollback Trigger
  description: When New Relic detects an error rate spike post-deployment, triggers a GitHub Actions rollback and creates a ServiceNow incident.
  tags:
  - devops
  - new-relic
  - github
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: deploy-ops
    port: 8080
    tools:
    - name: handle-error-spike
      description: Given a New Relic app ID, trigger rollback and create incident.
      inputParameters:
      - name: app_id
        in: body
        type: string
        description: New Relic app ID.
      - name: repo_name
        in: body
        type: string
        description: GitHub repo.
      - name: previous_sha
        in: body
        type: string
        description: SHA to roll back to.
      steps:
      - name: get-metrics
        type: call
        call: newrelic.get-app-metrics
        with:
          app_id: '{{app_id}}'
      - name: trigger-rollback
        type: call
        call: github.dispatch-workflow
        with:
          repo: '{{repo_name}}'
          workflow: rollback.yml
          inputs_sha: '{{previous_sha}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          category: deployment
          urgency: 1
          short_description: 'Auto-rollback: {{repo_name}} — error rate {{get-metrics.error_percentage}}%'
  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
  - 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: dispatch-workflow
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://target.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → new-relic-error-rate-rollback-trigger.yml

When a goods receipt is posted in Oracle ERP, updates the Snowflake inventory table and notifies the warehouse Slack channel.

naftiko: '0.5'
info:
  label: Oracle Goods Receipt to Inventory Update
  description: When a goods receipt is posted in Oracle ERP, updates the Snowflake inventory table and notifies the warehouse Slack channel.
  tags:
  - supply-chain
  - oracle
  - snowflake
  - slack
  - inventory
capability:
  exposes:
  - type: mcp
    namespace: warehouse-ops
    port: 8080
    tools:
    - name: process-goods-receipt
      description: Given an Oracle receipt number, fetch receipt details, update Snowflake inventory, and notify the warehouse team. Use when shipments arrive at distribution centers.
      inputParameters:
      - name: receipt_number
        in: body
        type: string
        description: Oracle goods receipt number.
      - name: dc_code
        in: body
        type: string
        description: Distribution center code.
      steps:
      - name: get-receipt
        type: call
        call: oracle.get-receipt
        with:
          receipt_number: '{{receipt_number}}'
      - name: update-inventory
        type: call
        call: snowflake.execute-statement
        with:
          statement: UPDATE SUPPLY_CHAIN.INVENTORY SET on_hand_qty = on_hand_qty + {{get-receipt.quantity}} WHERE dpci = '{{get-receipt.item_number}}' AND dc_code = '{{dc_code}}'
      - name: notify-warehouse
        type: call
        call: slack.post-message
        with:
          channel: warehouse-{{dc_code}}
          text: 'Goods receipt {{receipt_number}} processed: {{get-receipt.quantity}} units of {{get-receipt.item_number}} at DC {{dc_code}}.'
  consumes:
  - type: http
    namespace: oracle
    baseUri: https://target.oraclecloud.com/fscmRestApi/resources/v2
    authentication:
      type: basic
      username: $secrets.oracle_user
      password: $secrets.oracle_password
    resources:
    - name: receipts
      path: /receivingReceipts/{{receipt_number}}
      inputParameters:
      - name: receipt_number
        in: path
      operations:
      - name: get-receipt
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://target.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: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → oracle-goods-receipt-to-inventory-update.yml

Retrieves vendor master data from Oracle ERP by supplier ID including name, payment terms, and status.

naftiko: '0.5'
info:
  label: Oracle ERP Vendor Lookup
  description: Retrieves vendor master data from Oracle ERP by supplier ID including name, payment terms, and status.
  tags:
  - procurement
  - oracle
  - vendor
capability:
  exposes:
  - type: mcp
    namespace: procurement
    port: 8080
    tools:
    - name: get-vendor
      description: Given an Oracle supplier ID, return the vendor name, payment terms, status, and address. Use for supplier verification during procurement.
      inputParameters:
      - name: supplier_id
        in: body
        type: string
        description: Oracle supplier ID.
      call: oracle.get-supplier
      with:
        supplier_id: '{{supplier_id}}'
      outputParameters:
      - name: supplier_name
        type: string
        mapping: $.SupplierName
      - name: payment_terms
        type: string
        mapping: $.PaymentTerms
  consumes:
  - type: http
    namespace: oracle
    baseUri: https://target.oraclecloud.com/fscmRestApi/resources/v2
    authentication:
      type: basic
      username: $secrets.oracle_user
      password: $secrets.oracle_password
    resources:
    - name: suppliers
      path: /suppliers/{{supplier_id}}
      inputParameters:
      - name: supplier_id
        in: path
      operations:
      - name: get-supplier
        method: GET
Open in Framework → View in Fleet → oracle-erp-vendor-lookup.yml

When a new team member is created in Workday, opens a ServiceNow onboarding ticket, provisions Okta access, and sends a Microsoft Teams welcome message.

naftiko: '0.5'
info:
  label: New Team Member Onboarding Orchestrator
  description: When a new team member is created in Workday, opens a ServiceNow onboarding ticket, provisions Okta access, and sends a Microsoft Teams welcome message.
  tags:
  - hr
  - onboarding
  - workday
  - servicenow
  - okta
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-onboarding
    port: 8080
    tools:
    - name: trigger-onboarding
      description: Given a Workday worker ID and start date, orchestrate onboarding across ServiceNow, Okta, and Teams. Use when new team members join.
      inputParameters:
      - name: worker_id
        in: body
        type: string
        description: Workday worker ID.
      - name: start_date
        in: body
        type: string
        description: Start date in YYYY-MM-DD.
      - name: store_number
        in: body
        type: string
        description: Target store number.
      steps:
      - name: get-worker
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{worker_id}}'
      - name: provision-okta
        type: call
        call: okta.create-user
        with:
          email: '{{get-worker.work_email}}'
          first_name: '{{get-worker.first_name}}'
          last_name: '{{get-worker.last_name}}'
      - name: open-ticket
        type: call
        call: servicenow.create-incident
        with:
          category: hr_onboarding
          short_description: 'Onboarding: {{get-worker.full_name}} — Store {{store_number}}'
      - name: send-welcome
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-worker.work_email}}'
          text: 'Welcome to Target, {{get-worker.first_name}}! Your start date is {{start_date}}. Onboarding ticket: {{open-ticket.number}}.'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /target/workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: okta
    baseUri: https://target.okta.com/api/v1
    authentication:
      type: bearer
      token: $secrets.okta_token
    resources:
    - name: users
      path: /users
      operations:
      - name: create-user
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://target.service-now.com/api/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: chats
      path: /users/{{recipient_upn}}/chats
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → new-team-member-onboarding-orchestrator.yml

When ad spend exceeds budget, logs anomaly in Snowflake and alerts marketing via Slack.

naftiko: '0.5'
info:
  label: Ad Spend Anomaly Responder
  description: When ad spend exceeds budget, logs anomaly in Snowflake and alerts marketing via Slack.
  tags:
  - marketing
  - snowflake
  - slack
  - advertising
capability:
  exposes:
  - type: mcp
    namespace: ad-ops
    port: 8080
    tools:
    - name: handle-spend-anomaly
      description: Given a campaign ID and spend, log anomaly and notify marketing.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: Campaign ID.
      - name: current_spend
        in: body
        type: string
        description: Current spend.
      - name: budget_limit
        in: body
        type: string
        description: Budget limit.
      steps:
      - name: log-anomaly
        type: call
        call: snowflake.execute-statement
        with:
          statement: INSERT INTO MARKETING.SPEND_ANOMALIES (campaign_id, current_spend, budget_limit, detected_at) VALUES ('{{campaign_id}}', {{current_spend}}, {{budget_limit}}, CURRENT_TIMESTAMP())
      - name: alert
        type: call
        call: slack.post-message
        with:
          channel: marketing-alerts
          text: 'Ad spend anomaly: Campaign {{campaign_id}} at ${{current_spend}} (budget: ${{budget_limit}}).'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://target.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: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → ad-spend-anomaly-responder.yml

Retrieves Datadog SLO status for Target's digital commerce platform and posts a weekly compliance report to the platform engineering Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Datadog SLO Compliance Report
  description: Retrieves Datadog SLO status for Target's digital commerce platform and posts a weekly compliance report to the platform engineering Microsoft Teams channel.
  tags:
  - devops
  - datadog
  - microsoft-teams
  - observability
  - slo
  - reliability
capability:
  exposes:
  - type: mcp
    namespace: reliability-ops
    port: 8080
    tools:
    - name: report-slo-compliance
      description: Given a Datadog SLO ID, retrieve current status and error budget remaining, then post a compliance report to the Microsoft Teams platform-engineering channel. Use weekly for reliability reviews.
      inputParameters:
      - name: slo_id
        in: body
        type: string
        description: Datadog SLO ID to report compliance for.
      steps:
      - name: get-slo
        type: call
        call: dd-slo.get-slo
        with:
          slo_id: '{{slo_id}}'
      - name: post-slo-report
        type: call
        call: msteams-platform.send-channel-message
        with:
          team_id: $secrets.msteams_platform_team_id
          channel_id: $secrets.msteams_platform_channel_id
          content: 'SLO Compliance {{slo_id}}: Status {{get-slo.data.overall_status}} | Error budget remaining: {{get-slo.data.overall_error_budget_remaining}}%'
  consumes:
  - type: http
    namespace: dd-slo
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: slos
      path: /slo/{{slo_id}}
      inputParameters:
      - name: slo_id
        in: path
      operations:
      - name: get-slo
        method: GET
  - type: http
    namespace: msteams-platform
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → datadog-slo-compliance-report.yml

Queries Snowflake for seasonal demand patterns, creates Workday requisitions for peak staffing, and notifies regional HR via Teams.

naftiko: '0.5'
info:
  label: Seasonal Workforce Planning Orchestrator
  description: Queries Snowflake for seasonal demand patterns, creates Workday requisitions for peak staffing, and notifies regional HR via Teams.
  tags:
  - hr
  - workforce-planning
  - snowflake
  - workday
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: workforce-planning
    port: 8080
    tools:
    - name: plan-seasonal-hiring
      description: Given a district and season, query demand, create requisitions, and notify HR.
      inputParameters:
      - name: district
        in: body
        type: string
        description: District code.
      - name: season
        in: body
        type: string
        description: Season name.
      steps:
      - name: get-forecast
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT store_id, AVG(peak_headcount) as avg_peak FROM HR.SEASONAL_DEMAND WHERE district = '{{district}}' AND season = '{{season}}' GROUP BY store_id
      - name: create-requisitions
        type: call
        call: workday.create-requisition
        with:
          district: '{{district}}'
          job_profile: Seasonal Team Member
          positions: '{{get-forecast.total_positions}}'
      - name: notify-hr
        type: call
        call: msteams.send-channel-message
        with:
          team_id: regional-hr
          channel: '{{district}}'
          text: 'Seasonal hiring for {{district}} ({{season}}): {{get-forecast.total_positions}} positions.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://target.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: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: requisitions
      path: /target/jobRequisitions
      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
Open in Framework → View in Fleet → seasonal-workforce-planning-orchestrator.yml

When a Databricks ML model shows drift, logs the event in Snowflake, creates a Jira ticket, and alerts data science via Slack.

naftiko: '0.5'
info:
  label: Databricks Model Drift Handler
  description: When a Databricks ML model shows drift, logs the event in Snowflake, creates a Jira ticket, and alerts data science via Slack.
  tags:
  - data-science
  - databricks
  - snowflake
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: ml-ops
    port: 8080
    tools:
    - name: handle-model-drift
      description: Given a model name and drift score, log event, create ticket, and alert team.
      inputParameters:
      - name: model_name
        in: body
        type: string
        description: Model name.
      - name: drift_score
        in: body
        type: string
        description: Drift score.
      steps:
      - name: log-event
        type: call
        call: snowflake.execute-statement
        with:
          statement: INSERT INTO ML_OPS.MODEL_DRIFT_LOG (model_name, drift_score, detected_at) VALUES ('{{model_name}}', {{drift_score}}, CURRENT_TIMESTAMP())
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: MLOPS
          issue_type: Task
          summary: 'Model drift: {{model_name}} — {{drift_score}}'
      - name: alert
        type: call
        call: slack.post-message
        with:
          channel: data-science-alerts
          text: 'Model drift: {{model_name}} score {{drift_score}}. Jira: {{create-ticket.key}}.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://target.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://target.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → databricks-model-drift-handler.yml

Triggers a Power BI dataset refresh for the weekly retail sales performance report and notifies the merchandising team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Power BI Weekly Retail Sales Report Refresh
  description: Triggers a Power BI dataset refresh for the weekly retail sales performance report and notifies the merchandising team via Microsoft Teams.
  tags:
  - data
  - power-bi
  - microsoft-teams
  - reporting
  - retail
  - sales
capability:
  exposes:
  - type: mcp
    namespace: bi-reporting
    port: 8080
    tools:
    - name: refresh-weekly-sales-report
      description: Given a Power BI workspace and dataset ID for the weekly retail sales report, trigger a dataset refresh and notify the merchandising Microsoft Teams channel. Use every Monday morning or after Oracle ERP data loads complete.
      inputParameters:
      - name: workspace_id
        in: body
        type: string
        description: Power BI workspace ID containing the retail sales dataset.
      - name: dataset_id
        in: body
        type: string
        description: Power BI dataset ID to refresh.
      steps:
      - name: trigger-refresh
        type: call
        call: pbi-sales.refresh-dataset
        with:
          workspace_id: '{{workspace_id}}'
          dataset_id: '{{dataset_id}}'
      - name: notify-merchandising
        type: call
        call: msteams-merch.send-channel-message
        with:
          team_id: $secrets.msteams_merch_team_id
          channel_id: $secrets.msteams_merch_channel_id
          content: Weekly retail sales report refresh triggered for dataset {{dataset_id}}. Report will be current within minutes.
  consumes:
  - type: http
    namespace: pbi-sales
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: dataset-refresh
      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-merch
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → power-bi-weekly-retail-sales-report-refresh.yml

When Datadog detects Target.com checkout performance degradation, creates a ServiceNow P1 incident and notifies the digital engineering on-call team in Microsoft Teams.

naftiko: '0.5'
info:
  label: Datadog E-commerce Performance Alert
  description: When Datadog detects Target.com checkout performance degradation, creates a ServiceNow P1 incident and notifies the digital engineering on-call team in Microsoft Teams.
  tags:
  - devops
  - datadog
  - servicenow
  - microsoft-teams
  - ecommerce
  - incident-response
capability:
  exposes:
  - type: mcp
    namespace: ecomm-ops
    port: 8080
    tools:
    - name: handle-ecommerce-alert
      description: Given a Datadog monitor ID for Target.com checkout performance, retrieve monitor details, create a P1 ServiceNow incident, and notify the digital engineering on-call channel in Microsoft Teams. Use for automated alerting on checkout and payment performance violations.
      inputParameters:
      - name: monitor_id
        in: body
        type: integer
        description: Datadog monitor ID detecting e-commerce performance issues.
      - name: alert_message
        in: body
        type: string
        description: Alert body from the Datadog notification.
      steps:
      - name: get-monitor
        type: call
        call: dd-ecomm.get-monitor
        with:
          monitor_id: '{{monitor_id}}'
      - name: create-p1-incident
        type: call
        call: snow-ecomm.create-incident
        with:
          category: ecommerce_performance
          short_description: 'Target.com performance alert: {{alert_message}}'
          assigned_group: Digital_Engineering
          priority: '1'
          description: 'Datadog monitor {{monitor_id}} ({{get-monitor.name}}) fired. Alert: {{alert_message}}'
      - name: notify-oncall
        type: call
        call: msteams-oncall.send-channel-message
        with:
          team_id: $secrets.msteams_digital_team_id
          channel_id: $secrets.msteams_oncall_channel_id
          content: 'P1 ECOMMERCE ALERT: {{alert_message}} | Monitor: {{monitor_id}} | Incident: {{create-p1-incident.number}} | Immediate action required'
  consumes:
  - type: http
    namespace: dd-ecomm
    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: snow-ecomm
    baseUri: https://target.service-now.com/api/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-oncall
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → datadog-e-commerce-performance-alert.yml

Triggers a Snowflake data pipeline refresh for Target Circle loyalty program analytics and notifies the loyalty team in Microsoft Teams when complete.

naftiko: '0.5'
info:
  label: Snowflake Customer Loyalty Analytics Refresh
  description: Triggers a Snowflake data pipeline refresh for Target Circle loyalty program analytics and notifies the loyalty team in Microsoft Teams when complete.
  tags:
  - data
  - snowflake
  - microsoft-teams
  - loyalty
  - retail
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: loyalty-analytics
    port: 8080
    tools:
    - name: refresh-loyalty-analytics
      description: Given a Snowflake database and schema for loyalty data, trigger the ETL task pipeline and notify the loyalty team Microsoft Teams channel. Use weekly or after bulk loyalty transaction uploads.
      inputParameters:
      - name: database
        in: body
        type: string
        description: Snowflake database containing loyalty analytics tables.
      - name: schema
        in: body
        type: string
        description: Snowflake schema for Target Circle loyalty data.
      - name: task_name
        in: body
        type: string
        description: Snowflake task name to resume and trigger.
      steps:
      - name: resume-task
        type: call
        call: snowflake-loyalty.resume-task
        with:
          database: '{{database}}'
          schema: '{{schema}}'
          task_name: '{{task_name}}'
      - name: notify-loyalty-team
        type: call
        call: msteams-loyalty.send-channel-message
        with:
          team_id: $secrets.msteams_loyalty_team_id
          channel_id: $secrets.msteams_loyalty_channel_id
          content: 'Loyalty analytics pipeline triggered: {{database}}.{{schema}}.{{task_name}}. Data refresh in progress.'
  consumes:
  - type: http
    namespace: snowflake-loyalty
    baseUri: https://target.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: task-resume
      path: /databases/{{database}}/schemas/{{schema}}/tasks/{{task_name}}:resume
      inputParameters:
      - name: database
        in: path
      - name: schema
        in: path
      - name: task_name
        in: path
      operations:
      - name: resume-task
        method: POST
  - type: http
    namespace: msteams-loyalty
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → snowflake-customer-loyalty-analytics-refresh.yml

Checks drive-up order readiness in Oracle, updates the Salesforce case, and notifies the store fulfillment team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Drive Up Order Fulfillment Tracker
  description: Checks drive-up order readiness in Oracle, updates the Salesforce case, and notifies the store fulfillment team via Microsoft Teams.
  tags:
  - e-commerce
  - oracle
  - salesforce
  - microsoft-teams
  - fulfillment
capability:
  exposes:
  - type: mcp
    namespace: fulfillment
    port: 8080
    tools:
    - name: track-drive-up-order
      description: Given an order number and store, check fulfillment status and notify the store team.
      inputParameters:
      - name: order_number
        in: body
        type: string
        description: Order number.
      - name: store_number
        in: body
        type: string
        description: Store number.
      steps:
      - name: get-status
        type: call
        call: oracle.get-order-status
        with:
          order_number: '{{order_number}}'
      - name: notify-store
        type: call
        call: msteams.send-channel-message
        with:
          team_id: fulfillment
          channel: store-{{store_number}}
          text: 'Drive up order {{order_number}}: {{get-status.fulfillment_status}}. Items: {{get-status.item_count}}.'
  consumes:
  - type: http
    namespace: oracle
    baseUri: https://target.oraclecloud.com/fscmRestApi/resources/v2
    authentication:
      type: basic
      username: $secrets.oracle_user
      password: $secrets.oracle_password
    resources:
    - name: orders
      path: /salesOrders/{{order_number}}
      inputParameters:
      - name: order_number
        in: path
      operations:
      - name: get-order-status
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → drive-up-order-fulfillment-tracker.yml

Retrieves an Adobe Analytics segment definition by ID.

naftiko: '0.5'
info:
  label: Adobe Analytics Segment Lookup
  description: Retrieves an Adobe Analytics segment definition by ID.
  tags:
  - marketing
  - adobe-analytics
  - segmentation
capability:
  exposes:
  - type: mcp
    namespace: marketing
    port: 8080
    tools:
    - name: get-segment
      description: Given an Adobe Analytics segment ID, return its name and definition. Use for marketing campaign audience reviews.
      inputParameters:
      - name: segment_id
        in: body
        type: string
        description: Adobe Analytics segment ID.
      call: adobe-analytics.get-segment
      with:
        segment_id: '{{segment_id}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.name
      - name: definition
        type: object
        mapping: $.definition
  consumes:
  - type: http
    namespace: adobe-analytics
    baseUri: https://analytics.adobe.io/api/target
    authentication:
      type: bearer
      token: $secrets.adobe_analytics_token
    resources:
    - name: segments
      path: /segments/{{segment_id}}
      inputParameters:
      - name: segment_id
        in: path
      operations:
      - name: get-segment
        method: GET
Open in Framework → View in Fleet → adobe-analytics-segment-lookup.yml

Generates SEO-optimized product descriptions for Target's online catalog using Anthropic Claude, given product name, category, and key attributes.

naftiko: '0.5'
info:
  label: Anthropic AI Product Description Generation
  description: Generates SEO-optimized product descriptions for Target's online catalog using Anthropic Claude, given product name, category, and key attributes.
  tags:
  - ai
  - anthropic
  - marketing
  - content
  - automation
capability:
  exposes:
  - type: mcp
    namespace: content-ai
    port: 8080
    tools:
    - name: generate-product-description
      description: Given a product name, category, and key attributes, generate an SEO-optimized product description for Target's online catalog using Anthropic Claude. Use for bulk product content generation or individual item listing updates.
      inputParameters:
      - name: product_name
        in: body
        type: string
        description: Product name as it will appear on Target.com.
      - name: category
        in: body
        type: string
        description: Product category (e.g. Home Decor, Apparel, Electronics).
      - name: key_attributes
        in: body
        type: string
        description: Comma-separated list of key product features and attributes.
      call: anthropic-content.create-message
      with:
        model: claude-opus-4-5
        max_tokens: 200
        messages: '[{"role":"user","content":"Write a concise, SEO-optimized product description for Target.com:\n\nProduct: {{product_name}}\nCategory: {{category}}\nKey features: {{key_attributes}}\n\nKeep it under 150 words, highlight benefits, and use an approachable tone."}]'
      outputParameters:
      - name: description
        type: string
        mapping: $.content[0].text
  consumes:
  - type: http
    namespace: anthropic-content
    baseUri: https://api.anthropic.com/v1
    authentication:
      type: apikey
      key: x-api-key
      value: $secrets.anthropic_api_key
      placement: header
    resources:
    - name: messages
      path: /messages
      operations:
      - name: create-message
        method: POST
Open in Framework → View in Fleet → anthropic-ai-product-description-generation.yml

When an employee changes roles in Workday, creates a ServiceNow access change request and notifies IT via Microsoft Teams to update system access entitlements.

naftiko: '0.5'
info:
  label: Workday Role Change Access Update
  description: When an employee changes roles in Workday, creates a ServiceNow access change request and notifies IT via Microsoft Teams to update system access entitlements.
  tags:
  - hr
  - workday
  - servicenow
  - microsoft-teams
  - access-management
  - identity
capability:
  exposes:
  - type: mcp
    namespace: access-ops
    port: 8080
    tools:
    - name: provision-role-change-access
      description: Given a Workday worker ID, old job profile, and new job profile, create a ServiceNow access change request for IT to update application entitlements, and notify the IT access team in Microsoft Teams. Use on Workday position-change events.
      inputParameters:
      - name: worker_id
        in: body
        type: string
        description: Workday worker ID for the employee changing roles.
      - name: old_job_profile
        in: body
        type: string
        description: Previous job profile or role name.
      - name: new_job_profile
        in: body
        type: string
        description: New job profile or role name.
      steps:
      - name: get-worker
        type: call
        call: workday-role.get-worker
        with:
          worker_id: '{{worker_id}}'
      - name: create-access-request
        type: call
        call: snow-access.create-request
        with:
          short_description: 'Access update: {{get-worker.fullName}} from {{old_job_profile}} to {{new_job_profile}}'
          assigned_group: IT_Access_Management
          description: Worker {{worker_id}} role change. Update system entitlements from {{old_job_profile}} to {{new_job_profile}} access profile.
      - name: notify-it-access
        type: call
        call: msteams-access.send-channel-message
        with:
          team_id: $secrets.msteams_it_team_id
          channel_id: $secrets.msteams_access_channel_id
          content: 'Access update needed: {{get-worker.fullName}} ({{worker_id}}) moved from {{old_job_profile}} to {{new_job_profile}}. Request: {{create-access-request.number}}'
  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: /workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: snow-access
    baseUri: https://target.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: service-requests
      path: /table/sc_request
      operations:
      - name: create-request
        method: POST
  - type: http
    namespace: msteams-access
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → workday-role-change-access-update.yml

Queries Oracle for accounts payable aging data, loads results into Snowflake, and distributes the report via Microsoft Teams to the finance team.

naftiko: '0.5'
info:
  label: Oracle AP Aging Report Generator
  description: Queries Oracle for accounts payable aging data, loads results into Snowflake, and distributes the report via Microsoft Teams to the finance team.
  tags:
  - finance
  - oracle
  - snowflake
  - microsoft-teams
  - accounts-payable
capability:
  exposes:
  - type: mcp
    namespace: ap-reporting
    port: 8080
    tools:
    - name: generate-ap-aging-report
      description: Given a reporting date, query AP aging from Oracle, load to Snowflake, and notify finance.
      inputParameters:
      - name: report_date
        in: body
        type: string
        description: Reporting date YYYY-MM-DD.
      steps:
      - name: get-aging-data
        type: call
        call: oracle.get-ap-aging
        with:
          report_date: '{{report_date}}'
      - name: load-data
        type: call
        call: snowflake.execute-statement
        with:
          statement: INSERT INTO FINANCE.AP_AGING (report_date, current_bucket, past_30, past_60, past_90) VALUES ('{{report_date}}', {{get-aging-data.current}}, {{get-aging-data.past_30}}, {{get-aging-data.past_60}}, {{get-aging-data.past_90}})
      - name: notify-finance
        type: call
        call: msteams.send-channel-message
        with:
          team_id: finance-team
          channel: ap-reports
          text: 'AP aging report for {{report_date}}: Current ${{get-aging-data.current}}, 30-day ${{get-aging-data.past_30}}, 60-day ${{get-aging-data.past_60}}, 90+ ${{get-aging-data.past_90}}.'
  consumes:
  - type: http
    namespace: oracle
    baseUri: https://target.oraclecloud.com/fscmRestApi/resources/v2
    authentication:
      type: basic
      username: $secrets.oracle_user
      password: $secrets.oracle_password
    resources:
    - name: aging
      path: /payablesInvoices?q=AgingStatus
      operations:
      - name: get-ap-aging
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://target.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: 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
Open in Framework → View in Fleet → oracle-ap-aging-report-generator.yml

Retrieves a Salesforce account record for a retail vendor partner, summarizing open opportunities, outstanding cases, and recent activity for pre-meeting preparation.

naftiko: '0.5'
info:
  label: Salesforce Retail Account Health Summary
  description: Retrieves a Salesforce account record for a retail vendor partner, summarizing open opportunities, outstanding cases, and recent activity for pre-meeting preparation.
  tags:
  - crm
  - salesforce
  - retail
  - account-management
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: crm-ops
    port: 8080
    tools:
    - name: get-vendor-account-health
      description: Given a Salesforce account ID for a retail vendor partner, retrieve account details and open opportunities. Use before vendor review meetings or for quarterly business reviews.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: Salesforce account ID (18-char) for the vendor partner.
      steps:
      - name: get-account
        type: call
        call: sf-accounts.get-account
        with:
          account_id: '{{account_id}}'
      - name: get-opportunities
        type: call
        call: sf-opps.query-opportunities
        with:
          account_id: '{{account_id}}'
  consumes:
  - type: http
    namespace: sf-accounts
    baseUri: https://target.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: accounts
      path: /sobjects/Account/{{account_id}}
      inputParameters:
      - name: account_id
        in: path
      operations:
      - name: get-account
        method: GET
  - type: http
    namespace: sf-opps
    baseUri: https://target.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: opportunity-query
      path: /query
      inputParameters:
      - name: account_id
        in: query
      operations:
      - name: query-opportunities
        method: GET
Open in Framework → View in Fleet → salesforce-retail-account-health-summary.yml

Checks Oracle ERP for open journal entries and unposted batches in the current accounting period, and posts a close-readiness summary to the finance Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Oracle Financial Period Close Status
  description: Checks Oracle ERP for open journal entries and unposted batches in the current accounting period, and posts a close-readiness summary to the finance Microsoft Teams channel.
  tags:
  - finance
  - oracle
  - erp
  - microsoft-teams
  - period-close
  - accounting
capability:
  exposes:
  - type: mcp
    namespace: period-close
    port: 8080
    tools:
    - name: check-period-close-readiness
      description: Given an Oracle ERP ledger ID and period name, query for open journal entries and unposted batches, then post a close-readiness summary to the finance Microsoft Teams channel. Use at month-end before executing the period close.
      inputParameters:
      - name: ledger_id
        in: body
        type: integer
        description: Oracle GL ledger ID to check for open items.
      - name: period_name
        in: body
        type: string
        description: Accounting period name (e.g. Feb-2026).
      steps:
      - name: get-open-journals
        type: call
        call: oracle-gl.get-journal-entries
        with:
          ledger_id: '{{ledger_id}}'
          period_name: '{{period_name}}'
          status: unposted
      - name: post-close-status
        type: call
        call: msteams-period.send-channel-message
        with:
          team_id: $secrets.msteams_finance_team_id
          channel_id: $secrets.msteams_finance_channel_id
          content: 'Period close readiness for {{period_name}}: Unposted journal entries in Oracle: {{get-open-journals.totalResults}}. Clear all items before closing.'
  consumes:
  - type: http
    namespace: oracle-gl
    baseUri: https://target.oraclecloud.com/fscmRestApi/resources/11.13.18.05
    authentication:
      type: basic
      username: $secrets.oracle_user
      password: $secrets.oracle_password
    resources:
    - name: journal-entries
      path: /generalLedgerJournalEntries
      inputParameters:
      - name: ledger_id
        in: query
      - name: period_name
        in: query
      - name: status
        in: query
      operations:
      - name: get-journal-entries
        method: GET
  - type: http
    namespace: msteams-period
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → oracle-financial-period-close-status.yml

Retrieves employee expense reports from Oracle ERP, validates against T&E policy, and routes out-of-policy reports to the manager via Microsoft Teams for approval.

naftiko: '0.5'
info:
  label: Oracle Expense Report Processing
  description: Retrieves employee expense reports from Oracle ERP, validates against T&E policy, and routes out-of-policy reports to the manager via Microsoft Teams for approval.
  tags:
  - finance
  - oracle
  - erp
  - microsoft-teams
  - expense-management
  - approval
capability:
  exposes:
  - type: mcp
    namespace: expense-ops
    port: 8080
    tools:
    - name: process-expense-report
      description: Given an Oracle ERP expense report number, retrieve report details and check the total against the T&E policy limit. If over limit, post a review request to the Microsoft Teams finance channel. Use in the automated expense approval pipeline.
      inputParameters:
      - name: expense_report_number
        in: body
        type: string
        description: Oracle ERP expense report number to process.
      - name: policy_limit
        in: body
        type: number
        description: T&E policy limit amount in USD above which manager approval is required.
      steps:
      - name: get-expense-report
        type: call
        call: oracle-expense.get-expense-report
        with:
          report_number: '{{expense_report_number}}'
      - name: flag-for-review
        type: call
        call: msteams-expense.send-channel-message
        with:
          team_id: $secrets.msteams_finance_team_id
          channel_id: $secrets.msteams_finance_channel_id
          content: 'Expense report {{expense_report_number}} requires review. Submitted by: {{get-expense-report.EmployeeName}}. Total: {{get-expense-report.TotalAmount}} USD exceeds policy limit {{policy_limit}}. Review in Oracle ERP.'
  consumes:
  - type: http
    namespace: oracle-expense
    baseUri: https://target.oraclecloud.com/fscmRestApi/resources/11.13.18.05
    authentication:
      type: basic
      username: $secrets.oracle_user
      password: $secrets.oracle_password
    resources:
    - name: expense-reports
      path: /expenseReports/{{report_number}}
      inputParameters:
      - name: report_number
        in: path
      operations:
      - name: get-expense-report
        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: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → oracle-expense-report-processing.yml

Queries Snowflake for current inventory levels by DPCI and distribution center.

naftiko: '0.5'
info:
  label: Snowflake Inventory Level Query
  description: Queries Snowflake for current inventory levels by DPCI and distribution center.
  tags:
  - supply-chain
  - snowflake
  - inventory
capability:
  exposes:
  - type: mcp
    namespace: inventory
    port: 8080
    tools:
    - name: query-inventory
      description: Given a DPCI and distribution center code, return current on-hand quantity and days-of-supply. Use for replenishment planning.
      inputParameters:
      - name: dpci
        in: body
        type: string
        description: Target DPCI item number.
      - name: dc_code
        in: body
        type: string
        description: Distribution center code.
      call: snowflake.execute-query
      with:
        statement: SELECT dpci, on_hand_qty, in_transit_qty, days_of_supply FROM SUPPLY_CHAIN.INVENTORY WHERE dpci = '{{dpci}}' AND dc_code = '{{dc_code}}'
      outputParameters:
      - name: on_hand_qty
        type: integer
        mapping: $.data[0][1]
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://target.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: execute-query
        method: POST
Open in Framework → View in Fleet → snowflake-inventory-level-query.yml

Queries Snowflake for planogram compliance scores by store, creates Jira tickets for non-compliant stores, and notifies visual merchandising via Slack.

naftiko: '0.5'
info:
  label: Store Planogram Compliance Checker
  description: Queries Snowflake for planogram compliance scores by store, creates Jira tickets for non-compliant stores, and notifies visual merchandising via Slack.
  tags:
  - merchandising
  - snowflake
  - jira
  - slack
  - compliance
capability:
  exposes:
  - type: mcp
    namespace: visual-merch
    port: 8080
    tools:
    - name: check-planogram-compliance
      description: Given a district and compliance threshold, identify non-compliant stores and create follow-up tasks.
      inputParameters:
      - name: district
        in: body
        type: string
        description: District code.
      - name: threshold
        in: body
        type: string
        description: Minimum compliance score (0-100).
      steps:
      - name: get-scores
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT store_number, compliance_score, last_audit_date FROM MERCH.PLANOGRAM_COMPLIANCE WHERE district = '{{district}}' AND compliance_score < {{threshold}} ORDER BY compliance_score ASC
      - name: create-tickets
        type: call
        call: jira.create-issue
        with:
          project: MERCH
          issue_type: Task
          summary: 'Planogram compliance: {{get-scores.row_count}} stores below {{threshold}}% in {{district}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: visual-merchandising
          text: 'Planogram audit for {{district}}: {{get-scores.row_count}} stores below {{threshold}}% compliance. Jira: {{create-tickets.key}}.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://target.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://target.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → store-planogram-compliance-checker.yml

Queries Snowflake for daily retail sales data pipeline health, checks for stale or failed loads, and alerts the data engineering team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Snowflake Retail Sales Analytics Pipeline Check
  description: Queries Snowflake for daily retail sales data pipeline health, checks for stale or failed loads, and alerts the data engineering team via Microsoft Teams.
  tags:
  - data
  - snowflake
  - microsoft-teams
  - monitoring
  - data-engineering
  - retail
capability:
  exposes:
  - type: mcp
    namespace: data-ops
    port: 8080
    tools:
    - name: check-sales-pipeline-health
      description: Query Snowflake task history for the retail sales data pipeline and post a health status to the Microsoft Teams data-engineering channel. Use as a daily morning check before business analytics reports run.
      inputParameters:
      - name: database
        in: body
        type: string
        description: Snowflake database containing the retail sales pipeline tasks.
      - name: schema
        in: body
        type: string
        description: Snowflake schema for the retail sales ETL tasks.
      steps:
      - name: check-tasks
        type: call
        call: snowflake-pipeline.query-tasks
        with:
          database: '{{database}}'
          schema: '{{schema}}'
      - name: post-health
        type: call
        call: msteams-data.send-channel-message
        with:
          team_id: $secrets.msteams_data_team_id
          channel_id: $secrets.msteams_data_channel_id
          content: 'Retail sales pipeline health check for {{database}}.{{schema}}: Task history retrieved. Review any failed runs before reports execute.'
  consumes:
  - type: http
    namespace: snowflake-pipeline
    baseUri: https://target.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: task-history
      path: /databases/{{database}}/schemas/{{schema}}/tasks
      inputParameters:
      - name: database
        in: path
      - name: schema
        in: path
      operations:
      - name: query-tasks
        method: GET
  - type: http
    namespace: 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: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → snowflake-retail-sales-analytics-pipeline-check.yml

When a new store associate is hired in Workday, creates a ServiceNow onboarding ticket, provisions Microsoft 365 access, and sends a Teams welcome message to the store manager.

naftiko: '0.5'
info:
  label: Workday New Store Associate Onboarding
  description: When a new store associate is hired in Workday, creates a ServiceNow onboarding ticket, provisions Microsoft 365 access, and sends a Teams welcome message to the store manager.
  tags:
  - hr
  - workday
  - servicenow
  - microsoft-teams
  - onboarding
capability:
  exposes:
  - type: mcp
    namespace: hr-ops
    port: 8080
    tools:
    - name: onboard-store-associate
      description: Given a Workday worker ID and store number, fetch new hire details, open a ServiceNow onboarding ticket for IT provisioning, and send a Teams welcome message to the store manager. Use when a new store associate hire is confirmed in Workday.
      inputParameters:
      - name: worker_id
        in: body
        type: string
        description: Workday worker ID for the new associate.
      - name: store_number
        in: body
        type: string
        description: Target store number the associate is assigned to (e.g. T-2345).
      - name: manager_upn
        in: body
        type: string
        description: UPN of the store manager in Microsoft Teams.
      steps:
      - name: get-worker
        type: call
        call: workday-workers.get-worker
        with:
          worker_id: '{{worker_id}}'
      - name: create-onboarding-ticket
        type: call
        call: servicenow-onboard.create-incident
        with:
          category: hr_onboarding
          short_description: 'New associate onboarding: {{get-worker.fullName}} at store {{store_number}}'
          assigned_group: Store_IT_Support
          description: 'Provision access for {{get-worker.fullName}} (Worker ID: {{worker_id}}) at store {{store_number}}. Start date: {{get-worker.hireDate}}'
      - name: send-welcome
        type: call
        call: msteams-store.send-message
        with:
          recipient_upn: '{{manager_upn}}'
          content: 'New team member {{get-worker.fullName}} joining store {{store_number}}. Onboarding ticket: {{create-onboarding-ticket.number}}'
  consumes:
  - type: http
    namespace: workday-workers
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: servicenow-onboard
    baseUri: https://target.service-now.com/api/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-store
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: user-messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → workday-new-store-associate-onboarding.yml

Retrieves a pending Oracle ERP supplier invoice, validates it against the matching purchase order, and routes discrepancies to the AP team via Microsoft Teams for manual review.

naftiko: '0.5'
info:
  label: Oracle Supplier Invoice Approval Workflow
  description: Retrieves a pending Oracle ERP supplier invoice, validates it against the matching purchase order, and routes discrepancies to the AP team via Microsoft Teams for manual review.
  tags:
  - finance
  - oracle
  - erp
  - microsoft-teams
  - invoice-processing
  - accounts-payable
capability:
  exposes:
  - type: mcp
    namespace: ap-ops
    port: 8080
    tools:
    - name: process-supplier-invoice
      description: Given an Oracle ERP invoice ID and PO number, retrieve invoice details, compare to PO amount, and flag discrepancies to the Microsoft Teams AP channel for review. Use in the accounts payable three-way match workflow.
      inputParameters:
      - name: invoice_id
        in: body
        type: string
        description: Oracle ERP invoice ID to process.
      - name: po_number
        in: body
        type: string
        description: Oracle ERP purchase order number to match against.
      steps:
      - name: get-invoice
        type: call
        call: oracle-inv-ap.get-invoice
        with:
          invoice_id: '{{invoice_id}}'
      - name: get-po
        type: call
        call: oracle-po-ap.get-purchase-order
        with:
          po_number: '{{po_number}}'
      - name: flag-for-review
        type: call
        call: msteams-ap.send-channel-message
        with:
          team_id: $secrets.msteams_finance_team_id
          channel_id: $secrets.msteams_ap_channel_id
          content: 'Invoice {{invoice_id}} review: Amount {{get-invoice.InvoiceAmount}} vs PO {{po_number}} amount {{get-po.OrderedAmount}}. Please review in Oracle ERP.'
  consumes:
  - type: http
    namespace: oracle-inv-ap
    baseUri: https://target.oraclecloud.com/fscmRestApi/resources/11.13.18.05
    authentication:
      type: basic
      username: $secrets.oracle_user
      password: $secrets.oracle_password
    resources:
    - name: invoices
      path: /supplierInvoices/{{invoice_id}}
      inputParameters:
      - name: invoice_id
        in: path
      operations:
      - name: get-invoice
        method: GET
  - type: http
    namespace: oracle-po-ap
    baseUri: https://target.oraclecloud.com/fscmRestApi/resources/11.13.18.05
    authentication:
      type: basic
      username: $secrets.oracle_user
      password: $secrets.oracle_password
    resources:
    - name: purchase-orders
      path: /purchaseOrders/{{po_number}}
      inputParameters:
      - name: po_number
        in: path
      operations:
      - name: get-purchase-order
        method: GET
  - type: http
    namespace: msteams-ap
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → oracle-supplier-invoice-approval-workflow.yml

Opens a ServiceNow change request for a planned store system update, routes it for IT change advisory board approval, and notifies the change manager via Microsoft Teams.

naftiko: '0.5'
info:
  label: ServiceNow Change Request for Store System Deployment
  description: Opens a ServiceNow change request for a planned store system update, routes it for IT change advisory board approval, and notifies the change manager via Microsoft Teams.
  tags:
  - itsm
  - servicenow
  - microsoft-teams
  - change-management
  - retail
  - devops
capability:
  exposes:
  - type: mcp
    namespace: change-mgmt
    port: 8080
    tools:
    - name: open-store-change-request
      description: Given a deployment description, affected store list, scheduled window, and risk level, create a ServiceNow change request and notify the IT change manager in Microsoft Teams. Use before any planned production deployment affecting store systems.
      inputParameters:
      - name: description
        in: body
        type: string
        description: Description of the store system change being requested.
      - name: affected_stores
        in: body
        type: string
        description: Comma-separated list of affected store numbers.
      - name: scheduled_start
        in: body
        type: string
        description: Maintenance window start time in ISO 8601 format.
      - name: risk_level
        in: body
        type: string
        description: 'Risk level: low, moderate, or high.'
      steps:
      - name: create-change
        type: call
        call: snow-change.create-change
        with:
          short_description: 'Store system change: {{description}}'
          category: store_deployment
          risk: '{{risk_level}}'
          start_date: '{{scheduled_start}}'
          description: 'Affected stores: {{affected_stores}}. Change: {{description}}'
      - name: notify-change-manager
        type: call
        call: msteams-change.send-channel-message
        with:
          team_id: $secrets.msteams_it_team_id
          channel_id: $secrets.msteams_change_channel_id
          content: 'Change request submitted: {{create-change.number}} | {{description}} | Stores: {{affected_stores}} | Risk: {{risk_level}} | Scheduled: {{scheduled_start}}'
  consumes:
  - type: http
    namespace: snow-change
    baseUri: https://target.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-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: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → servicenow-change-request-for-store-system-deployment.yml

Fetches LinkedIn job posting analytics, syncs to Snowflake, and posts a summary to the talent acquisition Teams channel.

naftiko: '0.5'
info:
  label: LinkedIn Job Posting Performance Sync
  description: Fetches LinkedIn job posting analytics, syncs to Snowflake, and posts a summary to the talent acquisition Teams channel.
  tags:
  - recruiting
  - linkedin
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: talent-analytics
    port: 8080
    tools:
    - name: sync-job-metrics
      description: Given a date range, fetch LinkedIn metrics, load to Snowflake, and post summary.
      inputParameters:
      - name: start_date
        in: body
        type: string
        description: Start date.
      - name: end_date
        in: body
        type: string
        description: End date.
      steps:
      - name: get-metrics
        type: call
        call: linkedin.get-job-analytics
        with:
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
      - name: load-data
        type: call
        call: snowflake.execute-statement
        with:
          statement: INSERT INTO HR.LINKEDIN_METRICS (period_start, period_end, views, applies) VALUES ('{{start_date}}', '{{end_date}}', {{get-metrics.views}}, {{get-metrics.applies}})
      - name: post-summary
        type: call
        call: msteams.send-channel-message
        with:
          team_id: talent-acquisition
          channel: analytics
          text: 'LinkedIn metrics {{start_date}}-{{end_date}}: {{get-metrics.views}} views, {{get-metrics.applies}} applies.'
  consumes:
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: analytics
      path: /jobAnalytics
      operations:
      - name: get-job-analytics
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://target.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: 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
Open in Framework → View in Fleet → linkedin-job-posting-performance-sync.yml

When a new job requisition is created in Workday, validates budget in Oracle, creates a ServiceNow approval, and notifies the hiring manager.

naftiko: '0.5'
info:
  label: Workday Job Requisition Approval Flow
  description: When a new job requisition is created in Workday, validates budget in Oracle, creates a ServiceNow approval, and notifies the hiring manager.
  tags:
  - hr
  - workday
  - oracle
  - servicenow
  - microsoft-teams
  - recruiting
capability:
  exposes:
  - type: mcp
    namespace: recruiting
    port: 8080
    tools:
    - name: process-job-requisition
      description: Given a Workday requisition ID, validate budget, create approval, and notify manager.
      inputParameters:
      - name: requisition_id
        in: body
        type: string
        description: Workday requisition ID.
      steps:
      - name: get-requisition
        type: call
        call: workday.get-requisition
        with:
          requisition_id: '{{requisition_id}}'
      - name: check-budget
        type: call
        call: oracle.get-budget
        with:
          cost_center: '{{get-requisition.cost_center}}'
      - name: create-approval
        type: call
        call: servicenow.create-request
        with:
          category: hr_recruiting
          short_description: 'Requisition: {{get-requisition.job_title}}'
      - name: notify-manager
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-requisition.hiring_manager_email}}'
          text: 'Your requisition for {{get-requisition.job_title}} is submitted. Budget: {{check-budget.remaining}}. Ticket: {{create-approval.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: requisitions
      path: /target/jobRequisitions/{{requisition_id}}
      inputParameters:
      - name: requisition_id
        in: path
      operations:
      - name: get-requisition
        method: GET
  - type: http
    namespace: oracle
    baseUri: https://target.oraclecloud.com/fscmRestApi/resources/v2
    authentication:
      type: basic
      username: $secrets.oracle_user
      password: $secrets.oracle_password
    resources:
    - name: budgets
      path: /budgets/{{cost_center}}
      inputParameters:
      - name: cost_center
        in: path
      operations:
      - name: get-budget
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://target.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-message
        method: POST
Open in Framework → View in Fleet → workday-job-requisition-approval-flow.yml

Fetches Marketo email campaign metrics, loads them into Snowflake, and posts a summary to the marketing Slack channel.

naftiko: '0.5'
info:
  label: Marketo Campaign to Snowflake Sync
  description: Fetches Marketo email campaign metrics, loads them into Snowflake, and posts a summary to the marketing Slack channel.
  tags:
  - marketing
  - marketo
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: marketing-analytics
    port: 8080
    tools:
    - name: sync-campaign-metrics
      description: Given a Marketo campaign ID, fetch metrics, insert into Snowflake, and post summary.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: Marketo campaign ID.
      steps:
      - name: get-stats
        type: call
        call: marketo.get-campaign-stats
        with:
          campaign_id: '{{campaign_id}}'
      - name: load-data
        type: call
        call: snowflake.execute-statement
        with:
          statement: INSERT INTO MARKETING.CAMPAIGN_METRICS (campaign_id, sends, opens, clicks) VALUES ('{{campaign_id}}', {{get-stats.sends}}, {{get-stats.opens}}, {{get-stats.clicks}})
      - name: post-summary
        type: call
        call: slack.post-message
        with:
          channel: marketing-analytics
          text: 'Campaign {{campaign_id}}: {{get-stats.sends}} sent, {{get-stats.open_rate}}% open rate.'
  consumes:
  - type: http
    namespace: marketo
    baseUri: https://target.mktorest.com/rest
    authentication:
      type: bearer
      token: $secrets.marketo_token
    resources:
    - name: campaigns
      path: /v1/campaigns/{{campaign_id}}/stats.json
      inputParameters:
      - name: campaign_id
        in: path
      operations:
      - name: get-campaign-stats
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://target.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: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → marketo-campaign-to-snowflake-sync.yml

Queries Snowflake for Target Circle loyalty points balances and syncs updates to Salesforce for guest service inquiries.

naftiko: '0.5'
info:
  label: Target Circle Loyalty Points Balance Sync
  description: Queries Snowflake for Target Circle loyalty points balances and syncs updates to Salesforce for guest service inquiries.
  tags:
  - loyalty
  - snowflake
  - salesforce
  - guest-experience
capability:
  exposes:
  - type: mcp
    namespace: loyalty
    port: 8080
    tools:
    - name: sync-loyalty-balance
      description: Given a guest ID, query points balance in Snowflake and update Salesforce contact record.
      inputParameters:
      - name: guest_id
        in: body
        type: string
        description: Target Circle guest ID.
      steps:
      - name: get-balance
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT points_balance, tier, last_activity_date FROM LOYALTY.CIRCLE_MEMBERS WHERE guest_id = '{{guest_id}}'
      - name: update-salesforce
        type: call
        call: salesforce.update-contact
        with:
          guest_id: '{{guest_id}}'
          loyalty_points: '{{get-balance.points_balance}}'
          loyalty_tier: '{{get-balance.tier}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://target.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: salesforce
    baseUri: https://target.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: contacts
      path: /sobjects/Contact/{{guest_id}}
      inputParameters:
      - name: guest_id
        in: path
      operations:
      - name: update-contact
        method: PATCH
Open in Framework → View in Fleet → target-circle-loyalty-points-balance-sync.yml

Retrieves Adobe Analytics data for a digital marketing campaign, summarizes click-through and conversion metrics, and posts the campaign report to the marketing Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Adobe Analytics Retail Campaign Performance Report
  description: Retrieves Adobe Analytics data for a digital marketing campaign, summarizes click-through and conversion metrics, and posts the campaign report to the marketing Microsoft Teams channel.
  tags:
  - marketing
  - adobe-analytics
  - microsoft-teams
  - reporting
  - digital-marketing
capability:
  exposes:
  - type: mcp
    namespace: marketing-analytics
    port: 8080
    tools:
    - name: digest-campaign-performance
      description: Given an Adobe Analytics report suite ID and date range, fetch campaign performance metrics (visits, conversions, revenue) and post a summary to the Microsoft Teams marketing channel. Use for weekly digital campaign reviews.
      inputParameters:
      - name: report_suite_id
        in: body
        type: string
        description: Adobe Analytics report suite ID to query.
      - name: start_date
        in: body
        type: string
        description: Campaign reporting start date in YYYY-MM-DD format.
      - name: end_date
        in: body
        type: string
        description: Campaign reporting end date in YYYY-MM-DD format.
      steps:
      - name: get-campaign-metrics
        type: call
        call: adobe-analytics.run-report
        with:
          report_suite_id: '{{report_suite_id}}'
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
      - name: post-campaign-report
        type: call
        call: msteams-marketing.send-channel-message
        with:
          team_id: $secrets.msteams_marketing_team_id
          channel_id: $secrets.msteams_marketing_channel_id
          content: 'Campaign performance {{start_date}} to {{end_date}} for suite {{report_suite_id}}: Metrics retrieved. Review full breakdown in Adobe Analytics.'
  consumes:
  - type: http
    namespace: adobe-analytics
    baseUri: https://analytics.adobe.io/api
    authentication:
      type: bearer
      token: $secrets.adobe_access_token
    resources:
    - name: reports
      path: /{{report_suite_id}}/reports
      inputParameters:
      - name: report_suite_id
        in: path
      operations:
      - name: run-report
        method: POST
  - 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-channel-message
        method: POST
Open in Framework → View in Fleet → adobe-analytics-retail-campaign-performance-report.yml

When a markdown request is submitted, validates inventory in Snowflake, creates a ServiceNow approval, and notifies the category manager via Teams.

naftiko: '0.5'
info:
  label: Store Markdown Approval Workflow
  description: When a markdown request is submitted, validates inventory in Snowflake, creates a ServiceNow approval, and notifies the category manager via Teams.
  tags:
  - merchandising
  - snowflake
  - servicenow
  - microsoft-teams
  - pricing
capability:
  exposes:
  - type: mcp
    namespace: markdown-ops
    port: 8080
    tools:
    - name: submit-markdown
      description: Given a DPCI and markdown percentage, validate inventory, create approval, and notify manager.
      inputParameters:
      - name: dpci
        in: body
        type: string
        description: DPCI.
      - name: markdown_pct
        in: body
        type: string
        description: Markdown percentage.
      - name: manager_email
        in: body
        type: string
        description: Category manager email.
      steps:
      - name: check-inventory
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT SUM(on_hand_qty) as total FROM SUPPLY_CHAIN.INVENTORY WHERE dpci = '{{dpci}}'
      - name: create-approval
        type: call
        call: servicenow.create-request
        with:
          category: merchandising
          short_description: 'Markdown: {{dpci}} — {{markdown_pct}}% off'
      - name: notify-manager
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{manager_email}}'
          text: 'Markdown request for {{dpci}}: {{markdown_pct}}% off. Inventory: {{check-inventory.total}}. Approval: {{create-approval.number}}.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://target.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://target.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-message
        method: POST
Open in Framework → View in Fleet → store-markdown-approval-workflow.yml

Registers a new merchandise supplier in Oracle ERP, creates the supplier site, and notifies the merchandising team via Microsoft Teams to initiate buyer relationship setup.

naftiko: '0.5'
info:
  label: Oracle Supplier Onboarding
  description: Registers a new merchandise supplier in Oracle ERP, creates the supplier site, and notifies the merchandising team via Microsoft Teams to initiate buyer relationship setup.
  tags:
  - procurement
  - oracle
  - erp
  - microsoft-teams
  - supplier-management
  - onboarding
capability:
  exposes:
  - type: mcp
    namespace: supplier-ops
    port: 8080
    tools:
    - name: onboard-merchandise-supplier
      description: Given a supplier name, contact email, and category, create the supplier record in Oracle ERP, provision the supplier site, and notify the Microsoft Teams merchandising channel. Use when a new merchandise supplier passes qualification review.
      inputParameters:
      - name: supplier_name
        in: body
        type: string
        description: Legal name of the merchandise supplier.
      - name: supplier_email
        in: body
        type: string
        description: Primary contact email for the supplier.
      - name: category
        in: body
        type: string
        description: Merchandise category (e.g. Apparel, Electronics, Food).
      steps:
      - name: create-oracle-supplier
        type: call
        call: oracle-suppliers.create-supplier
        with:
          Supplier: '{{supplier_name}}'
          EmailAddress: '{{supplier_email}}'
      - name: notify-merchandising
        type: call
        call: msteams-supplier.send-channel-message
        with:
          team_id: $secrets.msteams_merch_team_id
          channel_id: $secrets.msteams_merch_channel_id
          content: 'New supplier onboarded: {{supplier_name}} | Category: {{category}} | Oracle ID: {{create-oracle-supplier.SupplierId}}. Buyer setup required.'
  consumes:
  - type: http
    namespace: oracle-suppliers
    baseUri: https://target.oraclecloud.com/fscmRestApi/resources/11.13.18.05
    authentication:
      type: basic
      username: $secrets.oracle_user
      password: $secrets.oracle_password
    resources:
    - name: suppliers
      path: /suppliers
      operations:
      - name: create-supplier
        method: POST
  - type: http
    namespace: msteams-supplier
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → oracle-supplier-onboarding.yml

Fetches recent guest reviews from Snowflake, uses Anthropic Claude to generate a sentiment summary, and posts insights to the guest experience Slack channel.

naftiko: '0.5'
info:
  label: Anthropic AI Guest Review Summarizer
  description: Fetches recent guest reviews from Snowflake, uses Anthropic Claude to generate a sentiment summary, and posts insights to the guest experience Slack channel.
  tags:
  - ai
  - anthropic
  - snowflake
  - slack
  - guest-experience
capability:
  exposes:
  - type: mcp
    namespace: guest-insights
    port: 8080
    tools:
    - name: summarize-reviews
      description: Given a store number and date range, fetch reviews, generate AI summary, and post insights. Use for weekly guest satisfaction reviews.
      inputParameters:
      - name: store_number
        in: body
        type: string
        description: Store number.
      - 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.
      steps:
      - name: get-reviews
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT review_text, rating FROM GUEST.REVIEWS WHERE store_number = '{{store_number}}' AND review_date BETWEEN '{{start_date}}' AND '{{end_date}}'
      - name: summarize
        type: call
        call: anthropic.create-message
        with:
          model: claude-sonnet-4-20250514
          prompt: 'Summarize these guest reviews and identify top themes: {{get-reviews.results}}'
      - name: post-insights
        type: call
        call: slack.post-message
        with:
          channel: guest-experience
          text: 'Store {{store_number}} review summary ({{start_date}} to {{end_date}}): {{summarize.content}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://target.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: anthropic
    baseUri: https://api.anthropic.com/v1
    authentication:
      type: apiKey
      key: $secrets.anthropic_api_key
    resources:
    - name: messages
      path: /messages
      operations:
      - name: create-message
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → anthropic-ai-guest-review-summarizer.yml

When an Oracle delivery is delayed, creates a ServiceNow incident and notifies logistics via Slack.

naftiko: '0.5'
info:
  label: Oracle Delivery Delay Escalation
  description: When an Oracle delivery is delayed, creates a ServiceNow incident and notifies logistics via Slack.
  tags:
  - logistics
  - oracle
  - servicenow
  - slack
  - supply-chain
capability:
  exposes:
  - type: mcp
    namespace: logistics
    port: 8080
    tools:
    - name: escalate-delivery-delay
      description: Given an Oracle delivery number, check delay, create incident, and alert logistics.
      inputParameters:
      - name: delivery_number
        in: body
        type: string
        description: Oracle delivery number.
      steps:
      - name: get-delivery
        type: call
        call: oracle.get-delivery
        with:
          delivery_number: '{{delivery_number}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          category: logistics
          urgency: 2
          short_description: 'Delivery delay: {{delivery_number}} — {{get-delivery.delay_days}} days'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: logistics-ops
          text: 'Delivery {{delivery_number}} delayed {{get-delivery.delay_days}} days. Incident: {{create-incident.number}}.'
  consumes:
  - type: http
    namespace: oracle
    baseUri: https://target.oraclecloud.com/fscmRestApi/resources/v2
    authentication:
      type: basic
      username: $secrets.oracle_user
      password: $secrets.oracle_password
    resources:
    - name: deliveries
      path: /shipments/{{delivery_number}}
      inputParameters:
      - name: delivery_number
        in: path
      operations:
      - name: get-delivery
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://target.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → oracle-delivery-delay-escalation.yml

Syncs Target Plus marketplace partner orders from Oracle to Snowflake and sends fulfillment notifications to partners via Slack.

naftiko: '0.5'
info:
  label: Target Plus Partner Order Sync
  description: Syncs Target Plus marketplace partner orders from Oracle to Snowflake and sends fulfillment notifications to partners via Slack.
  tags:
  - marketplace
  - oracle
  - snowflake
  - slack
  - e-commerce
capability:
  exposes:
  - type: mcp
    namespace: marketplace-ops
    port: 8080
    tools:
    - name: sync-partner-orders
      description: Given a partner ID and date, sync orders from Oracle to Snowflake and notify the partner channel.
      inputParameters:
      - name: partner_id
        in: body
        type: string
        description: Target Plus partner ID.
      - name: order_date
        in: body
        type: string
        description: Order date YYYY-MM-DD.
      steps:
      - name: get-orders
        type: call
        call: oracle.get-partner-orders
        with:
          partner_id: '{{partner_id}}'
          order_date: '{{order_date}}'
      - name: load-to-snowflake
        type: call
        call: snowflake.execute-statement
        with:
          statement: INSERT INTO MARKETPLACE.PARTNER_ORDERS (partner_id, order_date, order_count, total_gmv) VALUES ('{{partner_id}}', '{{order_date}}', {{get-orders.order_count}}, {{get-orders.total_gmv}})
      - name: notify-partner
        type: call
        call: slack.post-message
        with:
          channel: marketplace-partner-{{partner_id}}
          text: 'Partner {{partner_id}} orders for {{order_date}}: {{get-orders.order_count}} orders, ${{get-orders.total_gmv}} GMV.'
  consumes:
  - type: http
    namespace: oracle
    baseUri: https://target.oraclecloud.com/fscmRestApi/resources/v2
    authentication:
      type: basic
      username: $secrets.oracle_user
      password: $secrets.oracle_password
    resources:
    - name: partner-orders
      path: /salesOrders?q=PartnerId={{partner_id}}
      inputParameters:
      - name: partner_id
        in: query
      operations:
      - name: get-partner-orders
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://target.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: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → target-plus-partner-order-sync.yml

When a store associate reports a POS or IT system failure via ServiceNow, creates a P1 incident, alerts the store IT support team in Microsoft Teams, and logs a Datadog event.

naftiko: '0.5'
info:
  label: ServiceNow Store IT Incident Management
  description: When a store associate reports a POS or IT system failure via ServiceNow, creates a P1 incident, alerts the store IT support team in Microsoft Teams, and logs a Datadog event.
  tags:
  - itsm
  - servicenow
  - microsoft-teams
  - datadog
  - incident-response
  - retail
capability:
  exposes:
  - type: mcp
    namespace: store-itsm
    port: 8080
    tools:
    - name: handle-store-it-incident
      description: Given a store number, system type, and problem description, create a P1 ServiceNow incident, alert the store IT support Microsoft Teams channel, and post a Datadog event for observability. Use when critical store systems (POS, network) fail.
      inputParameters:
      - name: store_number
        in: body
        type: string
        description: Target store number reporting the incident (e.g. T-2345).
      - name: system_type
        in: body
        type: string
        description: 'Type of system affected: POS, network, self-checkout, or back-office.'
      - name: description
        in: body
        type: string
        description: Detailed description of the IT incident.
      steps:
      - name: create-incident
        type: call
        call: snow-p1.create-incident
        with:
          category: store_it
          short_description: '{{system_type}} failure at store {{store_number}}'
          assigned_group: Store_IT_Support
          description: '{{description}}'
          priority: '1'
      - name: notify-it-support
        type: call
        call: msteams-it.send-channel-message
        with:
          team_id: $secrets.msteams_it_team_id
          channel_id: $secrets.msteams_it_channel_id
          content: 'P1 IT INCIDENT: Store {{store_number}} | System: {{system_type}} | {{description}} | Ticket: {{create-incident.number}}'
      - name: log-dd-event
        type: call
        call: datadog-store.create-event
        with:
          title: 'Store IT Incident: {{store_number}} {{system_type}}'
          text: '{{description}}'
          tags: store:{{store_number}},system:{{system_type}},source:servicenow
  consumes:
  - type: http
    namespace: snow-p1
    baseUri: https://target.service-now.com/api/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-it
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - 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
  - type: http
    namespace: datadog-store
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: events
      path: /events
      operations:
      - name: create-event
        method: POST
Open in Framework → View in Fleet → servicenow-store-it-incident-management.yml

When an org restructure occurs in Workday, updates Okta groups and notifies affected managers via Microsoft Teams.

naftiko: '0.5'
info:
  label: Workday Organizational Change Sync
  description: When an org restructure occurs in Workday, updates Okta groups and notifies affected managers via Microsoft Teams.
  tags:
  - hr
  - workday
  - okta
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: org-mgmt
    port: 8080
    tools:
    - name: sync-org-change
      description: Given a Workday org ID, fetch structure, update Okta, and notify managers.
      inputParameters:
      - name: org_id
        in: body
        type: string
        description: Workday org ID.
      steps:
      - name: get-org
        type: call
        call: workday.get-org
        with:
          org_id: '{{org_id}}'
      - name: update-okta
        type: call
        call: okta.sync-group-members
        with:
          group_name: '{{get-org.org_name}}'
          members: '{{get-org.member_emails}}'
      - name: notify
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-org.manager_email}}'
          text: 'Org change for {{get-org.org_name}}: {{get-org.member_count}} members updated.'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: organizations
      path: /target/organizations/{{org_id}}
      inputParameters:
      - name: org_id
        in: path
      operations:
      - name: get-org
        method: GET
  - type: http
    namespace: okta
    baseUri: https://target.okta.com/api/v1
    authentication:
      type: bearer
      token: $secrets.okta_token
    resources:
    - name: groups
      path: /groups/{{group_name}}/users
      inputParameters:
      - name: group_name
        in: path
      operations:
      - name: sync-group-members
        method: PUT
  - 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
Open in Framework → View in Fleet → workday-organizational-change-sync.yml

Looks up a purchase order in Oracle ERP by PO number, returning vendor, status, and line items. Used by procurement and accounts payable for order reconciliation.

naftiko: '0.5'
info:
  label: Oracle ERP Purchase Order Lookup
  description: Looks up a purchase order in Oracle ERP by PO number, returning vendor, status, and line items. Used by procurement and accounts payable for order reconciliation.
  tags:
  - procurement
  - oracle
  - erp
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: erp-ops
    port: 8080
    tools:
    - name: get-purchase-order
      description: Given an Oracle ERP purchase order number, retrieve the PO header status, supplier name, total ordered amount, and line item count. Use for procurement review, AP matching, or vendor disputes.
      inputParameters:
      - name: po_number
        in: body
        type: string
        description: Oracle ERP purchase order number.
      call: oracle-po.get-purchase-order
      with:
        po_number: '{{po_number}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.OrderStatus
      - name: supplier_name
        type: string
        mapping: $.SupplierName
      - name: total_amount
        type: number
        mapping: $.OrderedAmount
  consumes:
  - type: http
    namespace: oracle-po
    baseUri: https://target.oraclecloud.com/fscmRestApi/resources/11.13.18.05
    authentication:
      type: basic
      username: $secrets.oracle_user
      password: $secrets.oracle_password
    resources:
    - name: purchase-orders
      path: /purchaseOrders/{{po_number}}
      inputParameters:
      - name: po_number
        in: path
      operations:
      - name: get-purchase-order
        method: GET
Open in Framework → View in Fleet → oracle-erp-purchase-order-lookup.yml

Monitors Datadog metrics for store POS system response time and transaction throughput, creating a ServiceNow alert if performance degrades below SLO thresholds.

naftiko: '0.5'
info:
  label: Datadog Store POS Performance Monitoring
  description: Monitors Datadog metrics for store POS system response time and transaction throughput, creating a ServiceNow alert if performance degrades below SLO thresholds.
  tags:
  - devops
  - datadog
  - servicenow
  - retail
  - pos
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: pos-ops
    port: 8080
    tools:
    - name: handle-pos-performance-alert
      description: Given a Datadog monitor ID for POS performance and a store number, retrieve monitor details and open a ServiceNow incident for store IT response. Use from Datadog webhook triggers on POS SLO threshold violations.
      inputParameters:
      - name: monitor_id
        in: body
        type: integer
        description: Datadog monitor ID tracking POS performance.
      - name: store_number
        in: body
        type: string
        description: Store number experiencing the performance degradation.
      - name: metric_value
        in: body
        type: number
        description: Current metric value that triggered the alert.
      steps:
      - name: get-monitor
        type: call
        call: dd-pos.get-monitor
        with:
          monitor_id: '{{monitor_id}}'
      - name: create-pos-incident
        type: call
        call: snow-pos.create-incident
        with:
          category: pos_performance
          short_description: 'POS performance degradation at store {{store_number}}: {{metric_value}}'
          assigned_group: Store_IT_Support
          description: 'Datadog monitor {{monitor_id}} ({{get-monitor.name}}) triggered for store {{store_number}}. Metric value: {{metric_value}}'
  consumes:
  - type: http
    namespace: dd-pos
    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: snow-pos
    baseUri: https://target.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → datadog-store-pos-performance-monitoring.yml

When a GitHub Actions workflow fails on a production branch, creates a ServiceNow incident, posts an alert to the engineering Microsoft Teams channel, and creates a Datadog deployment failure event.

naftiko: '0.5'
info:
  label: GitHub Deployment Pipeline Failure Alert
  description: When a GitHub Actions workflow fails on a production branch, creates a ServiceNow incident, posts an alert to the engineering Microsoft Teams channel, and creates a Datadog deployment failure event.
  tags:
  - devops
  - github
  - servicenow
  - microsoft-teams
  - datadog
  - cicd
  - incident-response
capability:
  exposes:
  - type: mcp
    namespace: deploy-ops
    port: 8080
    tools:
    - name: handle-pipeline-failure
      description: 'Given a GitHub workflow run ID, repo, branch, and failed job name, open a ServiceNow incident, alert the #engineering Microsoft Teams channel, and create a Datadog deployment failure event. Use on GitHub Actions production workflow failure webhooks.'
      inputParameters:
      - name: workflow_run_id
        in: body
        type: integer
        description: GitHub Actions workflow run ID that failed.
      - name: repo
        in: body
        type: string
        description: GitHub repository in owner/repo format.
      - name: branch
        in: body
        type: string
        description: Git branch the workflow ran on.
      - name: failed_job
        in: body
        type: string
        description: Name of the failing job in the workflow.
      - name: commit_sha
        in: body
        type: string
        description: Commit SHA that triggered the failed workflow.
      steps:
      - name: get-workflow-run
        type: call
        call: github-runs.get-workflow-run
        with:
          repo: '{{repo}}'
          run_id: '{{workflow_run_id}}'
      - name: create-snow-incident
        type: call
        call: snow-deploy.create-incident
        with:
          category: deployment_failure
          short_description: 'CI/CD failure: {{repo}} {{branch}} job {{failed_job}}'
          assigned_group: Engineering_Platform
          description: 'Workflow run {{workflow_run_id}} failed. Branch: {{branch}}. Job: {{failed_job}}. Commit: {{commit_sha}}. URL: {{get-workflow-run.html_url}}'
      - name: alert-engineering
        type: call
        call: msteams-eng.send-channel-message
        with:
          team_id: $secrets.msteams_eng_team_id
          channel_id: $secrets.msteams_eng_channel_id
          content: 'PIPELINE FAILURE: {{repo}} | Branch: {{branch}} | Job: {{failed_job}} | Ticket: {{create-snow-incident.number}} | {{get-workflow-run.html_url}}'
      - name: log-dd-failure
        type: call
        call: datadog-deploy.create-event
        with:
          title: 'Deployment failure: {{repo}} {{branch}}'
          text: Job {{failed_job}} failed on commit {{commit_sha}}
          tags: repo:{{repo}},branch:{{branch}},job:{{failed_job}}
  consumes:
  - type: http
    namespace: github-runs
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: workflow-runs
      path: /repos/{{repo}}/actions/runs/{{run_id}}
      inputParameters:
      - name: repo
        in: path
      - name: run_id
        in: path
      operations:
      - name: get-workflow-run
        method: GET
  - type: http
    namespace: snow-deploy
    baseUri: https://target.service-now.com/api/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-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-channel-message
        method: POST
  - type: http
    namespace: datadog-deploy
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: events
      path: /events
      operations:
      - name: create-event
        method: POST
Open in Framework → View in Fleet → github-deployment-pipeline-failure-alert.yml

Queries Oracle ERP for product inventory levels below reorder threshold and creates replenishment purchase requisitions automatically for distribution center restocking.

naftiko: '0.5'
info:
  label: Oracle Inventory Replenishment Alert
  description: Queries Oracle ERP for product inventory levels below reorder threshold and creates replenishment purchase requisitions automatically for distribution center restocking.
  tags:
  - supply-chain
  - oracle
  - erp
  - inventory-management
  - procurement
capability:
  exposes:
  - type: mcp
    namespace: inventory-ops
    port: 8080
    tools:
    - name: check-and-replenish-inventory
      description: Given an Oracle ERP item number and organization code, check current on-hand quantity and trigger a purchase requisition if stock falls below the reorder point. Use for automated distribution center replenishment.
      inputParameters:
      - name: item_number
        in: body
        type: string
        description: Oracle ERP inventory item number (SKU).
      - name: organization_code
        in: body
        type: string
        description: Oracle inventory organization code for the DC or store.
      - name: reorder_threshold
        in: body
        type: integer
        description: Minimum quantity on hand before triggering replenishment.
      steps:
      - name: get-inventory
        type: call
        call: oracle-inv.get-on-hand-quantity
        with:
          item_number: '{{item_number}}'
          org_code: '{{organization_code}}'
      - name: create-requisition
        type: call
        call: oracle-req.create-requisition
        with:
          itemNumber: '{{item_number}}'
          organizationCode: '{{organization_code}}'
          requestedQuantity: '{{reorder_threshold}}'
          justification: 'Auto-replenishment: stock below threshold at {{organization_code}}'
  consumes:
  - type: http
    namespace: oracle-inv
    baseUri: https://target.oraclecloud.com/fscmRestApi/resources/11.13.18.05
    authentication:
      type: basic
      username: $secrets.oracle_user
      password: $secrets.oracle_password
    resources:
    - name: on-hand-quantities
      path: /inventoryOnhandQuantities
      inputParameters:
      - name: item_number
        in: query
      - name: org_code
        in: query
      operations:
      - name: get-on-hand-quantity
        method: GET
  - type: http
    namespace: oracle-req
    baseUri: https://target.oraclecloud.com/fscmRestApi/resources/11.13.18.05
    authentication:
      type: basic
      username: $secrets.oracle_user
      password: $secrets.oracle_password
    resources:
    - name: requisitions
      path: /purchaseRequisitions
      operations:
      - name: create-requisition
        method: POST
Open in Framework → View in Fleet → oracle-inventory-replenishment-alert.yml

When a Target guest service Salesforce case is escalated, creates a ServiceNow incident for cross-functional resolution and notifies the guest experience team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Salesforce Customer Case Escalation
  description: When a Target guest service Salesforce case is escalated, creates a ServiceNow incident for cross-functional resolution and notifies the guest experience team via Microsoft Teams.
  tags:
  - crm
  - salesforce
  - servicenow
  - microsoft-teams
  - customer-support
  - escalation
capability:
  exposes:
  - type: mcp
    namespace: guest-ops
    port: 8080
    tools:
    - name: escalate-guest-case
      description: Given a Salesforce case ID for an escalated guest complaint, fetch case details, open a ServiceNow incident for cross-team resolution, and notify the guest experience Microsoft Teams channel. Use when a case is flagged for executive escalation.
      inputParameters:
      - name: case_id
        in: body
        type: string
        description: Salesforce case ID being escalated.
      steps:
      - name: get-case
        type: call
        call: sf-cases.get-case
        with:
          case_id: '{{case_id}}'
      - name: create-snow-incident
        type: call
        call: snow-guest.create-incident
        with:
          category: guest_escalation
          short_description: 'Guest escalation: {{get-case.Subject}}'
          assigned_group: Guest_Experience
          description: 'Salesforce case {{case_id}} escalated. Guest: {{get-case.ContactId}}. Issue: {{get-case.Description}}'
      - name: notify-guest-exp
        type: call
        call: msteams-guest.send-channel-message
        with:
          team_id: $secrets.msteams_guest_team_id
          channel_id: $secrets.msteams_guest_channel_id
          content: 'Guest escalation: Case {{case_id}} | {{get-case.Subject}} | ServiceNow: {{create-snow-incident.number}} | Immediate response required'
  consumes:
  - type: http
    namespace: sf-cases
    baseUri: https://target.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: cases
      path: /sobjects/Case/{{case_id}}
      inputParameters:
      - name: case_id
        in: path
      operations:
      - name: get-case
        method: GET
  - type: http
    namespace: snow-guest
    baseUri: https://target.service-now.com/api/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-guest
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → salesforce-customer-case-escalation.yml

Creates a new partnership opportunity in Salesforce for an approved vendor and notifies the merchandising team in Microsoft Teams to begin negotiations.

naftiko: '0.5'
info:
  label: Salesforce Vendor Partnership Opportunity Creation
  description: Creates a new partnership opportunity in Salesforce for an approved vendor and notifies the merchandising team in Microsoft Teams to begin negotiations.
  tags:
  - crm
  - salesforce
  - microsoft-teams
  - vendor-management
  - sales
capability:
  exposes:
  - type: mcp
    namespace: vendor-sales
    port: 8080
    tools:
    - name: create-vendor-opportunity
      description: Given a vendor account ID, opportunity name, expected deal value, and close date, create a Salesforce opportunity for a vendor partnership and notify the merchandising Microsoft Teams channel. Use when a new vendor is approved for consideration.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: Salesforce account ID of the vendor.
      - name: opportunity_name
        in: body
        type: string
        description: Name of the partnership opportunity.
      - name: amount
        in: body
        type: number
        description: Expected deal value in USD.
      - name: close_date
        in: body
        type: string
        description: Expected close date in YYYY-MM-DD format.
      steps:
      - name: create-opportunity
        type: call
        call: sf-opps-create.create-opportunity
        with:
          AccountId: '{{account_id}}'
          Name: '{{opportunity_name}}'
          Amount: '{{amount}}'
          CloseDate: '{{close_date}}'
          StageName: Qualification
      - name: notify-merch
        type: call
        call: msteams-vendor.send-channel-message
        with:
          team_id: $secrets.msteams_merch_team_id
          channel_id: $secrets.msteams_merch_channel_id
          content: 'New vendor opportunity: {{opportunity_name}} | Account: {{account_id}} | Value: ${{amount}} | Close: {{close_date}} | Salesforce ID: {{create-opportunity.id}}'
  consumes:
  - type: http
    namespace: sf-opps-create
    baseUri: https://target.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: opportunities
      path: /sobjects/Opportunity
      operations:
      - name: create-opportunity
        method: POST
  - type: http
    namespace: msteams-vendor
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → salesforce-vendor-partnership-opportunity-creation.yml

When a GitHub release is published, creates a ServiceNow change request and posts release notes to the engineering Slack channel.

naftiko: '0.5'
info:
  label: GitHub Release to ServiceNow Change Request
  description: When a GitHub release is published, creates a ServiceNow change request and posts release notes to the engineering Slack channel.
  tags:
  - devops
  - github
  - servicenow
  - slack
  - change-management
capability:
  exposes:
  - type: mcp
    namespace: release-ops
    port: 8080
    tools:
    - name: process-github-release
      description: Given a GitHub repo and release tag, fetch release details, create a ServiceNow change request, and notify engineering. Use for production release tracking.
      inputParameters:
      - name: repo_name
        in: body
        type: string
        description: GitHub repository in org/repo format.
      - name: release_tag
        in: body
        type: string
        description: Release tag.
      steps:
      - name: get-release
        type: call
        call: github.get-release
        with:
          repo_name: '{{repo_name}}'
          tag: '{{release_tag}}'
      - name: create-change-request
        type: call
        call: servicenow.create-change
        with:
          short_description: Release {{release_tag}} for {{repo_name}}
          description: '{{get-release.body}}'
      - name: notify-engineering
        type: call
        call: slack.post-message
        with:
          channel: engineering-releases
          text: 'Release {{release_tag}} published for {{repo_name}}. Change: {{create-change-request.number}}.'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: releases
      path: /repos/{{repo_name}}/releases/tags/{{tag}}
      inputParameters:
      - name: repo_name
        in: path
      - name: tag
        in: path
      operations:
      - name: get-release
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://target.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: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → github-release-to-servicenow-change-request.yml

When Dynatrace detects resource saturation, creates a ServiceNow problem ticket and alerts capacity ops via Slack.

naftiko: '0.5'
info:
  label: Dynatrace Resource Saturation Handler
  description: When Dynatrace detects resource saturation, creates a ServiceNow problem ticket and alerts capacity ops via Slack.
  tags:
  - observability
  - dynatrace
  - servicenow
  - slack
capability:
  exposes:
  - type: mcp
    namespace: capacity-ops
    port: 8080
    tools:
    - name: handle-saturation
      description: Given a Dynatrace problem ID, fetch details, create a ServiceNow problem, and notify ops.
      inputParameters:
      - name: problem_id
        in: body
        type: string
        description: Dynatrace problem ID.
      steps:
      - name: get-problem
        type: call
        call: dynatrace.get-problem
        with:
          problem_id: '{{problem_id}}'
      - name: create-problem
        type: call
        call: servicenow.create-problem
        with:
          short_description: 'Saturation: {{get-problem.title}}'
          description: 'Impact: {{get-problem.impact_level}}.'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: capacity-alerts
          text: 'Saturation: {{get-problem.title}}. ServiceNow: {{create-problem.number}}.'
  consumes:
  - type: http
    namespace: dynatrace
    baseUri: https://target.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://target.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: problems
      path: /table/problem
      operations:
      - name: create-problem
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → dynatrace-resource-saturation-handler.yml

Queries Snowflake for weekly store sales metrics and posts a digest to the district leadership Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Weekly Store Performance Digest
  description: Queries Snowflake for weekly store sales metrics and posts a digest to the district leadership Microsoft Teams channel.
  tags:
  - analytics
  - retail
  - snowflake
  - microsoft-teams
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: retail-reporting
    port: 8080
    tools:
    - name: publish-store-performance
      description: Given a district and week ending date, query Snowflake for store performance and send a digest to Teams. Use for weekly leadership reviews.
      inputParameters:
      - name: district
        in: body
        type: string
        description: District code.
      - name: week_ending
        in: body
        type: string
        description: Week ending date in YYYY-MM-DD.
      steps:
      - name: query-performance
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT store_id, SUM(net_sales) as total_sales, SUM(transactions) as txns FROM RETAIL.WEEKLY_STORE_METRICS WHERE district = '{{district}}' AND week_ending = '{{week_ending}}' GROUP BY store_id ORDER BY total_sales DESC
      - name: post-digest
        type: call
        call: msteams.send-channel-message
        with:
          team_id: '{{district}}-leadership'
          channel: store-performance
          text: 'Weekly performance for district {{district}} ending {{week_ending}}: {{query-performance.row_count}} stores reported.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://target.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: 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
Open in Framework → View in Fleet → weekly-store-performance-digest.yml

Fetches GA4 e-commerce conversion data, stores in Snowflake, and posts a conversion summary to the digital marketing Slack channel.

naftiko: '0.5'
info:
  label: Google Analytics Conversion Report
  description: Fetches GA4 e-commerce conversion data, stores in Snowflake, and posts a conversion summary to the digital marketing Slack channel.
  tags:
  - analytics
  - google-analytics
  - snowflake
  - slack
  - e-commerce
capability:
  exposes:
  - type: mcp
    namespace: ecom-analytics
    port: 8080
    tools:
    - name: generate-conversion-report
      description: Given a date range and property ID, fetch GA4 data, load to Snowflake, and post summary.
      inputParameters:
      - name: property_id
        in: body
        type: string
        description: GA4 property ID.
      - name: start_date
        in: body
        type: string
        description: Start date.
      - name: end_date
        in: body
        type: string
        description: End date.
      steps:
      - name: get-data
        type: call
        call: ga4.run-report
        with:
          property_id: '{{property_id}}'
          start: '{{start_date}}'
          end: '{{end_date}}'
      - name: load-snowflake
        type: call
        call: snowflake.execute-statement
        with:
          statement: INSERT INTO DIGITAL.GA_CONVERSIONS (property_id, period_start, period_end, sessions, transactions, revenue) VALUES ('{{property_id}}', '{{start_date}}', '{{end_date}}', {{get-data.sessions}}, {{get-data.transactions}}, {{get-data.revenue}})
      - name: post-summary
        type: call
        call: slack.post-message
        with:
          channel: digital-marketing
          text: 'Conversion report ({{start_date}}-{{end_date}}): {{get-data.sessions}} sessions, {{get-data.conversion_rate}}% CVR, ${{get-data.revenue}} revenue.'
  consumes:
  - type: http
    namespace: ga4
    baseUri: https://analyticsdata.googleapis.com/v1beta
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: reports
      path: /properties/{{property_id}}:runReport
      inputParameters:
      - name: property_id
        in: path
      operations:
      - name: run-report
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://target.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: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → google-analytics-conversion-report.yml

Lists all workbooks in a Tableau site filtered by project name.

naftiko: '0.5'
info:
  label: Tableau Workbook List
  description: Lists all workbooks in a Tableau site filtered by project name.
  tags:
  - analytics
  - tableau
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: analytics
    port: 8080
    tools:
    - name: list-workbooks
      description: Given a Tableau project name, return all workbooks. Use for analytics asset discovery.
      inputParameters:
      - name: project_name
        in: body
        type: string
        description: Tableau project name.
      call: tableau.list-workbooks
      with:
        project_name: '{{project_name}}'
      outputParameters:
      - name: workbooks
        type: array
        mapping: $.workbooks.workbook
  consumes:
  - type: http
    namespace: tableau
    baseUri: https://tableau.target.com/api/3.21
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: workbooks
      path: /sites/{{site_id}}/workbooks
      operations:
      - name: list-workbooks
        method: GET
Open in Framework → View in Fleet → tableau-workbook-list.yml

When Snowflake detects inventory discrepancies, initiates an Oracle cycle count and notifies the store operations team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Oracle Inventory Recount Orchestrator
  description: When Snowflake detects inventory discrepancies, initiates an Oracle cycle count and notifies the store operations team via Microsoft Teams.
  tags:
  - supply-chain
  - oracle
  - snowflake
  - microsoft-teams
  - inventory
capability:
  exposes:
  - type: mcp
    namespace: inventory-ops
    port: 8080
    tools:
    - name: initiate-recount
      description: Given a store number and category, identify discrepancies and trigger a cycle count.
      inputParameters:
      - name: store_number
        in: body
        type: string
        description: Store number.
      - name: category
        in: body
        type: string
        description: Product category.
      steps:
      - name: find-discrepancies
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT dpci, system_qty, actual_qty, ABS(system_qty - actual_qty) as variance FROM SUPPLY_CHAIN.INVENTORY_AUDIT WHERE store_number = '{{store_number}}' AND category = '{{category}}' AND variance > 5 ORDER BY variance DESC
      - name: initiate-count
        type: call
        call: oracle.create-cycle-count
        with:
          store_number: '{{store_number}}'
          items: '{{find-discrepancies.results}}'
      - name: notify-store
        type: call
        call: msteams.send-channel-message
        with:
          team_id: store-operations
          channel: store-{{store_number}}
          text: 'Inventory recount initiated for {{category}} at Store {{store_number}}: {{find-discrepancies.row_count}} items with discrepancies.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://target.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: oracle
    baseUri: https://target.oraclecloud.com/fscmRestApi/resources/v2
    authentication:
      type: basic
      username: $secrets.oracle_user
      password: $secrets.oracle_password
    resources:
    - name: cycle-counts
      path: /cycleCounts
      operations:
      - name: create-cycle-count
        method: POST
  - 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
Open in Framework → View in Fleet → oracle-inventory-recount-orchestrator.yml

Queries Oracle ERP for budget vs. actuals by cost center for the current period and posts a variance summary to the finance leadership Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Oracle Forecasting and Budget Review
  description: Queries Oracle ERP for budget vs. actuals by cost center for the current period and posts a variance summary to the finance leadership Microsoft Teams channel.
  tags:
  - finance
  - oracle
  - erp
  - microsoft-teams
  - budgeting
  - forecasting
capability:
  exposes:
  - type: mcp
    namespace: budget-ops
    port: 8080
    tools:
    - name: digest-budget-vs-actuals
      description: Given an Oracle ERP ledger ID and accounting period, query budget vs. actuals for all cost centers and post a variance summary to the finance leadership Microsoft Teams channel. Use monthly for budget reviews or on-demand for executive inquiries.
      inputParameters:
      - name: ledger_id
        in: body
        type: integer
        description: Oracle GL ledger ID to query budget data for.
      - name: period_name
        in: body
        type: string
        description: Accounting period name to report on (e.g. Feb-2026).
      steps:
      - name: get-budget-data
        type: call
        call: oracle-budget.get-budget-entries
        with:
          ledger_id: '{{ledger_id}}'
          period_name: '{{period_name}}'
      - name: post-variance-report
        type: call
        call: msteams-budget.send-channel-message
        with:
          team_id: $secrets.msteams_finance_team_id
          channel_id: $secrets.msteams_finance_channel_id
          content: 'Budget vs. Actuals for {{period_name}} (Ledger {{ledger_id}}): {{get-budget-data.totalResults}} cost center entries retrieved. Review variances in Oracle ERP.'
  consumes:
  - type: http
    namespace: oracle-budget
    baseUri: https://target.oraclecloud.com/fscmRestApi/resources/11.13.18.05
    authentication:
      type: basic
      username: $secrets.oracle_user
      password: $secrets.oracle_password
    resources:
    - name: budget-entries
      path: /generalLedgerBudgetEntries
      inputParameters:
      - name: ledger_id
        in: query
      - name: period_name
        in: query
      operations:
      - name: get-budget-entries
        method: GET
  - type: http
    namespace: msteams-budget
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → oracle-forecasting-and-budget-review.yml

When a Zendesk support ticket meets escalation criteria, creates a Salesforce case and notifies the guest services team via Slack.

naftiko: '0.5'
info:
  label: Zendesk Ticket to Salesforce Case
  description: When a Zendesk support ticket meets escalation criteria, creates a Salesforce case and notifies the guest services team via Slack.
  tags:
  - customer-service
  - zendesk
  - salesforce
  - slack
capability:
  exposes:
  - type: mcp
    namespace: support-ops
    port: 8080
    tools:
    - name: escalate-zendesk-ticket
      description: Given a Zendesk ticket ID, fetch details, create Salesforce case, and notify guest services.
      inputParameters:
      - name: ticket_id
        in: body
        type: string
        description: Zendesk ticket ID.
      steps:
      - name: get-ticket
        type: call
        call: zendesk.get-ticket
        with:
          ticket_id: '{{ticket_id}}'
      - name: create-case
        type: call
        call: salesforce.create-case
        with:
          subject: 'Escalated: {{get-ticket.subject}}'
          description: '{{get-ticket.description}}'
          priority: High
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: guest-services-escalations
          text: 'Zendesk ticket {{ticket_id}} escalated. Case: {{create-case.case_number}}. Subject: {{get-ticket.subject}}.'
  consumes:
  - type: http
    namespace: zendesk
    baseUri: https://target.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: salesforce
    baseUri: https://target.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: cases
      path: /sobjects/Case
      operations:
      - name: create-case
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → zendesk-ticket-to-salesforce-case.yml

When a Shipt delivery encounters an exception, creates a Salesforce case and notifies the delivery operations Slack channel.

naftiko: '0.5'
info:
  label: Shipt Delivery Exception Handler
  description: When a Shipt delivery encounters an exception, creates a Salesforce case and notifies the delivery operations Slack channel.
  tags:
  - delivery
  - salesforce
  - slack
  - e-commerce
capability:
  exposes:
  - type: mcp
    namespace: delivery-ops
    port: 8080
    tools:
    - name: handle-delivery-exception
      description: Given an order number and exception type, create a case and notify delivery ops.
      inputParameters:
      - name: order_number
        in: body
        type: string
        description: Order number.
      - name: exception_type
        in: body
        type: string
        description: Exception type.
      - name: guest_email
        in: body
        type: string
        description: Guest email.
      steps:
      - name: create-case
        type: call
        call: salesforce.create-case
        with:
          subject: 'Delivery exception: {{order_number}} — {{exception_type}}'
          contact_email: '{{guest_email}}'
          priority: High
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: delivery-ops
          text: 'Delivery exception for order {{order_number}}: {{exception_type}}. Case: {{create-case.case_number}}.'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://target.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: cases
      path: /sobjects/Case
      operations:
      - name: create-case
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → shipt-delivery-exception-handler.yml

Queries Oracle for period-close task status, aggregates in Snowflake, and posts a readiness summary to the finance Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Oracle Financial Close Readiness
  description: Queries Oracle for period-close task status, aggregates in Snowflake, and posts a readiness summary to the finance Microsoft Teams channel.
  tags:
  - finance
  - oracle
  - snowflake
  - microsoft-teams
  - period-close
capability:
  exposes:
  - type: mcp
    namespace: finance-ops
    port: 8080
    tools:
    - name: check-close-readiness
      description: Given a fiscal period, query close tasks and post readiness report.
      inputParameters:
      - name: fiscal_period
        in: body
        type: string
        description: Fiscal period.
      steps:
      - name: get-close-status
        type: call
        call: oracle.get-close-status
        with:
          fiscal_period: '{{fiscal_period}}'
      - name: aggregate
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT task_category, COUNT(*) as total, SUM(CASE WHEN status='COMPLETE' THEN 1 ELSE 0 END) as done FROM FINANCE.CLOSE_TASKS WHERE fiscal_period = '{{fiscal_period}}' GROUP BY task_category
      - name: post-readiness
        type: call
        call: msteams.send-channel-message
        with:
          team_id: finance-team
          channel: period-close
          text: 'Close readiness for {{fiscal_period}}: {{aggregate.results}}.'
  consumes:
  - type: http
    namespace: oracle
    baseUri: https://target.oraclecloud.com/fscmRestApi/resources/v2
    authentication:
      type: basic
      username: $secrets.oracle_user
      password: $secrets.oracle_password
    resources:
    - name: close-tasks
      path: /financialCloseStatus
      operations:
      - name: get-close-status
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://target.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: 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
Open in Framework → View in Fleet → oracle-financial-close-readiness.yml

When an Azure DevOps build fails, creates a Jira bug ticket and notifies the dev team via Slack.

naftiko: '0.5'
info:
  label: Azure DevOps Build Failure Handler
  description: When an Azure DevOps build fails, creates a Jira bug ticket and notifies the dev team via Slack.
  tags:
  - devops
  - azure-devops
  - jira
  - slack
  - ci-cd
capability:
  exposes:
  - type: mcp
    namespace: build-ops
    port: 8080
    tools:
    - name: handle-build-failure
      description: Given a build ID and project, fetch details, create Jira bug, and notify dev team.
      inputParameters:
      - name: project
        in: body
        type: string
        description: Azure DevOps project.
      - name: build_id
        in: body
        type: string
        description: Build ID.
      steps:
      - name: get-build
        type: call
        call: azuredevops.get-build
        with:
          project: '{{project}}'
          build_id: '{{build_id}}'
      - name: create-bug
        type: call
        call: jira.create-issue
        with:
          project: DEV
          issue_type: Bug
          summary: 'Build failure: {{get-build.definition_name}} #{{build_id}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: dev-builds
          text: 'Build failure: {{get-build.definition_name}} #{{build_id}}. Jira: {{create-bug.key}}.'
  consumes:
  - type: http
    namespace: azuredevops
    baseUri: https://dev.azure.com/target
    authentication:
      type: basic
      username: $secrets.azdo_user
      password: $secrets.azdo_pat
    resources:
    - name: builds
      path: /{{project}}/_apis/build/builds/{{build_id}}?api-version=7.0
      inputParameters:
      - name: project
        in: path
      - name: build_id
        in: path
      operations:
      - name: get-build
        method: GET
  - type: http
    namespace: jira
    baseUri: https://target.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → azure-devops-build-failure-handler.yml

Fetches active store headcount by location from Workday and posts a formatted report to the finance Microsoft Teams channel for workforce cost planning.

naftiko: '0.5'
info:
  label: Workday Payroll Headcount by Store
  description: Fetches active store headcount by location from Workday and posts a formatted report to the finance Microsoft Teams channel for workforce cost planning.
  tags:
  - hr
  - finance
  - workday
  - microsoft-teams
  - reporting
  - headcount
capability:
  exposes:
  - type: mcp
    namespace: hr-finance
    port: 8080
    tools:
    - name: publish-store-headcount
      description: Retrieve active store associate headcount by location from Workday and post the summary to the Microsoft Teams finance channel. Use monthly for store labor cost reviews or weekly for scheduling optimization.
      inputParameters:
      - name: as_of_date
        in: body
        type: string
        description: Headcount report date in YYYY-MM-DD format.
      steps:
      - name: get-headcount
        type: call
        call: workday-hc.get-workers
        with:
          as_of_date: '{{as_of_date}}'
      - name: post-report
        type: call
        call: msteams-finance.send-channel-message
        with:
          team_id: $secrets.msteams_finance_team_id
          channel_id: $secrets.msteams_finance_channel_id
          content: 'Store headcount as of {{as_of_date}}: Total active associates: {{get-headcount.total}}. Report sourced from Workday.'
  consumes:
  - type: http
    namespace: workday-hc
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /workers
      inputParameters:
      - name: as_of_date
        in: query
      operations:
      - name: get-workers
        method: GET
  - type: http
    namespace: msteams-finance
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → workday-payroll-headcount-by-store.yml

When a store reports an IT outage, creates a P1 ServiceNow incident, pages on-call via PagerDuty, and notifies store ops Slack.

naftiko: '0.5'
info:
  label: Store IT Outage Response Orchestrator
  description: When a store reports an IT outage, creates a P1 ServiceNow incident, pages on-call via PagerDuty, and notifies store ops Slack.
  tags:
  - operations
  - servicenow
  - pagerduty
  - slack
  - retail
capability:
  exposes:
  - type: mcp
    namespace: store-ops
    port: 8080
    tools:
    - name: handle-store-outage
      description: Given a store number and affected system, create P1 incident, page on-call, and notify ops.
      inputParameters:
      - name: store_number
        in: body
        type: string
        description: Store number.
      - name: affected_system
        in: body
        type: string
        description: Affected system.
      - name: impact
        in: body
        type: string
        description: Business impact.
      steps:
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          category: store_systems
          urgency: 1
          short_description: '[P1] Store {{store_number}} — {{affected_system}} outage'
      - name: page-oncall
        type: call
        call: pagerduty.create-incident
        with:
          service_id: store-systems
          title: Store {{store_number}} {{affected_system}} outage
          urgency: high
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: store-ops-critical
          text: 'P1 at Store {{store_number}}: {{affected_system}}. Incident: {{create-incident.number}}.'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://target.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: incidents
      path: /incidents
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → store-it-outage-response-orchestrator.yml

Queries Snowflake for data quality anomalies in daily store sales feeds, and creates a ServiceNow data quality incident if row counts or null rates exceed expected thresholds.

naftiko: '0.5'
info:
  label: Snowflake Store Sales Data Quality Check
  description: Queries Snowflake for data quality anomalies in daily store sales feeds, and creates a ServiceNow data quality incident if row counts or null rates exceed expected thresholds.
  tags:
  - data
  - snowflake
  - servicenow
  - data-quality
  - retail
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: dq-ops
    port: 8080
    tools:
    - name: check-sales-data-quality
      description: Given a Snowflake database and schema, query the data quality monitoring view for store sales feed anomalies (row count drops, null spikes) and open a ServiceNow data quality incident if thresholds are breached. Use as a daily pre-business-hours check.
      inputParameters:
      - name: database
        in: body
        type: string
        description: Snowflake database containing the store sales data.
      - name: schema
        in: body
        type: string
        description: Snowflake schema for retail sales monitoring views.
      steps:
      - name: run-dq-check
        type: call
        call: snowflake-dq.query-dq-view
        with:
          database: '{{database}}'
          schema: '{{schema}}'
      - name: create-dq-incident
        type: call
        call: snow-dq.create-incident
        with:
          category: data_quality
          short_description: Sales data quality anomaly detected in {{database}}.{{schema}}
          assigned_group: Data_Engineering
          description: 'Snowflake data quality check failed for {{database}}.{{schema}}. Anomalies detected: {{run-dq-check.total}}. Review before morning reports execute.'
  consumes:
  - type: http
    namespace: snowflake-dq
    baseUri: https://target.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: dq-views
      path: /databases/{{database}}/schemas/{{schema}}/tables
      inputParameters:
      - name: database
        in: path
      - name: schema
        in: path
      operations:
      - name: query-dq-view
        method: GET
  - type: http
    namespace: snow-dq
    baseUri: https://target.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → snowflake-store-sales-data-quality-check.yml

When Splunk detects a security anomaly, creates a ServiceNow incident and notifies SOC via Slack.

naftiko: '0.5'
info:
  label: Splunk Security Alert to Incident
  description: When Splunk detects a security anomaly, creates a ServiceNow incident and notifies SOC via Slack.
  tags:
  - security
  - splunk
  - servicenow
  - slack
capability:
  exposes:
  - type: mcp
    namespace: soc
    port: 8080
    tools:
    - name: handle-security-alert
      description: Given a Splunk search ID and alert type, fetch results, create incident, and alert SOC.
      inputParameters:
      - name: search_id
        in: body
        type: string
        description: Splunk search ID.
      - name: alert_type
        in: body
        type: string
        description: Alert type.
      steps:
      - name: get-results
        type: call
        call: splunk.get-results
        with:
          search_id: '{{search_id}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          category: security
          urgency: 2
          short_description: 'Security alert: {{alert_type}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: soc-alerts
          text: 'Security alert: {{alert_type}}. Events: {{get-results.event_count}}. Incident: {{create-incident.number}}.'
  consumes:
  - type: http
    namespace: splunk
    baseUri: https://splunk.target.com:8089/services
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - name: results
      path: /search/jobs/{{search_id}}/results
      inputParameters:
      - name: search_id
        in: path
      operations:
      - name: get-results
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://target.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → splunk-security-alert-to-incident.yml

Retrieves the seasonal buying calendar from SharePoint and creates corresponding milestone tasks in Jira for the buying team.

naftiko: '0.5'
info:
  label: Seasonal Buying Calendar Sync
  description: Retrieves the seasonal buying calendar from SharePoint and creates corresponding milestone tasks in Jira for the buying team.
  tags:
  - buying
  - planning
  - sharepoint
  - jira
capability:
  exposes:
  - type: mcp
    namespace: buying-calendar
    port: 8080
    tools:
    - name: sync-buying-calendar
      description: Fetch buying calendar from SharePoint and create Jira milestones.
      inputParameters:
      - name: season
        in: body
        type: string
        description: The season identifier (e.g., Fall-2026).
      - name: banner
        in: body
        type: string
        description: The retail banner.
      steps:
      - name: get-calendar
        type: call
        call: sharepoint.get-file
        with:
          site_id: buying_calendars
          file_path: Calendars/{{banner}}/{{season}}.xlsx
      - name: create-milestones
        type: call
        call: jira.create-issue
        with:
          project: BUY
          summary: '{{banner}} {{season}} buying milestones'
          description: 'Seasonal buying calendar synced from SharePoint. Calendar: {{get-calendar.download_url}}'
          issue_type: Epic
  consumes:
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: files
      path: /{{site_id}}/drive/root:/{{file_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: file_path
        in: path
      operations:
      - name: get-file
        method: GET
  - type: http
    namespace: jira
    baseUri: https://tjx.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → seasonal-buying-calendar-sync.yml

Queries Datadog for infrastructure health metrics across TJX retail and DC environments.

naftiko: '0.5'
info:
  label: Datadog Infrastructure Monitor
  description: Queries Datadog for infrastructure health metrics across TJX retail and DC environments.
  tags:
  - monitoring
  - datadog
  - infrastructure
capability:
  exposes:
  - type: mcp
    namespace: infra-monitoring
    port: 8080
    tools:
    - name: get-infra-health
      description: Fetch infrastructure health metrics from Datadog.
      inputParameters:
      - name: environment
        in: body
        type: string
        description: The environment tag (e.g., store-pos, dc-wms, ecom-prod).
      call: datadog.get-infra-metrics
      with:
        environment: '{{environment}}'
  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{env:{{environment}}}
      inputParameters:
      - name: environment
        in: path
      operations:
      - name: get-infra-metrics
        method: GET
Open in Framework → View in Fleet → datadog-infrastructure-monitor.yml

Retrieves website traffic metrics from Google Analytics for the TJX e-commerce properties.

naftiko: '0.5'
info:
  label: Google Analytics Web Traffic Report
  description: Retrieves website traffic metrics from Google Analytics for the TJX e-commerce properties.
  tags:
  - marketing
  - google-analytics
  - e-commerce
capability:
  exposes:
  - type: mcp
    namespace: web-analytics
    port: 8080
    tools:
    - name: get-web-traffic
      description: Fetch Google Analytics traffic data for a date range.
      inputParameters:
      - name: property_id
        in: body
        type: string
        description: The GA4 property 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: ga.get-traffic-report
      with:
        property_id: '{{property_id}}'
        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
      inputParameters:
      - name: property_id
        in: path
      operations:
      - name: get-traffic-report
        method: POST
Open in Framework → View in Fleet → google-analytics-web-traffic-report.yml

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.tjx-companies.com/communications/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: slack
      path: /slack/notification/publisher/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-slack
        method: GET
Open in Framework → View in Fleet → slack-notification-publisher.yml

Pulls inventory shrinkage data from SAP for a region, generates a Power BI report, and distributes to loss prevention leadership via Microsoft Teams.

naftiko: '0.5'
info:
  label: Inventory Shrinkage Report Generator
  description: Pulls inventory shrinkage data from SAP for a region, generates a Power BI report, and distributes to loss prevention leadership via Microsoft Teams.
  tags:
  - loss-prevention
  - inventory
  - sap
  - power-bi
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: shrinkage-reporting
    port: 8080
    tools:
    - name: generate-shrinkage-report
      description: Generate and distribute an inventory shrinkage report.
      inputParameters:
      - name: region_code
        in: body
        type: string
        description: The regional code.
      - name: period
        in: body
        type: string
        description: The reporting period in YYYY-MM format.
      steps:
      - name: get-shrinkage-data
        type: call
        call: sap.get-shrinkage
        with:
          region: '{{region_code}}'
          period: '{{period}}'
      - name: refresh-report
        type: call
        call: powerbi.refresh-dataset
        with:
          dataset_id: shrinkage_ds
      - name: distribute
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: lp_leadership
          text: 'Shrinkage report for region {{region_code}} ({{period}}): Total shrink: ${{get-shrinkage-data.total_shrink}}. Rate: {{get-shrinkage-data.shrink_rate_pct}}%. Report: {{refresh-report.report_url}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://tjx.sap.com/sap/opu/odata/sap/ZLP_SHRINK_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: shrinkage
      path: /ShrinkageSet?$filter=Region eq '{{region}}' and Period eq '{{period}}'
      inputParameters:
      - name: region
        in: path
      - name: period
        in: path
      operations:
      - name: get-shrinkage
        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/{{channel_id}}/channels/General/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → inventory-shrinkage-report-generator.yml

Retrieves store associate schedules from Workday for a given week and store, returning shift assignments and coverage gaps.

naftiko: '0.5'
info:
  label: Store Associate Scheduling
  description: Retrieves store associate schedules from Workday for a given week and store, returning shift assignments and coverage gaps.
  tags:
  - store-ops
  - scheduling
  - workday
  - workforce
capability:
  exposes:
  - type: mcp
    namespace: store-scheduling
    port: 8080
    tools:
    - name: get-store-schedule
      description: Fetch store associate schedules from Workday.
      inputParameters:
      - name: store_number
        in: body
        type: string
        description: The TJX store number.
      - name: week_start
        in: body
        type: string
        description: The week start date in YYYY-MM-DD format.
      call: workday.get-schedule
      with:
        store: '{{store_number}}'
        week: '{{week_start}}'
  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={{store}}&weekOf={{week}}
      inputParameters:
      - name: store
        in: path
      - name: week
        in: path
      operations:
      - name: get-schedule
        method: GET
Open in Framework → View in Fleet → store-associate-scheduling.yml

Processes employee offboarding by revoking access, returning equipment, and conducting exit interviews.

naftiko: '0.5'
info:
  label: Employee Offboarding Orchestrator
  description: Processes employee offboarding by revoking access, returning equipment, and conducting exit interviews.
  tags:
  - hr
  - identity
  - operations
capability:
  exposes:
  - type: mcp
    namespace: hr
    port: 8080
    tools:
    - name: run-employee-offboarding-orchestrator
      description: Processes employee offboarding by revoking access, returning equipment, and conducting exit interviews.
      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 Employee Offboarding Orchestrator for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.tjx-companies.com/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.tjx-companies.com/v2
    authentication:
      type: bearer
      token: $secrets.tjx_companies_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
Open in Framework → View in Fleet → employee-offboarding-orchestrator.yml

Retrieves deal pipeline status for a buyer.

naftiko: '0.5'
info:
  label: Buyer Deal Tracker
  description: Retrieves deal pipeline status for a buyer.
  tags:
  - buying
  - procurement
capability:
  exposes:
  - type: mcp
    namespace: buying
    port: 8080
    tools:
    - name: get-buyer
      description: Retrieves deal pipeline status for a buyer.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The buyer deal tracker identifier.
      call: buying-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: buying-api
    baseUri: https://api.tjx-companies.com/buying/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: buyer
      path: /buyer/deal/tracker/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-buyer
        method: GET
Open in Framework → View in Fleet → buyer-deal-tracker.yml

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.tjx-companies.com/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.tjx-companies.com/v2
    authentication:
      type: bearer
      token: $secrets.tjx_companies_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
Open in Framework → View in Fleet → executive-dashboard-refresh-orchestrator.yml

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.tjx-companies.com/collaboration/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: confluence
      path: /confluence/page/viewer/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-confluence
        method: GET
Open in Framework → View in Fleet → confluence-page-viewer.yml

Pulls distribution center labor productivity metrics from SAP, comparing actual vs planned units per labor hour, and posts the daily summary to the DC operations Teams channel.

naftiko: '0.5'
info:
  label: DC Labor Productivity Tracker
  description: Pulls distribution center labor productivity metrics from SAP, comparing actual vs planned units per labor hour, and posts the daily summary to the DC operations Teams channel.
  tags:
  - distribution
  - workforce
  - sap
  - microsoft-teams
  - productivity
capability:
  exposes:
  - type: mcp
    namespace: dc-productivity
    port: 8080
    tools:
    - name: get-dc-productivity
      description: Fetch DC labor productivity from SAP and post summary to Teams.
      inputParameters:
      - name: dc_code
        in: body
        type: string
        description: The distribution center code.
      - name: date
        in: body
        type: string
        description: The date in YYYY-MM-DD format.
      steps:
      - name: get-productivity
        type: call
        call: sap.get-dc-labor-metrics
        with:
          dc: '{{dc_code}}'
          date: '{{date}}'
      - name: post-summary
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: dc_{{dc_code}}_ops
          text: 'DC {{dc_code}} productivity ({{date}}): Actual {{get-productivity.actual_uph}} UPH vs Plan {{get-productivity.planned_uph}} UPH. Efficiency: {{get-productivity.efficiency_pct}}%.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://tjx.sap.com/sap/opu/odata/sap/ZWM_LABOR_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: labor-metrics
      path: /LaborMetricSet(DC='{{dc}}',Date='{{date}}')
      inputParameters:
      - name: dc
        in: path
      - name: date
        in: path
      operations:
      - name: get-dc-labor-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/{{channel_id}}/channels/General/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → dc-labor-productivity-tracker.yml

Matches a vendor invoice to its purchase order in SAP, routes for approval via Microsoft Power Automate, and logs the result in ServiceNow.

naftiko: '0.5'
info:
  label: Invoice Processing Pipeline
  description: Matches a vendor invoice to its purchase order in SAP, routes for approval via Microsoft Power Automate, and logs the result in ServiceNow.
  tags:
  - finance
  - sap
  - microsoft-power-automate
  - servicenow
  - invoice
capability:
  exposes:
  - type: mcp
    namespace: invoice-processing
    port: 8080
    tools:
    - name: process-vendor-invoice
      description: Match invoice to PO in SAP, route for approval, and log in ServiceNow.
      inputParameters:
      - name: invoice_number
        in: body
        type: string
        description: The vendor invoice number.
      - name: po_number
        in: body
        type: string
        description: The SAP purchase order number to match.
      steps:
      - name: match-invoice
        type: call
        call: sap.match-invoice
        with:
          invoice_number: '{{invoice_number}}'
          po_number: '{{po_number}}'
      - name: route-approval
        type: call
        call: power-automate.trigger-flow
        with:
          flow_id: invoice_approval
          invoice_number: '{{invoice_number}}'
          amount: '{{match-invoice.amount}}'
      - name: log-processing
        type: call
        call: servicenow.create-record
        with:
          table: u_invoice_log
          invoice_number: '{{invoice_number}}'
          status: '{{route-approval.status}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://tjx.sap.com/sap/opu/odata/sap/ZFI_INVOICE_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: invoice-match
      path: /InvoiceMatchSet
      operations:
      - name: match-invoice
        method: POST
  - type: http
    namespace: power-automate
    baseUri: https://prod-01.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
  - type: http
    namespace: servicenow
    baseUri: https://tjx.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
Open in Framework → View in Fleet → invoice-processing-pipeline.yml

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.tjx-companies.com/engineering/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: jira
      path: /jira/ticket/viewer/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-jira
        method: GET
Open in Framework → View in Fleet → jira-ticket-viewer.yml

Sends a vendor agreement for e-signature via DocuSign and updates the Salesforce vendor record with signing status.

naftiko: '0.5'
info:
  label: DocuSign Vendor Agreement Executor
  description: Sends a vendor agreement for e-signature via DocuSign and updates the Salesforce vendor record with signing status.
  tags:
  - legal
  - docusign
  - salesforce
  - contracts
capability:
  exposes:
  - type: mcp
    namespace: contract-mgmt
    port: 8080
    tools:
    - name: send-vendor-agreement
      description: Send a vendor agreement via DocuSign and update Salesforce.
      inputParameters:
      - name: vendor_account_id
        in: body
        type: string
        description: The Salesforce vendor account ID.
      - name: signer_email
        in: body
        type: string
        description: The signer's email address.
      - name: signer_name
        in: body
        type: string
        description: The signer's full name.
      steps:
      - name: get-vendor
        type: call
        call: salesforce.get-account
        with:
          account_id: '{{vendor_account_id}}'
      - name: send-envelope
        type: call
        call: docusign.create-envelope
        with:
          document_url: '{{get-vendor.agreement_url}}'
          signer_email: '{{signer_email}}'
          signer_name: '{{signer_name}}'
      - name: update-vendor
        type: call
        call: salesforce.update-account
        with:
          account_id: '{{vendor_account_id}}'
          agreement_status: Sent for Signature
          envelope_id: '{{send-envelope.envelope_id}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://tjx.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /sobjects/Account/{{account_id}}
      inputParameters:
      - name: account_id
        in: path
      operations:
      - name: get-account
        method: GET
      - name: update-account
        method: PATCH
  - type: http
    namespace: docusign
    baseUri: https://na4.docusign.net/restapi/v2.1/accounts/$secrets.docusign_account_id
    authentication:
      type: bearer
      token: $secrets.docusign_token
    resources:
    - name: envelopes
      path: /envelopes
      operations:
      - name: create-envelope
        method: POST
Open in Framework → View in Fleet → docusign-vendor-agreement-executor.yml

Creates a facilities maintenance request in ServiceNow for a store, assigns the appropriate vendor, and notifies the store manager via Microsoft Teams.

naftiko: '0.5'
info:
  label: Store Maintenance Request Handler
  description: Creates a facilities maintenance request in ServiceNow for a store, assigns the appropriate vendor, and notifies the store manager via Microsoft Teams.
  tags:
  - store-ops
  - maintenance
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: facilities-mgmt
    port: 8080
    tools:
    - name: create-maintenance-request
      description: Create a maintenance request in ServiceNow and notify store manager.
      inputParameters:
      - name: store_number
        in: body
        type: string
        description: The store number.
      - name: issue_type
        in: body
        type: string
        description: Type of maintenance issue (HVAC, plumbing, electrical, etc.).
      - name: description
        in: body
        type: string
        description: Description of the maintenance issue.
      - name: priority
        in: body
        type: string
        description: Priority level (1-5).
      steps:
      - name: create-request
        type: call
        call: servicenow.create-record
        with:
          table: fm_request
          short_description: Store {{store_number}} - {{issue_type}}
          description: '{{description}}'
          priority: '{{priority}}'
          location: Store {{store_number}}
      - name: notify-manager
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: store_{{store_number}}_mgmt
          text: 'Maintenance request created: {{issue_type}} (P{{priority}}). ServiceNow: {{create-request.number}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://tjx.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: 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: post-channel-message
        method: POST
Open in Framework → View in Fleet → store-maintenance-request-handler.yml

Looks up a SAP purchase order by number and returns header status, vendor, total value, and delivery schedule for the buying team.

naftiko: '0.5'
info:
  label: Purchase Order Status Checker
  description: Looks up a SAP purchase order by number and returns header status, vendor, total value, and delivery schedule for the buying team.
  tags:
  - procurement
  - sap
  - buying
  - purchase-order
capability:
  exposes:
  - type: mcp
    namespace: procurement-ops
    port: 8080
    tools:
    - name: get-purchase-order
      description: Look up a SAP purchase order by PO number.
      inputParameters:
      - name: po_number
        in: body
        type: string
        description: The SAP purchase order number.
      call: sap.get-po
      with:
        po_number: '{{po_number}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://tjx.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
Open in Framework → View in Fleet → purchase-order-status-checker.yml

Orchestrates off price retail workflow 5 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Off Price Retail Workflow 5
  description: Orchestrates off price retail workflow 5 by coordinating across systems, validating data, and sending notifications.
  tags:
  - false
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: false
    port: 8080
    tools:
    - name: run-off-price-retail-workflow-005
      description: Orchestrates off price retail 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 Off Price Retail Workflow 5 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.tjx-companies.com/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.tjx-companies.com/v2
    authentication:
      type: bearer
      token: $secrets.tjx_companies_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
Open in Framework → View in Fleet → off-price-retail-workflow-5.yml

Orchestrates off price retail workflow 11 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Off Price Retail Workflow 11
  description: Orchestrates off price retail workflow 11 by coordinating across systems, validating data, and sending notifications.
  tags:
  - false
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: false
    port: 8080
    tools:
    - name: run-off-price-retail-workflow-011
      description: Orchestrates off price retail 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 Off Price Retail Workflow 11 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.tjx-companies.com/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.tjx-companies.com/v2
    authentication:
      type: bearer
      token: $secrets.tjx_companies_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
Open in Framework → View in Fleet → off-price-retail-workflow-11.yml

Orchestrates off price retail workflow 10 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Off Price Retail Workflow 10
  description: Orchestrates off price retail workflow 10 by coordinating across systems, validating data, and sending notifications.
  tags:
  - false
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: false
    port: 8080
    tools:
    - name: run-off-price-retail-workflow-010
      description: Orchestrates off price retail 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 Off Price Retail Workflow 10 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.tjx-companies.com/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.tjx-companies.com/v2
    authentication:
      type: bearer
      token: $secrets.tjx_companies_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
Open in Framework → View in Fleet → off-price-retail-workflow-10.yml

Orchestrates off price retail workflow 4 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Off Price Retail Workflow 4
  description: Orchestrates off price retail workflow 4 by coordinating across systems, validating data, and sending notifications.
  tags:
  - false
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: false
    port: 8080
    tools:
    - name: run-off-price-retail-workflow-004
      description: Orchestrates off price retail 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 Off Price Retail Workflow 4 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.tjx-companies.com/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.tjx-companies.com/v2
    authentication:
      type: bearer
      token: $secrets.tjx_companies_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
Open in Framework → View in Fleet → off-price-retail-workflow-4.yml

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.tjx-companies.com/sales/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: salesforce
      path: /salesforce/account/viewer/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-salesforce
        method: GET
Open in Framework → View in Fleet → salesforce-account-viewer.yml

Pulls carrier freight invoices and matches against SAP transportation costs to identify discrepancies, logging exceptions in ServiceNow for review.

naftiko: '0.5'
info:
  label: Freight Cost Reconciliation
  description: Pulls carrier freight invoices and matches against SAP transportation costs to identify discrepancies, logging exceptions in ServiceNow for review.
  tags:
  - distribution
  - freight
  - sap
  - servicenow
  - finance
capability:
  exposes:
  - type: mcp
    namespace: freight-reconciliation
    port: 8080
    tools:
    - name: reconcile-freight
      description: Match carrier invoices against SAP freight costs and log exceptions.
      inputParameters:
      - name: carrier_id
        in: body
        type: string
        description: The carrier identifier.
      - name: invoice_period
        in: body
        type: string
        description: The invoice period in YYYY-MM format.
      steps:
      - name: get-carrier-invoices
        type: call
        call: sap.get-freight-invoices
        with:
          carrier: '{{carrier_id}}'
          period: '{{invoice_period}}'
      - name: get-transport-costs
        type: call
        call: sap.get-transport-costs
        with:
          carrier: '{{carrier_id}}'
          period: '{{invoice_period}}'
      - name: log-exceptions
        type: call
        call: servicenow.create-record
        with:
          table: u_freight_exception
          carrier: '{{carrier_id}}'
          period: '{{invoice_period}}'
          invoice_total: '{{get-carrier-invoices.total}}'
          cost_total: '{{get-transport-costs.total}}'
          variance: '{{get-carrier-invoices.total - get-transport-costs.total}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://tjx.sap.com/sap/opu/odata/sap/ZTM_FREIGHT_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: freight-invoices
      path: /FreightInvoiceSet?$filter=Carrier eq '{{carrier}}' and Period eq '{{period}}'
      inputParameters:
      - name: carrier
        in: path
      - name: period
        in: path
      operations:
      - name: get-freight-invoices
        method: GET
    - name: transport-costs
      path: /TransportCostSet?$filter=Carrier eq '{{carrier}}' and Period eq '{{period}}'
      inputParameters:
      - name: carrier
        in: path
      - name: period
        in: path
      operations:
      - name: get-transport-costs
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://tjx.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
Open in Framework → View in Fleet → freight-cost-reconciliation.yml

Retrieves off price retail operational data for workflow 12.

naftiko: '0.5'
info:
  label: Off Price Retail Data Query 12
  description: Retrieves off price retail operational data for workflow 12.
  tags:
  - false
  - operations
capability:
  exposes:
  - type: mcp
    namespace: false
    port: 8080
    tools:
    - name: get-data-12
      description: Query off price retail data for workflow 12.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: off-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: off-api
    baseUri: https://api.tjx-companies.com/off-price-retail/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: data
      path: /data/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-data-12
        method: GET
Open in Framework → View in Fleet → off-price-retail-data-query-12.yml

Retrieves off price retail operational data for workflow 6.

naftiko: '0.5'
info:
  label: Off Price Retail Data Query 6
  description: Retrieves off price retail operational data for workflow 6.
  tags:
  - false
  - operations
capability:
  exposes:
  - type: mcp
    namespace: false
    port: 8080
    tools:
    - name: get-data-6
      description: Query off price retail data for workflow 6.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: off-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: off-api
    baseUri: https://api.tjx-companies.com/off-price-retail/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: data
      path: /data/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-data-6
        method: GET
Open in Framework → View in Fleet → off-price-retail-data-query-6.yml

Orchestrates off price retail workflow 7 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Off Price Retail Workflow 7
  description: Orchestrates off price retail workflow 7 by coordinating across systems, validating data, and sending notifications.
  tags:
  - false
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: false
    port: 8080
    tools:
    - name: run-off-price-retail-workflow-007
      description: Orchestrates off price retail 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 Off Price Retail Workflow 7 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.tjx-companies.com/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.tjx-companies.com/v2
    authentication:
      type: bearer
      token: $secrets.tjx_companies_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
Open in Framework → View in Fleet → off-price-retail-workflow-7.yml

Orchestrates off price retail workflow 13 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Off Price Retail Workflow 13
  description: Orchestrates off price retail workflow 13 by coordinating across systems, validating data, and sending notifications.
  tags:
  - false
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: false
    port: 8080
    tools:
    - name: run-off-price-retail-workflow-013
      description: Orchestrates off price retail 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 Off Price Retail Workflow 13 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.tjx-companies.com/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.tjx-companies.com/v2
    authentication:
      type: bearer
      token: $secrets.tjx_companies_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
Open in Framework → View in Fleet → off-price-retail-workflow-13.yml

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.tjx-companies.com/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.tjx-companies.com/v2
    authentication:
      type: bearer
      token: $secrets.tjx_companies_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
Open in Framework → View in Fleet → data-governance-review-orchestrator.yml

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.tjx-companies.com/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.tjx-companies.com/v2
    authentication:
      type: bearer
      token: $secrets.tjx_companies_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
Open in Framework → View in Fleet → cross-functional-project-kickoff-orchestrator.yml

Queries the Circana market intelligence platform for competitive pricing data on a product category and returns price benchmarks.

naftiko: '0.5'
info:
  label: Competitive Price Check
  description: Queries the Circana market intelligence platform for competitive pricing data on a product category and returns price benchmarks.
  tags:
  - buying
  - pricing
  - circana
  - market-intelligence
capability:
  exposes:
  - type: mcp
    namespace: price-intelligence
    port: 8080
    tools:
    - name: get-competitive-pricing
      description: Fetch competitive pricing data from Circana for a product category.
      inputParameters:
      - name: category_code
        in: body
        type: string
        description: The product category code.
      - name: market
        in: body
        type: string
        description: The market region.
      call: circana.get-pricing
      with:
        category: '{{category_code}}'
        market: '{{market}}'
  consumes:
  - type: http
    namespace: circana
    baseUri: https://api.circana.com/v2
    authentication:
      type: bearer
      token: $secrets.circana_token
    resources:
    - name: pricing
      path: /pricing/benchmarks?category={{category}}&market={{market}}
      inputParameters:
      - name: category
        in: path
      - name: market
        in: path
      operations:
      - name: get-pricing
        method: GET
Open in Framework → View in Fleet → competitive-price-check.yml

Retrieves payroll summary data from Workday for a pay period by department.

naftiko: '0.5'
info:
  label: Workday Payroll Summary
  description: Retrieves payroll summary data from Workday for a pay period by department.
  tags:
  - hr
  - payroll
  - workday
  - finance
capability:
  exposes:
  - type: mcp
    namespace: payroll
    port: 8080
    tools:
    - name: get-payroll-summary
      description: Fetch Workday payroll summary for a pay period.
      inputParameters:
      - name: pay_period
        in: body
        type: string
        description: The pay period identifier.
      call: workday.get-payroll
      with:
        pay_period: '{{pay_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: payroll
      path: /payroll/summaries?payPeriod={{pay_period}}
      inputParameters:
      - name: pay_period
        in: path
      operations:
      - name: get-payroll
        method: GET
Open in Framework → View in Fleet → workday-payroll-summary.yml

When goods arrive at a distribution center, records the receipt in SAP, allocates units to stores based on demand signals, creates transfer orders, and notifies the DC manager via Teams.

naftiko: '0.5'
info:
  label: DC Receiving and Allocation Pipeline
  description: When goods arrive at a distribution center, records the receipt in SAP, allocates units to stores based on demand signals, creates transfer orders, and notifies the DC manager via Teams.
  tags:
  - distribution
  - receiving
  - allocation
  - sap
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: dc-receiving
    port: 8080
    tools:
    - name: receive-and-allocate
      description: Record DC receipt in SAP, allocate to stores, and notify DC manager.
      inputParameters:
      - name: po_number
        in: body
        type: string
        description: The purchase order number being received.
      - name: dc_code
        in: body
        type: string
        description: The distribution center code.
      - name: received_quantity
        in: body
        type: string
        description: Total units received.
      steps:
      - name: record-receipt
        type: call
        call: sap.post-goods-receipt
        with:
          po_number: '{{po_number}}'
          plant: '{{dc_code}}'
          quantity: '{{received_quantity}}'
      - name: allocate-to-stores
        type: call
        call: sap.run-allocation
        with:
          material: '{{record-receipt.material_number}}'
          dc: '{{dc_code}}'
          available_qty: '{{received_quantity}}'
      - name: notify-dc-manager
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: dc_{{dc_code}}_ops
          text: 'Receipt: PO {{po_number}} - {{received_quantity}} units received. Allocated to {{allocate-to-stores.store_count}} stores.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://tjx.sap.com/sap/opu/odata/sap/ZMM_RECEIVING_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: goods-receipt
      path: /GoodsReceiptSet
      operations:
      - name: post-goods-receipt
        method: POST
    - name: allocation
      path: /AllocationRunSet
      operations:
      - name: run-allocation
        method: POST
  - 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: post-channel-message
        method: POST
Open in Framework → View in Fleet → dc-receiving-and-allocation-pipeline.yml

Retrieves off price retail operational data for workflow 3.

naftiko: '0.5'
info:
  label: Off Price Retail Data Query 3
  description: Retrieves off price retail operational data for workflow 3.
  tags:
  - false
  - operations
capability:
  exposes:
  - type: mcp
    namespace: false
    port: 8080
    tools:
    - name: get-data-3
      description: Query off price retail data for workflow 3.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: off-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: off-api
    baseUri: https://api.tjx-companies.com/off-price-retail/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: data
      path: /data/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-data-3
        method: GET
Open in Framework → View in Fleet → off-price-retail-data-query-3.yml

Orchestrates off price retail workflow 2 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Off Price Retail Workflow 2
  description: Orchestrates off price retail workflow 2 by coordinating across systems, validating data, and sending notifications.
  tags:
  - false
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: false
    port: 8080
    tools:
    - name: run-off-price-retail-workflow-002
      description: Orchestrates off price retail 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 Off Price Retail Workflow 2 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.tjx-companies.com/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.tjx-companies.com/v2
    authentication:
      type: bearer
      token: $secrets.tjx_companies_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
Open in Framework → View in Fleet → off-price-retail-workflow-2.yml

Orchestrates off price retail workflow 16 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Off Price Retail Workflow 16
  description: Orchestrates off price retail workflow 16 by coordinating across systems, validating data, and sending notifications.
  tags:
  - false
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: false
    port: 8080
    tools:
    - name: run-off-price-retail-workflow-016
      description: Orchestrates off price retail workflow 16 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 Off Price Retail Workflow 16 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.tjx-companies.com/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.tjx-companies.com/v2
    authentication:
      type: bearer
      token: $secrets.tjx_companies_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
Open in Framework → View in Fleet → off-price-retail-workflow-16.yml

Pulls weekly sales and traffic data from SAP for multiple stores, generates a comparison report in Power BI, and distributes it to regional leadership via Microsoft Teams.

naftiko: '0.5'
info:
  label: Store Performance Comparison Report
  description: Pulls weekly sales and traffic data from SAP for multiple stores, generates a comparison report in Power BI, and distributes it to regional leadership via Microsoft Teams.
  tags:
  - store-ops
  - reporting
  - sap
  - power-bi
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: store-performance
    port: 8080
    tools:
    - name: generate-store-comparison
      description: Generate a multi-store performance comparison across SAP, Power BI, and Teams.
      inputParameters:
      - name: region_code
        in: body
        type: string
        description: The regional code for stores to compare.
      - name: week_ending
        in: body
        type: string
        description: The week ending date in YYYY-MM-DD format.
      steps:
      - name: pull-sales-data
        type: call
        call: sap.get-regional-sales
        with:
          region: '{{region_code}}'
          week: '{{week_ending}}'
      - name: refresh-report
        type: call
        call: powerbi.refresh-dataset
        with:
          dataset_id: store_comparison_ds
      - name: distribute-report
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: regional_{{region_code}}_leadership
          text: 'Weekly store comparison for region {{region_code}} (week ending {{week_ending}}) is ready: {{refresh-report.report_url}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://tjx.sap.com/sap/opu/odata/sap/ZSD_REGIONAL_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: regional-sales
      path: /RegionalSalesSet?$filter=Region eq '{{region}}' and WeekEnding eq '{{week}}'
      inputParameters:
      - name: region
        in: path
      - name: week
        in: path
      operations:
      - name: get-regional-sales
        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/{{channel_id}}/channels/General/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → store-performance-comparison-report.yml

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.tjx-companies.com/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.tjx-companies.com/v2
    authentication:
      type: bearer
      token: $secrets.tjx_companies_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
Open in Framework → View in Fleet → procurement-spend-analysis-orchestrator.yml

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.tjx-companies.com/analytics/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: snowflake
      path: /snowflake/analytics/query/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-snowflake
        method: GET
Open in Framework → View in Fleet → snowflake-analytics-query.yml

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.tjx-companies.com/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.tjx-companies.com/v2
    authentication:
      type: bearer
      token: $secrets.tjx_companies_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
Open in Framework → View in Fleet → annual-compliance-certification-orchestrator.yml

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.tjx-companies.com/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.tjx-companies.com/v2
    authentication:
      type: bearer
      token: $secrets.tjx_companies_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
Open in Framework → View in Fleet → disaster-recovery-test-orchestrator.yml

Orchestrates off price retail workflow 14 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Off Price Retail Workflow 14
  description: Orchestrates off price retail workflow 14 by coordinating across systems, validating data, and sending notifications.
  tags:
  - false
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: false
    port: 8080
    tools:
    - name: run-off-price-retail-workflow-014
      description: Orchestrates off price retail 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 Off Price Retail Workflow 14 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.tjx-companies.com/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.tjx-companies.com/v2
    authentication:
      type: bearer
      token: $secrets.tjx_companies_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
Open in Framework → View in Fleet → off-price-retail-workflow-14.yml

Retrieves off price retail operational data for workflow 15.

naftiko: '0.5'
info:
  label: Off Price Retail Data Query 15
  description: Retrieves off price retail operational data for workflow 15.
  tags:
  - false
  - operations
capability:
  exposes:
  - type: mcp
    namespace: false
    port: 8080
    tools:
    - name: get-data-15
      description: Query off price retail data for workflow 15.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: off-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: off-api
    baseUri: https://api.tjx-companies.com/off-price-retail/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: data
      path: /data/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-data-15
        method: GET
Open in Framework → View in Fleet → off-price-retail-data-query-15.yml

Orchestrates off price retail workflow 1 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Off Price Retail Workflow 1
  description: Orchestrates off price retail workflow 1 by coordinating across systems, validating data, and sending notifications.
  tags:
  - false
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: false
    port: 8080
    tools:
    - name: run-off-price-retail-workflow-001
      description: Orchestrates off price retail 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 Off Price Retail Workflow 1 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.tjx-companies.com/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.tjx-companies.com/v2
    authentication:
      type: bearer
      token: $secrets.tjx_companies_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
Open in Framework → View in Fleet → off-price-retail-workflow-1.yml

Retrieves marketing campaign performance metrics from HubSpot including impressions, clicks, and conversion rates.

naftiko: '0.5'
info:
  label: HubSpot Marketing Campaign Metrics
  description: Retrieves marketing campaign performance metrics from HubSpot including impressions, clicks, and conversion rates.
  tags:
  - marketing
  - hubspot
  - campaigns
capability:
  exposes:
  - type: mcp
    namespace: marketing-analytics
    port: 8080
    tools:
    - name: get-hubspot-campaign
      description: Fetch HubSpot campaign performance data.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: The HubSpot campaign ID.
      call: hubspot.get-campaign
      with:
        campaign_id: '{{campaign_id}}'
  consumes:
  - 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: get-campaign
        method: GET
Open in Framework → View in Fleet → hubspot-marketing-campaign-metrics.yml

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.tjx-companies.com/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.tjx-companies.com/v2
    authentication:
      type: bearer
      token: $secrets.tjx_companies_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
Open in Framework → View in Fleet → third-party-risk-assessment-orchestrator.yml

Queries the SAP merchandise system for available off-price buying opportunities by vendor and category, returning lot sizes, unit costs, and brand details.

naftiko: '0.5'
info:
  label: Off-Price Buying Opportunity Lookup
  description: Queries the SAP merchandise system for available off-price buying opportunities by vendor and category, returning lot sizes, unit costs, and brand details.
  tags:
  - buying
  - merchandising
  - sap
  - off-price
capability:
  exposes:
  - type: mcp
    namespace: buying-ops
    port: 8080
    tools:
    - name: get-buying-opportunities
      description: Look up available off-price buying opportunities from SAP by vendor and category.
      inputParameters:
      - name: vendor_id
        in: body
        type: string
        description: The SAP vendor ID.
      - name: category_code
        in: body
        type: string
        description: The merchandise category code.
      call: sap.get-opportunities
      with:
        vendor_id: '{{vendor_id}}'
        category_code: '{{category_code}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://tjx.sap.com/sap/opu/odata/sap/ZMM_BUYING_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: opportunities
      path: /BuyingOpportunitySet?$filter=VendorId eq '{{vendor_id}}' and Category eq '{{category_code}}'
      inputParameters:
      - name: vendor_id
        in: path
      - name: category_code
        in: path
      operations:
      - name: get-opportunities
        method: GET
Open in Framework → View in Fleet → off-price-buying-opportunity-lookup.yml

Checks vendor closeout merchandise availability.

naftiko: '0.5'
info:
  label: Vendor Closeout Availability
  description: Checks vendor closeout merchandise availability.
  tags:
  - buying
  - procurement
capability:
  exposes:
  - type: mcp
    namespace: buying
    port: 8080
    tools:
    - name: get-vendor
      description: Checks vendor closeout merchandise availability.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The vendor closeout availability identifier.
      call: buying-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: buying-api
    baseUri: https://api.tjx-companies.com/buying/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: vendor
      path: /vendor/closeout/availability/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-vendor
        method: GET
Open in Framework → View in Fleet → vendor-closeout-availability.yml

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.tjx-companies.com/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.tjx-companies.com/v2
    authentication:
      type: bearer
      token: $secrets.tjx_companies_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
Open in Framework → View in Fleet → digital-transformation-progress-orchestrator.yml

Coordinates a new store launch by creating a Jira project, provisioning a SharePoint site for store documents, notifying the regional team via Microsoft Teams, and setting up the store in SAP.

naftiko: '0.5'
info:
  label: New Store Opening Orchestrator
  description: Coordinates a new store launch by creating a Jira project, provisioning a SharePoint site for store documents, notifying the regional team via Microsoft Teams, and setting up the store in SAP.
  tags:
  - store-ops
  - new-store
  - jira
  - sharepoint
  - microsoft-teams
  - sap
capability:
  exposes:
  - type: mcp
    namespace: store-launch
    port: 8080
    tools:
    - name: launch-new-store
      description: Orchestrate new store opening across Jira, SharePoint, Teams, and SAP.
      inputParameters:
      - name: store_number
        in: body
        type: string
        description: The new store number.
      - name: store_location
        in: body
        type: string
        description: The store city and state.
      - name: banner
        in: body
        type: string
        description: The retail banner (TJ Maxx, Marshalls, HomeGoods).
      - name: open_date
        in: body
        type: string
        description: Planned opening date in YYYY-MM-DD format.
      steps:
      - name: create-project
        type: call
        call: jira.create-project
        with:
          name: Store {{store_number}} - {{banner}} {{store_location}}
          key: ST{{store_number}}
          template: store_opening
      - name: provision-site
        type: call
        call: sharepoint.create-site
        with:
          site_name: Store-{{store_number}}
          description: '{{banner}} Store {{store_number}} - {{store_location}}'
      - name: setup-sap
        type: call
        call: sap.create-store-master
        with:
          store_number: '{{store_number}}'
          location: '{{store_location}}'
          banner: '{{banner}}'
          open_date: '{{open_date}}'
      - name: notify-regional
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: regional_ops
          text: 'New store launch initiated: {{banner}} #{{store_number}} in {{store_location}}. Opening: {{open_date}}. Jira: {{create-project.url}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://tjx.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: projects
      path: /project
      operations:
      - name: create-project
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: sites
      path: /root/sites
      operations:
      - name: create-site
        method: POST
  - type: http
    namespace: sap
    baseUri: https://tjx.sap.com/sap/opu/odata/sap/ZSD_STORE_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: store-master
      path: /StoreMasterSet
      operations:
      - name: create-store-master
        method: POST
  - 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: post-channel-message
        method: POST
Open in Framework → View in Fleet → new-store-opening-orchestrator.yml

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.tjx-companies.com/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.tjx-companies.com/v2
    authentication:
      type: bearer
      token: $secrets.tjx_companies_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
Open in Framework → View in Fleet → infrastructure-capacity-planning-orchestrator.yml

Retrieves the latest seasonal floor plan from SharePoint and distributes it to store teams via Microsoft Teams with implementation deadlines.

naftiko: '0.5'
info:
  label: Seasonal Floor Plan Distributor
  description: Retrieves the latest seasonal floor plan from SharePoint and distributes it to store teams via Microsoft Teams with implementation deadlines.
  tags:
  - store-ops
  - visual-merchandising
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: floor-planning
    port: 8080
    tools:
    - name: distribute-floor-plan
      description: Fetch a seasonal floor plan from SharePoint and distribute to store teams via Teams.
      inputParameters:
      - name: season
        in: body
        type: string
        description: The season identifier (e.g., Spring-2026).
      - name: banner
        in: body
        type: string
        description: The retail banner.
      - name: deadline
        in: body
        type: string
        description: Implementation deadline in YYYY-MM-DD format.
      steps:
      - name: get-floor-plan
        type: call
        call: sharepoint.get-file
        with:
          site_id: visual_merchandising
          file_path: FloorPlans/{{banner}}/{{season}}.pdf
      - name: distribute-to-stores
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: '{{banner}}_store_ops'
          text: 'New floor plan for {{season}} is available: {{get-floor-plan.download_url}}. Implementation deadline: {{deadline}}.'
  consumes:
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: files
      path: /{{site_id}}/drive/root:/{{file_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: file_path
        in: path
      operations:
      - name: get-file
        method: GET
  - type: http
    namespace: 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: post-channel-message
        method: POST
Open in Framework → View in Fleet → seasonal-floor-plan-distributor.yml

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.tjx-companies.com/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.tjx-companies.com/v2
    authentication:
      type: bearer
      token: $secrets.tjx_companies_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
Open in Framework → View in Fleet → marketing-campaign-performance-orchestrator.yml

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.tjx-companies.com/communications/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: microsoft
      path: /microsoft/teams/message/sender/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-microsoft
        method: GET
Open in Framework → View in Fleet → microsoft-teams-message-sender.yml

Fetches a vendor scorecard from Salesforce including on-time delivery rate, quality rating, and fill rate metrics.

naftiko: '0.5'
info:
  label: Vendor Scorecard Retrieval
  description: Fetches a vendor scorecard from Salesforce including on-time delivery rate, quality rating, and fill rate metrics.
  tags:
  - buying
  - vendors
  - salesforce
  - performance
capability:
  exposes:
  - type: mcp
    namespace: vendor-management
    port: 8080
    tools:
    - name: get-vendor-scorecard
      description: Retrieve vendor performance scorecard from Salesforce.
      inputParameters:
      - name: vendor_account_id
        in: body
        type: string
        description: The Salesforce vendor account ID.
      call: salesforce.get-vendor-scorecard
      with:
        vendor_account_id: '{{vendor_account_id}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://tjx.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: vendor-scorecards
      path: /sobjects/Vendor_Scorecard__c?q=Account__c='{{vendor_account_id}}'
      inputParameters:
      - name: vendor_account_id
        in: path
      operations:
      - name: get-vendor-scorecard
        method: GET
Open in Framework → View in Fleet → vendor-scorecard-retrieval.yml

Retrieves markdown sell-through performance data.

naftiko: '0.5'
info:
  label: Markdown Performance Report
  description: Retrieves markdown sell-through performance data.
  tags:
  - merchandising
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: merchandising
    port: 8080
    tools:
    - name: get-markdown
      description: Retrieves markdown sell-through performance data.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The markdown performance report identifier.
      call: merchandising-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: merchandising-api
    baseUri: https://api.tjx-companies.com/merchandising/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: markdown
      path: /markdown/performance/report/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-markdown
        method: GET
Open in Framework → View in Fleet → markdown-performance-report.yml

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.tjx-companies.com/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.tjx-companies.com/v2
    authentication:
      type: bearer
      token: $secrets.tjx_companies_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
Open in Framework → View in Fleet → quarterly-business-review-orchestrator.yml

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.tjx-companies.com/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.tjx-companies.com/v2
    authentication:
      type: bearer
      token: $secrets.tjx_companies_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
Open in Framework → View in Fleet → security-audit-orchestrator.yml

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.tjx-companies.com/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.tjx-companies.com/v2
    authentication:
      type: bearer
      token: $secrets.tjx_companies_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
Open in Framework → View in Fleet → vendor-contract-renewal-pipeline.yml

Retrieves daily point-of-sale summary data from SAP for a store, returning total revenue, transaction count, average basket size, and top categories.

naftiko: '0.5'
info:
  label: Store Daily Sales Summary
  description: Retrieves daily point-of-sale summary data from SAP for a store, returning total revenue, transaction count, average basket size, and top categories.
  tags:
  - store-ops
  - sales
  - sap
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: store-sales
    port: 8080
    tools:
    - name: get-daily-sales
      description: Fetch daily sales summary for a store from SAP.
      inputParameters:
      - name: store_number
        in: body
        type: string
        description: The TJX store number.
      - name: sales_date
        in: body
        type: string
        description: The sales date in YYYY-MM-DD format.
      call: sap.get-daily-sales
      with:
        store_number: '{{store_number}}'
        date: '{{sales_date}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://tjx.sap.com/sap/opu/odata/sap/ZSD_POS_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: daily-sales
      path: /DailySalesSet(Store='{{store_number}}',Date='{{date}}')
      inputParameters:
      - name: store_number
        in: path
      - name: date
        in: path
      operations:
      - name: get-daily-sales
        method: GET
Open in Framework → View in Fleet → store-daily-sales-summary.yml

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.tjx-companies.com/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.tjx-companies.com/v2
    authentication:
      type: bearer
      token: $secrets.tjx_companies_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
Open in Framework → View in Fleet → knowledge-base-refresh-orchestrator.yml

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.tjx-companies.com/it/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: servicenow
      path: /servicenow/incident/creator/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-servicenow
        method: GET
Open in Framework → View in Fleet → servicenow-incident-creator.yml

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.tjx-companies.com/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.tjx-companies.com/v2
    authentication:
      type: bearer
      token: $secrets.tjx_companies_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
Open in Framework → View in Fleet → it-change-management-orchestrator.yml

Checks point-of-sale system health for a store via Datadog and creates a ServiceNow incident if the system is degraded.

naftiko: '0.5'
info:
  label: POS System Health Monitor
  description: Checks point-of-sale system health for a store via Datadog and creates a ServiceNow incident if the system is degraded.
  tags:
  - store-ops
  - monitoring
  - datadog
  - servicenow
  - pos
capability:
  exposes:
  - type: mcp
    namespace: pos-monitoring
    port: 8080
    tools:
    - name: check-pos-health
      description: Monitor POS system health and create incident if degraded.
      inputParameters:
      - name: store_number
        in: body
        type: string
        description: The store number to check.
      steps:
      - name: get-pos-metrics
        type: call
        call: datadog.get-pos-health
        with:
          store: '{{store_number}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: POS system degraded at Store {{store_number}}
          category: pos_systems
          priority: '1'
          description: 'POS error rate: {{get-pos-metrics.error_rate}}%. Latency: {{get-pos-metrics.avg_latency}}ms.'
  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: pos-health
      path: /query?query=avg:pos.transaction.error_rate{store:{{store}}}
      inputParameters:
      - name: store
        in: path
      operations:
      - name: get-pos-health
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://tjx.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → pos-system-health-monitor.yml

When a high-value off-price opportunity is identified, creates a buying alert in Salesforce, notifies buying directors via Microsoft Teams, and reserves allocation in SAP.

naftiko: '0.5'
info:
  label: Treasure Hunt Merchandise Alert
  description: When a high-value off-price opportunity is identified, creates a buying alert in Salesforce, notifies buying directors via Microsoft Teams, and reserves allocation in SAP.
  tags:
  - buying
  - merchandising
  - salesforce
  - microsoft-teams
  - sap
  - treasure-hunt
capability:
  exposes:
  - type: mcp
    namespace: treasure-hunt
    port: 8080
    tools:
    - name: create-treasure-hunt-alert
      description: Alert buyers to a high-value off-price opportunity across Salesforce, Teams, and SAP.
      inputParameters:
      - name: vendor_name
        in: body
        type: string
        description: The vendor offering the goods.
      - name: brand
        in: body
        type: string
        description: The brand name.
      - name: category
        in: body
        type: string
        description: Merchandise category.
      - name: unit_count
        in: body
        type: string
        description: Available units.
      - name: unit_cost
        in: body
        type: string
        description: Cost per unit.
      - name: retail_value
        in: body
        type: string
        description: Estimated retail value per unit.
      steps:
      - name: create-opportunity
        type: call
        call: salesforce.create-opportunity
        with:
          name: 'Treasure Hunt: {{brand}} - {{category}}'
          vendor: '{{vendor_name}}'
          amount: '{{unit_count * unit_cost}}'
          stage: Qualification
      - name: alert-directors
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: buying_directors_urgent
          text: 'TREASURE HUNT: {{brand}} {{category}} from {{vendor_name}}. {{unit_count}} units at ${{unit_cost}} (retail ${{retail_value}}). SF: {{create-opportunity.id}}'
      - name: reserve-allocation
        type: call
        call: sap.create-reservation
        with:
          vendor: '{{vendor_name}}'
          category: '{{category}}'
          units: '{{unit_count}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://tjx.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: post-channel-message
        method: POST
  - type: http
    namespace: sap
    baseUri: https://tjx.sap.com/sap/opu/odata/sap/ZMM_RESERVE_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: reservations
      path: /ReservationSet
      operations:
      - name: create-reservation
        method: POST
Open in Framework → View in Fleet → treasure-hunt-merchandise-alert.yml

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.tjx-companies.com/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.tjx-companies.com/v2
    authentication:
      type: bearer
      token: $secrets.tjx_companies_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
Open in Framework → View in Fleet → api-lifecycle-management-orchestrator.yml

Retrieves off price retail operational data for workflow 9.

naftiko: '0.5'
info:
  label: Off Price Retail Data Query 9
  description: Retrieves off price retail operational data for workflow 9.
  tags:
  - false
  - operations
capability:
  exposes:
  - type: mcp
    namespace: false
    port: 8080
    tools:
    - name: get-data-9
      description: Query off price retail data for workflow 9.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: off-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: off-api
    baseUri: https://api.tjx-companies.com/off-price-retail/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: data
      path: /data/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-data-9
        method: GET
Open in Framework → View in Fleet → off-price-retail-data-query-9.yml

Orchestrates off price retail workflow 8 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Off Price Retail Workflow 8
  description: Orchestrates off price retail workflow 8 by coordinating across systems, validating data, and sending notifications.
  tags:
  - false
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: false
    port: 8080
    tools:
    - name: run-off-price-retail-workflow-008
      description: Orchestrates off price retail 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 Off Price Retail Workflow 8 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.tjx-companies.com/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.tjx-companies.com/v2
    authentication:
      type: bearer
      token: $secrets.tjx_companies_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
Open in Framework → View in Fleet → off-price-retail-workflow-8.yml

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.tjx-companies.com/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.tjx-companies.com/v2
    authentication:
      type: bearer
      token: $secrets.tjx_companies_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
Open in Framework → View in Fleet → customer-journey-mapping-orchestrator.yml

Creates and submits an expense report in SAP Concur for associate travel and expenses.

naftiko: '0.5'
info:
  label: SAP Concur Expense Report Submitter
  description: Creates and submits an expense report in SAP Concur for associate travel and expenses.
  tags:
  - finance
  - sap-concur
  - expense-management
capability:
  exposes:
  - type: mcp
    namespace: expense-mgmt
    port: 8080
    tools:
    - name: submit-expense-report
      description: Create and submit an expense report in SAP Concur.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The employee ID.
      - name: report_name
        in: body
        type: string
        description: Name for the expense report.
      - name: expense_entries
        in: body
        type: string
        description: JSON array of expense entries.
      call: concur.create-report
      with:
        employee_id: '{{employee_id}}'
        report_name: '{{report_name}}'
        entries: '{{expense_entries}}'
  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
      operations:
      - name: create-report
        method: POST
Open in Framework → View in Fleet → sap-concur-expense-report-submitter.yml

Retrieves employee profile from Workday.

naftiko: '0.5'
info:
  label: Workday Employee Profile
  description: Retrieves employee profile from Workday.
  tags:
  - hr
  - workday
capability:
  exposes:
  - type: mcp
    namespace: hr
    port: 8080
    tools:
    - name: get-workday
      description: Retrieves employee profile from Workday.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The workday employee profile identifier.
      call: hr-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: hr-api
    baseUri: https://api.tjx-companies.com/hr/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: workday
      path: /workday/employee/profile/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-workday
        method: GET
Open in Framework → View in Fleet → workday-employee-profile.yml

Retrieves the current sprint and its issues for a Jira project board.

naftiko: '0.5'
info:
  label: Jira Sprint Board Viewer
  description: Retrieves the current sprint and its issues for a Jira project board.
  tags:
  - development
  - jira
  - agile
capability:
  exposes:
  - type: mcp
    namespace: dev-ops
    port: 8080
    tools:
    - name: get-current-sprint
      description: Fetch current sprint details and issue summary for a Jira board.
      inputParameters:
      - name: board_id
        in: body
        type: string
        description: The Jira board ID.
      call: jira.get-sprint
      with:
        board_id: '{{board_id}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://tjx.atlassian.net/rest/agile/1.0
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: sprints
      path: /board/{{board_id}}/sprint?state=active
      inputParameters:
      - name: board_id
        in: path
      operations:
      - name: get-sprint
        method: GET
Open in Framework → View in Fleet → jira-sprint-board-viewer.yml

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.tjx-companies.com/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.tjx-companies.com/v2
    authentication:
      type: bearer
      token: $secrets.tjx_companies_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
Open in Framework → View in Fleet → sustainability-metrics-collection-orchestrator.yml

When a loss prevention alert fires, creates a ServiceNow incident, notifies store management via Microsoft Teams, and logs the event in SAP.

naftiko: '0.5'
info:
  label: Loss Prevention Alert Handler
  description: When a loss prevention alert fires, creates a ServiceNow incident, notifies store management via Microsoft Teams, and logs the event in SAP.
  tags:
  - loss-prevention
  - security
  - servicenow
  - microsoft-teams
  - sap
capability:
  exposes:
  - type: mcp
    namespace: loss-prevention
    port: 8080
    tools:
    - name: handle-lp-alert
      description: Process a loss prevention alert across ServiceNow, Teams, and SAP.
      inputParameters:
      - name: store_number
        in: body
        type: string
        description: The store number where the alert occurred.
      - name: alert_type
        in: body
        type: string
        description: Type of LP alert (e.g., exception, sweethearting, return-fraud).
      - name: alert_detail
        in: body
        type: string
        description: Details of the loss prevention alert.
      steps:
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'LP Alert: {{alert_type}} at Store {{store_number}}'
          category: loss_prevention
          priority: '2'
          description: '{{alert_detail}}'
      - name: notify-management
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: store_{{store_number}}_mgmt
          text: 'LP ALERT ({{alert_type}}): {{alert_detail}}. ServiceNow: {{create-incident.number}}'
      - name: log-in-sap
        type: call
        call: sap.create-lp-record
        with:
          store: '{{store_number}}'
          type: '{{alert_type}}'
          incident_ref: '{{create-incident.number}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://tjx.service-now.com/api/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: post-channel-message
        method: POST
  - type: http
    namespace: sap
    baseUri: https://tjx.sap.com/sap/opu/odata/sap/ZLP_EVENTS_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: lp-records
      path: /LPEventSet
      operations:
      - name: create-lp-record
        method: POST
Open in Framework → View in Fleet → loss-prevention-alert-handler.yml

Creates a return-to-vendor authorization in SAP for defective merchandise and notifies the vendor via Salesforce case.

naftiko: '0.5'
info:
  label: Vendor Return Authorization
  description: Creates a return-to-vendor authorization in SAP for defective merchandise and notifies the vendor via Salesforce case.
  tags:
  - buying
  - returns
  - sap
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: vendor-returns
    port: 8080
    tools:
    - name: create-return-authorization
      description: Create a SAP return-to-vendor authorization and notify vendor via Salesforce.
      inputParameters:
      - name: po_number
        in: body
        type: string
        description: The original purchase order number.
      - name: material_number
        in: body
        type: string
        description: The material being returned.
      - name: return_quantity
        in: body
        type: string
        description: Quantity to return.
      - name: reason
        in: body
        type: string
        description: Return reason code.
      steps:
      - name: create-rma
        type: call
        call: sap.create-return-order
        with:
          po_number: '{{po_number}}'
          material: '{{material_number}}'
          quantity: '{{return_quantity}}'
          reason: '{{reason}}'
      - name: notify-vendor
        type: call
        call: salesforce.create-case
        with:
          subject: 'Return Authorization: {{create-rma.rma_number}} for PO {{po_number}}'
          description: 'Return of {{return_quantity}} units of {{material_number}}. Reason: {{reason}}.'
          origin: Internal
  consumes:
  - type: http
    namespace: sap
    baseUri: https://tjx.sap.com/sap/opu/odata/sap/ZMM_RETURNS_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: return-orders
      path: /ReturnOrderSet
      operations:
      - name: create-return-order
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://tjx.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: cases
      path: /sobjects/Case
      operations:
      - name: create-case
        method: POST
Open in Framework → View in Fleet → vendor-return-authorization.yml

Retrieves carton throughput metrics for a distribution center.

naftiko: '0.5'
info:
  label: DC Carton Throughput
  description: Retrieves carton throughput metrics for a distribution center.
  tags:
  - logistics
  - operations
capability:
  exposes:
  - type: mcp
    namespace: logistics
    port: 8080
    tools:
    - name: get-dc
      description: Retrieves carton throughput metrics for a distribution center.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The dc carton throughput identifier.
      call: logistics-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: logistics-api
    baseUri: https://api.tjx-companies.com/logistics/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: dc
      path: /dc/carton/throughput/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-dc
        method: GET
Open in Framework → View in Fleet → dc-carton-throughput.yml

When a buyer negotiates a deal, pulls vendor details from Salesforce, creates a deal record in SAP, generates a deal sheet in SharePoint, and notifies the buying director via Teams.

naftiko: '0.5'
info:
  label: Buyer Deal Sheet Creator
  description: When a buyer negotiates a deal, pulls vendor details from Salesforce, creates a deal record in SAP, generates a deal sheet in SharePoint, and notifies the buying director via Teams.
  tags:
  - buying
  - deal-management
  - salesforce
  - sap
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: deal-management
    port: 8080
    tools:
    - name: create-deal-sheet
      description: Create a buyer deal sheet across Salesforce, SAP, SharePoint, and Teams.
      inputParameters:
      - name: vendor_account_id
        in: body
        type: string
        description: The Salesforce vendor account ID.
      - name: deal_value
        in: body
        type: string
        description: Total deal value in USD.
      - name: category_code
        in: body
        type: string
        description: The merchandise category code.
      - name: unit_count
        in: body
        type: string
        description: Total units in the deal.
      steps:
      - name: get-vendor
        type: call
        call: salesforce.get-account
        with:
          account_id: '{{vendor_account_id}}'
      - name: create-deal-record
        type: call
        call: sap.create-deal
        with:
          vendor_id: '{{get-vendor.sap_vendor_id}}'
          value: '{{deal_value}}'
          category: '{{category_code}}'
          units: '{{unit_count}}'
      - name: create-doc
        type: call
        call: sharepoint.upload-file
        with:
          site_id: buying_deals
          file_path: DealSheets/{{get-vendor.name}}_{{create-deal-record.deal_number}}.xlsx
          content: '{{create-deal-record.deal_sheet_content}}'
      - name: notify-director
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: buying_directors
          text: 'New deal: {{get-vendor.name}} - ${{deal_value}} ({{unit_count}} units, {{category_code}}). Deal #{{create-deal-record.deal_number}}. Sheet: {{create-doc.url}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://tjx.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: sap
    baseUri: https://tjx.sap.com/sap/opu/odata/sap/ZMM_DEALS_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: deals
      path: /DealSet
      operations:
      - name: create-deal
        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:/{{file_path}}:/content
      inputParameters:
      - name: site_id
        in: path
      - name: file_path
        in: path
      operations:
      - name: upload-file
        method: PUT
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/General/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → buyer-deal-sheet-creator.yml

Analyzes store inventory against demand forecasts in SAP and automatically creates replenishment orders for stores below safety stock thresholds.

naftiko: '0.5'
info:
  label: Replenishment Order Generator
  description: Analyzes store inventory against demand forecasts in SAP and automatically creates replenishment orders for stores below safety stock thresholds.
  tags:
  - inventory
  - replenishment
  - sap
  - distribution
capability:
  exposes:
  - type: mcp
    namespace: replenishment
    port: 8080
    tools:
    - name: generate-replenishment
      description: Analyze store inventory gaps and create replenishment orders in SAP.
      inputParameters:
      - name: store_number
        in: body
        type: string
        description: The TJX store number.
      - name: category_code
        in: body
        type: string
        description: The merchandise category to check.
      steps:
      - name: check-gaps
        type: call
        call: sap.get-inventory-gaps
        with:
          store: '{{store_number}}'
          category: '{{category_code}}'
      - name: create-replenishment
        type: call
        call: sap.create-transfer-order
        with:
          store: '{{store_number}}'
          items: '{{check-gaps.below_safety_stock}}'
          dc: '{{check-gaps.assigned_dc}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://tjx.sap.com/sap/opu/odata/sap/ZMM_REPLENISH_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: inventory-gaps
      path: /InventoryGapSet?$filter=Store eq '{{store}}' and Category eq '{{category}}'
      inputParameters:
      - name: store
        in: path
      - name: category
        in: path
      operations:
      - name: get-inventory-gaps
        method: GET
    - name: transfer-orders
      path: /TransferOrderSet
      operations:
      - name: create-transfer-order
        method: POST
Open in Framework → View in Fleet → replenishment-order-generator.yml

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.tjx-companies.com/analytics/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: power
      path: /power/bi/dashboard/refresher/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-power
        method: GET
Open in Framework → View in Fleet → power-bi-dashboard-refresher.yml

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.tjx-companies.com/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.tjx-companies.com/v2
    authentication:
      type: bearer
      token: $secrets.tjx_companies_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
Open in Framework → View in Fleet → customer-data-privacy-request-handler.yml

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.tjx-companies.com/collaboration/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: google
      path: /google/drive/file/viewer/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-google
        method: GET
Open in Framework → View in Fleet → google-drive-file-viewer.yml

Retrieves hourly traffic count data for a store.

naftiko: '0.5'
info:
  label: Store Traffic Counter
  description: Retrieves hourly traffic count data for a store.
  tags:
  - operations
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: operations
    port: 8080
    tools:
    - name: get-store
      description: Retrieves hourly traffic count data for a store.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The store traffic counter identifier.
      call: operations-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: operations-api
    baseUri: https://api.tjx-companies.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.tjx_companies_api_token
    resources:
    - name: store
      path: /store/traffic/counter/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-store
        method: GET
Open in Framework → View in Fleet → store-traffic-counter.yml

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
Open in Framework → View in Fleet → facebook-ads-spend-reporter.yml

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
Open in Framework → View in Fleet → wholesale-account-order-status.yml

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
Open in Framework → View in Fleet → instagram-campaign-performance-lookup.yml

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
Open in Framework → View in Fleet → google-drive-file-lookup.yml

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
Open in Framework → View in Fleet → salesforce-case-lookup.yml

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
Open in Framework → View in Fleet → athlete-endorsement-contract-workflow.yml

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
Open in Framework → View in Fleet → tableau-dashboard-lookup.yml

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
Open in Framework → View in Fleet → oracle-ebs-inventory-snapshot.yml

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
Open in Framework → View in Fleet → salesforce-marketing-cloud-email-performance.yml

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
Open in Framework → View in Fleet → mailchimp-subscriber-list-export.yml

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
Open in Framework → View in Fleet → mastercard-transaction-reconciliation.yml

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
Open in Framework → View in Fleet → supply-chain-delay-alert-orchestrator.yml

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
Open in Framework → View in Fleet → athletic-apparel-workflow-2.yml

Retrieves the latest build status from Azure DevOps for a given pipeline, returning build number, status, and result.

naftiko: '0.5'
info:
  label: Azure DevOps Build Status Lookup
  description: Retrieves the latest build status from Azure DevOps for a given pipeline, returning build number, status, and result.
  tags:
  - devops
  - ci-cd
  - azure-devops
capability:
  exposes:
  - type: mcp
    namespace: devops-builds
    port: 8080
    tools:
    - name: get-build-status
      description: Fetch the latest build status for an Azure DevOps pipeline.
      inputParameters:
      - name: project
        in: body
        type: string
        description: Azure DevOps project name.
      - name: pipeline_id
        in: body
        type: string
        description: Pipeline definition ID.
      call: azuredevops.get-builds
      with:
        project: '{{project}}'
        definition_id: '{{pipeline_id}}'
      outputParameters:
      - name: build_number
        type: string
        mapping: $.value[0].buildNumber
      - name: status
        type: string
        mapping: $.value[0].status
      - name: result
        type: string
        mapping: $.value[0].result
  consumes:
  - type: http
    namespace: azuredevops
    baseUri: https://dev.azure.com/underarmour
    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-builds
        method: GET
Open in Framework → View in Fleet → azure-devops-build-status-lookup.yml

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
Open in Framework → View in Fleet → return-processing-orchestrator.yml

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
Open in Framework → View in Fleet → salesforce-lead-to-wholesale-opportunity.yml

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
Open in Framework → View in Fleet → athletic-apparel-data-query-3.yml

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
Open in Framework → View in Fleet → athletic-apparel-data-query-15.yml

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
Open in Framework → View in Fleet → athletic-apparel-workflow-1.yml

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
Open in Framework → View in Fleet → connected-fitness-data-sync-orchestrator.yml

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
Open in Framework → View in Fleet → sharepoint-document-upload.yml

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
Open in Framework → View in Fleet → twitter-mention-sentiment-tracker.yml

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
Open in Framework → View in Fleet → athletic-apparel-workflow-14.yml

Retrieves ADP payroll summary data for a given pay period, returning gross pay, net pay, and deductions totals.

naftiko: '0.5'
info:
  label: ADP Payroll Summary Lookup
  description: Retrieves ADP payroll summary data for a given pay period, returning gross pay, net pay, and deductions totals.
  tags:
  - hr
  - payroll
  - adp
capability:
  exposes:
  - type: mcp
    namespace: payroll-ops
    port: 8080
    tools:
    - name: get-payroll-summary
      description: Fetch ADP payroll summary for a pay period.
      inputParameters:
      - name: pay_period
        in: body
        type: string
        description: Pay period identifier.
      call: adp.get-payroll
      with:
        pay_period: '{{pay_period}}'
      outputParameters:
      - name: gross_pay
        type: string
        mapping: $.payrollSummary.grossPay
      - name: net_pay
        type: string
        mapping: $.payrollSummary.netPay
      - name: deductions
        type: string
        mapping: $.payrollSummary.totalDeductions
  consumes:
  - type: http
    namespace: adp
    baseUri: https://api.adp.com/hr/v2
    authentication:
      type: bearer
      token: $secrets.adp_token
    resources:
    - name: payroll
      path: /payroll-summaries/{{pay_period}}
      inputParameters:
      - name: pay_period
        in: path
      operations:
      - name: get-payroll
        method: GET
Open in Framework → View in Fleet → adp-payroll-summary-lookup.yml

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
Open in Framework → View in Fleet → wholesale-order-to-invoice-orchestrator.yml

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
Open in Framework → View in Fleet → end-of-season-closeout-orchestrator.yml

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
Open in Framework → View in Fleet → athletic-apparel-workflow-10.yml

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
Open in Framework → View in Fleet → athletic-apparel-workflow-4.yml

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
Open in Framework → View in Fleet → google-search-console-performance-lookup.yml

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
Open in Framework → View in Fleet → athlete-endorsement-status.yml

Retrieves the latest published container version from Google Tag Manager for the UA.com property.

naftiko: '0.5'
info:
  label: Google Tag Manager Container Version Lookup
  description: Retrieves the latest published container version from Google Tag Manager for the UA.com property.
  tags:
  - analytics
  - tag-management
  - google-tag-manager
capability:
  exposes:
  - type: mcp
    namespace: tag-management
    port: 8080
    tools:
    - name: get-gtm-version
      description: Fetch the latest GTM container version.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: GTM account ID.
      - name: container_id
        in: body
        type: string
        description: GTM container ID.
      call: gtm.get-live-version
      with:
        account_id: '{{account_id}}'
        container_id: '{{container_id}}'
      outputParameters:
      - name: version_number
        type: string
        mapping: $.containerVersionId
      - name: name
        type: string
        mapping: $.name
  consumes:
  - type: http
    namespace: gtm
    baseUri: https://www.googleapis.com/tagmanager/v2
    authentication:
      type: bearer
      token: $secrets.google_tagmanager_token
    resources:
    - name: versions
      path: /accounts/{{account_id}}/containers/{{container_id}}/versions/live
      inputParameters:
      - name: account_id
        in: path
      - name: container_id
        in: path
      operations:
      - name: get-live-version
        method: GET
Open in Framework → View in Fleet → google-tag-manager-container-version-lookup.yml

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
Open in Framework → View in Fleet → e-commerce-conversion-rate.yml

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
Open in Framework → View in Fleet → athletic-apparel-workflow-5.yml

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
Open in Framework → View in Fleet → athletic-apparel-workflow-11.yml

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
Open in Framework → View in Fleet → athletic-apparel-workflow-7.yml

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
Open in Framework → View in Fleet → athletic-apparel-workflow-13.yml

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
Open in Framework → View in Fleet → customer-loyalty-tier-upgrade-orchestrator.yml

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
Open in Framework → View in Fleet → seasonal-markdown-orchestrator.yml

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
Open in Framework → View in Fleet → athletic-apparel-data-query-12.yml

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
Open in Framework → View in Fleet → athletic-apparel-data-query-6.yml

Triggers a dataset refresh in Power BI for the specified workspace and dataset, returning refresh status.

naftiko: '0.5'
info:
  label: Power BI Dashboard Refresh
  description: Triggers a dataset refresh in Power BI for the specified workspace and dataset, returning refresh status.
  tags:
  - analytics
  - reporting
  - power-bi
capability:
  exposes:
  - type: mcp
    namespace: bi-ops
    port: 8080
    tools:
    - name: refresh-dataset
      description: Trigger a Power BI dataset refresh.
      inputParameters:
      - name: workspace_id
        in: body
        type: string
        description: Power BI workspace GUID.
      - name: dataset_id
        in: body
        type: string
        description: Power BI dataset GUID.
      call: powerbi.trigger-refresh
      with:
        workspace_id: '{{workspace_id}}'
        dataset_id: '{{dataset_id}}'
  consumes:
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: 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
Open in Framework → View in Fleet → power-bi-dashboard-refresh.yml

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
Open in Framework → View in Fleet → campaign-performance-dashboard-orchestrator.yml

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
Open in Framework → View in Fleet → bigcommerce-product-inventory-lookup.yml

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
Open in Framework → View in Fleet → athletic-apparel-workflow-8.yml

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
Open in Framework → View in Fleet → dynatrace-problem-detection-lookup.yml

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
Open in Framework → View in Fleet → inventory-reorder-point-orchestrator.yml

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
Open in Framework → View in Fleet → athletic-apparel-data-query-9.yml

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
Open in Framework → View in Fleet → datadog-infrastructure-alert-lookup.yml

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
Open in Framework → View in Fleet → adobe-analytics-traffic-report.yml

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
Open in Framework → View in Fleet → product-size-availability.yml

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
Open in Framework → View in Fleet → youtube-channel-analytics-lookup.yml

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
Open in Framework → View in Fleet → warehouse-transfer-orchestrator.yml

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
Open in Framework → View in Fleet → google-analytics-session-lookup.yml

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
Open in Framework → View in Fleet → dtc-order-fulfillment-orchestrator.yml

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
Open in Framework → View in Fleet → product-launch-coordination-orchestrator.yml

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
Open in Framework → View in Fleet → linkedin-sponsored-content-orchestrator.yml

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
Open in Framework → View in Fleet → shopify-product-catalog-sync.yml

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
Open in Framework → View in Fleet → product-colorway-catalog.yml

Retrieves vendor lead time for procurement planning.

naftiko: '0.5'
info:
  label: Vendor Lead Time Lookup
  description: Retrieves vendor lead time for procurement planning.
  tags:
  - procurement
  - supply-chain
capability:
  exposes:
  - type: mcp
    namespace: procurement
    port: 8080
    tools:
    - name: get-vendor
      description: Retrieves vendor lead time for procurement planning.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The vendor lead time lookup identifier.
      call: procurement-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: procurement-api
    baseUri: https://api.urban-outfitters.com/procurement/v1
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_api_token
    resources:
    - name: vendor
      path: /vendor/lead/time/lookup/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-vendor
        method: GET
Open in Framework → View in Fleet → vendor-lead-time-lookup.yml

Aggregates campaign metrics from Google Analytics and Facebook Ads across all URBN brands (UO, Anthropologie, Free People) and refreshes a unified Power BI dashboard.

naftiko: '0.5'
info:
  label: Multi-Brand Campaign Dashboard Orchestrator
  description: Aggregates campaign metrics from Google Analytics and Facebook Ads across all URBN brands (UO, Anthropologie, Free People) and refreshes a unified Power BI dashboard.
  tags:
  - marketing
  - analytics
  - google-analytics
  - facebook
  - power-bi
capability:
  exposes:
  - type: mcp
    namespace: brand-dashboard
    port: 8080
    tools:
    - name: refresh-brand-dashboard
      description: Aggregate multi-brand metrics and refresh the Power BI dashboard.
      inputParameters:
      - name: campaign_name
        in: body
        type: string
        description: Campaign name.
      - name: date_range
        in: body
        type: string
        description: Date range YYYY-MM-DD/YYYY-MM-DD.
      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: brand_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
Open in Framework → View in Fleet → multi-brand-campaign-dashboard-orchestrator.yml

Retrieves YouTube channel analytics including views and subscribers gained.

naftiko: '0.5'
info:
  label: YouTube Channel Analytics
  description: Retrieves YouTube channel analytics including views and subscribers gained.
  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 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
Open in Framework → View in Fleet → youtube-channel-analytics.yml

Retrieves a document from SharePoint.

naftiko: '0.5'
info:
  label: SharePoint Document Viewer
  description: Retrieves a document from SharePoint.
  tags:
  - collaboration
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: collaboration
    port: 8080
    tools:
    - name: get-sharepoint
      description: Retrieves a document from SharePoint.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The sharepoint document viewer identifier.
      call: collaboration-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: collaboration-api
    baseUri: https://api.urban-outfitters.com/collaboration/v1
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_api_token
    resources:
    - name: sharepoint
      path: /sharepoint/document/viewer/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-sharepoint
        method: GET
Open in Framework → View in Fleet → sharepoint-document-viewer.yml

Pulls aging inventory from Oracle EBS, creates clearance promotions on BigCommerce, sends clearance email blast via MailChimp, and reports to the merchandising team in Google Sheets.

naftiko: '0.5'
info:
  label: End of Season Clearance Orchestrator
  description: Pulls aging inventory from Oracle EBS, creates clearance promotions on BigCommerce, sends clearance email blast via MailChimp, and reports to the merchandising team in Google Sheets.
  tags:
  - merchandising
  - e-commerce
  - oracle-e-business-suite
  - bigcommerce
  - mailchimp
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: clearance-ops
    port: 8080
    tools:
    - name: execute-clearance
      description: Run end-of-season clearance across channels.
      inputParameters:
      - name: season_code
        in: body
        type: string
        description: Season code (e.g., 'FW24').
      - name: clearance_pct
        in: body
        type: number
        description: Clearance discount percentage.
      steps:
      - name: get-aging-stock
        type: call
        call: oracle-ebs.get-aging-inventory
        with:
          season: '{{season_code}}'
      - name: create-promotion
        type: call
        call: bigcommerce.create-promotion
        with:
          name: '{{season_code}} Clearance'
          discount_pct: '{{clearance_pct}}'
          product_ids: '{{get-aging-stock.product_ids}}'
      - name: send-blast
        type: call
        call: mailchimp.send-campaign
        with:
          list_id: uo_subscribers
          subject: 'Clearance Sale: Up to {{clearance_pct}}% Off!'
      - name: log-report
        type: call
        call: gsheets.append-row
        with:
          spreadsheet_id: uo_clearance_tracker
          row:
            season: '{{season_code}}'
            items: '{{get-aging-stock.total_items}}'
            discount: '{{clearance_pct}}'
  consumes:
  - type: http
    namespace: oracle-ebs
    baseUri: https://uo-ebs.urbn.com/webservices/rest/inventory
    authentication:
      type: basic
      username: $secrets.oracle_ebs_user
      password: $secrets.oracle_ebs_password
    resources:
    - name: aging
      path: /aging-inventory
      operations:
      - name: get-aging-inventory
        method: GET
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/uo-store/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    resources:
    - name: promotions
      path: /promotions
      operations:
      - name: create-promotion
        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
  - 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
Open in Framework → View in Fleet → end-of-season-clearance-orchestrator.yml

Fetches recent Twitter mentions and logs results to Google Sheets.

naftiko: '0.5'
info:
  label: Twitter Brand Mention Tracker
  description: Fetches recent Twitter mentions and logs results to Google Sheets.
  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 to Sheets.
      inputParameters:
      - name: query
        in: body
        type: string
        description: Search query.
      - name: since_date
        in: body
        type: string
        description: Start date YYYY-MM-DD.
      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: uo_social_mentions
          row:
            query: '{{query}}'
            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
Open in Framework → View in Fleet → twitter-brand-mention-tracker.yml

Orchestrates retail workflow 19 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Retail Workflow 19
  description: Orchestrates retail workflow 19 by coordinating across systems, validating data, and sending notifications.
  tags:
  - retail
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: retail
    port: 8080
    tools:
    - name: run-retail-workflow-019
      description: Orchestrates retail workflow 19 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 Retail Workflow 19 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.urban-outfitters.com/v1
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.urban-outfitters.com/v2
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_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
Open in Framework → View in Fleet → retail-workflow-19.yml

When a new wholesale lead is created in Salesforce, enriches it with ZoomInfo data, creates an opportunity, and notifies the sales team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Salesforce Lead Qualification Orchestrator
  description: When a new wholesale lead is created in Salesforce, enriches it with ZoomInfo data, creates an opportunity, and 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-lead
      description: Enrich a Salesforce lead, create an opportunity, and notify sales.
      inputParameters:
      - name: lead_id
        in: body
        type: string
        description: 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}}'
      - name: create-opportunity
        type: call
        call: salesforce.create-opportunity
        with:
          name: Wholesale - {{get-lead.Company}}
          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}}. Opp: {{create-opportunity.id}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://urbn.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
Open in Framework → View in Fleet → salesforce-lead-qualification-orchestrator.yml

Checks the status of an online order.

naftiko: '0.5'
info:
  label: Online Order Status
  description: Checks the status of an online order.
  tags:
  - e-commerce
  - customer-service
capability:
  exposes:
  - type: mcp
    namespace: e-commerce
    port: 8080
    tools:
    - name: get-online
      description: Checks the status of an online order.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The online order status identifier.
      call: e-commerce-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: e-commerce-api
    baseUri: https://api.urban-outfitters.com/e-commerce/v1
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_api_token
    resources:
    - name: online
      path: /online/order/status/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-online
        method: GET
Open in Framework → View in Fleet → online-order-status.yml

Retrieves the balance of a gift card.

naftiko: '0.5'
info:
  label: Gift Card Balance Lookup
  description: Retrieves the balance of a gift card.
  tags:
  - finance
  - customer-service
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: get-gift
      description: Retrieves the balance of a gift card.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The gift card balance lookup identifier.
      call: finance-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: finance-api
    baseUri: https://api.urban-outfitters.com/finance/v1
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_api_token
    resources:
    - name: gift
      path: /gift/card/balance/lookup/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-gift
        method: GET
Open in Framework → View in Fleet → gift-card-balance-lookup.yml

Retrieves retail operational data for workflow 18.

naftiko: '0.5'
info:
  label: Retail Data Query 18
  description: Retrieves retail operational data for workflow 18.
  tags:
  - retail
  - operations
capability:
  exposes:
  - type: mcp
    namespace: retail
    port: 8080
    tools:
    - name: get-data-18
      description: Query retail data for workflow 18.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: retail-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: retail-api
    baseUri: https://api.urban-outfitters.com/retail/v1
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_api_token
    resources:
    - name: data
      path: /data/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-data-18
        method: GET
Open in Framework → View in Fleet → retail-data-query-18.yml

Retrieves a Datadog monitor status.

naftiko: '0.5'
info:
  label: Datadog Monitor Viewer
  description: Retrieves a Datadog monitor status.
  tags:
  - monitoring
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: monitoring
    port: 8080
    tools:
    - name: get-datadog
      description: Retrieves a Datadog monitor status.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The datadog monitor viewer identifier.
      call: monitoring-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: monitoring-api
    baseUri: https://api.urban-outfitters.com/monitoring/v1
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_api_token
    resources:
    - name: datadog
      path: /datadog/monitor/viewer/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-datadog
        method: GET
Open in Framework → View in Fleet → datadog-monitor-viewer.yml

Orchestrates retail workflow 20 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Retail Workflow 20
  description: Orchestrates retail workflow 20 by coordinating across systems, validating data, and sending notifications.
  tags:
  - retail
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: retail
    port: 8080
    tools:
    - name: run-retail-workflow-020
      description: Orchestrates retail workflow 20 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 Retail Workflow 20 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.urban-outfitters.com/v1
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.urban-outfitters.com/v2
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_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
Open in Framework → View in Fleet → retail-workflow-20.yml

Orchestrates retail workflow 8 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Retail Workflow 8
  description: Orchestrates retail workflow 8 by coordinating across systems, validating data, and sending notifications.
  tags:
  - retail
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: retail
    port: 8080
    tools:
    - name: run-retail-workflow-008
      description: Orchestrates retail 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 Retail Workflow 8 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.urban-outfitters.com/v1
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.urban-outfitters.com/v2
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_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
Open in Framework → View in Fleet → retail-workflow-8.yml

Retrieves GitHub repository information.

naftiko: '0.5'
info:
  label: GitHub Repo Viewer
  description: Retrieves GitHub repository information.
  tags:
  - engineering
  - github
capability:
  exposes:
  - type: mcp
    namespace: engineering
    port: 8080
    tools:
    - name: get-github
      description: Retrieves GitHub repository information.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The github repo viewer identifier.
      call: engineering-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: engineering-api
    baseUri: https://api.urban-outfitters.com/engineering/v1
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_api_token
    resources:
    - name: github
      path: /github/repo/viewer/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-github
        method: GET
Open in Framework → View in Fleet → github-repo-viewer.yml

Searches for files in Google Drive by name.

naftiko: '0.5'
info:
  label: Google Drive File Search
  description: Searches for files in Google Drive by name.
  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: 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
Open in Framework → View in Fleet → google-drive-file-search.yml

Retrieves retail operational data for workflow 9.

naftiko: '0.5'
info:
  label: Retail Data Query 9
  description: Retrieves retail operational data for workflow 9.
  tags:
  - retail
  - operations
capability:
  exposes:
  - type: mcp
    namespace: retail
    port: 8080
    tools:
    - name: get-data-9
      description: Query retail data for workflow 9.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: retail-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: retail-api
    baseUri: https://api.urban-outfitters.com/retail/v1
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_api_token
    resources:
    - name: data
      path: /data/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-data-9
        method: GET
Open in Framework → View in Fleet → retail-data-query-9.yml

Retrieves retail operational data for workflow 21.

naftiko: '0.5'
info:
  label: Retail Data Query 21
  description: Retrieves retail operational data for workflow 21.
  tags:
  - retail
  - operations
capability:
  exposes:
  - type: mcp
    namespace: retail
    port: 8080
    tools:
    - name: get-data-21
      description: Query retail data for workflow 21.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: retail-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: retail-api
    baseUri: https://api.urban-outfitters.com/retail/v1
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_api_token
    resources:
    - name: data
      path: /data/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-data-21
        method: GET
Open in Framework → View in Fleet → retail-data-query-21.yml

When a new product photoshoot is completed in Adobe Lightroom, uploads assets to SharePoint, creates product listings on BigCommerce, and updates the merchandising team in Microsoft Teams.

naftiko: '0.5'
info:
  label: Product Photography Workflow Orchestrator
  description: When a new product photoshoot is completed in Adobe Lightroom, uploads assets to SharePoint, creates product listings on BigCommerce, and updates the merchandising team in Microsoft Teams.
  tags:
  - product-management
  - creative
  - lightroom
  - sharepoint
  - bigcommerce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: creative-workflow
    port: 8080
    tools:
    - name: process-photoshoot
      description: Upload photos, create product listings, and notify merchandising.
      inputParameters:
      - name: product_name
        in: body
        type: string
        description: Product name.
      - name: asset_folder
        in: body
        type: string
        description: Lightroom album or folder path.
      - name: sku
        in: body
        type: string
        description: Product SKU.
      steps:
      - name: upload-assets
        type: call
        call: sharepoint.upload-folder
        with:
          site_id: product_assets
          folder_path: Photography/{{sku}}
          source: '{{asset_folder}}'
      - name: create-listing
        type: call
        call: bigcommerce.create-product
        with:
          name: '{{product_name}}'
          sku: '{{sku}}'
          images: '{{upload-assets.urls}}'
      - name: notify-merch
        type: call
        call: msteams.send-message
        with:
          channel_id: merchandising
          text: 'New product {{product_name}} ({{sku}}) listed. Photos: {{upload-assets.folder_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-folder
        method: POST
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/uo-store/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: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → product-photography-workflow-orchestrator.yml

Retrieves current pricing for a product.

naftiko: '0.5'
info:
  label: Product Price Lookup
  description: Retrieves current pricing for a product.
  tags:
  - pricing
  - product-management
capability:
  exposes:
  - type: mcp
    namespace: pricing
    port: 8080
    tools:
    - name: get-product
      description: Retrieves current pricing for a product.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The product price lookup identifier.
      call: pricing-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: pricing-api
    baseUri: https://api.urban-outfitters.com/pricing/v1
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_api_token
    resources:
    - name: product
      path: /product/price/lookup/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-product
        method: GET
Open in Framework → View in Fleet → product-price-lookup.yml

Retrieves active Dynatrace problems for Urban Outfitters e-commerce systems.

naftiko: '0.5'
info:
  label: Dynatrace Application Monitoring Lookup
  description: Retrieves active Dynatrace problems for Urban Outfitters e-commerce systems.
  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://urbn.live.dynatrace.com/api/v2
    authentication:
      type: bearer
      token: $secrets.dynatrace_token
    resources:
    - name: problems
      path: /problems
      operations:
      - name: get-problems
        method: GET
Open in Framework → View in Fleet → dynatrace-application-monitoring-lookup.yml

Orchestrates retail workflow 22 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Retail Workflow 22
  description: Orchestrates retail workflow 22 by coordinating across systems, validating data, and sending notifications.
  tags:
  - retail
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: retail
    port: 8080
    tools:
    - name: run-retail-workflow-022
      description: Orchestrates retail workflow 22 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 Retail Workflow 22 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.urban-outfitters.com/v1
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.urban-outfitters.com/v2
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_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
Open in Framework → View in Fleet → retail-workflow-22.yml

Retrieves search performance data from Google Search Console.

naftiko: '0.5'
info:
  label: Google Search Console Performance
  description: Retrieves search performance data from Google Search Console.
  tags:
  - seo
  - analytics
  - google-search-console
capability:
  exposes:
  - type: mcp
    namespace: seo-analytics
    port: 8080
    tools:
    - name: get-search-performance
      description: Fetch GSC performance data.
      inputParameters:
      - name: site_url
        in: body
        type: string
        description: Site URL property.
      - 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
  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
Open in Framework → View in Fleet → google-search-console-performance.yml

Retrieves Datadog monitor status by ID.

naftiko: '0.5'
info:
  label: Datadog Monitor Status Lookup
  description: Retrieves Datadog monitor status by ID.
  tags:
  - monitoring
  - infrastructure
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: infra-monitoring
    port: 8080
    tools:
    - name: get-monitor-status
      description: Fetch Datadog monitor status.
      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
  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
Open in Framework → View in Fleet → datadog-monitor-status-lookup.yml

Orchestrates retail workflow 13 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Retail Workflow 13
  description: Orchestrates retail workflow 13 by coordinating across systems, validating data, and sending notifications.
  tags:
  - retail
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: retail
    port: 8080
    tools:
    - name: run-retail-workflow-013
      description: Orchestrates retail 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 Retail Workflow 13 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.urban-outfitters.com/v1
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.urban-outfitters.com/v2
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_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
Open in Framework → View in Fleet → retail-workflow-13.yml

Orchestrates retail workflow 7 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Retail Workflow 7
  description: Orchestrates retail workflow 7 by coordinating across systems, validating data, and sending notifications.
  tags:
  - retail
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: retail
    port: 8080
    tools:
    - name: run-retail-workflow-007
      description: Orchestrates retail 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 Retail Workflow 7 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.urban-outfitters.com/v1
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.urban-outfitters.com/v2
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_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
Open in Framework → View in Fleet → retail-workflow-7.yml

Checks store inventory levels in Oracle EBS, creates transfer orders for low-stock items, and notifies store managers via Microsoft Teams.

naftiko: '0.5'
info:
  label: Store Inventory Replenishment Orchestrator
  description: Checks store inventory levels in Oracle EBS, creates transfer orders for low-stock items, and notifies store managers via Microsoft Teams.
  tags:
  - retail
  - inventory
  - oracle-e-business-suite
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: store-replenishment
    port: 8080
    tools:
    - name: replenish-store-inventory
      description: Check store stock and create transfer orders for low items.
      inputParameters:
      - name: store_id
        in: body
        type: string
        description: Store organization ID.
      - name: category
        in: body
        type: string
        description: Product category.
      steps:
      - name: check-levels
        type: call
        call: oracle-ebs.get-store-inventory
        with:
          store: '{{store_id}}'
          category: '{{category}}'
      - name: create-transfer
        type: call
        call: oracle-ebs.create-transfer-order
        with:
          from_org: distribution_center
          to_org: '{{store_id}}'
          items: '{{check-levels.low_stock_items}}'
      - name: notify-manager
        type: call
        call: msteams.send-message
        with:
          channel_id: store-{{store_id}}
          text: 'Replenishment order created for {{check-levels.low_stock_count}} items. Transfer: {{create-transfer.order_number}}'
  consumes:
  - type: http
    namespace: oracle-ebs
    baseUri: https://uo-ebs.urbn.com/webservices/rest/inventory
    authentication:
      type: basic
      username: $secrets.oracle_ebs_user
      password: $secrets.oracle_ebs_password
    resources:
    - name: store-inventory
      path: /store-levels
      operations:
      - name: get-store-inventory
        method: GET
    - name: transfers
      path: /transfer-orders
      operations:
      - name: create-transfer-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: send-message
        method: POST
Open in Framework → View in Fleet → store-inventory-replenishment-orchestrator.yml

Retrieves retail operational data for workflow 6.

naftiko: '0.5'
info:
  label: Retail Data Query 6
  description: Retrieves retail operational data for workflow 6.
  tags:
  - retail
  - operations
capability:
  exposes:
  - type: mcp
    namespace: retail
    port: 8080
    tools:
    - name: get-data-6
      description: Query retail data for workflow 6.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: retail-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: retail-api
    baseUri: https://api.urban-outfitters.com/retail/v1
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_api_token
    resources:
    - name: data
      path: /data/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-data-6
        method: GET
Open in Framework → View in Fleet → retail-data-query-6.yml

Retrieves retail operational data for workflow 12.

naftiko: '0.5'
info:
  label: Retail Data Query 12
  description: Retrieves retail operational data for workflow 12.
  tags:
  - retail
  - operations
capability:
  exposes:
  - type: mcp
    namespace: retail
    port: 8080
    tools:
    - name: get-data-12
      description: Query retail data for workflow 12.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: retail-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: retail-api
    baseUri: https://api.urban-outfitters.com/retail/v1
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_api_token
    resources:
    - name: data
      path: /data/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-data-12
        method: GET
Open in Framework → View in Fleet → retail-data-query-12.yml

Orchestrates retail workflow 4 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Retail Workflow 4
  description: Orchestrates retail workflow 4 by coordinating across systems, validating data, and sending notifications.
  tags:
  - retail
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: retail
    port: 8080
    tools:
    - name: run-retail-workflow-004
      description: Orchestrates retail 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 Retail Workflow 4 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.urban-outfitters.com/v1
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.urban-outfitters.com/v2
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_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
Open in Framework → View in Fleet → retail-workflow-4.yml

Orchestrates retail workflow 10 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Retail Workflow 10
  description: Orchestrates retail workflow 10 by coordinating across systems, validating data, and sending notifications.
  tags:
  - retail
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: retail
    port: 8080
    tools:
    - name: run-retail-workflow-010
      description: Orchestrates retail 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 Retail Workflow 10 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.urban-outfitters.com/v1
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.urban-outfitters.com/v2
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_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
Open in Framework → View in Fleet → retail-workflow-10.yml

Orchestrates retail workflow 11 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Retail Workflow 11
  description: Orchestrates retail workflow 11 by coordinating across systems, validating data, and sending notifications.
  tags:
  - retail
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: retail
    port: 8080
    tools:
    - name: run-retail-workflow-011
      description: Orchestrates retail 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 Retail Workflow 11 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.urban-outfitters.com/v1
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.urban-outfitters.com/v2
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_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
Open in Framework → View in Fleet → retail-workflow-11.yml

Orchestrates retail workflow 5 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Retail Workflow 5
  description: Orchestrates retail workflow 5 by coordinating across systems, validating data, and sending notifications.
  tags:
  - retail
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: retail
    port: 8080
    tools:
    - name: run-retail-workflow-005
      description: Orchestrates retail 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 Retail Workflow 5 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.urban-outfitters.com/v1
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.urban-outfitters.com/v2
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_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
Open in Framework → View in Fleet → retail-workflow-5.yml

Creates purchase orders in Oracle EBS from approved vendor quotes, sends PO confirmation via Microsoft Outlook, and logs the order in Google Sheets.

naftiko: '0.5'
info:
  label: Vendor Purchase Order Orchestrator
  description: Creates purchase orders in Oracle EBS from approved vendor quotes, sends PO confirmation via Microsoft Outlook, and logs the order in Google Sheets.
  tags:
  - procurement
  - oracle-e-business-suite
  - microsoft-outlook
  - google-sheets
capability:
  exposes:
  - type: mcp
    namespace: procurement-ops
    port: 8080
    tools:
    - name: create-purchase-order
      description: Create PO in Oracle EBS, email vendor, and log in Sheets.
      inputParameters:
      - name: vendor_id
        in: body
        type: string
        description: Oracle vendor ID.
      - name: items
        in: body
        type: string
        description: JSON array of line items.
      - name: vendor_email
        in: body
        type: string
        description: Vendor contact email.
      steps:
      - name: create-po
        type: call
        call: oracle-ebs.create-po
        with:
          vendor_id: '{{vendor_id}}'
          items: '{{items}}'
      - name: email-vendor
        type: call
        call: outlook.send-mail
        with:
          to: '{{vendor_email}}'
          subject: Purchase Order {{create-po.po_number}}
          body: Please review the attached purchase order {{create-po.po_number}}.
      - name: log-po
        type: call
        call: gsheets.append-row
        with:
          spreadsheet_id: uo_po_tracker
          row:
            po_number: '{{create-po.po_number}}'
            vendor: '{{vendor_id}}'
  consumes:
  - type: http
    namespace: oracle-ebs
    baseUri: https://uo-ebs.urbn.com/webservices/rest/purchasing
    authentication:
      type: basic
      username: $secrets.oracle_ebs_user
      password: $secrets.oracle_ebs_password
    resources:
    - name: purchase-orders
      path: /purchase-orders
      operations:
      - name: create-po
        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
  - 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
Open in Framework → View in Fleet → vendor-purchase-order-orchestrator.yml

Retrieves MailChimp audience list statistics including member count, open rate, and click rate.

naftiko: '0.5'
info:
  label: MailChimp Audience Stats Lookup
  description: Retrieves MailChimp audience list statistics including member 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: Fetch MailChimp audience list statistics.
      inputParameters:
      - name: list_id
        in: body
        type: string
        description: MailChimp 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
  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
Open in Framework → View in Fleet → mailchimp-audience-stats-lookup.yml

Retrieves Cloudflare analytics for the Urban Outfitters storefront zone.

naftiko: '0.5'
info:
  label: Cloudflare CDN Performance Lookup
  description: Retrieves Cloudflare analytics for the Urban Outfitters storefront zone.
  tags:
  - infrastructure
  - cdn
  - cloudflare
capability:
  exposes:
  - type: mcp
    namespace: cdn-ops
    port: 8080
    tools:
    - name: get-zone-analytics
      description: Fetch Cloudflare zone analytics.
      inputParameters:
      - name: zone_id
        in: body
        type: string
        description: Cloudflare zone ID.
      call: cloudflare.get-zone-analytics
      with:
        zone_id: '{{zone_id}}'
      outputParameters:
      - name: requests
        type: number
        mapping: $.result.totals.requests.all
      - name: bandwidth
        type: number
        mapping: $.result.totals.bandwidth.all
  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-zone-analytics
        method: GET
Open in Framework → View in Fleet → cloudflare-cdn-performance-lookup.yml

Orchestrates retail workflow 1 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Retail Workflow 1
  description: Orchestrates retail workflow 1 by coordinating across systems, validating data, and sending notifications.
  tags:
  - retail
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: retail
    port: 8080
    tools:
    - name: run-retail-workflow-001
      description: Orchestrates retail 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 Retail Workflow 1 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.urban-outfitters.com/v1
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.urban-outfitters.com/v2
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_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
Open in Framework → View in Fleet → retail-workflow-1.yml

Retrieves retail operational data for workflow 15.

naftiko: '0.5'
info:
  label: Retail Data Query 15
  description: Retrieves retail operational data for workflow 15.
  tags:
  - retail
  - operations
capability:
  exposes:
  - type: mcp
    namespace: retail
    port: 8080
    tools:
    - name: get-data-15
      description: Query retail data for workflow 15.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: retail-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: retail-api
    baseUri: https://api.urban-outfitters.com/retail/v1
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_api_token
    resources:
    - name: data
      path: /data/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-data-15
        method: GET
Open in Framework → View in Fleet → retail-data-query-15.yml

Orchestrates retail workflow 14 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Retail Workflow 14
  description: Orchestrates retail workflow 14 by coordinating across systems, validating data, and sending notifications.
  tags:
  - retail
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: retail
    port: 8080
    tools:
    - name: run-retail-workflow-014
      description: Orchestrates retail 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 Retail Workflow 14 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.urban-outfitters.com/v1
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.urban-outfitters.com/v2
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_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
Open in Framework → View in Fleet → retail-workflow-14.yml

When a new order is placed on BigCommerce, creates a fulfillment record in Oracle E-Business Suite, updates inventory, and sends a shipping confirmation via MailChimp.

naftiko: '0.5'
info:
  label: Omnichannel Order Fulfillment Orchestrator
  description: When a new order is placed on BigCommerce, creates a fulfillment record in Oracle E-Business Suite, updates inventory, and sends a shipping confirmation via MailChimp.
  tags:
  - e-commerce
  - fulfillment
  - bigcommerce
  - oracle-e-business-suite
  - mailchimp
capability:
  exposes:
  - type: mcp
    namespace: order-fulfillment
    port: 8080
    tools:
    - name: process-order
      description: Orchestrate order fulfillment across Oracle EBS, inventory, and email notification.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: BigCommerce order ID.
      steps:
      - name: get-order
        type: call
        call: bigcommerce.get-order
        with:
          order_id: '{{order_id}}'
      - name: create-fulfillment
        type: call
        call: oracle-ebs.create-sales-order
        with:
          customer: '{{get-order.customer_email}}'
          items: '{{get-order.line_items}}'
          ship_to: '{{get-order.shipping_address}}'
      - name: decrement-inventory
        type: call
        call: oracle-ebs.update-inventory
        with:
          items: '{{get-order.line_items}}'
      - name: send-confirmation
        type: call
        call: mailchimp.send-transactional
        with:
          email: '{{get-order.customer_email}}'
          template: shipping_confirmation
          merge_vars:
            order_id: '{{order_id}}'
            tracking: '{{create-fulfillment.tracking_number}}'
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/uo-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: oracle-ebs
    baseUri: https://uo-ebs.urbn.com/webservices/rest
    authentication:
      type: basic
      username: $secrets.oracle_ebs_user
      password: $secrets.oracle_ebs_password
    resources:
    - name: sales-orders
      path: /om/sales-orders
      operations:
      - name: create-sales-order
        method: POST
    - name: inventory
      path: /inventory/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
Open in Framework → View in Fleet → omnichannel-order-fulfillment-orchestrator.yml

Orchestrates retail workflow 16 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Retail Workflow 16
  description: Orchestrates retail workflow 16 by coordinating across systems, validating data, and sending notifications.
  tags:
  - retail
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: retail
    port: 8080
    tools:
    - name: run-retail-workflow-016
      description: Orchestrates retail workflow 16 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 Retail Workflow 16 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.urban-outfitters.com/v1
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.urban-outfitters.com/v2
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_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
Open in Framework → View in Fleet → retail-workflow-16.yml

Orchestrates retail workflow 2 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Retail Workflow 2
  description: Orchestrates retail workflow 2 by coordinating across systems, validating data, and sending notifications.
  tags:
  - retail
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: retail
    port: 8080
    tools:
    - name: run-retail-workflow-002
      description: Orchestrates retail 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 Retail Workflow 2 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.urban-outfitters.com/v1
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.urban-outfitters.com/v2
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_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
Open in Framework → View in Fleet → retail-workflow-2.yml

Retrieves retail operational data for workflow 3.

naftiko: '0.5'
info:
  label: Retail Data Query 3
  description: Retrieves retail operational data for workflow 3.
  tags:
  - retail
  - operations
capability:
  exposes:
  - type: mcp
    namespace: retail
    port: 8080
    tools:
    - name: get-data-3
      description: Query retail data for workflow 3.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: retail-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: retail-api
    baseUri: https://api.urban-outfitters.com/retail/v1
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_api_token
    resources:
    - name: data
      path: /data/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-data-3
        method: GET
Open in Framework → View in Fleet → retail-data-query-3.yml

Orchestrates retail workflow 17 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: Retail Workflow 17
  description: Orchestrates retail workflow 17 by coordinating across systems, validating data, and sending notifications.
  tags:
  - retail
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: retail
    port: 8080
    tools:
    - name: run-retail-workflow-017
      description: Orchestrates retail workflow 17 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 Retail Workflow 17 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.urban-outfitters.com/v1
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.urban-outfitters.com/v2
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_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
Open in Framework → View in Fleet → retail-workflow-17.yml

Retrieves foot traffic data for a retail store.

naftiko: '0.5'
info:
  label: Store Foot Traffic Report
  description: Retrieves foot traffic data for a retail store.
  tags:
  - operations
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: operations
    port: 8080
    tools:
    - name: get-store
      description: Retrieves foot traffic data for a retail store.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The store foot traffic report identifier.
      call: operations-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: operations-api
    baseUri: https://api.urban-outfitters.com/operations/v1
    authentication:
      type: bearer
      token: $secrets.urban_outfitters_api_token
    resources:
    - name: store
      path: /store/foot/traffic/report/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-store
        method: GET
Open in Framework → View in Fleet → store-foot-traffic-report.yml

Detects Google Cloud billing anomalies above a spend threshold and notifies the FinOps Slack channel with a cost breakdown and recommended actions.

naftiko: '0.5'
info:
  label: Google Cloud Cost Anomaly Responder
  description: Detects Google Cloud billing anomalies above a spend threshold and notifies the FinOps Slack channel with a cost breakdown and recommended actions.
  tags:
  - cloud
  - finops
  - google-cloud
  - slack
  - cost-management
capability:
  exposes:
  - type: mcp
    namespace: cloud-finops
    port: 8080
    tools:
    - name: respond-to-cost-anomaly
      description: Given a GCP billing account ID and anomaly threshold in USD, retrieve daily cost data and post an anomaly report to the FinOps Slack channel. Use when automated billing alerts fire above acceptable variance.
      inputParameters:
      - name: billing_account_id
        in: body
        type: string
        description: Google Cloud billing account ID (e.g. 01234A-56789B-CDEF00).
      - name: threshold_usd
        in: body
        type: number
        description: Daily spend threshold in USD above which to alert.
      steps:
      - name: get-billing-data
        type: call
        call: gcp-billing.get-billing-info
        with:
          billing_account_id: '{{billing_account_id}}'
      - name: post-anomaly-report
        type: call
        call: slack-finops.post-message
        with:
          channel: cloud-finops
          text: 'GCP cost anomaly: Billing account {{billing_account_id}} exceeded threshold of ${{threshold_usd}}. Current period cost: {{get-billing-data.cost}}. Top project: {{get-billing-data.top_project}}.'
  consumes:
  - type: http
    namespace: gcp-billing
    baseUri: https://cloudbilling.googleapis.com/v1
    authentication:
      type: bearer
      token: $secrets.gcp_token
    resources:
    - name: billing-accounts
      path: /billingAccounts/{{billing_account_id}}
      inputParameters:
      - name: billing_account_id
        in: path
      operations:
      - name: get-billing-info
        method: GET
  - type: http
    namespace: slack-finops
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → google-cloud-cost-anomaly-responder.yml

When a Databricks ML model shows prediction drift, logs the event in Snowflake, creates a Jira ticket for the data science team, and alerts via Slack.

naftiko: '0.5'
info:
  label: Databricks Model Drift Alert Handler
  description: When a Databricks ML model shows prediction drift, logs the event in Snowflake, creates a Jira ticket for the data science team, and alerts via Slack.
  tags:
  - data-science
  - databricks
  - snowflake
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: ml-ops
    port: 8080
    tools:
    - name: handle-model-drift
      description: Given a Databricks model name and drift score, log to Snowflake, create a Jira ticket, and alert data science. Use when model monitoring detects performance degradation.
      inputParameters:
      - name: model_name
        in: body
        type: string
        description: Databricks registered model name.
      - name: drift_score
        in: body
        type: string
        description: Model drift score (0-1).
      steps:
      - name: log-drift-event
        type: call
        call: snowflake.execute-statement
        with:
          statement: INSERT INTO ML_OPS.MODEL_DRIFT_LOG (model_name, drift_score, detected_at) VALUES ('{{model_name}}', {{drift_score}}, CURRENT_TIMESTAMP())
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: MLOPS
          issue_type: Task
          summary: 'Model drift: {{model_name}} — score {{drift_score}}'
          description: Model {{model_name}} drift score exceeded threshold at {{drift_score}}. Retrain or investigate.
      - name: alert-team
        type: call
        call: slack.post-message
        with:
          channel: data-science-alerts
          text: 'Model drift detected: {{model_name}} score {{drift_score}}. Jira: {{create-ticket.key}}.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://walmart.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://walmart.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → databricks-model-drift-alert-handler.yml

Validates a SAP supplier invoice against the purchase order and goods receipt, logs discrepancies in Snowflake, and escalates mismatches to the AP team via Slack.

naftiko: '0.5'
info:
  label: SAP Invoice Three-Way Match Validator
  description: Validates a SAP supplier invoice against the purchase order and goods receipt, logs discrepancies in Snowflake, and escalates mismatches to the AP team via Slack.
  tags:
  - finance
  - sap
  - snowflake
  - slack
  - accounts-payable
capability:
  exposes:
  - type: mcp
    namespace: ap-ops
    port: 8080
    tools:
    - name: validate-three-way-match
      description: Given a SAP invoice number, validate against PO and GR, log results in Snowflake, and escalate mismatches. Use for accounts payable processing.
      inputParameters:
      - name: invoice_number
        in: body
        type: string
        description: SAP invoice document 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: '{{get-invoice.po_number}}'
      - name: log-match-result
        type: call
        call: snowflake.execute-statement
        with:
          statement: INSERT INTO FINANCE.THREE_WAY_MATCH_LOG (invoice_number, po_number, match_status, variance) VALUES ('{{invoice_number}}', '{{get-invoice.po_number}}', '{{get-invoice.match_status}}', {{get-invoice.variance_amount}})
      - name: escalate-mismatch
        type: call
        call: slack.post-message
        with:
          channel: accounts-payable
          text: 'Three-way match result for invoice {{invoice_number}}: {{get-invoice.match_status}}. PO: {{get-invoice.po_number}}. Variance: {{get-invoice.variance_amount}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://walmart-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
    - name: purchase-orders
      path: /A_PurchaseOrder('{{po_number}}')
      inputParameters:
      - name: po_number
        in: path
      operations:
      - name: get-po
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://walmart.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: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → sap-invoice-three-way-match-validator.yml

Generates a scoped Tableau embedded view token for a specified user and workbook, enabling secure analytics embedding in Walmart's internal portals.

naftiko: '0.5'
info:
  label: Tableau Dashboard Embed Token Generator
  description: Generates a scoped Tableau embedded view token for a specified user and workbook, enabling secure analytics embedding in Walmart's internal portals.
  tags:
  - data
  - analytics
  - tableau
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: tableau-embed
    port: 8080
    tools:
    - name: get-tableau-embed-token
      description: Given a Tableau site, workbook name, and user email, generate a scoped embed token for use in internal portal iframes. Returns the token and embed URL.
      inputParameters:
      - name: site_id
        in: body
        type: string
        description: Tableau site ID (e.g. walmart-analytics).
      - name: workbook_name
        in: body
        type: string
        description: Name of the Tableau workbook to embed.
      - name: user_email
        in: body
        type: string
        description: Email of the user requesting the embedded view.
      steps:
      - name: get-workbook
        type: call
        call: tableau.get-workbook
        with:
          site_id: '{{site_id}}'
          workbook_name: '{{workbook_name}}'
      - name: generate-token
        type: call
        call: tableau.create-embed-token
        with:
          site_id: '{{site_id}}'
          workbook_id: '{{get-workbook.id}}'
          user: '{{user_email}}'
  consumes:
  - type: http
    namespace: tableau
    baseUri: https://prod-useast-a.online.tableau.com/api/3.21
    authentication:
      type: apikey
      key: X-Tableau-Auth
      value: $secrets.tableau_token
      placement: header
    resources:
    - name: workbooks
      path: /sites/{{site_id}}/workbooks
      inputParameters:
      - name: site_id
        in: path
      operations:
      - name: get-workbook
        method: GET
    - name: embed-tokens
      path: /sites/{{site_id}}/embeddingtoken/generate
      inputParameters:
      - name: site_id
        in: path
      operations:
      - name: create-embed-token
        method: POST
Open in Framework → View in Fleet → tableau-dashboard-embed-token-generator.yml

Pulls weekly site traffic metrics from Adobe Analytics and publishes a summary report to the e-commerce Slack channel for stakeholder visibility.

naftiko: '0.5'
info:
  label: Adobe Analytics Weekly Traffic Digest
  description: Pulls weekly site traffic metrics from Adobe Analytics and publishes a summary report to the e-commerce Slack channel for stakeholder visibility.
  tags:
  - marketing
  - analytics
  - adobe-analytics
  - slack
  - e-commerce
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: ecomm-analytics
    port: 8080
    tools:
    - name: digest-site-traffic
      description: Given a date range, retrieve weekly traffic metrics from Adobe Analytics and post a digest to the e-commerce Slack channel. Use for Monday morning stakeholder traffic reports.
      inputParameters:
      - 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.
      - name: report_suite_id
        in: body
        type: string
        description: Adobe Analytics report suite ID (e.g. walmart-us-prod).
      steps:
      - name: get-traffic-report
        type: call
        call: adobe-analytics.run-report
        with:
          rsid: '{{report_suite_id}}'
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
      - name: post-digest
        type: call
        call: slack-ecomm.post-message
        with:
          channel: ecommerce-analytics
          text: 'Weekly traffic digest ({{start_date}} to {{end_date}}): Visits={{get-traffic-report.visits}}, PageViews={{get-traffic-report.pageViews}}, Revenue={{get-traffic-report.revenue}}'
  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
      inputParameters:
      - name: company_id
        in: path
      operations:
      - name: run-report
        method: POST
  - type: http
    namespace: slack-ecomm
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → adobe-analytics-weekly-traffic-digest.yml

When Datadog fires a high-severity alert for a production service, creates a ServiceNow P1 incident and posts an alert summary to the on-call Slack channel.

naftiko: '0.5'
info:
  label: Datadog Alert to ServiceNow Incident
  description: When Datadog fires a high-severity alert for a production service, creates a ServiceNow P1 incident and posts an alert summary to the on-call Slack channel.
  tags:
  - itsm
  - observability
  - datadog
  - servicenow
  - slack
  - incident-response
capability:
  exposes:
  - type: mcp
    namespace: incident-ops
    port: 8080
    tools:
    - name: handle-datadog-alert
      description: Given a Datadog alert ID and severity, create a ServiceNow incident and notify the on-call Slack channel. Invoke when production monitoring alerts fire at P1 or P2 severity.
      inputParameters:
      - name: alert_id
        in: body
        type: string
        description: Datadog alert/monitor ID that triggered.
      - name: alert_title
        in: body
        type: string
        description: Human-readable title of the Datadog alert.
      - name: severity
        in: body
        type: string
        description: 'Severity level: P1 or P2.'
      - name: service_name
        in: body
        type: string
        description: Name of the affected service or host.
      steps:
      - name: create-incident
        type: call
        call: servicenow-incident.create-incident
        with:
          category: application
          impact: '{{severity}}'
          urgency: 1
          short_description: '[{{severity}}] {{alert_title}} — {{service_name}}'
          description: 'Datadog alert {{alert_id}} fired for service {{service_name}}. Severity: {{severity}}.'
      - name: notify-oncall
        type: call
        call: slack-oncall.post-message
        with:
          channel: oncall-alerts
          text: '{{severity}} Incident created: {{alert_title}} | Service: {{service_name}} | ServiceNow: {{create-incident.number}} | Datadog Alert: {{alert_id}}'
  consumes:
  - type: http
    namespace: servicenow-incident
    baseUri: https://walmart.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: slack-oncall
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → datadog-alert-to-servicenow-incident.yml

Submits a ServiceNow change request for infrastructure changes, retrieves the approval status, and notifies the requester via Microsoft Teams when the change is approved or rejected.

naftiko: '0.5'
info:
  label: ServiceNow Change Management Approval
  description: Submits a ServiceNow change request for infrastructure changes, retrieves the approval status, and notifies the requester via Microsoft Teams when the change is approved or rejected.
  tags:
  - itsm
  - servicenow
  - microsoft-teams
  - change-management
  - approval
capability:
  exposes:
  - type: mcp
    namespace: change-management
    port: 8080
    tools:
    - name: submit-change-request
      description: Given change details, submit a ServiceNow change request and notify the requester in Microsoft Teams when the approval decision is made. Use for planned infrastructure and application changes.
      inputParameters:
      - name: short_description
        in: body
        type: string
        description: Brief description of the proposed change.
      - name: description
        in: body
        type: string
        description: Detailed description of the change, impact, and rollback plan.
      - name: scheduled_start
        in: body
        type: string
        description: Scheduled start time for the change in ISO 8601 format.
      - name: requester_upn
        in: body
        type: string
        description: Microsoft UPN of the change requester.
      steps:
      - name: create-change
        type: call
        call: servicenow-cr.create-change
        with:
          short_description: '{{short_description}}'
          description: '{{description}}'
          start_date: '{{scheduled_start}}'
          type: normal
      - name: notify-requester
        type: call
        call: msteams-change.send-message
        with:
          recipient_upn: '{{requester_upn}}'
          text: 'Your change request has been submitted. Change number: {{create-change.number}}. Scheduled: {{scheduled_start}}. Monitor status in ServiceNow.'
  consumes:
  - type: http
    namespace: servicenow-cr
    baseUri: https://walmart.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: chats
      path: /users/{{upn}}/chats
      inputParameters:
      - name: upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → servicenow-change-management-approval.yml

When Splunk detects a log anomaly pattern, creates a ServiceNow incident with log context and notifies the security operations Slack channel.

naftiko: '0.5'
info:
  label: Splunk Log Anomaly to Incident
  description: When Splunk detects a log anomaly pattern, creates a ServiceNow incident with log context and notifies the security operations Slack channel.
  tags:
  - security
  - splunk
  - servicenow
  - slack
  - logging
capability:
  exposes:
  - type: mcp
    namespace: soc
    port: 8080
    tools:
    - name: handle-log-anomaly
      description: Given a Splunk search ID and anomaly type, fetch log results, create a ServiceNow incident, and alert SecOps. Use when Splunk correlation rules trigger.
      inputParameters:
      - name: search_id
        in: body
        type: string
        description: Splunk search job ID.
      - name: anomaly_type
        in: body
        type: string
        description: Type of anomaly detected.
      steps:
      - name: get-search-results
        type: call
        call: splunk.get-results
        with:
          search_id: '{{search_id}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          category: security
          urgency: 2
          short_description: 'Log anomaly: {{anomaly_type}}'
          description: 'Splunk search {{search_id}} detected {{anomaly_type}}. Event count: {{get-search-results.event_count}}. Source: {{get-search-results.source}}.'
      - name: alert-secops
        type: call
        call: slack.post-message
        with:
          channel: secops-alerts
          text: 'Log anomaly detected: {{anomaly_type}}. Events: {{get-search-results.event_count}}. Incident: {{create-incident.number}}.'
  consumes:
  - type: http
    namespace: splunk
    baseUri: https://splunk.walmart.com:8089/services
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - name: search-results
      path: /search/jobs/{{search_id}}/results
      inputParameters:
      - name: search_id
        in: path
      operations:
      - name: get-results
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://walmart.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → splunk-log-anomaly-to-incident.yml

When ad spend exceeds budget threshold, fetches Google Analytics campaign data, logs the anomaly in Snowflake, and alerts the marketing team via Slack.

naftiko: '0.5'
info:
  label: Ad Campaign Spend Anomaly Responder
  description: When ad spend exceeds budget threshold, fetches Google Analytics campaign data, logs the anomaly in Snowflake, and alerts the marketing team via Slack.
  tags:
  - marketing
  - google-analytics
  - snowflake
  - slack
  - advertising
capability:
  exposes:
  - type: mcp
    namespace: ad-ops
    port: 8080
    tools:
    - name: handle-spend-anomaly
      description: Given a campaign ID and current spend, check against budget threshold, log anomaly, and notify marketing. Use when automated spend monitoring detects overruns.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: Ad campaign identifier.
      - name: current_spend
        in: body
        type: string
        description: Current spend amount.
      - name: budget_limit
        in: body
        type: string
        description: Budget limit.
      steps:
      - name: log-anomaly
        type: call
        call: snowflake.execute-statement
        with:
          statement: INSERT INTO MARKETING.SPEND_ANOMALIES (campaign_id, current_spend, budget_limit, overage, detected_at) VALUES ('{{campaign_id}}', {{current_spend}}, {{budget_limit}}, {{current_spend}} - {{budget_limit}}, CURRENT_TIMESTAMP())
      - name: alert-marketing
        type: call
        call: slack.post-message
        with:
          channel: marketing-alerts
          text: 'Ad spend anomaly: Campaign {{campaign_id}} at ${{current_spend}} (budget: ${{budget_limit}}). Overage detected. Review immediately.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://walmart.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: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → ad-campaign-spend-anomaly-responder.yml

When an SAP Ariba RFQ response period closes, compiles bid summaries into Snowflake, creates a Jira evaluation task, and notifies the sourcing team via Slack.

naftiko: '0.5'
info:
  label: SAP Ariba RFQ Evaluation Workflow
  description: When an SAP Ariba RFQ response period closes, compiles bid summaries into Snowflake, creates a Jira evaluation task, and notifies the sourcing team via Slack.
  tags:
  - procurement
  - sap-ariba
  - snowflake
  - jira
  - slack
  - sourcing
capability:
  exposes:
  - type: mcp
    namespace: sourcing
    port: 8080
    tools:
    - name: evaluate-rfq-responses
      description: Given an Ariba RFQ event ID, compile bid data, create an evaluation task, and notify sourcing. Use when RFQ response periods close.
      inputParameters:
      - name: rfq_event_id
        in: body
        type: string
        description: SAP Ariba sourcing event ID.
      steps:
      - name: get-bids
        type: call
        call: ariba.get-event-bids
        with:
          event_id: '{{rfq_event_id}}'
      - name: load-bids
        type: call
        call: snowflake.execute-statement
        with:
          statement: INSERT INTO PROCUREMENT.RFQ_BIDS (event_id, supplier_count, avg_bid, lowest_bid) VALUES ('{{rfq_event_id}}', {{get-bids.supplier_count}}, {{get-bids.avg_bid}}, {{get-bids.lowest_bid}})
      - name: create-evaluation-task
        type: call
        call: jira.create-issue
        with:
          project: PROC
          issue_type: Task
          summary: 'RFQ evaluation: {{rfq_event_id}} — {{get-bids.supplier_count}} bids received'
      - name: notify-sourcing
        type: call
        call: slack.post-message
        with:
          channel: sourcing-team
          text: 'RFQ {{rfq_event_id}} closed: {{get-bids.supplier_count}} bids. Lowest: ${{get-bids.lowest_bid}}. Evaluation task: {{create-evaluation-task.key}}.'
  consumes:
  - type: http
    namespace: ariba
    baseUri: https://openapi.ariba.com/api/sourcing/v1
    authentication:
      type: bearer
      token: $secrets.ariba_token
    resources:
    - name: events
      path: /events/{{event_id}}/bids
      inputParameters:
      - name: event_id
        in: path
      operations:
      - name: get-event-bids
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://walmart.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://walmart.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → sap-ariba-rfq-evaluation-workflow.yml

When a pull request is opened in GitHub, triggers a Datadog security scan check and posts a compliance summary comment back to the PR before merge is allowed.

naftiko: '0.5'
info:
  label: GitHub PR Security Scan Gating
  description: When a pull request is opened in GitHub, triggers a Datadog security scan check and posts a compliance summary comment back to the PR before merge is allowed.
  tags:
  - devops
  - security
  - github
  - datadog
  - devsecops
capability:
  exposes:
  - type: mcp
    namespace: security-gate
    port: 8080
    tools:
    - name: gate-pr-security-scan
      description: Given a GitHub PR number and repository, check Datadog security scan results and post a compliance summary as a PR comment. Invoke on every pull request opened event.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: GitHub repository in owner/repo format.
      - name: pr_number
        in: body
        type: integer
        description: Pull request number to evaluate.
      - name: commit_sha
        in: body
        type: string
        description: Head commit SHA of the pull request.
      steps:
      - name: get-pr
        type: call
        call: github-pr.get-pull-request
        with:
          repo: '{{repo}}'
          pull_number: '{{pr_number}}'
      - name: post-pr-comment
        type: call
        call: github-pr.create-comment
        with:
          repo: '{{repo}}'
          issue_number: '{{pr_number}}'
          body: 'Security scan initiated for commit {{commit_sha}}. Results will be posted when complete. PR: {{get-pr.title}}'
  consumes:
  - type: http
    namespace: github-pr
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: pull-requests
      path: /repos/{{repo}}/pulls/{{pull_number}}
      inputParameters:
      - name: repo
        in: path
      - name: pull_number
        in: path
      operations:
      - name: get-pull-request
        method: GET
    - name: comments
      path: /repos/{{repo}}/issues/{{issue_number}}/comments
      inputParameters:
      - name: repo
        in: path
      - name: issue_number
        in: path
      operations:
      - name: create-comment
        method: POST
Open in Framework → View in Fleet → github-pr-security-scan-gating.yml

Checks Kubernetes deployment rollout status via the cluster API and posts a summary to the platform engineering Slack channel, creating a ServiceNow change task if rollout fails.

naftiko: '0.5'
info:
  label: Kubernetes Deployment Rollout Monitor
  description: Checks Kubernetes deployment rollout status via the cluster API and posts a summary to the platform engineering Slack channel, creating a ServiceNow change task if rollout fails.
  tags:
  - devops
  - kubernetes
  - servicenow
  - slack
  - cloud
capability:
  exposes:
  - type: mcp
    namespace: platform-ops
    port: 8080
    tools:
    - name: monitor-deployment-rollout
      description: Given a Kubernetes namespace and deployment name, retrieve rollout status and notify the platform-eng Slack channel. If the rollout is degraded, create a ServiceNow change task. Use after deployments to production clusters.
      inputParameters:
      - name: namespace
        in: body
        type: string
        description: Kubernetes namespace where the deployment lives (e.g. supply-chain-prod).
      - name: deployment_name
        in: body
        type: string
        description: Name of the Kubernetes deployment to monitor.
      steps:
      - name: get-deployment-status
        type: call
        call: k8s.get-deployment
        with:
          namespace: '{{namespace}}'
          name: '{{deployment_name}}'
      - name: create-change-task
        type: call
        call: servicenow-change.create-change
        with:
          short_description: 'Rollout issue: {{deployment_name}} in {{namespace}}'
          category: software
          description: 'Deployment {{deployment_name}} in namespace {{namespace}} is degraded. Available replicas: {{get-deployment-status.available_replicas}}'
      - name: notify-platform
        type: call
        call: slack-platform.post-message
        with:
          channel: platform-engineering
          text: 'Rollout status for {{deployment_name}} ({{namespace}}): Ready={{get-deployment-status.ready_replicas}}/{{get-deployment-status.desired_replicas}}. Change task: {{create-change-task.number}}'
  consumes:
  - type: http
    namespace: k8s
    baseUri: https://walmart-k8s-api.internal/apis/apps/v1
    authentication:
      type: bearer
      token: $secrets.k8s_service_account_token
    resources:
    - name: deployments
      path: /namespaces/{{namespace}}/deployments/{{name}}
      inputParameters:
      - name: namespace
        in: path
      - name: name
        in: path
      operations:
      - name: get-deployment
        method: GET
  - type: http
    namespace: servicenow-change
    baseUri: https://walmart.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: slack-platform
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → kubernetes-deployment-rollout-monitor.yml

Queries SAP for period-close task status, aggregates results in Snowflake, and posts a readiness summary to the finance Microsoft Teams channel.

naftiko: '0.5'
info:
  label: SAP Financial Close Readiness Dashboard
  description: Queries SAP for period-close task status, aggregates results in Snowflake, and posts a readiness summary to the finance Microsoft Teams channel.
  tags:
  - finance
  - sap
  - snowflake
  - microsoft-teams
  - period-close
capability:
  exposes:
  - type: mcp
    namespace: finance-ops
    port: 8080
    tools:
    - name: check-close-readiness
      description: Given a fiscal period and company code, query SAP close tasks, aggregate in Snowflake, and post a readiness report. Use during month-end and quarter-end close cycles.
      inputParameters:
      - name: fiscal_period
        in: body
        type: string
        description: Fiscal period (e.g. 2026-03).
      - name: company_code
        in: body
        type: string
        description: SAP company code.
      steps:
      - name: get-close-tasks
        type: call
        call: sap.get-close-tasks
        with:
          fiscal_period: '{{fiscal_period}}'
          company_code: '{{company_code}}'
      - name: aggregate-status
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT task_category, COUNT(*) as total, SUM(CASE WHEN status='COMPLETE' THEN 1 ELSE 0 END) as completed FROM FINANCE.CLOSE_TASKS WHERE fiscal_period = '{{fiscal_period}}' AND company_code = '{{company_code}}' GROUP BY task_category
      - name: post-readiness
        type: call
        call: msteams.send-channel-message
        with:
          team_id: finance-team
          channel: period-close
          text: 'Close readiness for {{fiscal_period}} ({{company_code}}): {{aggregate-status.results}}. Overall completion: {{aggregate-status.completion_pct}}%.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://walmart-s4.sap.com/sap/opu/odata/sap/API_FINANCIALPERIODCLOSE
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: close-tasks
      path: /A_FinPeriodCloseTask
      operations:
      - name: get-close-tasks
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://walmart.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: 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
Open in Framework → View in Fleet → sap-financial-close-readiness-dashboard.yml

Fetches Marketo email campaign performance metrics, loads them into Snowflake for analysis, and posts a summary to the marketing Slack channel.

naftiko: '0.5'
info:
  label: Marketo Email Campaign to Snowflake Analytics
  description: Fetches Marketo email campaign performance metrics, loads them into Snowflake for analysis, and posts a summary to the marketing Slack channel.
  tags:
  - marketing
  - marketo
  - snowflake
  - slack
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: marketing-analytics
    port: 8080
    tools:
    - name: sync-campaign-metrics
      description: Given a Marketo campaign ID, fetch email performance metrics, insert into Snowflake, and post a summary to marketing. Use for campaign ROI analysis.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: Marketo email campaign ID.
      steps:
      - name: get-campaign-stats
        type: call
        call: marketo.get-campaign-stats
        with:
          campaign_id: '{{campaign_id}}'
      - name: load-to-snowflake
        type: call
        call: snowflake.execute-statement
        with:
          statement: INSERT INTO MARKETING.CAMPAIGN_METRICS (campaign_id, sends, opens, clicks, open_rate, click_rate) VALUES ('{{campaign_id}}', {{get-campaign-stats.sends}}, {{get-campaign-stats.opens}}, {{get-campaign-stats.clicks}}, {{get-campaign-stats.open_rate}}, {{get-campaign-stats.click_rate}})
      - name: post-summary
        type: call
        call: slack.post-message
        with:
          channel: marketing-analytics
          text: 'Campaign {{campaign_id}} results: {{get-campaign-stats.sends}} sent, {{get-campaign-stats.open_rate}}% open rate, {{get-campaign-stats.click_rate}}% CTR.'
  consumes:
  - type: http
    namespace: marketo
    baseUri: https://walmart.mktorest.com/rest
    authentication:
      type: bearer
      token: $secrets.marketo_token
    resources:
    - name: campaigns
      path: /v1/campaigns/{{campaign_id}}/stats.json
      inputParameters:
      - name: campaign_id
        in: path
      operations:
      - name: get-campaign-stats
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://walmart.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: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → marketo-email-campaign-to-snowflake-analytics.yml

Converts a qualified Salesforce lead into an opportunity, enriches it with Snowflake account intelligence, and notifies the assigned sales rep via Slack.

naftiko: '0.5'
info:
  label: Salesforce Lead-to-Opportunity Sync
  description: Converts a qualified Salesforce lead into an opportunity, enriches it with Snowflake account intelligence, and notifies the assigned sales rep via Slack.
  tags:
  - sales
  - crm
  - salesforce
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: crm-sales
    port: 8080
    tools:
    - name: convert-lead-to-opportunity
      description: Given a Salesforce lead ID, convert it to an opportunity, enrich with Snowflake account data, and notify the assigned rep in Slack. Use when a lead reaches the qualified stage.
      inputParameters:
      - name: lead_id
        in: body
        type: string
        description: Salesforce lead ID to convert (18-character Salesforce ID).
      - name: opportunity_stage
        in: body
        type: string
        description: Initial opportunity stage (e.g. Prospecting, Qualification).
      steps:
      - name: get-lead
        type: call
        call: salesforce-leads.get-lead
        with:
          lead_id: '{{lead_id}}'
      - name: create-opportunity
        type: call
        call: salesforce-opps.create-opportunity
        with:
          name: '{{get-lead.company}} — {{get-lead.last_name}}'
          stage: '{{opportunity_stage}}'
          account_id: '{{get-lead.converted_account_id}}'
      - name: notify-rep
        type: call
        call: slack-sales.post-message
        with:
          channel: sales-notifications
          text: 'New opportunity created: {{create-opportunity.name}} ({{create-opportunity.id}}). Owner: {{get-lead.owner_name}}.'
  consumes:
  - type: http
    namespace: salesforce-leads
    baseUri: https://walmart.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-opps
    baseUri: https://walmart.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: slack-sales
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → salesforce-lead-to-opportunity-sync.yml

When a Salesforce opportunity is closed-won, creates a corresponding sales order in SAP and sends a confirmation to the account owner via Microsoft Teams.

naftiko: '0.5'
info:
  label: Salesforce Opportunity Close to SAP Order
  description: When a Salesforce opportunity is closed-won, creates a corresponding sales order in SAP and sends a confirmation to the account owner via Microsoft Teams.
  tags:
  - sales
  - salesforce
  - sap
  - microsoft-teams
  - order-management
capability:
  exposes:
  - type: mcp
    namespace: sales-ops
    port: 8080
    tools:
    - name: sync-closed-opportunity
      description: Given a Salesforce opportunity ID, fetch the closed-won deal details, create a SAP sales order, and notify the account owner in Teams. Use when deals close to trigger downstream fulfillment.
      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-order
        with:
          customer_id: '{{get-opportunity.account_id}}'
          amount: '{{get-opportunity.amount}}'
          currency: '{{get-opportunity.currency}}'
      - name: notify-owner
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-opportunity.owner_email}}'
          text: Deal {{get-opportunity.name}} closed! SAP order {{create-sales-order.order_number}} created for {{get-opportunity.amount}} {{get-opportunity.currency}}.
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://walmart.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://walmart-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-order
        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
Open in Framework → View in Fleet → salesforce-opportunity-close-to-sap-order.yml

Queries SAP for open items that would block period close, posts a readiness checklist to the finance Slack channel, and creates a ServiceNow task for each blocking item found.

naftiko: '0.5'
info:
  label: SAP Period Close Readiness Check
  description: Queries SAP for open items that would block period close, posts a readiness checklist to the finance Slack channel, and creates a ServiceNow task for each blocking item found.
  tags:
  - finance
  - sap
  - servicenow
  - slack
  - period-close
capability:
  exposes:
  - type: mcp
    namespace: finance-close
    port: 8080
    tools:
    - name: check-period-close-readiness
      description: Given a SAP company code and fiscal period, check for open purchase orders, unposted journals, and GR/IR mismatches that block period close. Create ServiceNow tasks for blockers and post a readiness summary to the finance Slack channel.
      inputParameters:
      - name: company_code
        in: body
        type: string
        description: SAP company code (e.g. 1000 for Walmart US).
      - name: fiscal_period
        in: body
        type: string
        description: Fiscal period in YYYYMM format (e.g. 202503).
      steps:
      - name: check-open-items
        type: call
        call: sap-close.get-open-items
        with:
          company_code: '{{company_code}}'
          fiscal_period: '{{fiscal_period}}'
      - name: create-blocker-task
        type: call
        call: servicenow-finance.create-task
        with:
          category: finance_period_close
          short_description: 'Period close blocker: {{company_code}} — {{fiscal_period}}'
          description: 'Open items found preventing period close: {{check-open-items.open_count}} items totaling {{check-open-items.total_amount}}'
      - name: post-readiness-summary
        type: call
        call: slack-finance.post-message
        with:
          channel: finance-close
          text: 'Period close readiness for {{company_code}} / {{fiscal_period}}: {{check-open-items.open_count}} blocking items. ServiceNow: {{create-blocker-task.number}}'
  consumes:
  - type: http
    namespace: sap-close
    baseUri: https://walmart-s4.sap.com/sap/opu/odata/sap/ZFI_PERIOD_CLOSE_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: open-items
      path: /OpenItemSet
      inputParameters:
      - name: company_code
        in: query
      - name: fiscal_period
        in: query
      operations:
      - name: get-open-items
        method: GET
  - type: http
    namespace: servicenow-finance
    baseUri: https://walmart.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: slack-finance
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → sap-period-close-readiness-check.yml

Queries Snowflake for compliance metrics, generates a report in SharePoint, and distributes it to the compliance team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Quarterly Compliance Audit Report Generator
  description: Queries Snowflake for compliance metrics, generates a report in SharePoint, and distributes it to the compliance team via Microsoft Teams.
  tags:
  - compliance
  - snowflake
  - sharepoint
  - microsoft-teams
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: compliance
    port: 8080
    tools:
    - name: generate-compliance-report
      description: Given a fiscal quarter and year, query compliance metrics from Snowflake, create a SharePoint report, and notify the compliance team. Use for quarterly SOX and regulatory reviews.
      inputParameters:
      - name: fiscal_quarter
        in: body
        type: string
        description: Fiscal quarter (e.g. Q1, Q2, Q3, Q4).
      - name: fiscal_year
        in: body
        type: string
        description: Fiscal year (e.g. 2026).
      steps:
      - name: query-metrics
        type: call
        call: snowflake.execute-statement
        with:
          statement: SELECT control_area, pass_count, fail_count, pass_rate FROM COMPLIANCE.QUARTERLY_METRICS WHERE fiscal_quarter = '{{fiscal_quarter}}' AND fiscal_year = '{{fiscal_year}}'
      - name: create-report
        type: call
        call: sharepoint.create-document
        with:
          site: compliance-docs
          name: Compliance-Report-{{fiscal_quarter}}-{{fiscal_year}}.xlsx
          data: '{{query-metrics.results}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: compliance-team
          channel: general
          text: 'Quarterly compliance report for {{fiscal_quarter}} {{fiscal_year}} is available: {{create-report.web_url}}.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://walmart.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: sharepoint
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: documents
      path: /sites/walmart.sharepoint.com/drive/root:/{{name}}:/content
      inputParameters:
      - name: name
        in: path
      operations:
      - name: create-document
        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}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → quarterly-compliance-audit-report-generator.yml

When Datadog APM detects a latency spike, creates a Jira bug ticket with trace details and alerts the on-call Slack channel.

naftiko: '0.5'
info:
  label: Datadog APM Latency to Jira Bug
  description: When Datadog APM detects a latency spike, creates a Jira bug ticket with trace details and alerts the on-call Slack channel.
  tags:
  - observability
  - datadog
  - jira
  - slack
  - performance
capability:
  exposes:
  - type: mcp
    namespace: perf-ops
    port: 8080
    tools:
    - name: handle-latency-spike
      description: Given a Datadog trace ID and service name, fetch the trace details, create a Jira bug, and notify the on-call channel. Use when APM latency thresholds are breached.
      inputParameters:
      - name: trace_id
        in: body
        type: string
        description: Datadog trace ID.
      - name: service_name
        in: body
        type: string
        description: Affected service name.
      - name: p99_latency_ms
        in: body
        type: string
        description: Observed P99 latency in milliseconds.
      steps:
      - name: get-trace
        type: call
        call: datadog.get-trace
        with:
          trace_id: '{{trace_id}}'
      - name: create-bug
        type: call
        call: jira.create-issue
        with:
          project: PERF
          issue_type: Bug
          summary: 'Latency spike: {{service_name}} P99={{p99_latency_ms}}ms'
          description: 'Datadog trace {{trace_id}} shows P99 latency of {{p99_latency_ms}}ms for {{service_name}}. Root span: {{get-trace.root_span}}.'
      - name: alert-oncall
        type: call
        call: slack.post-message
        with:
          channel: oncall-alerts
          text: 'Latency spike on {{service_name}}: P99={{p99_latency_ms}}ms. Jira: {{create-bug.key}}. Trace: {{trace_id}}'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: apiKey
      key: $secrets.datadog_api_key
    resources:
    - name: traces
      path: /traces/{{trace_id}}
      inputParameters:
      - name: trace_id
        in: path
      operations:
      - name: get-trace
        method: GET
  - type: http
    namespace: jira
    baseUri: https://walmart.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → datadog-apm-latency-to-jira-bug.yml

Enriches a Salesforce lead with firmographic data from ZoomInfo and updates the lead record with company size, revenue, and industry details.

naftiko: '0.5'
info:
  label: ZoomInfo Lead Enrichment to Salesforce
  description: Enriches a Salesforce lead with firmographic data from ZoomInfo and updates the lead record with company size, revenue, and industry details.
  tags:
  - sales
  - zoominfo
  - salesforce
  - lead-enrichment
capability:
  exposes:
  - type: mcp
    namespace: sales-enrichment
    port: 8080
    tools:
    - name: enrich-lead
      description: Given a Salesforce lead ID, fetch the company domain, enrich via ZoomInfo, and update the Salesforce lead record. Use for new lead qualification.
      inputParameters:
      - name: lead_id
        in: body
        type: string
        description: Salesforce lead 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:
          domain: '{{get-lead.website}}'
      - name: update-lead
        type: call
        call: salesforce.update-lead
        with:
          lead_id: '{{lead_id}}'
          number_of_employees: '{{enrich-company.employee_count}}'
          annual_revenue: '{{enrich-company.revenue}}'
          industry: '{{enrich-company.industry}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://walmart.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: leads
      path: /sobjects/Lead/{{lead_id}}
      inputParameters:
      - name: lead_id
        in: path
      operations:
      - name: get-lead
        method: GET
      - name: update-lead
        method: PATCH
  - type: http
    namespace: zoominfo
    baseUri: https://api.zoominfo.com
    authentication:
      type: bearer
      token: $secrets.zoominfo_token
    resources:
    - name: companies
      path: /search/company
      operations:
      - name: search-company
        method: POST
Open in Framework → View in Fleet → zoominfo-lead-enrichment-to-salesforce.yml

Queries Snowflake for daily retail sales performance by store and department, then publishes the snapshot to the sales operations Slack channel for leadership review.

naftiko: '0.5'
info:
  label: Snowflake Retail Sales Snapshot
  description: Queries Snowflake for daily retail sales performance by store and department, then publishes the snapshot to the sales operations Slack channel for leadership review.
  tags:
  - data
  - analytics
  - snowflake
  - slack
  - retail
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: sales-reporting
    port: 8080
    tools:
    - name: publish-sales-snapshot
      description: Given a reporting date and region, query Snowflake for daily sales totals by store and department and post a summary to the sales-ops Slack channel. Use for daily morning sales stand-ups.
      inputParameters:
      - name: report_date
        in: body
        type: string
        description: Sales date to report on in YYYY-MM-DD format.
      - name: region
        in: body
        type: string
        description: Walmart region code (e.g. US-SOUTH, US-NORTH).
      steps:
      - name: query-sales
        type: call
        call: snowflake-sales.execute-statement
        with:
          statement: SELECT store_id, department, SUM(net_sales) as total_sales FROM RETAIL.DAILY_SALES WHERE sale_date = '{{report_date}}' AND region = '{{region}}' GROUP BY store_id, department ORDER BY total_sales DESC LIMIT 20
      - name: post-snapshot
        type: call
        call: slack-sales-ops.post-message
        with:
          channel: sales-operations
          text: 'Daily sales snapshot for {{region}} on {{report_date}}: Top {{query-sales.row_count}} store-department combos reported. Total: {{query-sales.grand_total}}.'
  consumes:
  - type: http
    namespace: snowflake-sales
    baseUri: https://walmart.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: slack-sales-ops
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → snowflake-retail-sales-snapshot.yml

Queries Databricks for ML model performance metrics, compares against baseline thresholds, and posts an alert to the data science Slack channel if drift is detected.

naftiko: '0.5'
info:
  label: Databricks ML Model Performance Report
  description: Queries Databricks for ML model performance metrics, compares against baseline thresholds, and posts an alert to the data science Slack channel if drift is detected.
  tags:
  - ai
  - data
  - databricks
  - slack
  - model-monitoring
capability:
  exposes:
  - type: mcp
    namespace: ml-ops
    port: 8080
    tools:
    - name: check-model-drift
      description: Given a Databricks model name and version, retrieve recent inference metrics and check for performance drift against a baseline. Post results to the data-science Slack channel. Use for scheduled model health checks.
      inputParameters:
      - name: model_name
        in: body
        type: string
        description: Registered model name in the Databricks MLflow registry (e.g. demand-forecast-v2).
      - name: model_version
        in: body
        type: string
        description: Model version to evaluate (e.g. 3).
      - name: drift_threshold
        in: body
        type: number
        description: Acceptable drift threshold as a decimal (e.g. 0.05 for 5%).
      steps:
      - name: get-model-metrics
        type: call
        call: databricks.get-model-version
        with:
          name: '{{model_name}}'
          version: '{{model_version}}'
      - name: notify-data-science
        type: call
        call: slack-ds.post-message
        with:
          channel: data-science
          text: 'Model health check: {{model_name}} v{{model_version}} | Status: {{get-model-metrics.current_stage}} | Drift threshold: {{drift_threshold}}'
  consumes:
  - type: http
    namespace: databricks
    baseUri: https://walmart.azuredatabricks.net/api/2.1
    authentication:
      type: bearer
      token: $secrets.databricks_token
    resources:
    - name: model-versions
      path: /mlflow/model-versions/get
      inputParameters:
      - name: name
        in: query
      - name: version
        in: query
      operations:
      - name: get-model-version
        method: GET
  - type: http
    namespace: slack-ds
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → databricks-ml-model-performance-report.yml

When a Coupa contract approaches expiration, notifies the procurement lead via Microsoft Teams and creates a ServiceNow renewal task.

naftiko: '0.5'
info:
  label: Coupa Contract Renewal Workflow
  description: When a Coupa contract approaches expiration, notifies the procurement lead via Microsoft Teams and creates a ServiceNow renewal task.
  tags:
  - procurement
  - coupa
  - microsoft-teams
  - servicenow
  - contracts
capability:
  exposes:
  - type: mcp
    namespace: contract-ops
    port: 8080
    tools:
    - name: process-contract-renewal
      description: Given a Coupa contract ID, check expiration date, notify the procurement lead, and create a renewal task. Use for automated contract lifecycle management.
      inputParameters:
      - name: contract_id
        in: body
        type: string
        description: Coupa contract ID.
      steps:
      - name: get-contract
        type: call
        call: coupa.get-contract
        with:
          contract_id: '{{contract_id}}'
      - name: create-renewal-task
        type: call
        call: servicenow.create-request
        with:
          category: procurement
          short_description: 'Contract renewal: {{get-contract.supplier_name}} — expires {{get-contract.end_date}}'
          description: 'Contract value: {{get-contract.total_value}}. Auto-renew: {{get-contract.auto_renew}}.'
      - name: notify-procurement
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-contract.owner_email}}'
          text: 'Contract {{contract_id}} with {{get-contract.supplier_name}} expires {{get-contract.end_date}}. Renewal task: {{create-renewal-task.number}}.'
  consumes:
  - type: http
    namespace: coupa
    baseUri: https://walmart.coupahost.com/api
    authentication:
      type: bearer
      token: $secrets.coupa_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://walmart.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-message
        method: POST
Open in Framework → View in Fleet → coupa-contract-renewal-workflow.yml

When a new HubSpot contact meets lead scoring criteria, creates a Salesforce lead and notifies the sales team via Slack.

naftiko: '0.5'
info:
  label: HubSpot Contact to Salesforce Lead Sync
  description: When a new HubSpot contact meets lead scoring criteria, creates a Salesforce lead and notifies the sales team via Slack.
  tags:
  - marketing
  - hubspot
  - salesforce
  - slack
  - lead-management
capability:
  exposes:
  - type: mcp
    namespace: lead-ops
    port: 8080
    tools:
    - name: sync-hubspot-lead
      description: Given a HubSpot contact ID, fetch contact details, create a Salesforce lead, and notify sales. Use when marketing-qualified leads are identified.
      inputParameters:
      - name: contact_id
        in: body
        type: string
        description: HubSpot contact ID.
      steps:
      - name: get-contact
        type: call
        call: hubspot.get-contact
        with:
          contact_id: '{{contact_id}}'
      - name: create-lead
        type: call
        call: salesforce.create-lead
        with:
          first_name: '{{get-contact.firstname}}'
          last_name: '{{get-contact.lastname}}'
          email: '{{get-contact.email}}'
          company: '{{get-contact.company}}'
          lead_source: HubSpot
      - name: notify-sales
        type: call
        call: slack.post-message
        with:
          channel: sales-leads
          text: 'New MQL from HubSpot: {{get-contact.firstname}} {{get-contact.lastname}} at {{get-contact.company}}. Salesforce lead: {{create-lead.id}}.'
  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/{{contact_id}}
      inputParameters:
      - name: contact_id
        in: path
      operations:
      - name: get-contact
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://walmart.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: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → hubspot-contact-to-salesforce-lead-sync.yml

Pulls weekly campaign performance metrics from Marketo, writes a summary record to Snowflake, and publishes a digest to the marketing Slack channel.

naftiko: '0.5'
info:
  label: Marketo Campaign Performance Digest
  description: Pulls weekly campaign performance metrics from Marketo, writes a summary record to Snowflake, and publishes a digest to the marketing Slack channel.
  tags:
  - marketing
  - marketo
  - snowflake
  - slack
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: marketing-reporting
    port: 8080
    tools:
    - name: digest-campaign-performance
      description: Given a Marketo program ID and date range, retrieve email performance metrics, persist the summary to Snowflake, and post a digest to the marketing Slack channel. Use for weekly marketing performance reviews.
      inputParameters:
      - name: program_id
        in: body
        type: string
        description: Marketo program ID for the campaign to analyze.
      - name: start_date
        in: body
        type: string
        description: Reporting period start date in ISO 8601 format (YYYY-MM-DD).
      - name: end_date
        in: body
        type: string
        description: Reporting period end date in ISO 8601 format (YYYY-MM-DD).
      steps:
      - name: get-campaign-stats
        type: call
        call: marketo.get-program-stats
        with:
          program_id: '{{program_id}}'
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
      - name: write-snowflake-summary
        type: call
        call: snowflake.insert-row
        with:
          table: MARKETING.CAMPAIGN_PERFORMANCE
          program_id: '{{program_id}}'
          sent: '{{get-campaign-stats.sent}}'
          opens: '{{get-campaign-stats.opens}}'
          clicks: '{{get-campaign-stats.clicks}}'
      - name: post-digest
        type: call
        call: slack-marketing.post-message
        with:
          channel: marketing-analytics
          text: 'Campaign digest ({{start_date}} to {{end_date}}): Sent={{get-campaign-stats.sent}}, Opens={{get-campaign-stats.opens}}, Clicks={{get-campaign-stats.clicks}}, Unsubscribes={{get-campaign-stats.unsubscribes}}.'
  consumes:
  - type: http
    namespace: marketo
    baseUri: https://walmart.mktorest.com/rest/v1
    authentication:
      type: bearer
      token: $secrets.marketo_token
    resources:
    - name: program-stats
      path: /stats/usage/daybyprogram.json
      inputParameters:
      - name: program_id
        in: query
      - name: start_date
        in: query
      - name: end_date
        in: query
      operations:
      - name: get-program-stats
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://walmart.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: insert-row
        method: POST
  - type: http
    namespace: slack-marketing
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → marketo-campaign-performance-digest.yml

When a Coupa invoice is pending approval, retrieves invoice details, checks SAP budget availability, and routes a Microsoft Teams approval card to the responsible cost center owner.

naftiko: '0.5'
info:
  label: Coupa Invoice Approval Workflow
  description: When a Coupa invoice is pending approval, retrieves invoice details, checks SAP budget availability, and routes a Microsoft Teams approval card to the responsible cost center owner.
  tags:
  - procurement
  - finance
  - coupa
  - sap
  - microsoft-teams
  - approval
capability:
  exposes:
  - type: mcp
    namespace: invoice-approval
    port: 8080
    tools:
    - name: route-invoice-for-approval
      description: Given a Coupa invoice ID, retrieve invoice details, validate SAP budget headroom, and send an approval card in Microsoft Teams to the cost center owner. Invoke when invoices enter the pending approval queue.
      inputParameters:
      - name: invoice_id
        in: body
        type: string
        description: Coupa invoice ID requiring approval.
      - name: approver_upn
        in: body
        type: string
        description: Microsoft UPN of the cost center owner who should approve the invoice.
      steps:
      - name: get-invoice
        type: call
        call: coupa.get-invoice
        with:
          invoice_id: '{{invoice_id}}'
      - name: check-budget
        type: call
        call: sap-budget.get-cost-center
        with:
          cost_center: '{{get-invoice.cost_center}}'
      - name: send-approval-card
        type: call
        call: msteams-approval.send-message
        with:
          recipient_upn: '{{approver_upn}}'
          text: 'Invoice {{invoice_id}} from {{get-invoice.supplier_name}} for {{get-invoice.total_amount}} {{get-invoice.currency}} requires your approval. Budget available: {{check-budget.available_amount}}.'
  consumes:
  - type: http
    namespace: coupa
    baseUri: https://walmart.coupahost.com/api
    authentication:
      type: apikey
      key: X-COUPA-API-KEY
      value: $secrets.coupa_api_key
      placement: header
    resources:
    - name: invoices
      path: /invoices/{{invoice_id}}
      inputParameters:
      - name: invoice_id
        in: path
      operations:
      - name: get-invoice
        method: GET
  - type: http
    namespace: sap-budget
    baseUri: https://walmart-s4.sap.com/sap/opu/odata/sap/ZFI_COST_CENTER_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: cost-centers
      path: /CostCenterSet('{{cost_center}}')
      inputParameters:
      - name: cost_center
        in: path
      operations:
      - name: get-cost-center
        method: GET
  - type: http
    namespace: msteams-approval
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{upn}}/chats
      inputParameters:
      - name: upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → coupa-invoice-approval-workflow.yml

Fetches Google Analytics e-commerce conversion data, stores results in Snowflake, and posts a conversion summary to the digital marketing Slack channel.

naftiko: '0.5'
info:
  label: Google Analytics E-Commerce Conversion Report
  description: Fetches Google Analytics e-commerce conversion data, stores results in Snowflake, and posts a conversion summary to the digital marketing Slack channel.
  tags:
  - analytics
  - google-analytics
  - snowflake
  - slack
  - e-commerce
capability:
  exposes:
  - type: mcp
    namespace: ecom-analytics
    port: 8080
    tools:
    - name: generate-conversion-report
      description: Given a date range and property ID, fetch GA4 e-commerce data, load to Snowflake, and post summary to marketing. Use for weekly conversion rate reporting.
      inputParameters:
      - name: property_id
        in: body
        type: string
        description: Google Analytics 4 property ID.
      - name: start_date
        in: body
        type: string
        description: Start date in YYYY-MM-DD.
      - name: end_date
        in: body
        type: string
        description: End date in YYYY-MM-DD.
      steps:
      - name: get-conversion-data
        type: call
        call: ga4.run-report
        with:
          property_id: '{{property_id}}'
          date_range_start: '{{start_date}}'
          date_range_end: '{{end_date}}'
      - name: load-to-snowflake
        type: call
        call: snowflake.execute-statement
        with:
          statement: INSERT INTO DIGITAL.GA_CONVERSIONS (property_id, period_start, period_end, sessions, transactions, conversion_rate, revenue) VALUES ('{{property_id}}', '{{start_date}}', '{{end_date}}', {{get-conversion-data.sessions}}, {{get-conversion-data.transactions}}, {{get-conversion-data.conversion_rate}}, {{get-conversion-data.revenue}})
      - name: post-summary
        type: call
        call: slack.post-message
        with:
          channel: digital-marketing
          text: 'E-commerce conversion report ({{start_date}} to {{end_date}}): {{get-conversion-data.sessions}} sessions, {{get-conversion-data.conversion_rate}}% CVR, ${{get-conversion-data.revenue}} revenue.'
  consumes:
  - type: http
    namespace: ga4
    baseUri: https://analyticsdata.googleapis.com/v1beta
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: reports
      path: /properties/{{property_id}}:runReport
      inputParameters:
      - name: property_id
        in: path
      operations:
      - name: run-report
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://walmart.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: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → google-analytics-e-commerce-conversion-report.yml

Pulls merit increase proposals from Workday, validates against SAP budget allocations, and notifies HR business partners via Microsoft Teams with a review summary.

naftiko: '0.5'
info:
  label: Workday Compensation Review Sync
  description: Pulls merit increase proposals from Workday, validates against SAP budget allocations, and notifies HR business partners via Microsoft Teams with a review summary.
  tags:
  - hr
  - finance
  - workday
  - sap
  - microsoft-teams
  - compensation
capability:
  exposes:
  - type: mcp
    namespace: hr-compensation
    port: 8080
    tools:
    - name: sync-compensation-review
      description: Given a Workday compensation review cycle ID, retrieve merit proposals, check SAP budget availability for each cost center, and send a review summary to HR business partners in Microsoft Teams.
      inputParameters:
      - name: review_cycle_id
        in: body
        type: string
        description: Workday compensation review cycle ID.
      - name: review_period
        in: body
        type: string
        description: Human-readable review period label (e.g. 2025 Annual Merit).
      steps:
      - name: get-proposals
        type: call
        call: workday-comp.get-comp-review
        with:
          cycle_id: '{{review_cycle_id}}'
      - name: notify-hrbp
        type: call
        call: msteams-comp.send-message
        with:
          channel_id: $secrets.teams_hr_channel_id
          text: Compensation review cycle {{review_period}} has {{get-proposals.total_count}} proposals totaling {{get-proposals.total_increase_amount}}. Please review in Workday.
  consumes:
  - type: http
    namespace: workday-comp
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: comp-reviews
      path: /walmart/compensationReviewCycles/{{cycle_id}}
      inputParameters:
      - name: cycle_id
        in: path
      operations:
      - name: get-comp-review
        method: GET
  - type: http
    namespace: msteams-comp
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → workday-compensation-review-sync.yml

Retrieves a Salesforce account by ID and returns company name, industry, annual revenue, and account owner.

naftiko: '0.5'
info:
  label: Salesforce Account Lookup
  description: Retrieves a Salesforce account by ID and returns company name, industry, annual revenue, and account owner.
  tags:
  - sales
  - salesforce
  - account
capability:
  exposes:
  - type: mcp
    namespace: sales
    port: 8080
    tools:
    - name: get-account
      description: Given a Salesforce account ID, return the company name, industry, annual revenue, and account owner. Use for sales team account reviews.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: Salesforce 18-character 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
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://walmart.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
Open in Framework → View in Fleet → salesforce-account-lookup.yml

Kicks off an annual performance review cycle in Workday for a specified manager's direct reports and notifies each employee via Microsoft Teams with review instructions.

naftiko: '0.5'
info:
  label: Workday Performance Review Initiation
  description: Kicks off an annual performance review cycle in Workday for a specified manager's direct reports and notifies each employee via Microsoft Teams with review instructions.
  tags:
  - hr
  - performance
  - workday
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-performance
    port: 8080
    tools:
    - name: initiate-performance-review
      description: Given a manager's Workday ID and review cycle name, retrieve direct reports, and send each a Microsoft Teams notification with performance review instructions. Use to launch annual or mid-year review cycles.
      inputParameters:
      - name: manager_workday_id
        in: body
        type: string
        description: Workday ID of the manager whose direct reports should receive review notifications.
      - name: review_cycle_name
        in: body
        type: string
        description: Name of the review cycle (e.g. 2025 Annual Performance Review).
      - name: due_date
        in: body
        type: string
        description: Review submission due date in ISO 8601 format.
      steps:
      - name: get-direct-reports
        type: call
        call: workday-perf.get-direct-reports
        with:
          manager_id: '{{manager_workday_id}}'
      - name: notify-employees
        type: call
        call: msteams-perf.send-message
        with:
          recipient_upn: '{{get-direct-reports.work_email}}'
          text: Your {{review_cycle_name}} self-assessment is now open. Please complete your review in Workday by {{due_date}}.
  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: direct-reports
      path: /walmart/workers/{{manager_id}}/directReports
      inputParameters:
      - name: manager_id
        in: path
      operations:
      - name: get-direct-reports
        method: GET
  - type: http
    namespace: msteams-perf
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{upn}}/chats
      inputParameters:
      - name: upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → workday-performance-review-initiation.yml

When an Azure DevOps build pipeline fails, creates a Jira bug ticket with build logs and notifies the development team via Slack.

naftiko: '0.5'
info:
  label: Azure DevOps Build Failure to Jira
  description: When an Azure DevOps build pipeline fails, creates a Jira bug ticket with build logs and notifies the development team via Slack.
  tags:
  - devops
  - azure-devops
  - jira
  - slack
  - ci-cd
capability:
  exposes:
  - type: mcp
    namespace: build-ops
    port: 8080
    tools:
    - name: handle-build-failure
      description: Given an Azure DevOps build ID and project, fetch build details, create a Jira bug, and notify the dev team. Use when CI/CD pipelines fail.
      inputParameters:
      - name: project
        in: body
        type: string
        description: Azure DevOps project name.
      - name: build_id
        in: body
        type: string
        description: Azure DevOps build ID.
      steps:
      - name: get-build
        type: call
        call: azuredevops.get-build
        with:
          project: '{{project}}'
          build_id: '{{build_id}}'
      - name: create-bug
        type: call
        call: jira.create-issue
        with:
          project: DEV
          issue_type: Bug
          summary: 'Build failure: {{get-build.definition_name}} #{{build_id}}'
          description: 'Branch: {{get-build.source_branch}}. Triggered by: {{get-build.requested_by}}. Error: {{get-build.error_message}}.'
      - name: notify-team
        type: call
        call: slack.post-message
        with:
          channel: dev-builds
          text: 'Build failure: {{get-build.definition_name}} #{{build_id}} on {{get-build.source_branch}}. Jira: {{create-bug.key}}.'
  consumes:
  - type: http
    namespace: azuredevops
    baseUri: https://dev.azure.com/walmart
    authentication:
      type: basic
      username: $secrets.azdo_user
      password: $secrets.azdo_pat
    resources:
    - name: builds
      path: /{{project}}/_apis/build/builds/{{build_id}}?api-version=7.0
      inputParameters:
      - name: project
        in: path
      - name: build_id
        in: path
      operations:
      - name: get-build
        method: GET
  - type: http
    namespace: jira
    baseUri: https://walmart.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → azure-devops-build-failure-to-jira.yml

Creates a SAP plant maintenance work order, assigns it to the facilities team in ServiceNow, and sends notification to the building operations Microsoft Teams channel.

naftiko: '0.5'
info:
  label: SAP Plant Maintenance Work Order
  description: Creates a SAP plant maintenance work order, assigns it to the facilities team in ServiceNow, and sends notification to the building operations Microsoft Teams channel.
  tags:
  - facilities
  - sap
  - servicenow
  - microsoft-teams
  - maintenance
capability:
  exposes:
  - type: mcp
    namespace: facilities
    port: 8080
    tools:
    - name: create-maintenance-order
      description: Given equipment ID, issue type, and store number, create a SAP maintenance order, a ServiceNow task, and notify building ops. Use for store equipment maintenance requests.
      inputParameters:
      - name: equipment_id
        in: body
        type: string
        description: SAP equipment ID.
      - name: issue_type
        in: body
        type: string
        description: Maintenance issue type (e.g. HVAC, electrical, plumbing).
      - name: store_number
        in: body
        type: string
        description: Store number.
      steps:
      - name: create-work-order
        type: call
        call: sap.create-maintenance-order
        with:
          equipment: '{{equipment_id}}'
          order_type: '{{issue_type}}'
          plant: '{{store_number}}'
      - name: create-task
        type: call
        call: servicenow.create-task
        with:
          category: facilities
          short_description: 'Maintenance: {{issue_type}} at Store {{store_number}}'
          description: 'SAP work order: {{create-work-order.order_number}}. Equipment: {{equipment_id}}.'
      - name: notify-building-ops
        type: call
        call: msteams.send-channel-message
        with:
          team_id: building-operations
          channel: maintenance
          text: 'Maintenance order created for Store {{store_number}}: {{issue_type}}. SAP: {{create-work-order.order_number}}. ServiceNow: {{create-task.number}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://walmart-s4.sap.com/sap/opu/odata/sap/API_MAINTENANCEORDER
    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: servicenow
    baseUri: https://walmart.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}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → sap-plant-maintenance-work-order.yml

Looks up prescription fulfillment status in SAP, updates the customer case in Salesforce, and sends a patient notification via Microsoft Teams.

naftiko: '0.5'
info:
  label: Pharmacy Prescription Fulfillment Tracker
  description: Looks up prescription fulfillment status in SAP, updates the customer case in Salesforce, and sends a patient notification via Microsoft Teams.
  tags:
  - pharmacy
  - sap
  - salesforce
  - microsoft-teams
  - healthcare
capability:
  exposes:
  - type: mcp
    namespace: pharmacy-ops
    port: 8080
    tools:
    - name: track-prescription
      description: Given a prescription ID and Salesforce case ID, look up fulfillment status in SAP, update the case, and notify the pharmacy team. Use for prescription inquiry resolution.
      inputParameters:
      - name: prescription_id
        in: body
        type: string
        description: Pharmacy prescription ID.
      - name: case_id
        in: body
        type: string
        description: Salesforce case ID.
      - name: store_number
        in: body
        type: string
        description: Store number.
      steps:
      - name: get-fulfillment-status
        type: call
        call: sap.get-prescription
        with:
          prescription_id: '{{prescription_id}}'
      - name: update-case
        type: call
        call: salesforce.update-case
        with:
          case_id: '{{case_id}}'
          comment: 'Prescription {{prescription_id}} status: {{get-fulfillment-status.status}}. Ready at Store {{store_number}}: {{get-fulfillment-status.ready_date}}.'
      - name: notify-pharmacy
        type: call
        call: msteams.send-channel-message
        with:
          team_id: pharmacy-ops
          channel: store-{{store_number}}
          text: 'Prescription {{prescription_id}} update: {{get-fulfillment-status.status}}. Case: {{case_id}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://walmart-s4.sap.com/sap/opu/odata/sap/API_PHARMACY_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: prescriptions
      path: /A_Prescription('{{prescription_id}}')
      inputParameters:
      - name: prescription_id
        in: path
      operations:
      - name: get-prescription
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://walmart.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: 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
Open in Framework → View in Fleet → pharmacy-prescription-fulfillment-tracker.yml

Queries Snowflake for failed or stalled data pipeline jobs, posts a health summary to the data engineering Slack channel, and creates a Jira task for any failures.

naftiko: '0.5'
info:
  label: Snowflake Data Pipeline Health Check
  description: Queries Snowflake for failed or stalled data pipeline jobs, posts a health summary to the data engineering Slack channel, and creates a Jira task for any failures.
  tags:
  - data
  - analytics
  - snowflake
  - jira
  - slack
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: data-ops
    port: 8080
    tools:
    - name: check-pipeline-health
      description: Query Snowflake task history for failed or stalled jobs in the last N hours, create Jira tasks for failures, and post a health summary to the data-engineering Slack channel. Use for scheduled pipeline monitoring.
      inputParameters:
      - name: lookback_hours
        in: body
        type: integer
        description: Number of hours of task history to inspect (e.g. 24).
      - name: schema
        in: body
        type: string
        description: Snowflake schema to check pipeline health for (e.g. RETAIL.ETL).
      steps:
      - name: query-task-history
        type: call
        call: snowflake-query.execute-statement
        with:
          statement: SELECT name, state, error_message FROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY(SCHEDULED_TIME_RANGE_START=>DATEADD('hour', -{{lookback_hours}}, CURRENT_TIMESTAMP()))) WHERE STATE = 'FAILED'
      - name: create-failure-task
        type: call
        call: jira-data.create-issue
        with:
          project_key: DATA
          issuetype: Task
          summary: Pipeline failures detected in {{schema}} — last {{lookback_hours}}h
          description: 'Snowflake task failures:

            {{query-task-history.results}}'
      - name: post-health-summary
        type: call
        call: slack-data.post-message
        with:
          channel: data-engineering
          text: 'Pipeline health check for {{schema}}: {{query-task-history.row_count}} failures in last {{lookback_hours}}h. Jira: {{create-failure-task.key}}'
  consumes:
  - type: http
    namespace: snowflake-query
    baseUri: https://walmart.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://walmart.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-data
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → snowflake-data-pipeline-health-check.yml

When Splunk detects a high-severity security event, creates a ServiceNow security incident, enriches it with asset context, and notifies the SecOps Slack channel.

naftiko: '0.5'
info:
  label: Splunk Security Incident Triage
  description: When Splunk detects a high-severity security event, creates a ServiceNow security incident, enriches it with asset context, and notifies the SecOps Slack channel.
  tags:
  - security
  - splunk
  - servicenow
  - slack
  - secops
  - incident-response
capability:
  exposes:
  - type: mcp
    namespace: secops
    port: 8080
    tools:
    - name: triage-security-event
      description: Given a Splunk notable event ID and severity, create a ServiceNow security incident and alert the SecOps Slack channel. Invoke on high or critical Splunk ES notable events.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: Splunk notable event ID from Enterprise Security.
      - name: severity
        in: body
        type: string
        description: 'Event severity: critical, high, medium.'
      - name: source_ip
        in: body
        type: string
        description: Source IP address associated with the security event.
      - name: description
        in: body
        type: string
        description: Human-readable description of the security event.
      steps:
      - name: create-security-incident
        type: call
        call: servicenow-sec.create-incident
        with:
          category: security
          subcategory: intrusion_detection
          impact: '{{severity}}'
          short_description: 'Security event: {{description}} from {{source_ip}}'
          description: 'Splunk event {{event_id}}: {{description}}. Source IP: {{source_ip}}. Severity: {{severity}}.'
      - name: notify-secops
        type: call
        call: slack-secops.post-message
        with:
          channel: security-ops
          text: 'Security incident created: {{description}} | Source: {{source_ip}} | Severity: {{severity}} | ServiceNow: {{create-security-incident.number}} | Splunk event: {{event_id}}'
  consumes:
  - type: http
    namespace: servicenow-sec
    baseUri: https://walmart.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/sn_si_incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: slack-secops
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → splunk-security-incident-triage.yml

Checks Kafka consumer group lag for critical supply chain topics and posts an alert to the data infrastructure Slack channel when lag exceeds acceptable thresholds.

naftiko: '0.5'
info:
  label: Kafka Consumer Lag Monitor
  description: Checks Kafka consumer group lag for critical supply chain topics and posts an alert to the data infrastructure Slack channel when lag exceeds acceptable thresholds.
  tags:
  - data
  - kafka
  - slack
  - monitoring
  - supply-chain
capability:
  exposes:
  - type: mcp
    namespace: kafka-ops
    port: 8080
    tools:
    - name: check-consumer-lag
      description: Given a Kafka consumer group ID and maximum allowed lag, check current consumer lag via the Kafka Admin API and alert the data-infrastructure Slack channel if the lag threshold is exceeded. Use for supply chain event streaming health checks.
      inputParameters:
      - name: consumer_group_id
        in: body
        type: string
        description: Kafka consumer group ID to monitor (e.g. supply-chain-inventory-consumer).
      - name: max_lag_threshold
        in: body
        type: integer
        description: Maximum allowable consumer lag in messages before alerting.
      steps:
      - name: get-consumer-lag
        type: call
        call: kafka-admin.get-consumer-group
        with:
          group_id: '{{consumer_group_id}}'
      - name: post-lag-alert
        type: call
        call: slack-infra.post-message
        with:
          channel: data-infrastructure
          text: 'Kafka consumer lag alert: Group {{consumer_group_id}} has lag {{get-consumer-lag.total_lag}} (max allowed: {{max_lag_threshold}}). Topic: {{get-consumer-lag.max_lag_topic}}.'
  consumes:
  - type: http
    namespace: kafka-admin
    baseUri: https://walmart-kafka-admin.internal/v3
    authentication:
      type: bearer
      token: $secrets.kafka_admin_token
    resources:
    - name: consumer-groups
      path: /clusters/{{cluster_id}}/consumer-groups/{{group_id}}
      inputParameters:
      - name: cluster_id
        in: path
      - name: group_id
        in: path
      operations:
      - name: get-consumer-group
        method: GET
  - type: http
    namespace: slack-infra
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → kafka-consumer-lag-monitor.yml

Publishes a new job requisition from Workday to LinkedIn Jobs and logs the posting record in Salesforce for recruiting pipeline tracking.

naftiko: '0.5'
info:
  label: LinkedIn Job Posting Sync
  description: Publishes a new job requisition from Workday to LinkedIn Jobs and logs the posting record in Salesforce for recruiting pipeline tracking.
  tags:
  - hr
  - recruiting
  - workday
  - linkedin
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: recruiting
    port: 8080
    tools:
    - name: publish-job-to-linkedin
      description: Given a Workday job requisition ID, retrieve job details, post the opening to LinkedIn Jobs, and log the external posting record in Salesforce. Use when a requisition is approved and ready to advertise.
      inputParameters:
      - name: requisition_id
        in: body
        type: string
        description: Workday job requisition ID (e.g. JR-00045678).
      - name: linkedin_organization_id
        in: body
        type: string
        description: LinkedIn organization ID for the Walmart company page.
      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.create-job-posting
        with:
          organization_id: '{{linkedin_organization_id}}'
          title: '{{get-requisition.job_title}}'
          description: '{{get-requisition.job_description}}'
          location: '{{get-requisition.location}}'
      - name: log-in-salesforce
        type: call
        call: salesforce-recruiting.create-record
        with:
          object_type: Job_Posting__c
          requisition_id: '{{requisition_id}}'
          linkedin_posting_id: '{{post-to-linkedin.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: /walmart/jobRequisitions/{{requisition_id}}
      inputParameters:
      - name: requisition_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: salesforce-recruiting
    baseUri: https://walmart.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: records
      path: /sobjects/{{object_type}}
      inputParameters:
      - name: object_type
        in: path
      operations:
      - name: create-record
        method: POST
Open in Framework → View in Fleet → linkedin-job-posting-sync.yml

Scans GitHub repositories for open Dependabot security alerts, aggregates findings by severity, and posts a weekly digest to the security Slack channel.

naftiko: '0.5'
info:
  label: GitHub Repository Security Advisory Digest
  description: Scans GitHub repositories for open Dependabot security alerts, aggregates findings by severity, and posts a weekly digest to the security Slack channel.
  tags:
  - devops
  - security
  - github
  - slack
  - devsecops
capability:
  exposes:
  - type: mcp
    namespace: security-advisory
    port: 8080
    tools:
    - name: digest-security-advisories
      description: Given a GitHub organization name, retrieve all open Dependabot alerts grouped by severity and post a weekly digest to the security Slack channel. Use for weekly security hygiene reporting.
      inputParameters:
      - name: github_org
        in: body
        type: string
        description: GitHub organization name to scan (e.g. walmart).
      - name: severity_filter
        in: body
        type: string
        description: 'Minimum severity to include: critical, high, medium, low.'
      steps:
      - name: get-alerts
        type: call
        call: github-security.list-org-alerts
        with:
          org: '{{github_org}}'
          severity: '{{severity_filter}}'
      - name: post-digest
        type: call
        call: slack-security.post-message
        with:
          channel: security-advisories
          text: 'Weekly security advisory digest for {{github_org}}: {{get-alerts.total_count}} open alerts (Critical: {{get-alerts.critical_count}}, High: {{get-alerts.high_count}}). Review in GitHub Security tab.'
  consumes:
  - type: http
    namespace: github-security
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: org-alerts
      path: /orgs/{{org}}/dependabot/alerts
      inputParameters:
      - name: org
        in: path
      - name: severity
        in: query
      operations:
      - name: list-org-alerts
        method: GET
  - type: http
    namespace: slack-security
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → github-repository-security-advisory-digest.yml

When Okta detects a suspicious login event, creates a security incident in ServiceNow, suspends the user session, and alerts the SOC Slack channel.

naftiko: '0.5'
info:
  label: Okta Suspicious Login to Security Incident
  description: When Okta detects a suspicious login event, creates a security incident in ServiceNow, suspends the user session, and alerts the SOC Slack channel.
  tags:
  - security
  - okta
  - servicenow
  - slack
  - threat-detection
capability:
  exposes:
  - type: mcp
    namespace: threat-response
    port: 8080
    tools:
    - name: handle-suspicious-login
      description: Given an Okta event ID and user login, fetch event details, create a security incident, suspend sessions, and alert SOC. Use when Okta threat intelligence flags suspicious activity.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: Okta system log event ID.
      - name: user_login
        in: body
        type: string
        description: Affected user login email.
      steps:
      - name: get-event
        type: call
        call: okta.get-event
        with:
          event_id: '{{event_id}}'
      - name: suspend-sessions
        type: call
        call: okta.clear-sessions
        with:
          user_login: '{{user_login}}'
      - name: create-security-incident
        type: call
        call: servicenow.create-incident
        with:
          category: security
          urgency: 1
          short_description: 'Suspicious login: {{user_login}} from {{get-event.client_ip}}'
          description: 'Event: {{event_id}}. Location: {{get-event.geo_location}}. Reason: {{get-event.outcome_reason}}.'
      - name: alert-soc
        type: call
        call: slack.post-message
        with:
          channel: soc-alerts
          text: 'Suspicious login for {{user_login}} from {{get-event.client_ip}} ({{get-event.geo_location}}). Sessions cleared. Incident: {{create-security-incident.number}}.'
  consumes:
  - type: http
    namespace: okta
    baseUri: https://walmart.okta.com/api/v1
    authentication:
      type: bearer
      token: $secrets.okta_token
    resources:
    - name: events
      path: /logs?filter=uuid+eq+"{{event_id}}"
      inputParameters:
      - name: event_id
        in: query
      operations:
      - name: get-event
        method: GET
    - name: sessions
      path: /users/{{user_login}}/sessions
      inputParameters:
      - name: user_login
        in: path
      operations:
      - name: clear-sessions
        method: DELETE
  - type: http
    namespace: servicenow
    baseUri: https://walmart.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → okta-suspicious-login-to-security-incident.yml

Triggers a Power BI dataset refresh for a specified workspace and dataset, then posts the refresh status to the analytics Slack channel.

naftiko: '0.5'
info:
  label: Power BI Report Refresh Trigger
  description: Triggers a Power BI dataset refresh for a specified workspace and dataset, then posts the refresh status to the analytics Slack channel.
  tags:
  - data
  - analytics
  - power-bi
  - slack
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: bi-reporting
    port: 8080
    tools:
    - name: trigger-report-refresh
      description: Given a Power BI workspace ID and dataset ID, trigger a dataset refresh and post the result to the analytics Slack channel. Use to refresh dashboards after ETL completion.
      inputParameters:
      - name: workspace_id
        in: body
        type: string
        description: Power BI workspace (group) ID containing the dataset.
      - name: dataset_id
        in: body
        type: string
        description: Power BI dataset ID to refresh.
      steps:
      - name: refresh-dataset
        type: call
        call: powerbi.trigger-refresh
        with:
          group_id: '{{workspace_id}}'
          dataset_id: '{{dataset_id}}'
      - name: notify-analytics
        type: call
        call: slack-analytics.post-message
        with:
          channel: analytics-ops
          text: 'Power BI dataset refresh triggered for dataset {{dataset_id}} in workspace {{workspace_id}}. Status: {{refresh-dataset.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: /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: slack-analytics
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → power-bi-report-refresh-trigger.yml

Provisions a new Azure resource group and tags it according to Walmart's FinOps tagging policy, then registers the resource in the ServiceNow CMDB.

naftiko: '0.5'
info:
  label: Azure Cloud Resource Provisioning
  description: Provisions a new Azure resource group and tags it according to Walmart's FinOps tagging policy, then registers the resource in the ServiceNow CMDB.
  tags:
  - cloud
  - azure
  - servicenow
  - finops
  - provisioning
capability:
  exposes:
  - type: mcp
    namespace: cloud-provisioning
    port: 8080
    tools:
    - name: provision-azure-resource-group
      description: Given a resource group name, Azure region, and cost center, create the resource group with standard Walmart FinOps tags and register it in the ServiceNow CMDB. Use when teams request new Azure environments.
      inputParameters:
      - name: resource_group_name
        in: body
        type: string
        description: Name for the new Azure resource group (e.g. wmt-supply-chain-prod-rg).
      - name: location
        in: body
        type: string
        description: Azure region (e.g. eastus2, westus2).
      - name: cost_center
        in: body
        type: string
        description: Walmart cost center code for FinOps tagging.
      - name: environment
        in: body
        type: string
        description: 'Environment type: prod, staging, dev.'
      steps:
      - name: create-resource-group
        type: call
        call: azure-mgmt.create-resource-group
        with:
          name: '{{resource_group_name}}'
          location: '{{location}}'
          cost_center: '{{cost_center}}'
          environment: '{{environment}}'
      - name: register-cmdb
        type: call
        call: servicenow-cmdb.create-ci
        with:
          name: '{{resource_group_name}}'
          category: cloud
          short_description: Azure resource group {{resource_group_name}} in {{location}}
          environment: '{{environment}}'
  consumes:
  - type: http
    namespace: azure-mgmt
    baseUri: https://management.azure.com/subscriptions
    authentication:
      type: bearer
      token: $secrets.azure_mgmt_token
    resources:
    - name: resource-groups
      path: /{{subscription_id}}/resourcegroups/{{resource_group_name}}
      inputParameters:
      - name: subscription_id
        in: path
      - name: resource_group_name
        in: path
      operations:
      - name: create-resource-group
        method: PUT
  - type: http
    namespace: servicenow-cmdb
    baseUri: https://walmart.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: configuration-items
      path: /table/cmdb_ci_cloud_service
      operations:
      - name: create-ci
        method: POST
Open in Framework → View in Fleet → azure-cloud-resource-provisioning.yml

Checks grocery pickup order readiness in SAP, updates the customer record in Salesforce, and sends a pickup notification via Microsoft Teams to the store fulfillment team.

naftiko: '0.5'
info:
  label: Grocery Pickup Order Status Notifier
  description: Checks grocery pickup order readiness in SAP, updates the customer record in Salesforce, and sends a pickup notification via Microsoft Teams to the store fulfillment team.
  tags:
  - e-commerce
  - grocery
  - sap
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: grocery-ops
    port: 8080
    tools:
    - name: notify-pickup-ready
      description: Given an order number and store number, check SAP fulfillment status, update Salesforce, and notify the store team. Use when grocery pickup orders are ready for customer collection.
      inputParameters:
      - name: order_number
        in: body
        type: string
        description: Grocery pickup order number.
      - name: store_number
        in: body
        type: string
        description: Store number.
      steps:
      - name: get-order-status
        type: call
        call: sap.get-order-status
        with:
          order_number: '{{order_number}}'
      - name: update-customer-record
        type: call
        call: salesforce.update-order
        with:
          order_number: '{{order_number}}'
          status: '{{get-order-status.fulfillment_status}}'
      - name: notify-store-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: grocery-fulfillment
          channel: store-{{store_number}}
          text: 'Pickup order {{order_number}} is {{get-order-status.fulfillment_status}}. Items: {{get-order-status.item_count}}. Customer ETA: {{get-order-status.pickup_window}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://walmart-s4.sap.com/sap/opu/odata/sap/API_SALES_ORDER_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: orders
      path: /A_SalesOrder('{{order_number}}')
      inputParameters:
      - name: order_number
        in: path
      operations:
      - name: get-order-status
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://walmart.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: orders
      path: /sobjects/Order/{{order_number}}
      inputParameters:
      - name: order_number
        in: path
      operations:
      - name: update-order
        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}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → grocery-pickup-order-status-notifier.yml

When New Relic detects an error rate spike post-deployment, triggers a GitHub Actions rollback workflow and creates a ServiceNow incident.

naftiko: '0.5'
info:
  label: New Relic Error Rate to Rollback Trigger
  description: When New Relic detects an error rate spike post-deployment, triggers a GitHub Actions rollback workflow and creates a ServiceNow incident.
  tags:
  - devops
  - new-relic
  - github
  - servicenow
  - deployment
capability:
  exposes:
  - type: mcp
    namespace: deploy-ops
    port: 8080
    tools:
    - name: handle-error-rate-spike
      description: Given a New Relic application ID and error threshold, check current error rate, trigger rollback if exceeded, and create an incident. Use for post-deployment error monitoring.
      inputParameters:
      - name: app_id
        in: body
        type: string
        description: New Relic application ID.
      - name: repo_name
        in: body
        type: string
        description: GitHub repository for rollback.
      - name: previous_sha
        in: body
        type: string
        description: Git SHA to roll back to.
      steps:
      - name: get-error-rate
        type: call
        call: newrelic.get-app-metrics
        with:
          app_id: '{{app_id}}'
      - name: trigger-rollback
        type: call
        call: github.dispatch-workflow
        with:
          repo: '{{repo_name}}'
          workflow: rollback.yml
          ref: main
          inputs_sha: '{{previous_sha}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          category: deployment
          urgency: 1
          short_description: 'Auto-rollback triggered: {{repo_name}} — error rate {{get-error-rate.error_percentage}}%'
          description: 'Rolling back to {{previous_sha}}. New Relic app: {{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
  - 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: dispatch-workflow
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://walmart.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → new-relic-error-rate-to-rollback-trigger.yml

Retrieves metadata for an object stored in an Amazon S3 bucket including size, content type, last modified date, and storage class. Used by data engineering to inspect catalog feed files and image assets.

naftiko: '0.5'
info:
  label: Amazon S3 Object Metadata
  description: Retrieves metadata for an object stored in an Amazon S3 bucket including size, content type, last modified date, and storage class. Used by data engineering to inspect catalog feed files and image assets.
  tags:
  - data
  - storage
  - amazon-s3
capability:
  exposes:
  - type: mcp
    namespace: object-storage
    port: 8080
    tools:
    - name: get-object-metadata
      description: Retrieve S3 object metadata by bucket and key. Returns size, content type, last modified, and storage class.
      inputParameters:
      - name: bucket
        in: body
        type: string
        description: The S3 bucket name.
      - name: object_key
        in: body
        type: string
        description: The full object key path.
      call: s3.head-object
      with:
        bucket: '{{bucket}}'
        object_key: '{{object_key}}'
      outputParameters:
      - name: content_length
        type: number
        mapping: $.ContentLength
      - name: content_type
        type: string
        mapping: $.ContentType
      - name: last_modified
        type: string
        mapping: $.LastModified
      - name: storage_class
        type: string
        mapping: $.StorageClass
  consumes:
  - type: http
    namespace: s3
    baseUri: https://s3.us-east-1.amazonaws.com
    authentication:
      type: bearer
      token: $secrets.aws_session_token
    resources:
    - name: objects
      path: /{{bucket}}/{{object_key}}
      inputParameters:
      - name: bucket
        in: path
      - name: object_key
        in: path
      operations:
      - name: head-object
        method: HEAD
Open in Framework → View in Fleet → amazon-s3-object-metadata.yml

Fetches pending deliveries from the warehouse API, calculates optimal delivery routes using Google Maps, assigns drivers, publishes route events to Kafka, and notifies the logistics team in Microsoft Teams.

naftiko: '0.5'
info:
  label: Last-Mile Delivery Optimization
  description: Fetches pending deliveries from the warehouse API, calculates optimal delivery routes using Google Maps, assigns drivers, publishes route events to Kafka, and notifies the logistics team in Microsoft Teams.
  tags:
  - logistics
  - delivery
  - google-maps
  - apache-kafka
  - microsoft-teams
  - optimization
capability:
  exposes:
  - type: mcp
    namespace: delivery-routing
    port: 8080
    tools:
    - name: optimize-delivery-routes
      description: Given a warehouse ID and delivery date, fetch pending deliveries, calculate optimal routes, assign drivers, and publish the route plan.
      inputParameters:
      - name: warehouse_id
        in: body
        type: string
        description: The warehouse facility ID.
      - name: delivery_date
        in: body
        type: string
        description: The target delivery date (YYYY-MM-DD).
      steps:
      - name: get-pending-deliveries
        type: call
        call: warehouse-api.get-pending-deliveries
        with:
          warehouse_id: '{{warehouse_id}}'
          date: '{{delivery_date}}'
      - name: calculate-routes
        type: call
        call: google-maps.optimize-routes
        with:
          origin: '{{get-pending-deliveries.warehouse_address}}'
          waypoints: '{{get-pending-deliveries.delivery_addresses}}'
          optimize_waypoints: 'true'
      - name: publish-route-plan
        type: call
        call: kafka-bridge.publish-event
        with:
          topic: delivery.routes.planned
          key: '{{warehouse_id}}_{{delivery_date}}'
          payload: '{"warehouse_id":"{{warehouse_id}}","date":"{{delivery_date}}","total_deliveries":{{get-pending-deliveries.count}},"total_distance_km":{{calculate-routes.total_distance}},"estimated_hours":{{calculate-routes.total_duration_hours}}}'
      - name: notify-logistics
        type: call
        call: msteams.send-channel-message
        with:
          channel_id: logistics-dispatch
          text: 'Route Plan Ready: Warehouse {{warehouse_id}} | Date: {{delivery_date}} | Deliveries: {{get-pending-deliveries.count}} | Routes: {{calculate-routes.route_count}} | Distance: {{calculate-routes.total_distance}} km | ETA: {{calculate-routes.total_duration_hours}}h'
  consumes:
  - type: http
    namespace: warehouse-api
    baseUri: https://warehouse-api.wayfair.com/api/v2
    authentication:
      type: bearer
      token: $secrets.warehouse_api_token
    resources:
    - name: deliveries
      path: /warehouses/{{warehouse_id}}/deliveries/pending
      inputParameters:
      - name: warehouse_id
        in: path
      operations:
      - name: get-pending-deliveries
        method: GET
  - type: http
    namespace: google-maps
    baseUri: https://maps.googleapis.com/maps/api
    authentication:
      type: bearer
      token: $secrets.google_maps_key
    resources:
    - name: directions
      path: /directions/json
      operations:
      - name: optimize-routes
        method: GET
  - type: http
    namespace: kafka-bridge
    baseUri: https://kafka-rest.wayfair.com/v2
    authentication:
      type: bearer
      token: $secrets.kafka_rest_token
    resources:
    - name: topics
      path: /topics/{{topic}}
      inputParameters:
      - name: topic
        in: path
      operations:
      - name: publish-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/wayfair-logistics/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → last-mile-delivery-optimization.yml

Fetches a value from a specified Redis key in the Wayfair caching layer. Used by engineering teams to inspect cached product data, session state, or feature flags without direct Redis CLI access.

naftiko: '0.5'
info:
  label: Redis Cache Key Lookup
  description: Fetches a value from a specified Redis key in the Wayfair caching layer. Used by engineering teams to inspect cached product data, session state, or feature flags without direct Redis CLI access.
  tags:
  - engineering
  - caching
  - redis
capability:
  exposes:
  - type: mcp
    namespace: cache-ops
    port: 8080
    tools:
    - name: get-cache-key
      description: Retrieve the value stored at a given Redis cache key.
      inputParameters:
      - name: cache_key
        in: body
        type: string
        description: The Redis key to look up (e.g., product:sku:12345, session:abc).
      call: redis-api.get-key
      with:
        cache_key: '{{cache_key}}'
      outputParameters:
      - name: value
        type: string
        mapping: $.value
      - name: ttl_seconds
        type: number
        mapping: $.ttl
  consumes:
  - type: http
    namespace: redis-api
    baseUri: https://redis-gateway.wayfair.com/api/v1
    authentication:
      type: bearer
      token: $secrets.redis_gateway_token
    resources:
    - name: keys
      path: /keys/{{cache_key}}
      inputParameters:
      - name: cache_key
        in: path
      operations:
      - name: get-key
        method: GET
Open in Framework → View in Fleet → redis-cache-key-lookup.yml

After a GitHub Actions deployment completes, posts a summary to the Microsoft Teams engineering channel, creates a Datadog event marker, and updates the Jira release ticket with deployment details.

naftiko: '0.5'
info:
  label: Deployment Notification Pipeline
  description: After a GitHub Actions deployment completes, posts a summary to the Microsoft Teams engineering channel, creates a Datadog event marker, and updates the Jira release ticket with deployment details.
  tags:
  - engineering
  - deployment
  - github-actions
  - microsoft-teams
  - datadog
  - jira
capability:
  exposes:
  - type: mcp
    namespace: deploy-notify
    port: 8080
    tools:
    - name: notify-deployment
      description: Given a GitHub Actions run ID and Jira release ticket key, post deployment details to Teams, create a Datadog event, and update the Jira ticket.
      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 (e.g., wayfair-incubator/storefront).
      - name: jira_ticket
        in: body
        type: string
        description: The Jira release ticket key (e.g., REL-456).
      steps:
      - name: get-run
        type: call
        call: github.get-workflow-run
        with:
          repository: '{{repository}}'
          run_id: '{{run_id}}'
      - name: post-teams-message
        type: call
        call: msteams.send-channel-message
        with:
          channel_id: engineering-deploys
          text: 'Deployment Complete: {{repository}} | Commit: {{get-run.head_sha}} | Status: {{get-run.conclusion}} | Branch: {{get-run.head_branch}} | Run: {{get-run.html_url}}'
      - name: create-dd-event
        type: call
        call: datadog.create-event
        with:
          title: 'Deployment: {{repository}}'
          text: 'SHA: {{get-run.head_sha}} | Branch: {{get-run.head_branch}} | Status: {{get-run.conclusion}}'
          tags: service:{{repository}},env:production
      - name: update-jira
        type: call
        call: jira.add-comment
        with:
          issue_key: '{{jira_ticket}}'
          body: 'Deployed to production. SHA: {{get-run.head_sha}}. Status: {{get-run.conclusion}}. Run: {{get-run.html_url}}'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: workflow-runs
      path: /repos/{{repository}}/actions/runs/{{run_id}}
      inputParameters:
      - name: repository
        in: path
      - name: run_id
        in: path
      operations:
      - name: get-workflow-run
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/wayfair-eng/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
  - 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: jira
    baseUri: https://wayfair.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: comments
      path: /issue/{{issue_key}}/comment
      inputParameters:
      - name: issue_key
        in: path
      operations:
      - name: add-comment
        method: POST
Open in Framework → View in Fleet → deployment-notification-pipeline.yml

When new product images are uploaded to S3, runs the computer vision model to extract visual features, indexes the features in Elasticsearch for visual search, and publishes an indexing event to Kafka.

naftiko: '0.5'
info:
  label: Visual Search Image Indexing Pipeline
  description: When new product images are uploaded to S3, runs the computer vision model to extract visual features, indexes the features in Elasticsearch for visual search, and publishes an indexing event to Kafka.
  tags:
  - e-commerce
  - machine-learning
  - computer-vision
  - amazon-s3
  - elasticsearch
  - apache-kafka
capability:
  exposes:
  - type: mcp
    namespace: visual-search
    port: 8080
    tools:
    - name: index-product-image
      description: Given an S3 image key and SKU, extract visual features via the CV model, index in Elasticsearch, and publish the event.
      inputParameters:
      - name: s3_bucket
        in: body
        type: string
        description: The S3 bucket containing the product image.
      - name: s3_key
        in: body
        type: string
        description: The S3 object key for the product image.
      - name: sku
        in: body
        type: string
        description: The product SKU associated with the image.
      steps:
      - name: get-image-url
        type: call
        call: s3-api.generate-presigned-url
        with:
          bucket: '{{s3_bucket}}'
          key: '{{s3_key}}'
      - name: extract-features
        type: call
        call: cv-service.extract-visual-features
        with:
          image_url: '{{get-image-url.presigned_url}}'
          model: product-visual-v3
      - name: index-features
        type: call
        call: es.index-visual-features
        with:
          sku: '{{sku}}'
          feature_vector: '{{extract-features.feature_vector}}'
          color_palette: '{{extract-features.dominant_colors}}'
          style_tags: '{{extract-features.style_tags}}'
      - name: publish-event
        type: call
        call: kafka-bridge.publish-event
        with:
          topic: visual-search.indexed
          key: '{{sku}}'
          payload: '{"sku":"{{sku}}","image_key":"{{s3_key}}","feature_dimensions":{{extract-features.dimensions}}}'
  consumes:
  - type: http
    namespace: s3-api
    baseUri: https://s3-gateway.wayfair.com/api/v1
    authentication:
      type: bearer
      token: $secrets.aws_session_token
    resources:
    - name: presigned
      path: /presign/{{bucket}}/{{key}}
      inputParameters:
      - name: bucket
        in: path
      - name: key
        in: path
      operations:
      - name: generate-presigned-url
        method: GET
  - type: http
    namespace: cv-service
    baseUri: https://ml-platform.wayfair.com/api/v1
    authentication:
      type: bearer
      token: $secrets.ml_platform_token
    resources:
    - name: visual-features
      path: /models/visual-features/predict
      operations:
      - name: extract-visual-features
        method: POST
  - type: http
    namespace: es
    baseUri: https://es-prod.wayfair.com
    authentication:
      type: basic
      username: $secrets.es_user
      password: $secrets.es_password
    resources:
    - name: visual-index
      path: /visual-search/_doc/{{sku}}
      inputParameters:
      - name: sku
        in: path
      operations:
      - name: index-visual-features
        method: PUT
  - type: http
    namespace: kafka-bridge
    baseUri: https://kafka-rest.wayfair.com/v2
    authentication:
      type: bearer
      token: $secrets.kafka_rest_token
    resources:
    - name: topics
      path: /topics/{{topic}}
      inputParameters:
      - name: topic
        in: path
      operations:
      - name: publish-event
        method: POST
Open in Framework → View in Fleet → visual-search-image-indexing-pipeline.yml

Retrieves a Zendesk support ticket by ID and returns subject, status, priority, assignee group, and customer satisfaction rating. Used by CX leadership for escalation reviews.

naftiko: '0.5'
info:
  label: Zendesk Ticket Status
  description: Retrieves a Zendesk support ticket by ID and returns subject, status, priority, assignee group, and customer satisfaction rating. Used by CX leadership for escalation reviews.
  tags:
  - customer-service
  - support
  - zendesk
capability:
  exposes:
  - type: mcp
    namespace: cx-support
    port: 8080
    tools:
    - name: get-support-ticket
      description: Look up a Zendesk ticket by ID. Returns subject, status, priority, assigned group, and CSAT 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: subject
        type: string
        mapping: $.ticket.subject
      - name: status
        type: string
        mapping: $.ticket.status
      - name: priority
        type: string
        mapping: $.ticket.priority
      - name: assigned_group
        type: string
        mapping: $.ticket.group_id
      - name: satisfaction_rating
        type: string
        mapping: $.ticket.satisfaction_rating.score
  consumes:
  - type: http
    namespace: zendesk
    baseUri: https://wayfair.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
Open in Framework → View in Fleet → zendesk-ticket-status.yml

Takes a customer's room dimensions and selected products, generates a 3D room layout via the Unity rendering service, stores the scene in S3, and sends the visualization link to the customer via email.

naftiko: '0.5'
info:
  label: Room Planner 3D Scene Pipeline
  description: Takes a customer's room dimensions and selected products, generates a 3D room layout via the Unity rendering service, stores the scene in S3, and sends the visualization link to the customer via email.
  tags:
  - e-commerce
  - 3d
  - personalization
  - unity
  - amazon-s3
  - mailchimp
capability:
  exposes:
  - type: mcp
    namespace: room-planner
    port: 8080
    tools:
    - name: generate-room-visualization
      description: Given room dimensions, selected SKUs, and customer email, render a 3D room scene, store it in S3, and email the visualization link.
      inputParameters:
      - name: customer_email
        in: body
        type: string
        description: The customer email address.
      - name: room_dimensions
        in: body
        type: string
        description: Room dimensions as JSON (width, length, height in feet).
      - name: selected_skus
        in: body
        type: string
        description: Comma-separated list of product SKUs to place in the room.
      steps:
      - name: render-scene
        type: call
        call: unity-render.create-room-scene
        with:
          dimensions: '{{room_dimensions}}'
          product_skus: '{{selected_skus}}'
          output_format: webgl
      - name: upload-to-s3
        type: call
        call: s3-api.upload-object
        with:
          bucket: wayfair-room-planner
          key: scenes/{{render-scene.scene_id}}/index.html
          content_url: '{{render-scene.output_url}}'
      - name: send-visualization-email
        type: call
        call: mailchimp.send-transactional
        with:
          template_name: room-planner-result
          email: '{{customer_email}}'
          merge_vars: '{"SCENE_URL":"https://roomplanner.wayfair.com/scenes/{{render-scene.scene_id}}","PRODUCT_COUNT":"{{render-scene.product_count}}"}'
  consumes:
  - type: http
    namespace: unity-render
    baseUri: https://render-service.wayfair.com/api/v1
    authentication:
      type: bearer
      token: $secrets.render_service_token
    resources:
    - name: scenes
      path: /scenes
      operations:
      - name: create-room-scene
        method: POST
  - type: http
    namespace: s3-api
    baseUri: https://s3-gateway.wayfair.com/api/v1
    authentication:
      type: bearer
      token: $secrets.aws_session_token
    resources:
    - name: objects
      path: /upload/{{bucket}}/{{key}}
      inputParameters:
      - name: bucket
        in: path
      - name: key
        in: path
      operations:
      - name: upload-object
        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
Open in Framework → View in Fleet → room-planner-3d-scene-pipeline.yml

Retrieves stock level for a product in a warehouse.

naftiko: '0.5'
info:
  label: Warehouse Stock Level
  description: Retrieves stock level for a product in a warehouse.
  tags:
  - warehouse
  - supply-chain
capability:
  exposes:
  - type: mcp
    namespace: warehouse
    port: 8080
    tools:
    - name: get-warehouse
      description: Retrieves stock level for a product in a warehouse.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The warehouse stock level identifier.
      call: warehouse-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: warehouse-api
    baseUri: https://api.wayfair.com/warehouse/v1
    authentication:
      type: bearer
      token: $secrets.wayfair_api_token
    resources:
    - name: warehouse
      path: /warehouse/stock/level/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-warehouse
        method: GET
Open in Framework → View in Fleet → warehouse-stock-level.yml

Pulls AWS cost data from CloudWatch, correlates with service ownership in ServiceNow CMDB, generates a cost breakdown by team, and shares the report via Microsoft Teams and Google Drive.

naftiko: '0.5'
info:
  label: Infrastructure Cost Report Pipeline
  description: Pulls AWS cost data from CloudWatch, correlates with service ownership in ServiceNow CMDB, generates a cost breakdown by team, and shares the report via Microsoft Teams and Google Drive.
  tags:
  - operations
  - finops
  - cloudwatch
  - servicenow
  - microsoft-teams
  - google-drive
capability:
  exposes:
  - type: mcp
    namespace: infra-cost
    port: 8080
    tools:
    - name: generate-cost-report
      description: Given a date range, pull AWS cost metrics, correlate with CMDB service owners, generate team-level cost breakdown, and distribute the report.
      inputParameters:
      - name: start_date
        in: body
        type: string
        description: Report start date (YYYY-MM-DD).
      - name: end_date
        in: body
        type: string
        description: Report end date (YYYY-MM-DD).
      steps:
      - name: get-cost-data
        type: call
        call: aws-cost.get-cost-report
        with:
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
      - name: get-service-owners
        type: call
        call: servicenow.get-cmdb-services
        with:
          query: operational_status=operational
      - name: create-report
        type: call
        call: gdrive.create-spreadsheet
        with:
          title: AWS Cost Report {{start_date}} to {{end_date}}
          folder_id: finops_reports
          data: '{{get-cost-data.cost_by_service}}'
      - name: notify-leadership
        type: call
        call: msteams.send-channel-message
        with:
          channel_id: platform-finops
          text: 'AWS Cost Report ({{start_date}} to {{end_date}}): Total spend ${{get-cost-data.total_cost}}. Top service: {{get-cost-data.top_service}} (${{get-cost-data.top_service_cost}}). Report: {{create-report.url}}'
  consumes:
  - type: http
    namespace: aws-cost
    baseUri: https://ce.us-east-1.amazonaws.com
    authentication:
      type: bearer
      token: $secrets.aws_session_token
    resources:
    - name: cost-reports
      path: /
      operations:
      - name: get-cost-report
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://wayfair.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: cmdb
      path: /table/cmdb_ci_service
      operations:
      - name: get-cmdb-services
        method: GET
  - 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: 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/wayfair-platform/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → infrastructure-cost-report-pipeline.yml

After order delivery, fetches the order details, generates cross-sell recommendations using the ML model, creates a personalized email campaign in MailChimp, and logs the recommendation event to Google Analytics.

naftiko: '0.5'
info:
  label: Cross-Sell Recommendation Email Pipeline
  description: After order delivery, fetches the order details, generates cross-sell recommendations using the ML model, creates a personalized email campaign in MailChimp, and logs the recommendation event to Google Analytics.
  tags:
  - e-commerce
  - marketing
  - personalization
  - machine-learning
  - mailchimp
  - google-analytics
capability:
  exposes:
  - type: mcp
    namespace: cross-sell
    port: 8080
    tools:
    - name: send-cross-sell-recommendations
      description: Given an order ID, fetch order details, generate cross-sell suggestions, send a personalized email, and log the event to GA.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The delivered order ID.
      - name: customer_id
        in: body
        type: string
        description: The Wayfair customer ID.
      steps:
      - name: get-order
        type: call
        call: orders-api.get-order
        with:
          order_id: '{{order_id}}'
      - name: get-recommendations
        type: call
        call: ml-reco.cross-sell
        with:
          purchased_skus: '{{get-order.sku_list}}'
          customer_id: '{{customer_id}}'
          count: '6'
      - name: send-email
        type: call
        call: mailchimp.send-transactional
        with:
          template_name: cross-sell-post-delivery
          email: '{{get-order.customer_email}}'
          merge_vars: '{"FIRST_NAME":"{{get-order.customer_name}}","ORDER_ID":"{{order_id}}","RECOMMENDATIONS":"{{get-recommendations.product_cards}}"}'
      - name: log-event
        type: call
        call: ga.send-event
        with:
          category: cross-sell
          action: email_sent
          label: '{{order_id}}'
          value: '{{get-recommendations.count}}'
  consumes:
  - type: http
    namespace: orders-api
    baseUri: https://orders-api.wayfair.com/api/v2
    authentication:
      type: bearer
      token: $secrets.orders_api_token
    resources:
    - name: orders
      path: /orders/{{order_id}}
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-order
        method: GET
  - type: http
    namespace: ml-reco
    baseUri: https://ml-platform.wayfair.com/api/v1
    authentication:
      type: bearer
      token: $secrets.ml_platform_token
    resources:
    - name: cross-sell
      path: /models/cross-sell/predict
      operations:
      - name: cross-sell
        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
  - type: http
    namespace: ga
    baseUri: https://www.google-analytics.com
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: collect
      path: /mp/collect
      operations:
      - name: send-event
        method: POST
Open in Framework → View in Fleet → cross-sell-recommendation-email-pipeline.yml

When a new order is placed, validates inventory via the warehouse API, creates a shipment record, triggers a Kafka shipping event, and sends an order confirmation email through MailChimp.

naftiko: '0.5'
info:
  label: Order Fulfillment Orchestrator
  description: When a new order is placed, validates inventory via the warehouse API, creates a shipment record, triggers a Kafka shipping event, and sends an order confirmation email through MailChimp.
  tags:
  - e-commerce
  - fulfillment
  - logistics
  - apache-kafka
  - mailchimp
capability:
  exposes:
  - type: mcp
    namespace: order-fulfillment
    port: 8080
    tools:
    - name: process-new-order
      description: Given an order ID and customer email, validate inventory, create a shipment, publish a shipping event to Kafka, and send an order confirmation email.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The Wayfair order ID.
      - name: customer_email
        in: body
        type: string
        description: The customer email address for confirmation.
      - name: warehouse_id
        in: body
        type: string
        description: The warehouse ID for fulfillment.
      steps:
      - name: check-inventory
        type: call
        call: warehouse-api.check-inventory
        with:
          order_id: '{{order_id}}'
          warehouse_id: '{{warehouse_id}}'
      - name: create-shipment
        type: call
        call: warehouse-api.create-shipment
        with:
          order_id: '{{order_id}}'
          warehouse_id: '{{warehouse_id}}'
          items: '{{check-inventory.available_items}}'
      - name: publish-shipping-event
        type: call
        call: kafka-bridge.publish-event
        with:
          topic: order.shipping.created
          key: '{{order_id}}'
          payload: '{"order_id":"{{order_id}}","shipment_id":"{{create-shipment.shipment_id}}","tracking_number":"{{create-shipment.tracking_number}}"}'
      - name: send-confirmation
        type: call
        call: mailchimp.send-transactional
        with:
          template_name: order-confirmation
          email: '{{customer_email}}'
          merge_vars: '{"ORDER_ID":"{{order_id}}","TRACKING":"{{create-shipment.tracking_number}}"}'
  consumes:
  - type: http
    namespace: warehouse-api
    baseUri: https://warehouse-api.wayfair.com/api/v2
    authentication:
      type: bearer
      token: $secrets.warehouse_api_token
    resources:
    - name: inventory
      path: /orders/{{order_id}}/inventory-check
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: check-inventory
        method: POST
    - name: shipments
      path: /shipments
      operations:
      - name: create-shipment
        method: POST
  - type: http
    namespace: kafka-bridge
    baseUri: https://kafka-rest.wayfair.com/v2
    authentication:
      type: bearer
      token: $secrets.kafka_rest_token
    resources:
    - name: topics
      path: /topics/{{topic}}
      inputParameters:
      - name: topic
        in: path
      operations:
      - name: publish-event
        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
Open in Framework → View in Fleet → order-fulfillment-orchestrator.yml

Pulls campaign performance data from MailChimp, cross-references with Google Analytics conversion data, and creates a Jira ticket summarizing the campaign results for the marketing team.

naftiko: '0.5'
info:
  label: Email Campaign Performance Report
  description: Pulls campaign performance data from MailChimp, cross-references with Google Analytics conversion data, and creates a Jira ticket summarizing the campaign results for the marketing team.
  tags:
  - marketing
  - email-marketing
  - mailchimp
  - google-analytics
  - jira
capability:
  exposes:
  - type: mcp
    namespace: email-performance
    port: 8080
    tools:
    - name: report-campaign-performance
      description: Given a MailChimp campaign ID, pull open/click rates, cross-reference with GA conversions, and create a Jira summary ticket.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: The MailChimp campaign ID.
      steps:
      - name: get-campaign-stats
        type: call
        call: mailchimp.get-campaign-report
        with:
          campaign_id: '{{campaign_id}}'
      - name: get-ga-conversions
        type: call
        call: ga.get-campaign-report
        with:
          campaign_name: '{{get-campaign-stats.campaign_title}}'
      - name: create-results-ticket
        type: call
        call: jira.create-issue
        with:
          project: MKT
          issue_type: Task
          summary: 'Email Campaign Results: {{get-campaign-stats.campaign_title}}'
          description: 'Campaign: {{get-campaign-stats.campaign_title}}

            Sent: {{get-campaign-stats.emails_sent}}

            Open Rate: {{get-campaign-stats.open_rate}}%

            Click Rate: {{get-campaign-stats.click_rate}}%

            Unsubscribes: {{get-campaign-stats.unsubscribes}}

            GA Sessions: {{get-ga-conversions.sessions}}

            GA Conversions: {{get-ga-conversions.conversions}}

            Revenue: ${{get-ga-conversions.revenue}}'
  consumes:
  - type: http
    namespace: mailchimp
    baseUri: https://us1.api.mailchimp.com/3.0
    authentication:
      type: bearer
      token: $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://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: jira
    baseUri: https://wayfair.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → email-campaign-performance-report.yml

Fetches the latest product feed from a supplier's BigCommerce store, validates data quality, updates the Wayfair product catalog, and notifies the merchandising team in Microsoft Teams.

naftiko: '0.5'
info:
  label: Supplier Catalog Sync Pipeline
  description: Fetches the latest product feed from a supplier's BigCommerce store, validates data quality, updates the Wayfair product catalog, and notifies the merchandising team in Microsoft Teams.
  tags:
  - supply-chain
  - e-commerce
  - bigcommerce
  - microsoft-teams
  - catalog-management
capability:
  exposes:
  - type: mcp
    namespace: catalog-sync
    port: 8080
    tools:
    - name: sync-supplier-catalog
      description: Given a supplier ID and their BigCommerce store hash, fetch their product feed, validate data, update the catalog, and notify merchandising.
      inputParameters:
      - name: supplier_id
        in: body
        type: string
        description: The Wayfair supplier ID.
      - name: store_hash
        in: body
        type: string
        description: The BigCommerce store hash for the supplier.
      steps:
      - name: fetch-bc-products
        type: call
        call: bigcommerce.list-products
        with:
          store_hash: '{{store_hash}}'
      - name: validate-feed
        type: call
        call: catalog-api.validate-feed
        with:
          supplier_id: '{{supplier_id}}'
          products: '{{fetch-bc-products.data}}'
      - name: update-catalog
        type: call
        call: catalog-api.bulk-upsert
        with:
          supplier_id: '{{supplier_id}}'
          products: '{{validate-feed.valid_products}}'
      - name: notify-merch
        type: call
        call: msteams.send-channel-message
        with:
          channel_id: merchandising-ops
          text: 'Catalog Sync Complete: Supplier {{supplier_id}} | Total Products: {{fetch-bc-products.total}} | Valid: {{validate-feed.valid_count}} | Errors: {{validate-feed.error_count}} | Updated: {{update-catalog.upserted_count}}'
  consumes:
  - type: http
    namespace: bigcommerce
    baseUri: https://api.bigcommerce.com/stores/{{store_hash}}/v3
    authentication:
      type: bearer
      token: $secrets.bigcommerce_token
    inputParameters:
    - name: store_hash
      in: path
    resources:
    - name: products
      path: /catalog/products
      operations:
      - name: list-products
        method: GET
  - type: http
    namespace: catalog-api
    baseUri: https://catalog-api.wayfair.com/api/v2
    authentication:
      type: bearer
      token: $secrets.catalog_api_token
    resources:
    - name: feed-validation
      path: /feeds/validate
      operations:
      - name: validate-feed
        method: POST
    - name: bulk-products
      path: /products/bulk
      operations:
      - name: bulk-upsert
        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/wayfair-merch/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → supplier-catalog-sync-pipeline.yml

Retrieves contents of a shopping cart.

naftiko: '0.5'
info:
  label: Shopping Cart Contents
  description: Retrieves contents of a shopping cart.
  tags:
  - e-commerce
  - customer-service
capability:
  exposes:
  - type: mcp
    namespace: e-commerce
    port: 8080
    tools:
    - name: get-shopping
      description: Retrieves contents of a shopping cart.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The shopping cart contents identifier.
      call: e-commerce-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: e-commerce-api
    baseUri: https://api.wayfair.com/e-commerce/v1
    authentication:
      type: bearer
      token: $secrets.wayfair_api_token
    resources:
    - name: shopping
      path: /shopping/cart/contents/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-shopping
        method: GET
Open in Framework → View in Fleet → shopping-cart-contents.yml

Retrieves order history for a customer.

naftiko: '0.5'
info:
  label: Customer Order History
  description: Retrieves order history for a customer.
  tags:
  - e-commerce
  - customer-service
capability:
  exposes:
  - type: mcp
    namespace: e-commerce
    port: 8080
    tools:
    - name: get-customer
      description: Retrieves order history for a customer.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The customer order history identifier.
      call: e-commerce-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: e-commerce-api
    baseUri: https://api.wayfair.com/e-commerce/v1
    authentication:
      type: bearer
      token: $secrets.wayfair_api_token
    resources:
    - name: customer
      path: /customer/order/history/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-customer
        method: GET
Open in Framework → View in Fleet → customer-order-history.yml

Aggregates current inventory levels from the warehouse API, forecasts demand using the ML platform, pulls inbound shipment data, and creates a capacity planning report in Google Drive for logistics leadership.

naftiko: '0.5'
info:
  label: Warehouse Capacity Planning Orchestrator
  description: Aggregates current inventory levels from the warehouse API, forecasts demand using the ML platform, pulls inbound shipment data, and creates a capacity planning report in Google Drive for logistics leadership.
  tags:
  - logistics
  - inventory-management
  - machine-learning
  - google-drive
  - supply-chain
capability:
  exposes:
  - type: mcp
    namespace: capacity-planning
    port: 8080
    tools:
    - name: generate-capacity-report
      description: Given a warehouse ID and planning horizon, aggregate inventory, forecast demand, assess inbound shipments, and compile a capacity planning document.
      inputParameters:
      - name: warehouse_id
        in: body
        type: string
        description: The warehouse facility ID.
      - name: planning_horizon_days
        in: body
        type: number
        description: Number of days to forecast ahead.
      steps:
      - name: get-current-inventory
        type: call
        call: warehouse-api.get-inventory-summary
        with:
          warehouse_id: '{{warehouse_id}}'
      - name: forecast-demand
        type: call
        call: ml-demand.predict
        with:
          warehouse_id: '{{warehouse_id}}'
          horizon_days: '{{planning_horizon_days}}'
          current_utilization: '{{get-current-inventory.utilization_pct}}'
      - name: get-inbound-shipments
        type: call
        call: warehouse-api.get-inbound
        with:
          warehouse_id: '{{warehouse_id}}'
          days_ahead: '{{planning_horizon_days}}'
      - name: create-report
        type: call
        call: gdrive.create-document
        with:
          title: Capacity Plan — Warehouse {{warehouse_id}} — {{planning_horizon_days}} Day Horizon
          folder_id: logistics_planning
          content: 'Current Utilization: {{get-current-inventory.utilization_pct}}% | Available Slots: {{get-current-inventory.available_slots}} | Forecasted Demand: {{forecast-demand.predicted_units}} units | Inbound Shipments: {{get-inbound-shipments.shipment_count}} ({{get-inbound-shipments.total_units}} units) | Projected Utilization: {{forecast-demand.projected_utilization}}%'
  consumes:
  - type: http
    namespace: warehouse-api
    baseUri: https://warehouse-api.wayfair.com/api/v2
    authentication:
      type: bearer
      token: $secrets.warehouse_api_token
    resources:
    - name: inventory-summary
      path: /warehouses/{{warehouse_id}}/inventory/summary
      inputParameters:
      - name: warehouse_id
        in: path
      operations:
      - name: get-inventory-summary
        method: GET
    - name: inbound
      path: /warehouses/{{warehouse_id}}/inbound
      inputParameters:
      - name: warehouse_id
        in: path
      operations:
      - name: get-inbound
        method: GET
  - type: http
    namespace: ml-demand
    baseUri: https://ml-platform.wayfair.com/api/v1
    authentication:
      type: bearer
      token: $secrets.ml_platform_token
    resources:
    - name: demand-forecast
      path: /models/demand-forecast/predict
      operations:
      - name: predict
        method: POST
  - 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: create-document
        method: POST
Open in Framework → View in Fleet → warehouse-capacity-planning-orchestrator.yml

Retrieves e commerce operational data for workflow 9.

naftiko: '0.5'
info:
  label: E Commerce Data Query 9
  description: Retrieves e commerce operational data for workflow 9.
  tags:
  - e
  - operations
capability:
  exposes:
  - type: mcp
    namespace: e
    port: 8080
    tools:
    - name: get-data-9
      description: Query e commerce data for workflow 9.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: e-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: e-api
    baseUri: https://api.wayfair.com/e-commerce/v1
    authentication:
      type: bearer
      token: $secrets.wayfair_api_token
    resources:
    - name: data
      path: /data/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-data-9
        method: GET
Open in Framework → View in Fleet → e-commerce-data-query-9.yml

Orchestrates e commerce workflow 8 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: E Commerce Workflow 8
  description: Orchestrates e commerce workflow 8 by coordinating across systems, validating data, and sending notifications.
  tags:
  - e
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: e
    port: 8080
    tools:
    - name: run-e-commerce-workflow-008
      description: Orchestrates e commerce 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 E Commerce Workflow 8 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.wayfair.com/v1
    authentication:
      type: bearer
      token: $secrets.wayfair_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.wayfair.com/v2
    authentication:
      type: bearer
      token: $secrets.wayfair_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
Open in Framework → View in Fleet → e-commerce-workflow-8.yml

Orchestrates e commerce workflow 11 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: E Commerce Workflow 11
  description: Orchestrates e commerce workflow 11 by coordinating across systems, validating data, and sending notifications.
  tags:
  - e
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: e
    port: 8080
    tools:
    - name: run-e-commerce-workflow-011
      description: Orchestrates e commerce 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 E Commerce Workflow 11 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.wayfair.com/v1
    authentication:
      type: bearer
      token: $secrets.wayfair_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.wayfair.com/v2
    authentication:
      type: bearer
      token: $secrets.wayfair_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
Open in Framework → View in Fleet → e-commerce-workflow-11.yml

Orchestrates e commerce workflow 5 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: E Commerce Workflow 5
  description: Orchestrates e commerce workflow 5 by coordinating across systems, validating data, and sending notifications.
  tags:
  - e
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: e
    port: 8080
    tools:
    - name: run-e-commerce-workflow-005
      description: Orchestrates e commerce 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 E Commerce Workflow 5 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.wayfair.com/v1
    authentication:
      type: bearer
      token: $secrets.wayfair_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.wayfair.com/v2
    authentication:
      type: bearer
      token: $secrets.wayfair_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
Open in Framework → View in Fleet → e-commerce-workflow-5.yml

Orchestrates e commerce workflow 4 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: E Commerce Workflow 4
  description: Orchestrates e commerce workflow 4 by coordinating across systems, validating data, and sending notifications.
  tags:
  - e
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: e
    port: 8080
    tools:
    - name: run-e-commerce-workflow-004
      description: Orchestrates e commerce 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 E Commerce Workflow 4 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.wayfair.com/v1
    authentication:
      type: bearer
      token: $secrets.wayfair_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.wayfair.com/v2
    authentication:
      type: bearer
      token: $secrets.wayfair_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
Open in Framework → View in Fleet → e-commerce-workflow-4.yml

Orchestrates e commerce workflow 10 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: E Commerce Workflow 10
  description: Orchestrates e commerce workflow 10 by coordinating across systems, validating data, and sending notifications.
  tags:
  - e
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: e
    port: 8080
    tools:
    - name: run-e-commerce-workflow-010
      description: Orchestrates e commerce 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 E Commerce Workflow 10 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.wayfair.com/v1
    authentication:
      type: bearer
      token: $secrets.wayfair_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.wayfair.com/v2
    authentication:
      type: bearer
      token: $secrets.wayfair_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
Open in Framework → View in Fleet → e-commerce-workflow-10.yml

Triggers a SailPoint access review campaign for a department, fetches the review results, creates a ServiceNow task for access revocations, and notifies the compliance team in Microsoft Teams.

naftiko: '0.5'
info:
  label: SailPoint Access Review Pipeline
  description: Triggers a SailPoint access review campaign for a department, fetches the review results, creates a ServiceNow task for access revocations, and notifies the compliance team in Microsoft Teams.
  tags:
  - security
  - compliance
  - sailpoint
  - servicenow
  - microsoft-teams
  - access-management
capability:
  exposes:
  - type: mcp
    namespace: access-review
    port: 8080
    tools:
    - name: run-access-review
      description: Given a department name, trigger a SailPoint access certification campaign, process results, create revocation tasks, and notify compliance.
      inputParameters:
      - name: department
        in: body
        type: string
        description: The department to review (e.g., Engineering, Finance).
      - name: campaign_name
        in: body
        type: string
        description: The name for the access review campaign.
      steps:
      - name: create-campaign
        type: call
        call: sailpoint.create-certification
        with:
          name: '{{campaign_name}}'
          department: '{{department}}'
      - name: get-results
        type: call
        call: sailpoint.get-certification-results
        with:
          campaign_id: '{{create-campaign.campaign_id}}'
      - name: create-revocation-task
        type: call
        call: servicenow.create-task
        with:
          short_description: 'Access Revocation: {{department}} — {{get-results.revocations_count}} entitlements'
          description: 'SailPoint campaign {{campaign_name}} completed. Total reviewed: {{get-results.total_reviewed}}. Approved: {{get-results.approved_count}}. Revocations needed: {{get-results.revocations_count}}.'
          assigned_group: IT_Security
          category: access_management
      - name: notify-compliance
        type: call
        call: msteams.send-channel-message
        with:
          channel_id: compliance-reviews
          text: 'Access Review Complete: {{department}} | Reviewed: {{get-results.total_reviewed}} | Approved: {{get-results.approved_count}} | Revocations: {{get-results.revocations_count}} | ServiceNow: {{create-revocation-task.number}}'
  consumes:
  - type: http
    namespace: sailpoint
    baseUri: https://wayfair.api.identitynow.com/v3
    authentication:
      type: bearer
      token: $secrets.sailpoint_token
    resources:
    - name: certifications
      path: /certifications
      operations:
      - name: create-certification
        method: POST
    - name: certification-results
      path: /certifications/{{campaign_id}}/decisions
      inputParameters:
      - name: campaign_id
        in: path
      operations:
      - name: get-certification-results
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://wayfair.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/wayfair-compliance/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → sailpoint-access-review-pipeline.yml

Retrieves e commerce operational data for workflow 6.

naftiko: '0.5'
info:
  label: E Commerce Data Query 6
  description: Retrieves e commerce operational data for workflow 6.
  tags:
  - e
  - operations
capability:
  exposes:
  - type: mcp
    namespace: e
    port: 8080
    tools:
    - name: get-data-6
      description: Query e commerce data for workflow 6.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: e-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: e-api
    baseUri: https://api.wayfair.com/e-commerce/v1
    authentication:
      type: bearer
      token: $secrets.wayfair_api_token
    resources:
    - name: data
      path: /data/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-data-6
        method: GET
Open in Framework → View in Fleet → e-commerce-data-query-6.yml

Retrieves e commerce operational data for workflow 12.

naftiko: '0.5'
info:
  label: E Commerce Data Query 12
  description: Retrieves e commerce operational data for workflow 12.
  tags:
  - e
  - operations
capability:
  exposes:
  - type: mcp
    namespace: e
    port: 8080
    tools:
    - name: get-data-12
      description: Query e commerce data for workflow 12.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: e-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: e-api
    baseUri: https://api.wayfair.com/e-commerce/v1
    authentication:
      type: bearer
      token: $secrets.wayfair_api_token
    resources:
    - name: data
      path: /data/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-data-12
        method: GET
Open in Framework → View in Fleet → e-commerce-data-query-12.yml

Launches a marketing campaign by creating an audience segment in MailChimp, scheduling social posts to Facebook and Instagram, setting up Google Analytics campaign tracking, and notifying the marketing team in Microsoft Teams.

naftiko: '0.5'
info:
  label: Marketing Campaign Launch Orchestrator
  description: Launches a marketing campaign by creating an audience segment in MailChimp, scheduling social posts to Facebook and Instagram, setting up Google Analytics campaign tracking, and notifying the marketing team in Microsoft Teams.
  tags:
  - marketing
  - campaigns
  - mailchimp
  - facebook
  - instagram
  - google-analytics
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: campaign-launch
    port: 8080
    tools:
    - name: launch-campaign
      description: Given campaign details, create a MailChimp segment, schedule social posts, configure GA tracking, and notify the marketing team.
      inputParameters:
      - name: campaign_name
        in: body
        type: string
        description: The marketing campaign name.
      - name: audience_criteria
        in: body
        type: string
        description: The audience targeting criteria for segmentation.
      - 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 to the campaign creative asset.
      steps:
      - name: create-segment
        type: call
        call: mailchimp.create-segment
        with:
          list_id: wayfair_main
          name: '{{campaign_name}}_{{launch_date}}'
          criteria: '{{audience_criteria}}'
      - name: schedule-facebook
        type: call
        call: facebook.create-post
        with:
          page_id: wayfair
          message: '{{campaign_name}}'
          link: https://www.wayfair.com/promo/{{campaign_name}}
          scheduled_publish_time: '{{launch_date}}T12:00:00Z'
      - name: schedule-instagram
        type: call
        call: instagram.create-media
        with:
          image_url: '{{creative_url}}'
          caption: '{{campaign_name}} — Shop now at wayfair.com'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          channel_id: marketing-campaigns
          text: 'Campaign Launched: {{campaign_name}} | Segment: {{create-segment.segment_id}} ({{create-segment.member_count}} members) | Facebook: {{schedule-facebook.post_id}} | Launch: {{launch_date}}'
  consumes:
  - type: http
    namespace: mailchimp
    baseUri: https://us1.api.mailchimp.com/3.0
    authentication:
      type: bearer
      token: $secrets.mailchimp_api_key
    resources:
    - name: segments
      path: /lists/{{list_id}}/segments
      inputParameters:
      - name: list_id
        in: path
      operations:
      - name: create-segment
        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
      inputParameters:
      - name: page_id
        in: path
      operations:
      - name: create-post
        method: POST
  - type: http
    namespace: instagram
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.instagram_token
    resources:
    - name: media
      path: /wayfair_ig/media
      operations:
      - name: create-media
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/wayfair-marketing/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → marketing-campaign-launch-orchestrator.yml

Orchestrates e commerce workflow 13 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: E Commerce Workflow 13
  description: Orchestrates e commerce workflow 13 by coordinating across systems, validating data, and sending notifications.
  tags:
  - e
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: e
    port: 8080
    tools:
    - name: run-e-commerce-workflow-013
      description: Orchestrates e commerce 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 E Commerce Workflow 13 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.wayfair.com/v1
    authentication:
      type: bearer
      token: $secrets.wayfair_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.wayfair.com/v2
    authentication:
      type: bearer
      token: $secrets.wayfair_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
Open in Framework → View in Fleet → e-commerce-workflow-13.yml

Orchestrates e commerce workflow 7 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: E Commerce Workflow 7
  description: Orchestrates e commerce workflow 7 by coordinating across systems, validating data, and sending notifications.
  tags:
  - e
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: e
    port: 8080
    tools:
    - name: run-e-commerce-workflow-007
      description: Orchestrates e commerce 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 E Commerce Workflow 7 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.wayfair.com/v1
    authentication:
      type: bearer
      token: $secrets.wayfair_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.wayfair.com/v2
    authentication:
      type: bearer
      token: $secrets.wayfair_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
Open in Framework → View in Fleet → e-commerce-workflow-7.yml

Retrieves e commerce operational data for workflow 3.

naftiko: '0.5'
info:
  label: E Commerce Data Query 3
  description: Retrieves e commerce operational data for workflow 3.
  tags:
  - e
  - operations
capability:
  exposes:
  - type: mcp
    namespace: e
    port: 8080
    tools:
    - name: get-data-3
      description: Query e commerce data for workflow 3.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: e-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: e-api
    baseUri: https://api.wayfair.com/e-commerce/v1
    authentication:
      type: bearer
      token: $secrets.wayfair_api_token
    resources:
    - name: data
      path: /data/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-data-3
        method: GET
Open in Framework → View in Fleet → e-commerce-data-query-3.yml

Fetches page performance data from Google Analytics, crawl status from Google Tag Manager, search ranking from the SEO API, and compiles findings into a Jira ticket for the content team.

naftiko: '0.5'
info:
  label: SEO Content Audit Pipeline
  description: Fetches page performance data from Google Analytics, crawl status from Google Tag Manager, search ranking from the SEO API, and compiles findings into a Jira ticket for the content team.
  tags:
  - marketing
  - search-engine-optimization
  - google-analytics
  - google-tag-manager
  - jira
capability:
  exposes:
  - type: mcp
    namespace: seo-audit
    port: 8080
    tools:
    - name: audit-page-seo
      description: Given a page URL, pull GA performance data, GTM tag status, search rankings, and create a Jira ticket with the audit findings.
      inputParameters:
      - name: page_url
        in: body
        type: string
        description: The full URL of the page to audit.
      - name: target_keyword
        in: body
        type: string
        description: The primary keyword to check ranking for.
      steps:
      - name: get-ga-data
        type: call
        call: ga.get-page-report
        with:
          page_path: '{{page_url}}'
          metrics: pageviews,bounceRate,avgSessionDuration
      - name: get-gtm-status
        type: call
        call: gtm.get-tag-status
        with:
          page_url: '{{page_url}}'
      - name: get-rankings
        type: call
        call: seo-api.get-ranking
        with:
          url: '{{page_url}}'
          keyword: '{{target_keyword}}'
      - name: create-audit-ticket
        type: call
        call: jira.create-issue
        with:
          project: SEO
          issue_type: Task
          summary: 'SEO Audit: {{page_url}} — Rank #{{get-rankings.position}} for ''{{target_keyword}}'''
          description: 'Page Views: {{get-ga-data.pageviews}} | Bounce Rate: {{get-ga-data.bounce_rate}}% | Avg Duration: {{get-ga-data.avg_duration}}s | GTM Tags: {{get-gtm-status.tag_count}} active | Current Rank: #{{get-rankings.position}} for ''{{target_keyword}}'''
  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-page-report
        method: POST
  - type: http
    namespace: gtm
    baseUri: https://www.googleapis.com/tagmanager/v2
    authentication:
      type: bearer
      token: $secrets.google_gtm_token
    resources:
    - name: tags
      path: /accounts/wayfair/containers/tags
      operations:
      - name: get-tag-status
        method: GET
  - type: http
    namespace: seo-api
    baseUri: https://seo-api.wayfair.com/api/v1
    authentication:
      type: bearer
      token: $secrets.seo_api_token
    resources:
    - name: rankings
      path: /rankings
      operations:
      - name: get-ranking
        method: GET
  - type: http
    namespace: jira
    baseUri: https://wayfair.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → seo-content-audit-pipeline.yml

Retrieves the current state of an AWS CloudWatch alarm by alarm name. Returns the alarm state, reason, metric name, and threshold. Used by SRE teams for incident triage.

naftiko: '0.5'
info:
  label: CloudWatch Alarm Status
  description: Retrieves the current state of an AWS CloudWatch alarm by alarm name. Returns the alarm state, reason, metric name, and threshold. Used by SRE teams for incident triage.
  tags:
  - operations
  - monitoring
  - cloudwatch
  - amazon-web-services
capability:
  exposes:
  - type: mcp
    namespace: aws-monitoring
    port: 8080
    tools:
    - name: get-alarm-status
      description: Look up a CloudWatch alarm by name. Returns current state, state reason, metric name, and threshold value.
      inputParameters:
      - name: alarm_name
        in: body
        type: string
        description: The CloudWatch alarm name.
      call: cloudwatch.describe-alarm
      with:
        alarm_name: '{{alarm_name}}'
      outputParameters:
      - name: state
        type: string
        mapping: $.MetricAlarms[0].StateValue
      - name: state_reason
        type: string
        mapping: $.MetricAlarms[0].StateReason
      - name: metric_name
        type: string
        mapping: $.MetricAlarms[0].MetricName
      - name: threshold
        type: number
        mapping: $.MetricAlarms[0].Threshold
  consumes:
  - type: http
    namespace: cloudwatch
    baseUri: https://monitoring.us-east-1.amazonaws.com
    authentication:
      type: bearer
      token: $secrets.aws_session_token
    resources:
    - name: alarms
      path: /?Action=DescribeAlarms&AlarmNames.member.1={{alarm_name}}
      inputParameters:
      - name: alarm_name
        in: path
      operations:
      - name: describe-alarm
        method: GET
Open in Framework → View in Fleet → cloudwatch-alarm-status.yml

Orchestrates e commerce workflow 2 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: E Commerce Workflow 2
  description: Orchestrates e commerce workflow 2 by coordinating across systems, validating data, and sending notifications.
  tags:
  - e
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: e
    port: 8080
    tools:
    - name: run-e-commerce-workflow-002
      description: Orchestrates e commerce 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 E Commerce Workflow 2 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.wayfair.com/v1
    authentication:
      type: bearer
      token: $secrets.wayfair_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.wayfair.com/v2
    authentication:
      type: bearer
      token: $secrets.wayfair_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
Open in Framework → View in Fleet → e-commerce-workflow-2.yml

Retrieves product search results by query.

naftiko: '0.5'
info:
  label: Product Search Results
  description: Retrieves product search results by query.
  tags:
  - e-commerce
  - product-management
capability:
  exposes:
  - type: mcp
    namespace: e-commerce
    port: 8080
    tools:
    - name: get-product
      description: Retrieves product search results by query.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The product search results identifier.
      call: e-commerce-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: e-commerce-api
    baseUri: https://api.wayfair.com/e-commerce/v1
    authentication:
      type: bearer
      token: $secrets.wayfair_api_token
    resources:
    - name: product
      path: /product/search/results/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-product
        method: GET
Open in Framework → View in Fleet → product-search-results.yml

When inventory for a product drops below the reorder threshold, fetches supplier lead times, creates a purchase order in the procurement system, publishes a reorder event to Kafka, and notifies the supply chain team in Microsoft Teams.

naftiko: '0.5'
info:
  label: Inventory Reorder Orchestrator
  description: When inventory for a product drops below the reorder threshold, fetches supplier lead times, creates a purchase order in the procurement system, publishes a reorder event to Kafka, and notifies the supply chain team in Microsoft Teams.
  tags:
  - supply-chain
  - inventory-management
  - logistics
  - apache-kafka
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: inventory-reorder
    port: 8080
    tools:
    - name: trigger-reorder
      description: Given a SKU and current stock level, check the reorder threshold, fetch supplier lead time, create a purchase order, publish the event, and notify the team.
      inputParameters:
      - name: sku
        in: body
        type: string
        description: The product SKU that is low on inventory.
      - name: current_stock
        in: body
        type: number
        description: The current inventory quantity.
      - name: warehouse_id
        in: body
        type: string
        description: The warehouse ID where stock is low.
      steps:
      - name: get-product-details
        type: call
        call: catalog-api.get-product
        with:
          sku: '{{sku}}'
      - name: get-supplier-lead-time
        type: call
        call: supplier-api.get-lead-time
        with:
          supplier_id: '{{get-product-details.supplier_id}}'
          sku: '{{sku}}'
      - name: create-purchase-order
        type: call
        call: procurement-api.create-po
        with:
          supplier_id: '{{get-product-details.supplier_id}}'
          sku: '{{sku}}'
          quantity: '{{get-product-details.reorder_quantity}}'
          warehouse_id: '{{warehouse_id}}'
      - name: publish-reorder-event
        type: call
        call: kafka-bridge.publish-event
        with:
          topic: inventory.reorder.created
          key: '{{sku}}'
          payload: '{"sku":"{{sku}}","po_number":"{{create-purchase-order.po_number}}","quantity":"{{get-product-details.reorder_quantity}}","eta_days":{{get-supplier-lead-time.lead_days}}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          channel_id: supply-chain-ops
          text: 'Reorder Triggered: {{get-product-details.product_name}} ({{sku}}) | Current Stock: {{current_stock}} | PO: {{create-purchase-order.po_number}} | Qty: {{get-product-details.reorder_quantity}} | ETA: {{get-supplier-lead-time.lead_days}} days'
  consumes:
  - type: http
    namespace: catalog-api
    baseUri: https://catalog-api.wayfair.com/api/v2
    authentication:
      type: bearer
      token: $secrets.catalog_api_token
    resources:
    - name: products
      path: /products/{{sku}}
      inputParameters:
      - name: sku
        in: path
      operations:
      - name: get-product
        method: GET
  - type: http
    namespace: supplier-api
    baseUri: https://supplier-api.wayfair.com/api/v2
    authentication:
      type: bearer
      token: $secrets.supplier_api_token
    resources:
    - name: lead-times
      path: /suppliers/{{supplier_id}}/lead-times/{{sku}}
      inputParameters:
      - name: supplier_id
        in: path
      - name: sku
        in: path
      operations:
      - name: get-lead-time
        method: GET
  - type: http
    namespace: procurement-api
    baseUri: https://procurement-api.wayfair.com/api/v1
    authentication:
      type: bearer
      token: $secrets.procurement_api_token
    resources:
    - name: purchase-orders
      path: /purchase-orders
      operations:
      - name: create-po
        method: POST
  - type: http
    namespace: kafka-bridge
    baseUri: https://kafka-rest.wayfair.com/v2
    authentication:
      type: bearer
      token: $secrets.kafka_rest_token
    resources:
    - name: topics
      path: /topics/{{topic}}
      inputParameters:
      - name: topic
        in: path
      operations:
      - name: publish-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/wayfair-supply/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → inventory-reorder-orchestrator.yml

Collects product reviews from the reviews API, runs NLP topic extraction to identify common themes, updates the product search index with review sentiment, and creates a Jira ticket for products with declining ratings.

naftiko: '0.5'
info:
  label: Product Review Aggregation Pipeline
  description: Collects product reviews from the reviews API, runs NLP topic extraction to identify common themes, updates the product search index with review sentiment, and creates a Jira ticket for products with declining ratings.
  tags:
  - e-commerce
  - customer-experience
  - reviews
  - elasticsearch
  - jira
  - nlp
capability:
  exposes:
  - type: mcp
    namespace: review-analysis
    port: 8080
    tools:
    - name: analyze-product-reviews
      description: Given a SKU, aggregate recent reviews, extract common themes, update the search index with sentiment data, and flag declining products.
      inputParameters:
      - name: sku
        in: body
        type: string
        description: The product SKU to analyze.
      - name: review_period_days
        in: body
        type: number
        description: Number of days of reviews to analyze.
      steps:
      - name: get-reviews
        type: call
        call: reviews-api.get-product-reviews
        with:
          sku: '{{sku}}'
          days: '{{review_period_days}}'
      - name: extract-themes
        type: call
        call: ml-nlp.extract-topics
        with:
          texts: '{{get-reviews.review_texts}}'
          max_topics: '5'
      - name: update-search-index
        type: call
        call: es.update-product-sentiment
        with:
          sku: '{{sku}}'
          avg_rating: '{{get-reviews.average_rating}}'
          review_count: '{{get-reviews.total_count}}'
          top_themes: '{{extract-themes.topics}}'
          sentiment_score: '{{extract-themes.overall_sentiment}}'
      - name: flag-declining-product
        type: call
        call: jira.create-issue
        with:
          project: MERCH
          issue_type: Bug
          summary: 'Review Alert: {{sku}} — Avg Rating {{get-reviews.average_rating}}/5 ({{get-reviews.total_count}} reviews)'
          description: 'Product {{sku}} has an average rating of {{get-reviews.average_rating}}/5 over the last {{review_period_days}} days.

            Top themes: {{extract-themes.topics}}

            Sentiment: {{extract-themes.overall_sentiment}}

            Review count: {{get-reviews.total_count}}'
  consumes:
  - type: http
    namespace: reviews-api
    baseUri: https://reviews-api.wayfair.com/api/v1
    authentication:
      type: bearer
      token: $secrets.reviews_api_token
    resources:
    - name: reviews
      path: /products/{{sku}}/reviews
      inputParameters:
      - name: sku
        in: path
      operations:
      - name: get-product-reviews
        method: GET
  - type: http
    namespace: ml-nlp
    baseUri: https://ml-platform.wayfair.com/api/v1
    authentication:
      type: bearer
      token: $secrets.ml_platform_token
    resources:
    - name: topics
      path: /models/topic-extraction/predict
      operations:
      - name: extract-topics
        method: POST
  - type: http
    namespace: es
    baseUri: https://es-prod.wayfair.com
    authentication:
      type: basic
      username: $secrets.es_user
      password: $secrets.es_password
    resources:
    - name: products
      path: /products/_update/{{sku}}
      inputParameters:
      - name: sku
        in: path
      operations:
      - name: update-product-sentiment
        method: POST
  - type: http
    namespace: jira
    baseUri: https://wayfair.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → product-review-aggregation-pipeline.yml

Fetches recent brand mentions from Facebook and Instagram, runs NLP sentiment analysis, and creates a Salesforce case when negative sentiment spikes, with a summary posted to Microsoft Teams.

naftiko: '0.5'
info:
  label: Social Media Sentiment Monitor
  description: Fetches recent brand mentions from Facebook and Instagram, runs NLP sentiment analysis, and creates a Salesforce case when negative sentiment spikes, with a summary posted to Microsoft Teams.
  tags:
  - marketing
  - social-media
  - facebook
  - instagram
  - salesforce
  - microsoft-teams
  - nlp
capability:
  exposes:
  - type: mcp
    namespace: social-sentiment
    port: 8080
    tools:
    - name: monitor-brand-sentiment
      description: Fetch recent social mentions, analyze sentiment, create a Salesforce case on negative trends, and notify the brand team.
      inputParameters:
      - name: brand_keyword
        in: body
        type: string
        description: The brand keyword or hashtag to monitor.
      - name: lookback_hours
        in: body
        type: number
        description: Number of hours to look back for mentions.
      steps:
      - name: get-facebook-mentions
        type: call
        call: facebook.search-posts
        with:
          query: '{{brand_keyword}}'
          since_hours: '{{lookback_hours}}'
      - name: get-instagram-mentions
        type: call
        call: instagram.search-hashtag
        with:
          hashtag: '{{brand_keyword}}'
      - name: analyze-sentiment
        type: call
        call: ml-nlp.analyze-sentiment
        with:
          texts: '{{get-facebook-mentions.post_texts}},{{get-instagram-mentions.caption_texts}}'
      - name: create-case
        type: call
        call: salesforce.create-case
        with:
          subject: 'Social Sentiment Alert: {{brand_keyword}} — Score {{analyze-sentiment.average_score}}'
          description: 'Sentiment analysis for ''{{brand_keyword}}'' over last {{lookback_hours}}h: Avg Score: {{analyze-sentiment.average_score}}/10. Negative mentions: {{analyze-sentiment.negative_count}}. Facebook posts: {{get-facebook-mentions.count}}. Instagram posts: {{get-instagram-mentions.count}}.'
          priority: High
      - name: notify-brand-team
        type: call
        call: msteams.send-channel-message
        with:
          channel_id: brand-monitoring
          text: 'Social Sentiment Alert: ''{{brand_keyword}}'' avg score {{analyze-sentiment.average_score}}/10 ({{analyze-sentiment.negative_count}} negative). Salesforce case: {{create-case.case_number}}'
  consumes:
  - type: http
    namespace: facebook
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.facebook_page_token
    resources:
    - name: search
      path: /search
      operations:
      - name: search-posts
        method: GET
  - type: http
    namespace: instagram
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.instagram_token
    resources:
    - name: hashtags
      path: /ig_hashtag_search
      operations:
      - name: search-hashtag
        method: GET
  - type: http
    namespace: ml-nlp
    baseUri: https://ml-platform.wayfair.com/api/v1
    authentication:
      type: bearer
      token: $secrets.ml_platform_token
    resources:
    - name: sentiment
      path: /models/sentiment-analysis/predict
      operations:
      - name: analyze-sentiment
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://wayfair.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/wayfair-marketing/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → social-media-sentiment-monitor.yml

After order delivery, sends a CSAT survey via Google Forms, waits for the response webhook, and updates the customer record with the satisfaction score and routes negative feedback to Zendesk.

naftiko: '0.5'
info:
  label: Customer Satisfaction Survey Pipeline
  description: After order delivery, sends a CSAT survey via Google Forms, waits for the response webhook, and updates the customer record with the satisfaction score and routes negative feedback to Zendesk.
  tags:
  - customer-experience
  - feedback
  - google-forms
  - zendesk
  - mailchimp
capability:
  exposes:
  - type: mcp
    namespace: csat-survey
    port: 8080
    tools:
    - name: send-post-delivery-survey
      description: Given an order ID and customer email, send a CSAT survey and route the response to the appropriate channel.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The delivered order ID.
      - name: customer_email
        in: body
        type: string
        description: The customer email address.
      - name: customer_name
        in: body
        type: string
        description: The customer first name.
      steps:
      - name: get-order
        type: call
        call: orders-api.get-order
        with:
          order_id: '{{order_id}}'
      - name: send-survey-email
        type: call
        call: mailchimp.send-transactional
        with:
          template_name: Cat-survey
          email: '{{customer_email}}'
          merge_vars: '{"FIRST_NAME":"{{customer_name}}","ORDER_ID":"{{order_id}}","PRODUCT_NAME":"{{get-order.primary_product_name}}","SURVEY_URL":"https://forms.wayfair.com/csat/{{order_id}}"}'
      - name: create-feedback-ticket
        type: call
        call: zendesk.create-ticket
        with:
          subject: 'Post-Delivery CSAT Follow-up: Order {{order_id}}'
          description: Survey sent to {{customer_email}} for order {{order_id}} ({{get-order.primary_product_name}}). Monitor for negative responses.
          tags: csat,post-delivery,{{order_id}}
          priority: low
  consumes:
  - type: http
    namespace: orders-api
    baseUri: https://orders-api.wayfair.com/api/v2
    authentication:
      type: bearer
      token: $secrets.orders_api_token
    resources:
    - name: orders
      path: /orders/{{order_id}}
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-order
        method: GET
  - 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
  - type: http
    namespace: zendesk
    baseUri: https://wayfair.zendesk.com/api/v2
    authentication:
      type: bearer
      token: $secrets.zendesk_token
    resources:
    - name: tickets
      path: /tickets.json
      operations:
      - name: create-ticket
        method: POST
Open in Framework → View in Fleet → customer-satisfaction-survey-pipeline.yml

Orchestrates e commerce workflow 14 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: E Commerce Workflow 14
  description: Orchestrates e commerce workflow 14 by coordinating across systems, validating data, and sending notifications.
  tags:
  - e
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: e
    port: 8080
    tools:
    - name: run-e-commerce-workflow-014
      description: Orchestrates e commerce 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 E Commerce Workflow 14 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.wayfair.com/v1
    authentication:
      type: bearer
      token: $secrets.wayfair_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.wayfair.com/v2
    authentication:
      type: bearer
      token: $secrets.wayfair_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
Open in Framework → View in Fleet → e-commerce-workflow-14.yml

Orchestrates e commerce workflow 1 by coordinating across systems, validating data, and sending notifications.

naftiko: '0.5'
info:
  label: E Commerce Workflow 1
  description: Orchestrates e commerce workflow 1 by coordinating across systems, validating data, and sending notifications.
  tags:
  - e
  - operations
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: e
    port: 8080
    tools:
    - name: run-e-commerce-workflow-001
      description: Orchestrates e commerce 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 E Commerce Workflow 1 for request {{request_id}}.
  consumes:
  - type: http
    namespace: primary-api
    baseUri: https://api.wayfair.com/v1
    authentication:
      type: bearer
      token: $secrets.wayfair_api_token
    resources:
    - name: primary
      path: /process
      operations:
      - name: initiate
        method: POST
  - type: http
    namespace: secondary-api
    baseUri: https://api.wayfair.com/v2
    authentication:
      type: bearer
      token: $secrets.wayfair_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
Open in Framework → View in Fleet → e-commerce-workflow-1.yml

Retrieves e commerce operational data for workflow 15.

naftiko: '0.5'
info:
  label: E Commerce Data Query 15
  description: Retrieves e commerce operational data for workflow 15.
  tags:
  - e
  - operations
capability:
  exposes:
  - type: mcp
    namespace: e
    port: 8080
    tools:
    - name: get-data-15
      description: Query e commerce data for workflow 15.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The entity identifier.
      call: e-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: e-api
    baseUri: https://api.wayfair.com/e-commerce/v1
    authentication:
      type: bearer
      token: $secrets.wayfair_api_token
    resources:
    - name: data
      path: /data/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-data-15
        method: GET
Open in Framework → View in Fleet → e-commerce-data-query-15.yml

When a shipment status changes, updates the order tracking in the orders API, sends a delivery status email to the customer via MailChimp, and updates the Zendesk ticket if one exists for the order.

naftiko: '0.5'
info:
  label: Delivery Tracking Notification Pipeline
  description: When a shipment status changes, updates the order tracking in the orders API, sends a delivery status email to the customer via MailChimp, and updates the Zendesk ticket if one exists for the order.
  tags:
  - logistics
  - e-commerce
  - shipping
  - mailchimp
  - zendesk
capability:
  exposes:
  - type: mcp
    namespace: delivery-tracking
    port: 8080
    tools:
    - name: process-tracking-update
      description: Given an order ID, tracking number, and new status, update the order, notify the customer, and update any associated support ticket.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The Wayfair order ID.
      - name: tracking_number
        in: body
        type: string
        description: The carrier tracking number.
      - name: new_status
        in: body
        type: string
        description: The new shipment status (e.g., in_transit, out_for_delivery, delivered).
      steps:
      - name: get-order
        type: call
        call: orders-api.get-order
        with:
          order_id: '{{order_id}}'
      - name: update-tracking
        type: call
        call: orders-api.update-tracking
        with:
          order_id: '{{order_id}}'
          tracking_number: '{{tracking_number}}'
          status: '{{new_status}}'
      - name: send-status-email
        type: call
        call: mailchimp.send-transactional
        with:
          template_name: delivery-status-update
          email: '{{get-order.customer_email}}'
          merge_vars: '{"FIRST_NAME":"{{get-order.customer_name}}","ORDER_ID":"{{order_id}}","STATUS":"{{new_status}}","TRACKING":"{{tracking_number}}"}'
      - name: update-support-ticket
        type: call
        call: zendesk.search-and-update
        with:
          query: type:ticket tags:order_{{order_id}}
          comment: 'Shipment status updated to {{new_status}}. Tracking: {{tracking_number}}'
  consumes:
  - type: http
    namespace: orders-api
    baseUri: https://orders-api.wayfair.com/api/v2
    authentication:
      type: bearer
      token: $secrets.orders_api_token
    resources:
    - name: orders
      path: /orders/{{order_id}}
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-order
        method: GET
    - name: tracking
      path: /orders/{{order_id}}/tracking
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: update-tracking
        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
  - type: http
    namespace: zendesk
    baseUri: https://wayfair.zendesk.com/api/v2
    authentication:
      type: bearer
      token: $secrets.zendesk_token
    resources:
    - name: search
      path: /search.json
      operations:
      - name: search-and-update
        method: GET
Open in Framework → View in Fleet → delivery-tracking-notification-pipeline.yml

Fetches a customer's browsing history, runs the TensorFlow recommendation model, updates the personalization cache in Redis, and logs the recommendation event to Kafka for analytics.

naftiko: '0.5'
info:
  label: Personalized Recommendation Pipeline
  description: Fetches a customer's browsing history, runs the TensorFlow recommendation model, updates the personalization cache in Redis, and logs the recommendation event to Kafka for analytics.
  tags:
  - e-commerce
  - personalization
  - machine-learning
  - tensorflow
  - redis
  - apache-kafka
capability:
  exposes:
  - type: mcp
    namespace: recommendations
    port: 8080
    tools:
    - name: generate-recommendations
      description: Given a customer ID, fetch browsing history, generate ML recommendations, update the Redis personalization cache, and publish a recommendation event to Kafka.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The Wayfair customer ID.
      - name: page_context
        in: body
        type: string
        description: The current page context (e.g., homepage, category, pdp).
      - name: num_recommendations
        in: body
        type: number
        description: Number of product recommendations to generate.
      steps:
      - name: get-browsing-history
        type: call
        call: customer-api.get-browsing-history
        with:
          customer_id: '{{customer_id}}'
          limit: '50'
      - name: run-model
        type: call
        call: ml-reco.predict
        with:
          customer_id: '{{customer_id}}'
          browsing_history: '{{get-browsing-history.viewed_skus}}'
          context: '{{page_context}}'
          count: '{{num_recommendations}}'
      - name: cache-results
        type: call
        call: redis-api.set-key
        with:
          cache_key: reco:{{customer_id}}:{{page_context}}
          value: '{{run-model.recommended_skus}}'
          ttl: '3600'
      - name: publish-event
        type: call
        call: kafka-bridge.publish-event
        with:
          topic: recommendations.generated
          key: '{{customer_id}}'
          payload: '{"customer_id":"{{customer_id}}","context":"{{page_context}}","model_version":"{{run-model.model_version}}","sku_count":{{num_recommendations}}}'
  consumes:
  - type: http
    namespace: customer-api
    baseUri: https://customer-api.wayfair.com/api/v2
    authentication:
      type: bearer
      token: $secrets.customer_api_token
    resources:
    - name: browsing-history
      path: /customers/{{customer_id}}/browsing-history
      inputParameters:
      - name: customer_id
        in: path
      operations:
      - name: get-browsing-history
        method: GET
  - type: http
    namespace: ml-reco
    baseUri: https://ml-platform.wayfair.com/api/v1
    authentication:
      type: bearer
      token: $secrets.ml_platform_token
    resources:
    - name: recommendations
      path: /models/product-reco/predict
      operations:
      - name: predict
        method: POST
  - type: http
    namespace: redis-api
    baseUri: https://redis-gateway.wayfair.com/api/v1
    authentication:
      type: bearer
      token: $secrets.redis_gateway_token
    resources:
    - name: keys
      path: /keys/{{cache_key}}
      inputParameters:
      - name: cache_key
        in: path
      operations:
      - name: set-key
        method: PUT
  - type: http
    namespace: kafka-bridge
    baseUri: https://kafka-rest.wayfair.com/v2
    authentication:
      type: bearer
      token: $secrets.kafka_rest_token
    resources:
    - name: topics
      path: /topics/{{topic}}
      inputParameters:
      - name: topic
        in: path
      operations:
      - name: publish-event
        method: POST
Open in Framework → View in Fleet → personalized-recommendation-pipeline.yml

Retrieves real-time page view and session metrics from Google Analytics for a given product page URL. Used by merchandising and marketing teams to gauge product interest without accessing the GA console.

naftiko: '0.5'
info:
  label: Google Analytics Page View Lookup
  description: Retrieves real-time page view and session metrics from Google Analytics for a given product page URL. Used by merchandising and marketing teams to gauge product interest without accessing the GA console.
  tags:
  - analytics
  - marketing
  - google-analytics
capability:
  exposes:
  - type: mcp
    namespace: web-analytics
    port: 8080
    tools:
    - name: get-page-metrics
      description: Given a product page path, return real-time page views, unique visitors, average session duration, and bounce rate from Google Analytics.
      inputParameters:
      - name: page_path
        in: body
        type: string
        description: The relative URL path of the product page (e.g., /furniture/sofas/sku-12345).
      - name: date_range
        in: body
        type: string
        description: Date range in YYYY-MM-DD:YYYY-MM-DD format.
      call: ga.get-report
      with:
        page_path: '{{page_path}}'
        date_range: '{{date_range}}'
      outputParameters:
      - name: page_views
        type: number
        mapping: $.reports[0].data.totals[0].values[0]
      - name: unique_visitors
        type: number
        mapping: $.reports[0].data.totals[0].values[1]
      - name: avg_session_duration
        type: string
        mapping: $.reports[0].data.totals[0].values[2]
      - name: bounce_rate
        type: string
        mapping: $.reports[0].data.totals[0].values[3]
  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-report
        method: POST
Open in Framework → View in Fleet → google-analytics-page-view-lookup.yml

Triggers a security scan on a Docker container image, queries SonarQube for dependency vulnerabilities, creates a Jira security ticket for critical findings, and alerts the security team in Microsoft Teams.

naftiko: '0.5'
info:
  label: Docker Container Security Scan Pipeline
  description: Triggers a security scan on a Docker container image, queries SonarQube for dependency vulnerabilities, creates a Jira security ticket for critical findings, and alerts the security team in Microsoft Teams.
  tags:
  - security
  - engineering
  - docker
  - sonarqube
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: container-security
    port: 8080
    tools:
    - name: scan-container-image
      description: Given a Docker image tag, scan for vulnerabilities, check SonarQube for dependency issues, create a Jira ticket for critical findings, and alert the security team.
      inputParameters:
      - name: image_tag
        in: body
        type: string
        description: The Docker image tag to scan (e.g., registry.wayfair.com/storefront:v2.3.1).
      - name: repository
        in: body
        type: string
        description: The source code repository for SonarQube lookup.
      steps:
      - name: scan-image
        type: call
        call: container-scan.scan-image
        with:
          image: '{{image_tag}}'
      - name: get-sonar-vulns
        type: call
        call: sonarqube.get-vulnerabilities
        with:
          project_key: '{{repository}}'
          severities: CRITICAL,BLOCKER
      - name: create-security-ticket
        type: call
        call: jira.create-issue
        with:
          project: SEC
          issue_type: Bug
          summary: 'Container Security: {{image_tag}} — {{scan-image.critical_count}} critical vulnerabilities'
          description: 'Image: {{image_tag}}

            Critical CVEs: {{scan-image.critical_count}}

            High CVEs: {{scan-image.high_count}}

            SonarQube Critical Issues: {{get-sonar-vulns.total}}

            Top CVE: {{scan-image.top_cve}}'
          priority: Critical
      - name: alert-security
        type: call
        call: msteams.send-channel-message
        with:
          channel_id: security-alerts
          text: 'Container Security Alert: {{image_tag}} | Critical: {{scan-image.critical_count}} | High: {{scan-image.high_count}} | Jira: {{create-security-ticket.key}}'
  consumes:
  - type: http
    namespace: container-scan
    baseUri: https://security-scan.wayfair.com/api/v1
    authentication:
      type: bearer
      token: $secrets.security_scan_token
    resources:
    - name: scans
      path: /scans
      operations:
      - name: scan-image
        method: POST
  - type: http
    namespace: sonarqube
    baseUri: https://sonarqube.wayfair.com/api
    authentication:
      type: bearer
      token: $secrets.sonarqube_token
    resources:
    - name: issues
      path: /issues/search
      operations:
      - name: get-vulnerabilities
        method: GET
  - type: http
    namespace: jira
    baseUri: https://wayfair.atlassian.net/rest/api/3
    authentication:
      type: 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/wayfair-security/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → docker-container-security-scan-pipeline.yml

Fetches experiment results from the internal experimentation platform, pulls conversion metrics from Google Analytics, computes statistical significance, and creates a summary Jira ticket for the product team.

naftiko: '0.5'
info:
  label: A/B Test Results Analyzer
  description: Fetches experiment results from the internal experimentation platform, pulls conversion metrics from Google Analytics, computes statistical significance, and creates a summary Jira ticket for the product team.
  tags:
  - e-commerce
  - experimentation
  - google-analytics
  - jira
  - data-science
capability:
  exposes:
  - type: mcp
    namespace: experiment-analysis
    port: 8080
    tools:
    - name: analyze-experiment
      description: Given an experiment ID, fetch results from the experimentation platform, pull GA conversion data, and create a Jira summary ticket.
      inputParameters:
      - name: experiment_id
        in: body
        type: string
        description: The internal experiment/A/B test ID.
      - name: primary_metric
        in: body
        type: string
        description: The primary success metric to evaluate (e.g., conversion_rate, revenue_per_session).
      steps:
      - name: get-experiment
        type: call
        call: experimentation-api.get-experiment
        with:
          experiment_id: '{{experiment_id}}'
      - name: get-ga-conversions
        type: call
        call: ga.get-experiment-report
        with:
          experiment_id: '{{experiment_id}}'
          metric: '{{primary_metric}}'
      - name: create-results-ticket
        type: call
        call: jira.create-issue
        with:
          project: EXP
          issue_type: Story
          summary: 'Experiment Results: {{get-experiment.name}} — {{get-experiment.status}}'
          description: 'Experiment: {{get-experiment.name}}

            Variants: {{get-experiment.variant_count}}

            Traffic Split: {{get-experiment.traffic_pct}}%

            Primary Metric ({{primary_metric}}): Control={{get-ga-conversions.control_value}}, Treatment={{get-ga-conversions.treatment_value}}

            Lift: {{get-ga-conversions.lift_pct}}%

            Statistical Significance: {{get-ga-conversions.p_value}}'
  consumes:
  - type: http
    namespace: experimentation-api
    baseUri: https://experimentation.wayfair.com/api/v1
    authentication:
      type: bearer
      token: $secrets.experimentation_token
    resources:
    - name: experiments
      path: /experiments/{{experiment_id}}
      inputParameters:
      - name: experiment_id
        in: path
      operations:
      - name: get-experiment
        method: GET
  - 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-experiment-report
        method: POST
  - type: http
    namespace: jira
    baseUri: https://wayfair.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → a-b-test-results-analyzer.yml

Queries the Wayfair supplier management PostgreSQL database for a supplier record by supplier ID. Returns company name, onboarding status, payment terms, and primary contact.

naftiko: '0.5'
info:
  label: PostgreSQL Supplier Record Lookup
  description: Queries the Wayfair supplier management PostgreSQL database for a supplier record by supplier ID. Returns company name, onboarding status, payment terms, and primary contact.
  tags:
  - supply-chain
  - supplier-management
  - postgresql
capability:
  exposes:
  - type: mcp
    namespace: supplier-data
    port: 8080
    tools:
    - name: get-supplier
      description: Look up a supplier by ID from the supplier management database. Returns company name, status, payment terms, and contact info.
      inputParameters:
      - name: supplier_id
        in: body
        type: string
        description: The internal Wayfair supplier ID.
      call: supplier-db.get-supplier
      with:
        supplier_id: '{{supplier_id}}'
      outputParameters:
      - name: company_name
        type: string
        mapping: $.supplier.company_name
      - name: onboarding_status
        type: string
        mapping: $.supplier.status
      - name: payment_terms
        type: string
        mapping: $.supplier.payment_terms
      - name: primary_contact_email
        type: string
        mapping: $.supplier.primary_contact.email
  consumes:
  - type: http
    namespace: supplier-db
    baseUri: https://supplier-api.wayfair.com/api/v2
    authentication:
      type: bearer
      token: $secrets.supplier_api_token
    resources:
    - name: suppliers
      path: /suppliers/{{supplier_id}}
      inputParameters:
      - name: supplier_id
        in: path
      operations:
      - name: get-supplier
        method: GET
Open in Framework → View in Fleet → postgresql-supplier-record-lookup.yml

Evaluates a customer's loyalty tier by fetching order history, calculating lifetime spend, updating the customer tier in the CRM, and sending a tier notification email through MailChimp.

naftiko: '0.5'
info:
  label: Customer Loyalty Tier Evaluation
  description: Evaluates a customer's loyalty tier by fetching order history, calculating lifetime spend, updating the customer tier in the CRM, and sending a tier notification email through MailChimp.
  tags:
  - e-commerce
  - customer-experience
  - loyalty
  - salesforce
  - mailchimp
capability:
  exposes:
  - type: mcp
    namespace: loyalty-program
    port: 8080
    tools:
    - name: evaluate-loyalty-tier
      description: Given a customer ID, calculate lifetime spend, determine the loyalty tier, update the CRM, and send a notification email.
      inputParameters:
      - name: customer_id
        in: body
        type: string
        description: The Wayfair customer ID.
      steps:
      - name: get-order-history
        type: call
        call: orders-api.get-customer-orders
        with:
          customer_id: '{{customer_id}}'
      - name: get-customer
        type: call
        call: customer-api.get-customer
        with:
          customer_id: '{{customer_id}}'
      - name: update-crm-tier
        type: call
        call: salesforce.update-contact
        with:
          contact_id: '{{get-customer.salesforce_id}}'
          loyalty_tier: '{{get-order-history.calculated_tier}}'
          lifetime_value: '{{get-order-history.lifetime_spend}}'
      - name: send-tier-email
        type: call
        call: mailchimp.send-transactional
        with:
          template_name: loyalty-tier-update
          email: '{{get-customer.email}}'
          merge_vars: '{"FIRST_NAME":"{{get-customer.first_name}}","NEW_TIER":"{{get-order-history.calculated_tier}}","LIFETIME_SPEND":"{{get-order-history.lifetime_spend}}","BENEFITS_URL":"https://www.wayfair.com/loyalty/{{get-order-history.calculated_tier}}"}'
  consumes:
  - type: http
    namespace: orders-api
    baseUri: https://orders-api.wayfair.com/api/v2
    authentication:
      type: bearer
      token: $secrets.orders_api_token
    resources:
    - name: customer-orders
      path: /customers/{{customer_id}}/orders
      inputParameters:
      - name: customer_id
        in: path
      operations:
      - name: get-customer-orders
        method: GET
  - type: http
    namespace: customer-api
    baseUri: https://customer-api.wayfair.com/api/v2
    authentication:
      type: bearer
      token: $secrets.customer_api_token
    resources:
    - name: customers
      path: /customers/{{customer_id}}
      inputParameters:
      - name: customer_id
        in: path
      operations:
      - name: get-customer
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://wayfair.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: 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
Open in Framework → View in Fleet → customer-loyalty-tier-evaluation.yml

When a Datadog alert fires, creates a ServiceNow incident, posts an alert to the Microsoft Teams on-call channel, and pages the on-call engineer via Twilio SMS.

naftiko: '0.5'
info:
  label: Incident Response Orchestrator
  description: When a Datadog alert fires, creates a ServiceNow incident, posts an alert to the Microsoft Teams on-call channel, and pages the on-call engineer via Twilio SMS.
  tags:
  - operations
  - incident-response
  - datadog
  - servicenow
  - microsoft-teams
  - twilio
capability:
  exposes:
  - type: mcp
    namespace: incident-response
    port: 8080
    tools:
    - name: trigger-incident-response
      description: Given a Datadog alert ID and on-call engineer phone number, create a ServiceNow incident, alert the Teams channel, and send an SMS page.
      inputParameters:
      - name: alert_id
        in: body
        type: string
        description: The Datadog alert/monitor ID that triggered.
      - name: service_name
        in: body
        type: string
        description: The affected service name.
      - name: oncall_phone
        in: body
        type: string
        description: The on-call engineer phone number in E.164 format.
      steps:
      - name: get-alert
        type: call
        call: datadog.get-monitor
        with:
          monitor_id: '{{alert_id}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'P1 Alert: {{service_name}} — {{get-alert.name}}'
          description: 'Datadog monitor {{alert_id}} triggered for {{service_name}}. Message: {{get-alert.message}}. Status: {{get-alert.overall_state}}'
          urgency: '1'
          category: infrastructure
          assigned_group: SRE_OnCall
      - name: alert-teams
        type: call
        call: msteams.send-channel-message
        with:
          channel_id: sre-incidents
          text: 'INCIDENT: {{service_name}} | {{get-alert.name}} | ServiceNow: {{create-incident.number}} | Monitor: {{get-alert.overall_state}}'
      - name: page-oncall
        type: call
        call: twilio.send-sms
        with:
          to: '{{oncall_phone}}'
          body: 'P1 INCIDENT: {{service_name}} — {{get-alert.name}}. INC: {{create-incident.number}}. Respond 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://wayfair.service-now.com/api/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/wayfair-eng/channels/{{channel_id}}/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
  - type: http
    namespace: twilio
    baseUri: https://api.twilio.com/2010-04-01
    authentication:
      type: basic
      username: $secrets.twilio_account_sid
      password: $secrets.twilio_auth_token
    resources:
    - name: messages
      path: /Accounts/$secrets.twilio_account_sid/Messages.json
      operations:
      - name: send-sms
        method: POST
Open in Framework → View in Fleet → incident-response-orchestrator.yml

Aggregates supplier delivery metrics from the warehouse API, fetches quality scores from the supplier scorecard, pulls customer complaint data from Zendesk, and compiles a performance report in Google Drive.

naftiko: '0.5'
info:
  label: Supplier Performance Review Orchestrator
  description: Aggregates supplier delivery metrics from the warehouse API, fetches quality scores from the supplier scorecard, pulls customer complaint data from Zendesk, and compiles a performance report in Google Drive.
  tags:
  - supply-chain
  - supplier-management
  - zendesk
  - google-drive
  - quality-assurance
capability:
  exposes:
  - type: mcp
    namespace: supplier-performance
    port: 8080
    tools:
    - name: generate-supplier-review
      description: Given a supplier ID and review period, aggregate delivery metrics, quality scores, customer complaints, and compile a performance report in Google Drive.
      inputParameters:
      - name: supplier_id
        in: body
        type: string
        description: The Wayfair supplier ID.
      - name: period_start
        in: body
        type: string
        description: Review period start date (YYYY-MM-DD).
      - name: period_end
        in: body
        type: string
        description: Review period end date (YYYY-MM-DD).
      steps:
      - name: get-delivery-metrics
        type: call
        call: warehouse-api.get-supplier-metrics
        with:
          supplier_id: '{{supplier_id}}'
          start_date: '{{period_start}}'
          end_date: '{{period_end}}'
      - name: get-quality-scores
        type: call
        call: supplier-api.get-scorecard
        with:
          supplier_id: '{{supplier_id}}'
          period: '{{period_start}}_{{period_end}}'
      - name: get-complaints
        type: call
        call: zendesk.search-tickets
        with:
          query: type:ticket tags:supplier_{{supplier_id}} created>{{period_start}} created<{{period_end}}
      - name: create-report
        type: call
        call: gdrive.create-document
        with:
          title: Supplier Performance Review — {{get-quality-scores.supplier_name}} — {{period_start}} to {{period_end}}
          folder_id: supplier_reviews
          content: 'On-Time Delivery: {{get-delivery-metrics.on_time_rate}}% | Damage Rate: {{get-delivery-metrics.damage_rate}}% | Quality Score: {{get-quality-scores.overall_score}}/100 | Customer Complaints: {{get-complaints.count}} | Fill Rate: {{get-delivery-metrics.fill_rate}}%'
  consumes:
  - type: http
    namespace: warehouse-api
    baseUri: https://warehouse-api.wayfair.com/api/v2
    authentication:
      type: bearer
      token: $secrets.warehouse_api_token
    resources:
    - name: supplier-metrics
      path: /suppliers/{{supplier_id}}/metrics
      inputParameters:
      - name: supplier_id
        in: path
      operations:
      - name: get-supplier-metrics
        method: GET
  - type: http
    namespace: supplier-api
    baseUri: https://supplier-api.wayfair.com/api/v2
    authentication:
      type: bearer
      token: $secrets.supplier_api_token
    resources:
    - name: scorecards
      path: /suppliers/{{supplier_id}}/scorecard
      inputParameters:
      - name: supplier_id
        in: path
      operations:
      - name: get-scorecard
        method: GET
  - type: http
    namespace: zendesk
    baseUri: https://wayfair.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: gdrive
    baseUri: https://www.googleapis.com/drive/v3
    authentication:
      type: bearer
      token: $secrets.google_drive_token
    resources:
    - name: files
      path: /files
      operations:
      - name: create-document
        method: POST
Open in Framework → View in Fleet → supplier-performance-review-orchestrator.yml

When a new supplier is approved, creates the supplier record in the supplier management system, provisions a SharePoint document folder, sends onboarding instructions via email, and opens a Jira onboarding task for the supplier ops team.

naftiko: '0.5'
info:
  label: Supplier Onboarding Pipeline
  description: When a new supplier is approved, creates the supplier record in the supplier management system, provisions a SharePoint document folder, sends onboarding instructions via email, and opens a Jira onboarding task for the supplier ops team.
  tags:
  - supply-chain
  - supplier-management
  - sharepoint
  - jira
  - mailchimp
  - onboarding
capability:
  exposes:
  - type: mcp
    namespace: supplier-onboarding
    port: 8080
    tools:
    - name: onboard-supplier
      description: Given supplier details, create the supplier record, provision a SharePoint folder, send onboarding email, and open a Jira task for supplier ops.
      inputParameters:
      - name: supplier_name
        in: body
        type: string
        description: The supplier company name.
      - name: contact_email
        in: body
        type: string
        description: The primary contact email for the supplier.
      - name: category
        in: body
        type: string
        description: The product category the supplier will fulfill (e.g., outdoor-furniture, lighting).
      steps:
      - name: create-supplier
        type: call
        call: supplier-api.create-supplier
        with:
          supplier_name: '{{supplier_name}}'
          contact_email: '{{contact_email}}'
          category: '{{category}}'
      - name: provision-folder
        type: call
        call: sharepoint.create-folder
        with:
          site_id: supplier_portal
          folder_path: Suppliers/{{supplier_name}}_{{create-supplier.supplier_id}}
      - name: send-onboarding-email
        type: call
        call: mailchimp.send-transactional
        with:
          template_name: supplier-onboarding
          email: '{{contact_email}}'
          merge_vars: '{"SUPPLIER_NAME":"{{supplier_name}}","PORTAL_URL":"{{provision-folder.url}}","SUPPLIER_ID":"{{create-supplier.supplier_id}}"}'
      - name: create-jira-task
        type: call
        call: jira.create-issue
        with:
          project: SUPOPS
          issue_type: Task
          summary: 'Onboard new supplier: {{supplier_name}} ({{category}})'
          description: 'Supplier ID: {{create-supplier.supplier_id}}

            Contact: {{contact_email}}

            SharePoint: {{provision-folder.url}}'
  consumes:
  - type: http
    namespace: supplier-api
    baseUri: https://supplier-api.wayfair.com/api/v2
    authentication:
      type: bearer
      token: $secrets.supplier_api_token
    resources:
    - name: suppliers
      path: /suppliers
      operations:
      - name: create-supplier
        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: 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
  - type: http
    namespace: jira
    baseUri: https://wayfair.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → supplier-onboarding-pipeline.yml

Retrieves a Jira issue by key and returns summary, status, assignee, priority, and sprint information. Used across engineering and product teams for quick status checks.

naftiko: '0.5'
info:
  label: Jira Ticket Lookup
  description: Retrieves a Jira issue by key and returns summary, status, assignee, priority, and sprint information. Used across engineering and product teams for quick status checks.
  tags:
  - engineering
  - 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, priority, and current sprint name.
      inputParameters:
      - name: issue_key
        in: body
        type: string
        description: The Jira issue key (e.g., STOR-1234, SHIP-567).
      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://wayfair.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
Open in Framework → View in Fleet → jira-ticket-lookup.yml

Fetches competitor pricing data from Circana, runs the ML pricing model to calculate optimal price, updates the product price in the catalog API, and logs the change to Google Analytics as a custom event.

naftiko: '0.5'
info:
  label: Dynamic Pricing Update Pipeline
  description: Fetches competitor pricing data from Circana, runs the ML pricing model to calculate optimal price, updates the product price in the catalog API, and logs the change to Google Analytics as a custom event.
  tags:
  - e-commerce
  - pricing
  - machine-learning
  - circana
  - google-analytics
capability:
  exposes:
  - type: mcp
    namespace: dynamic-pricing
    port: 8080
    tools:
    - name: update-product-price
      description: Given a SKU, fetch competitor pricing intelligence, run the ML pricing model, update the catalog price, and log the change to GA.
      inputParameters:
      - name: sku
        in: body
        type: string
        description: The product SKU to reprice.
      - name: current_price
        in: body
        type: number
        description: The current listed price.
      - name: category
        in: body
        type: string
        description: The product category for competitive analysis.
      steps:
      - name: get-competitor-pricing
        type: call
        call: circana.get-pricing-data
        with:
          category: '{{category}}'
          sku: '{{sku}}'
      - name: calculate-optimal-price
        type: call
        call: ml-pricing.predict-price
        with:
          sku: '{{sku}}'
          current_price: '{{current_price}}'
          competitor_avg: '{{get-competitor-pricing.average_price}}'
          competitor_min: '{{get-competitor-pricing.min_price}}'
          demand_score: '{{get-competitor-pricing.demand_index}}'
      - name: update-catalog-price
        type: call
        call: catalog-api.update-price
        with:
          sku: '{{sku}}'
          new_price: '{{calculate-optimal-price.recommended_price}}'
          effective_date: '{{calculate-optimal-price.effective_date}}'
      - name: log-price-change
        type: call
        call: ga.send-event
        with:
          category: pricing
          action: price_update
          label: '{{sku}}'
          value: '{{calculate-optimal-price.recommended_price}}'
  consumes:
  - type: http
    namespace: circana
    baseUri: https://api.circana.com/v2
    authentication:
      type: bearer
      token: $secrets.circana_token
    resources:
    - name: pricing
      path: /pricing/competitive-analysis
      operations:
      - name: get-pricing-data
        method: POST
  - type: http
    namespace: ml-pricing
    baseUri: https://ml-platform.wayfair.com/api/v1
    authentication:
      type: bearer
      token: $secrets.ml_platform_token
    resources:
    - name: pricing-model
      path: /models/dynamic-pricing/predict
      operations:
      - name: predict-price
        method: POST
  - type: http
    namespace: catalog-api
    baseUri: https://catalog-api.wayfair.com/api/v2
    authentication:
      type: bearer
      token: $secrets.catalog_api_token
    resources:
    - name: products
      path: /products/{{sku}}/price
      inputParameters:
      - name: sku
        in: path
      operations:
      - name: update-price
        method: PUT
  - type: http
    namespace: ga
    baseUri: https://www.google-analytics.com
    authentication:
      type: bearer
      token: $secrets.google_analytics_token
    resources:
    - name: collect
      path: /mp/collect
      operations:
      - name: send-event
        method: POST
Open in Framework → View in Fleet → dynamic-pricing-update-pipeline.yml

Fetches recent GitHub Actions workflow run data, queries SonarQube for code quality metrics, pulls deployment frequency from the internal deploy tracker, and compiles a weekly engineering health report in Google Drive.

naftiko: '0.5'
info:
  label: CI/CD Pipeline Health Dashboard
  description: Fetches recent GitHub Actions workflow run data, queries SonarQube for code quality metrics, pulls deployment frequency from the internal deploy tracker, and compiles a weekly engineering health report in Google Drive.
  tags:
  - engineering
  - ci-cd
  - github-actions
  - sonarqube
  - google-drive
capability:
  exposes:
  - type: mcp
    namespace: cicd-health
    port: 8080
    tools:
    - name: generate-pipeline-health-report
      description: Given a repository name and date range, compile CI/CD pipeline metrics, code quality data, and deployment frequency into a report.
      inputParameters:
      - name: repository
        in: body
        type: string
        description: The GitHub repository (e.g., wayfair-incubator/storefront).
      - name: start_date
        in: body
        type: string
        description: Report start date (YYYY-MM-DD).
      - name: end_date
        in: body
        type: string
        description: Report end date (YYYY-MM-DD).
      steps:
      - name: get-workflow-runs
        type: call
        call: github.list-workflow-runs
        with:
          repository: '{{repository}}'
          created: '{{start_date}}..{{end_date}}'
      - name: get-code-quality
        type: call
        call: sonarqube.get-project-measures
        with:
          project_key: '{{repository}}'
          metrics: bugs,vulnerabilities,code_smells,coverage,duplicated_lines_density
      - name: create-report
        type: call
        call: gdrive.create-document
        with:
          title: CI/CD Health Report — {{repository}} — {{start_date}} to {{end_date}}
          folder_id: engineering_reports
          content: 'Total Runs: {{get-workflow-runs.total_count}} | Success Rate: {{get-workflow-runs.success_rate}}% | Avg Duration: {{get-workflow-runs.avg_duration_min}}m | Bugs: {{get-code-quality.bugs}} | Vulnerabilities: {{get-code-quality.vulnerabilities}} | Coverage: {{get-code-quality.coverage}}% | Code Smells: {{get-code-quality.code_smells}}'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: workflow-runs
      path: /repos/{{repository}}/actions/runs
      inputParameters:
      - name: repository
        in: path
      operations:
      - name: list-workflow-runs
        method: GET
  - type: http
    namespace: sonarqube
    baseUri: https://sonarqube.wayfair.com/api
    authentication:
      type: bearer
      token: $secrets.sonarqube_token
    resources:
    - name: measures
      path: /measures/component
      operations:
      - name: get-project-measures
        method: GET
  - 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: create-document
        method: POST
Open in Framework → View in Fleet → ci-cd-pipeline-health-dashboard.yml

Enriches a product listing by fetching supplier catalog data, generating SEO-optimized descriptions via the ML service, updating the Elasticsearch index, and invalidating the Cloudflare cache for the product page.

naftiko: '0.5'
info:
  label: Product Listing Enrichment Pipeline
  description: Enriches a product listing by fetching supplier catalog data, generating SEO-optimized descriptions via the ML service, updating the Elasticsearch index, and invalidating the Cloudflare cache for the product page.
  tags:
  - e-commerce
  - product-management
  - elasticsearch
  - cloudflare
  - machine-learning
capability:
  exposes:
  - type: mcp
    namespace: catalog-enrichment
    port: 8080
    tools:
    - name: enrich-product-listing
      description: Given a SKU and supplier ID, fetch supplier catalog data, generate an ML-enhanced description, update the search index, and purge the CDN cache.
      inputParameters:
      - name: sku
        in: body
        type: string
        description: The Wayfair product SKU.
      - name: supplier_id
        in: body
        type: string
        description: The supplier ID for catalog data retrieval.
      steps:
      - name: get-supplier-catalog
        type: call
        call: supplier-api.get-product-details
        with:
          supplier_id: '{{supplier_id}}'
          sku: '{{sku}}'
      - name: generate-description
        type: call
        call: ml-service.generate-product-description
        with:
          product_title: '{{get-supplier-catalog.product_title}}'
          attributes: '{{get-supplier-catalog.attributes}}'
          category: '{{get-supplier-catalog.category}}'
      - name: update-search-index
        type: call
        call: es.index-product
        with:
          sku: '{{sku}}'
          title: '{{get-supplier-catalog.product_title}}'
          description: '{{generate-description.optimized_description}}'
          category: '{{get-supplier-catalog.category}}'
          price: '{{get-supplier-catalog.wholesale_price}}'
      - name: purge-cdn-cache
        type: call
        call: cloudflare.purge-url
        with:
          url: https://www.wayfair.com/product/{{sku}}
  consumes:
  - type: http
    namespace: supplier-api
    baseUri: https://supplier-api.wayfair.com/api/v2
    authentication:
      type: bearer
      token: $secrets.supplier_api_token
    resources:
    - name: product-details
      path: /suppliers/{{supplier_id}}/products/{{sku}}
      inputParameters:
      - name: supplier_id
        in: path
      - name: sku
        in: path
      operations:
      - name: get-product-details
        method: GET
  - type: http
    namespace: ml-service
    baseUri: https://ml-platform.wayfair.com/api/v1
    authentication:
      type: bearer
      token: $secrets.ml_platform_token
    resources:
    - name: descriptions
      path: /product-descriptions/generate
      operations:
      - name: generate-product-description
        method: POST
  - type: http
    namespace: es
    baseUri: https://es-prod.wayfair.com
    authentication:
      type: basic
      username: $secrets.es_user
      password: $secrets.es_password
    resources:
    - name: products
      path: /products/_doc/{{sku}}
      inputParameters:
      - name: sku
        in: path
      operations:
      - name: index-product
        method: PUT
  - type: http
    namespace: cloudflare
    baseUri: https://api.cloudflare.com/client/v4
    authentication:
      type: bearer
      token: $secrets.cloudflare_token
    resources:
    - name: purge
      path: /zones/$secrets.cloudflare_zone_id/purge_cache
      operations:
      - name: purge-url
        method: POST
Open in Framework → View in Fleet → product-listing-enrichment-pipeline.yml

Retrieves review summary for a product.

naftiko: '0.5'
info:
  label: Product Review Summary
  description: Retrieves review summary for a product.
  tags:
  - e-commerce
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: e-commerce
    port: 8080
    tools:
    - name: get-product
      description: Retrieves review summary for a product.
      inputParameters:
      - name: entity_id
        in: body
        type: string
        description: The product review summary identifier.
      call: e-commerce-api.get-data
      with:
        entity_id: '{{entity_id}}'
  consumes:
  - type: http
    namespace: e-commerce-api
    baseUri: https://api.wayfair.com/e-commerce/v1
    authentication:
      type: bearer
      token: $secrets.wayfair_api_token
    resources:
    - name: product
      path: /product/review/summary/{{entity_id}}
      inputParameters:
      - name: entity_id
        in: path
      operations:
      - name: get-product
        method: GET
Open in Framework → View in Fleet → product-review-summary.yml

Areas — Total: 1803

  • .NET
  • 3D
  • 3D Modeling
  • A/B Testing
  • AI Assistants
  • AI Governance
  • AI Operations
  • AI Securities
  • AI Solutions
  • AI Tools
  • AJAX
  • API Design
  • API Documentations
  • API Gateways
  • API Integrations
  • Acceptance Testing
  • Access Controls
  • Access Management
  • Accessibility
  • Accessibility Audits
  • Account Management
  • Accountability
  • Accounting
  • Accounting Software
  • Accounting Systems
  • Accounts Payables
  • Accounts Receivables
  • Active Directory
  • Active Directory Federation Services
  • Ad Management
  • Ad Platforms
  • Ad-teches
  • Administration
  • Administratives
  • Advertising
  • Advertising Platforms
  • Advertising Technologies
  • Agentic AI
  • Agentic Frameworks
  • Agentics
  • Agents
  • Alarm Systems
  • Alerting
  • Alerts
  • Algorithm Design
  • Algorithms
  • Ambassadors
  • Analysis
  • Analytics
  • Analytics Infrastructure
  • Androids
  • Animations
  • Annotations
  • Anomaly Detections
  • Anti-Money Launderings
  • Antivirus
  • Apache Portable Runtimes
  • Applicant Tracking Systems
  • Application Architectures
  • Application Deliveries
  • Application Development
  • Application Integrations
  • Application Lifecycle Management
  • Application Performance Management
  • Application Platforms
  • Application Programming Interfaces
  • Application Securities
  • Applications
  • Architecture Design
  • Architecture Strategies
  • Architectures
  • Archives
  • Arrays
  • Artemis
  • Artificial Intelligence
  • Artificial Intelligence/Machine Learning
  • Assessments
  • Asset Inventories
  • Asset Management
  • Asset Protection
  • Asset Tracking
  • Assignments
  • Asynchronous
  • Asynchronous Communications
  • Asynchronous Processing
  • Audience Engagements
  • Audio
  • Audit Processes
  • Audit Reports
  • Audit Techniques
  • Audit Trails
  • Audits
  • Australias
  • Authentications
  • Authorizations
  • Automated Testing
  • Automated Testing Frameworks
  • Automation
  • Automation Testing
  • Automotive
  • Autonomous Systems
  • Autoscalings
  • Awareness
  • BI
  • BPM
  • Backend Development
  • Backend Engineering
  • Backends
  • Background Checks
  • Backups
  • Banking
  • Bashes
  • Belts
  • Benchmarking Studies
  • Benchmarkings
  • Benchmarks
  • Benefits Administration
  • Best Practices
  • Big Data
  • Billings
  • Bloggings
  • Bookings
  • Bookkeepings
  • Borrowings
  • Bots
  • Bridges
  • Broadcastings
  • Browser Support
  • Browsers
  • Budgetings
  • Build Automation
  • Build Pipelines
  • Build Systems
  • Build Tools
  • Building Automation
  • Business
  • Business Analysis
  • Business Analytics
  • Business Applications
  • Business Continuities
  • Business Intelligence
  • Business Logics
  • Business Management
  • Business Modeling
  • Business Models
  • Business Operations
  • Business Phones
  • Business Plannings
  • Business Plans
  • Business Process
  • Business Process Automation
  • Business Roles
  • Business Solutions
  • Business Strategies
  • Business Tools
  • Business Transformations
  • Business to Consumers
  • Business-to-Business
  • CI
  • Caches
  • Caching
  • Calendars
  • Cameras
  • Campaign Management
  • Capacity Management
  • Capital Markets
  • Career Development
  • Case Management
  • Cash Flow Management
  • Cash Management
  • Cash Reconciliations
  • Catalogs
  • Certificates
  • Certifications
  • Change Data Captures
  • Change Management
  • Charting
  • Charts
  • Chatbots
  • Chats
  • Cities
  • Claims Management
  • Classification
  • Clean Energies
  • Clearings
  • Client Experiences
  • Client Relations
  • Client-servers
  • Clients
  • Climate Changes
  • Climate Controls
  • Climate Strategies
  • Climates
  • Cloud Adoptions
  • Cloud Architectures
  • Cloud Computes
  • Cloud Computing
  • Cloud Computing Infrastructure
  • Cloud Computing Services
  • Cloud Connectivity
  • Cloud Data
  • Cloud Data Platforms
  • Cloud Development
  • Cloud Ecosystems
  • Cloud Engineering
  • Cloud Environments
  • Cloud Implementations
  • Cloud Infrastructure
  • Cloud Integrations
  • Cloud Journeys
  • Cloud Natives
  • Cloud Networking
  • Cloud Operations
  • Cloud Platforms
  • Cloud Runs
  • Cloud Securities
  • Cloud Security Best Practices
  • Cloud Services
  • Cloud Software
  • Cloud Solutions
  • Cloud Spanners
  • Cloud Storage
  • Cloud Systems
  • Cloud Technologies
  • Cloud-Based
  • Cloud-Based Applications
  • Cloud-Based Software
  • Cloud-Based Technologies
  • Cloud-based Environments
  • Cloud-based Services
  • Cloud-native Applications
  • Cloud-native Architectures
  • Cloud-native Platforms
  • Cloud-native Solutions
  • Cloud-native Tech
  • Cloud-native Technologies
  • Clouds
  • Clustering
  • Coals
  • Code Analysis
  • Code Debuggings
  • Code Management
  • Code Quality
  • Code Repositories
  • Code Reviews
  • Codes
  • Collaboration Tools
  • Collaborations
  • Collaborative Development
  • Collaterals
  • Collections
  • Command Lines
  • Commerce
  • Commercial Services
  • Commodities
  • Common Sense
  • Communications
  • Communities
  • Community Engagements
  • Community Healths
  • Compatibilities
  • Competitive Analysis
  • Competitive Intelligence
  • Competitor Analysis
  • Compilations
  • Compilers
  • Complex Systems
  • Compliance
  • Compliance Managers
  • Compliance Policies
  • Compliance Solutions
  • Compliance Systems
  • Compliance Tools
  • Component Architectures
  • Component Based
  • Component Libraries
  • Compressions
  • Computational Linguistics
  • Computations
  • Computer Aided Design
  • Computer Aided Engineering
  • Computer Aided Manufacturing
  • Computer Sciences
  • Computer Systems
  • Computer Visions
  • Computers
  • Computes
  • Computing
  • Concurrencies
  • Conferences
  • Conferencings
  • Configuration Management
  • Configurations
  • Connection Management
  • Connectivity
  • Connectors
  • Construction
  • Consulting Services
  • Consultings
  • Consumer Behaviors
  • Consumer Electronics
  • Consumer Protection
  • Contact Centers
  • Contact Management
  • Contacts
  • Containerization
  • Containerized Environments
  • Containers
  • Content Creations
  • Content Deliveries
  • Content Delivery Networks
  • Content Generations
  • Content Management
  • Content Management Systems
  • Content Marketing
  • 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 Planes
  • Control Systems
  • Controllers
  • Controls
  • Conversational AI
  • Conversion Optimizations
  • Conversion Rate Optimizations
  • Conveyor Systems
  • Coordinates
  • Copywritings
  • Core Systems
  • Corporate Finances
  • Cost Controls
  • Cost Management
  • Cost Optimizations
  • Country-Specific
  • Crawlings
  • Creative Productions
  • Creative Services
  • Creative Suites
  • Creative Tools
  • Credentials
  • Credit Applications
  • Credit Cards
  • Credit Valuation Adjustments
  • Crisis Management
  • Critical Thinkings
  • Cross Platforms
  • Cross Validation
  • Cryptocurrencies
  • Cryptographies
  • Cs
  • Cultural Changes
  • Currencies
  • Custodies
  • Custom Software
  • Custom Solutions
  • Customer Analytics
  • Customer Data
  • Customer Data Platforms
  • Customer Databases
  • Customer Engagements
  • Customer Experience Design
  • Customer Experiences
  • Customer Feedback
  • Customer Journey Mappings
  • Customer Journeys
  • Customer Onboardings
  • Customer Relationship Management
  • Customer Satisfactions
  • Customer Segmentations
  • Customer Service
  • Customer Success
  • Customer Support
  • Customizations
  • Customs
  • Customs Brokerages
  • Customs Forms
  • Cyber Defenses
  • Cyber Securities
  • Cybersecurities
  • DNS, DHCP, and IP Address Management
  • Dashboards
  • Data
  • Data Access
  • Data Accessibility
  • Data Analysis
  • Data Analysis Software
  • Data Analysis Techniques
  • Data Analysis Tools
  • Data Analysis Tools And Techniques
  • Data Analytics
  • Data Analytics Tools
  • Data Annotations
  • Data Architectures
  • Data Captures
  • Data Catalogs
  • Data Center Infrastructure
  • Data Center Operations
  • Data Centers
  • Data Centres
  • Data Certifications
  • Data Classification
  • Data Cleansing
  • Data Collections
  • Data Consumptions
  • Data Discoveries
  • Data Encryptions
  • Data Engineering
  • Data Enrichments
  • Data Entries
  • Data Exchanges
  • Data Explorations
  • Data Extractions
  • Data Factories
  • Data Flows
  • Data Gatherings
  • Data Governance
  • Data Governance Policies
  • Data Handling
  • Data Infrastructure
  • Data Ingestions
  • Data Insights
  • Data Integrations
  • Data Integrity
  • Data Interpretations
  • Data Lake Storage
  • Data Lakes
  • Data Lifecycle
  • Data Lineages
  • Data Loadings
  • Data Loss Preventions
  • Data Management
  • Data Manipulations
  • Data Marketplaces
  • Data Marts
  • Data Meshes
  • Data Migrations
  • Data Mining
  • Data Movements
  • Data Operations
  • Data Ownerships
  • Data Pipelines
  • Data Platforms
  • Data Preparations
  • Data Privacies
  • Data Processing
  • Data Products
  • Data Profilings
  • Data Protection
  • Data Providers
  • Data Publishings
  • Data Quality
  • Data Quality Controls
  • Data Reportings
  • Data Retentions
  • Data Retrievals
  • Data Sciences
  • Data Securities
  • Data Services
  • Data Sharing
  • 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 Validation
  • Data Visualization Software
  • Data Visualization Tools
  • Data Visualizations
  • Data Warehouses
  • Data Warehousing
  • Data and Analytics
  • Data-Driven
  • Data-Intensive Solutions
  • Data-driven Decision Making
  • Data-driven Initiatives
  • Data-driven Insights
  • Database Administration
  • Database Management
  • Database Queries
  • Database Securities
  • Database Systems
  • Database Technologies
  • Databases
  • Datastages
  • Debt Collections
  • Debuggings
  • Decentralized
  • Decentralized Autonomous Organizations
  • Decision Making
  • Decision Support
  • Deep Learning
  • Defis
  • Deliveries
  • Dependencies
  • Dependency Injection Frameworks
  • Dependency Management
  • Dependency Tracking
  • Deployment Automation
  • Deployment Pipelines
  • Deployment Practices
  • Deployment Strategies
  • Deployment Tools
  • Deployments
  • Derbies
  • Derivatives
  • Design
  • Design Principles
  • Design Reviews
  • Design Software
  • Design Systems
  • Design Thinkings
  • Design Tools
  • Desktops
  • Developer Experiences
  • Developer Tools
  • Development
  • Development Lifecycle
  • Development Operations
  • Development Practices
  • Development Process
  • Development Tools
  • Device Management
  • Diagnostics
  • Diagrammings
  • Digital Ads
  • Digital Advertising
  • Digital Assets
  • Digital Channels
  • Digital Commerce
  • Digital Contents
  • Digital Engagements
  • Digital Experiences
  • Digital Identities
  • Digital Infrastructure
  • Digital Marketing
  • Digital Media
  • Digital Operations
  • Digital Products
  • Digital Services
  • Digital Solutions
  • Digital Strategies
  • Digital Systems
  • Digital Tools
  • Digital Transformations
  • Digital Wallets
  • Digitals
  • Digitizations
  • Directed Acyclic Graphs
  • Directory
  • Disaster Recovery
  • Discontinued
  • Distributed
  • Distributed Computing
  • Distributed Systems
  • Distributed Tracing
  • Distribution Systems
  • Distributions
  • Document Databases
  • Document Object Models
  • Documentaries
  • Documentations
  • Documents
  • Due Diligences
  • Dynamic Application Security Testing
  • Dynamic Contents
  • Dynamic Pricings
  • Dynamics
  • E-commerces
  • E-learnings
  • E-mails
  • ERP
  • ESB
  • Ecommerce Platforms
  • Ecommerces
  • Econometric Models
  • Econometrics
  • Economics
  • Ecosystems
  • Edge Computing
  • Education Technologies
  • Educations
  • Efficiencies
  • Elections
  • Electric Vehicles
  • Electronic Commerce
  • Electronic Communications
  • Electronic Data Interchange
  • Electronic Signatures
  • Electronics
  • Email Marketing
  • Emails
  • Embedded Systems
  • Embeddings
  • Emergency Responses
  • Employee Benefits
  • Employee Development
  • Employee Engagements
  • Employee Experiences
  • Employment
  • Enablement
  • Encryptions
  • End To End
  • End-to-end Testing
  • Endpoint Management
  • Endpoint Securities
  • Energies
  • Energy Efficiencies
  • Energy Management
  • Engineering
  • Enterprise AI
  • Enterprise Applications
  • Enterprise Architectures
  • Enterprise Communications
  • Enterprise Data
  • Enterprise Integrations
  • Enterprise Resource Planning
  • Enterprise Risk Management
  • Enterprise Risks
  • Enterprise Securities
  • Enterprise Software
  • Enterprise Solutions
  • Enterprise Systems
  • Enterprise Technologies
  • Enterprises
  • Entertainment Systems
  • Entertainments
  • Entity Resolutions
  • Entrepreneurships
  • Equipments
  • Equity Analysis
  • Error Handling
  • Estate Plannings
  • Estimations
  • Ethics
  • Evaluation Frameworks
  • Evaluations
  • Evasion Techniques
  • Event Driven
  • Event Management
  • Event Marketing
  • Event Plannings
  • Event Technologies
  • Event-driven Systems
  • Events
  • Examples
  • Excels
  • Executions
  • Expense Management
  • Experiment Design
  • Experimentations
  • Exploitations
  • Extended Detection and Responses
  • Extensions
  • Extract Transform Loads
  • Facilities Management
  • Fault Tolerants
  • Feature Engineering
  • Feature Enhancements
  • Feature Stores
  • Federations
  • Feedback
  • File Sharing
  • File Transfers
  • Finances
  • Financial Accounting
  • Financial Analysis
  • Financial Crimes
  • Financial Data
  • Financial Inclusions
  • Financial Management
  • Financial Media
  • Financial Modeling
  • Financial Models
  • Financial News
  • Financial Operations
  • Financial Plannings
  • Financial Reportings
  • Financial Services
  • Financial Stabilities
  • Financial Systems
  • Financial Technologies
  • Fine-tunings
  • Fintech
  • Firewalls
  • Firmwares
  • First-Party Data
  • Fixed Incomes
  • Flashes
  • Flexibilities
  • Flexible Workings
  • Flinks
  • Flow Data
  • Food Safety
  • Forecasting
  • Forecasting Models
  • Foreign Exchanges
  • Forexes
  • Forge
  • Formal Verifications
  • Formatting Objects Processors
  • Forms
  • Foundations
  • Frameworks
  • Fraud Detections
  • Fraud Preventions
  • Freight Forwardings
  • Frenches
  • Front-ends
  • Frontend Development
  • Frontends
  • Full Stack Development
  • Full Stacks
  • Functional Testing
  • Functions
  • Futures
  • Gaming Consoles
  • Gamings
  • Gateways
  • General Ledgers
  • Generative AI
  • Genetic Testing
  • Geographies
  • Geolocations
  • GitHub Copilots
  • Global Markets
  • Global Positioning Systems
  • Globalizations
  • Goal Settings
  • Governance
  • Governance Frameworks
  • Government
  • Government Policies
  • Government Relations
  • Graph Databases
  • Graphic Design
  • Graphical User Interfaces
  • Graphics
  • Graphics Processing Units
  • Graphs
  • Green Buildings
  • Green Technologies
  • Guest Services
  • HCM
  • HR Analytics
  • HR Management
  • HR Systems
  • HR Tech
  • Hardware
  • Hardware Testing
  • Hbases
  • Healthcare
  • Heating, Ventilation, and Air Conditionings
  • Help Desks
  • High Availabilities
  • High Performance Computing
  • High Performances
  • High Throughputs
  • Hirings
  • Hospitality
  • Hosting
  • Human Capital Management
  • Human Resources
  • Human-Centered Design
  • Hybrid Clouds
  • Hypothesis Testing
  • IP Address Management
  • IPAM
  • IT Audits
  • IT Equipments
  • IT Infrastructure
  • IT Operations
  • IT Platforms
  • IT Service Management
  • IT Services
  • IT Strategies
  • Ideas
  • Ideations
  • Identities
  • Identity Management
  • Identity Verifications
  • Illuminations
  • Implementations
  • Import Exports
  • Incident Management
  • Incident Responses
  • Inclusive Design
  • Incubation
  • Indexings
  • Industrial Engineering
  • Industrial Equipments
  • Inferences
  • Informatics
  • Information Architectures
  • Information Governance
  • Information Management
  • Information Protection
  • Information Retrievals
  • Information Securities
  • Information Sharing
  • Information Systems
  • Information Technologies
  • Infrastructure
  • Infrastructure As Codes
  • Infrastructure Components
  • Infrastructure Management
  • Infrastructure Securities
  • Innovation
  • Insights
  • Inspections
  • Instrumentations
  • Insurances
  • Integrated Development Environments
  • Integrated Solutions
  • Integration Strategies
  • Integration Testing
  • Integration Tests
  • Integrations
  • Integrity
  • Intellectual Properties
  • Intelligence
  • Intelligent Systems
  • Interactive Prototypes
  • Interactive Voice Responses
  • Interactives
  • Interface Design
  • Interfaces
  • Internal Applications
  • Internal Audits
  • Internal Communications
  • Internal Control Frameworks
  • Internal Controls
  • Internal Databases
  • Internal Networks
  • Internal Platforms
  • Internal Systems
  • Internal Tools
  • Internal Wikis
  • International Laws
  • International Markets
  • International Trades
  • Internationalizations
  • Internet
  • Internet Applications
  • Internet Securities
  • Internet of Things
  • Interoperabilities
  • Intrusion Detection Systems
  • Intrusion Detections
  • Intrusion Prevention Systems
  • Intrusion Preventions
  • Inventory Management
  • Inventory Software
  • Investment Banking
  • Investments
  • Investor Relations
  • Invoice Processing
  • Isolations
  • Ivies
  • Java Virtual Machines
  • Job Boards
  • Job Orchestration
  • Journalism
  • Journey Design
  • Journey Mappings
  • Kernels
  • Key Metrics
  • Know Your Customers
  • Knowledge Bases
  • Knowledge Management
  • Knowledge Sharing
  • LLM
  • Language Understandings
  • Large Data Sets
  • Large Datasets
  • Large Language Models
  • Large-scale Distributed Systems
  • Law Enforcements
  • Lead Generations
  • Leaderships
  • Learning
  • Learning And Development
  • Learning Management
  • Learning Technologies
  • Ledgers
  • Legal
  • Legal Compliances
  • Legal Frameworks
  • Legal Holds
  • Legal Tech
  • Legal Technologies
  • Lendings
  • Lessons Learned
  • Libraries
  • Licensings
  • Life Cycle Management
  • Lifecycle Management
  • Lightings
  • Live Chats
  • Live Data
  • Live Streamings
  • Load Balancers
  • Load Balancings
  • Load Testing
  • Localization Workflows
  • Localizations
  • Log Analysis
  • Logging
  • Logistic Regressions
  • Logistics
  • Low Codes
  • Low Latencies
  • Lucenes
  • M&AS
  • ML Engineering
  • Machine Learning
  • Machine Learning Algorithms
  • Machine Learning Engineering
  • Machine Learning Frameworks
  • Machine Learning Models
  • Machine Learning Platforms
  • Machine Learning Systems
  • Machine Learning Technologies
  • Mails
  • Mainframes
  • Maintenance
  • Managed Services
  • Management
  • Management Software
  • Management Systems
  • Management Tools
  • Manual Processes
  • Manufacturing
  • Mappings
  • Market Analysis
  • Market Data
  • Market Intelligence
  • Market Researches
  • Marketing
  • Marketing Analytics
  • Marketing Automation
  • Marketing Platforms
  • Marketing Strategies
  • Marketing Technologies
  • Marketing Tools
  • Marketplace Platforms
  • Marketplaces
  • Markets
  • Massively Parallel Processing
  • Master Data
  • Material Design
  • Material Handling
  • Mathematical Modeling
  • Mathematics
  • Matrixes
  • Measurements
  • Mechanical Systems
  • Media
  • Media Contents
  • Media Management
  • Media Monitoring
  • Mediations
  • Medical Devices
  • Meeting Management
  • Meetings
  • Memory Management
  • Mental Healths
  • Mentoring
  • Mergers And Acquisitions
  • Meridians
  • Message Brokers
  • Message Queues
  • Messaging
  • Messaging Platforms
  • Messaging Systems
  • Metadata
  • Metadata Management
  • Metrics
  • Microservices
  • Microsoft Access
  • Middlewares
  • Migrations
  • Milestone Tracking
  • Mission Critical
  • Mobile Analytics
  • Mobile Applications
  • Mobile Apps
  • Mobile Development
  • Mobile Device Management
  • Mobile Devices
  • Mobile Technologies
  • Mobiles
  • Model Architectures
  • Model Compressions
  • Model Context Protocols
  • Model Deployments
  • Model Development
  • Model Evaluations
  • Model Lifecycle Management
  • Model Management
  • Model Optimizations
  • Model Performance
  • Model Servings
  • Model Trainings
  • Modeling
  • Modeling Tools
  • Modernizations
  • Modularity
  • Monetizations
  • Monitoring
  • Monitoring Tools
  • Monte Carloes
  • Multi-channels
  • Multi-platforms
  • Multi-regions
  • Multimedias
  • Multimodal AI
  • Multimodals
  • Multiple Systems
  • NLP
  • Named Entity Recognitions
  • Natural Language Processing
  • Navigation
  • Negotiations
  • Netwerkens
  • Network Architectures
  • Network Automation
  • Network Configurations
  • Network Design
  • Network Engineering
  • Network Infrastructure
  • Network Management
  • Network Monitoring
  • Network Optimizations
  • Network Performance
  • Network Programming
  • Network Securities
  • Network Simulations
  • Network Topologies
  • Networking
  • Neural Networks
  • New Tabs
  • News
  • Newsletters
  • No Codes
  • NoSQL
  • Nonprofits
  • Nostro
  • Notebooks
  • Notifications
  • OIA
  • OLE for Process Controls
  • ORM
  • OSX
  • Object Storage
  • Object-Oriented
  • Observability
  • Observability Platforms
  • Observability Toolings
  • Observability Tools
  • Office Applications
  • Office Management
  • Office Software
  • Office Suites
  • Omnichannels
  • On Demands
  • Onboardings
  • Online Advertising
  • Online Analytical Processing
  • Online Banking
  • Online Learning
  • Online Services
  • Online Shoppings
  • Online Tools
  • Open Source
  • Open-source Technologies
  • Operating Systems
  • Operational Efficiencies
  • Operational Excellence
  • Operational Metrics
  • Operational Practices
  • Operational Reportings
  • Operational Risks
  • Operational Systems
  • Operational Technologies
  • Operations
  • Operations Management
  • Operations Researches
  • Operations Solutions
  • 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 Structures
  • Organizational Transformations
  • Organizations
  • Outils Digitauxes
  • Outils Internes
  • Packages
  • Packaging
  • Packaging Innovation
  • Packet Captures
  • Packet Loss
  • Paid Media
  • Pair Programming
  • Panoramas
  • Pattern Recognitions
  • Patterns
  • Pay Per Clicks
  • Payment Processing
  • Payment Solutions
  • Payment Systems
  • Payments
  • Payments Securities
  • 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
  • Pipelines
  • Pivot Tables
  • Planning Analytics
  • Plannings
  • Platform Development
  • Platform Engineering
  • Platform Management
  • Platform Observability
  • Platform Solutions
  • Platform Strategies
  • Platform-as-a-Service
  • Platforms
  • Plugins
  • Point Of Sales
  • Policies
  • Policy Analysis
  • Policy Enforcements
  • Policy Management
  • Political Engagements
  • Portabilities
  • Portables
  • Portals
  • Portfolio Management
  • Portfolio Reviews
  • Portlets
  • Post Productions
  • Postmortems
  • Power Distributions
  • Power Generations
  • Power Tools
  • 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
  • Problem Management
  • Problem Resolutions
  • Problem Solving
  • Process Analysis
  • Process Automation
  • Process Controls
  • Process Design
  • Process Documentations
  • Process Engineering
  • Process Improvements
  • Process Management
  • Process Mappings
  • Process Maps
  • Process Mining
  • Process Monitoring
  • Process Optimizations
  • Process Streamlinings
  • Processes
  • Procurements
  • Product Analytics
  • Product Areas
  • Product Creation Life Cycles
  • Product Creation Lifecycle
  • Product Design
  • Product Development
  • Product Development Lifecycle
  • Product Management
  • Product Management Tools
  • Product Owners
  • Product Platforms
  • Product Roadmaps
  • Product Strategies
  • Product Testing
  • Production
  • Production Deployments
  • Production Environments
  • Production Management
  • Production Support
  • Production Systems
  • Productivity
  • Products
  • Professional Development
  • Professional Services
  • Professional Trainings
  • Profilings
  • Program Management
  • Programmable Logic Controllers
  • Programming
  • Programming Languages
  • Progress Reports
  • Project Charters
  • Project Management
  • Project Management Tools
  • Project Schedules
  • Projects
  • Prompt Engineering
  • Promptings
  • Prompts
  • Property Management
  • Proprietary Software
  • Protection
  • Protocols
  • Prototype Development
  • Prototyping
  • Provisionings
  • Proxies
  • Psychologies
  • Public Affairs
  • Public Clouds
  • Public Healths
  • Public Key Infrastructure
  • Purchasings
  • Push Notifications
  • QA
  • QA Automation
  • Quality Assurance
  • Quality Assurance Processes
  • Quality Assurance Testing
  • Quality Controls
  • Quality Management
  • Quality Metrics
  • Quality Monitoring Systems
  • Quality Tools
  • Quantitative Analysis
  • Quantitative Finances
  • Quantitative Methods
  • Quantum Computing
  • Query Languages
  • Query Optimizations
  • Query Understandings
  • Queues
  • Rapid Development
  • Rapid Prototyping
  • Ratings
  • Reactives
  • Real Estates
  • Real Time
  • Real-Time Operating Systems
  • Real-time Data
  • Real-time Insights
  • Real-time Operations
  • Real-time Processing
  • Real-time Systems
  • Real-time Visibility
  • Reasonings
  • Recipes
  • Recommendation Systems
  • Reconciliations
  • Reconnaissances
  • Record Keepings
  • Recordings
  • Records Management
  • Recruitings
  • Recruitment
  • Registrations
  • Regression Analysis
  • Regression Testing
  • Regulatory Affairs
  • Regulatory Analysis
  • Regulatory Compliances
  • Reinforcement Learning
  • Relational Data
  • Relational Database Management Systems
  • Relational Databases
  • Relationals
  • Relationship Buildings
  • Relationship Management
  • Release Activities
  • Release Management
  • Release Plannings
  • Reliabilities
  • Reliability Engineering
  • Remittances
  • Remote Access
  • Remote Works
  • Rendering
  • Renewable Energies
  • Replications
  • Reporting And Analytics
  • Reporting Dashboards
  • Reporting Frameworks
  • Reporting Solutions
  • Reporting Systems
  • Reporting Tools
  • Reportings
  • Requirements
  • Requirements Gatherings
  • Requirements Management
  • Research
  • Research Methods
  • Research Tools
  • Reservation Systems
  • Resilience Engineering
  • Resiliences
  • Resiliency
  • Resilient Systems
  • Resource Allocations
  • Resource Management
  • Resource Plannings
  • Responsive Design
  • Rest Assured
  • Retail Technologies
  • Retails
  • Retrofittings
  • Reusable Components
  • Revenue Management
  • Revenue Operations
  • Revenue Strategies
  • Revenues
  • Review And Approvals
  • Reviews
  • Rich Internet Applications
  • Risk Analysis
  • Risk Assessments
  • Risk Management
  • Risk Models
  • Roadmappings
  • Robotic Process Automation
  • Robotics
  • Robustness
  • Root Cause Analysis
  • Routers
  • Routings
  • Runtimes
  • Safes
  • Safety
  • Safety Engineering
  • Sales
  • Sales Enablement
  • Sales Management
  • Sales Productivity
  • Sales Tools
  • Sanctions
  • Sanctions Screenings
  • Sandboxes
  • Satellite Data
  • Scalabilities
  • Scaling
  • Scannings
  • Scenario Modeling
  • Scenarios
  • Scheduling
  • Scientific Methods
  • Scorings
  • Screenings
  • Scripting Languages
  • Scriptings
  • Search
  • Search Engine Optimizations
  • Search Engines
  • Secrets Management
  • Secure Coding Practices
  • Secure Codings
  • Secure Design
  • Secure Design Reviews
  • Secure Development
  • Secure Platforms
  • Secure Transports
  • Security
  • Security Analysis
  • Security Architectures
  • Security Audits
  • Security Awareness Trainings
  • Security Best Practices
  • Security Compliances
  • Security Controls
  • Security Development Lifecycle
  • Security Engineering
  • Security Frameworks
  • Security Governance
  • Security Information and Event Management
  • Security Intelligence
  • Security Measures
  • Security Monitoring
  • Security Operations
  • Security Orchestration, Automation and Responses
  • Security Platforms
  • Security Procedures
  • Security Requirements
  • Security Reviews
  • Security Settings
  • Security Solutions
  • Security Systems
  • Security Testing
  • Security Tools
  • Security Updates
  • Segmentations
  • Self Services
  • Self-healings
  • Semantic Searches
  • Sensors
  • Serverless
  • Serverless Architectures
  • Servers
  • Service Bus
  • Service Clouds
  • Service Deliveries
  • Service Design
  • Service Desks
  • Service Discoveries
  • Service Frameworks
  • Service Management
  • Service Meshes
  • Service Operations
  • Service Recovery
  • Service Strategies
  • Services
  • Servlets
  • Settlements
  • Shared Responsibilities
  • Shells
  • Shippings
  • Short Message Services
  • Simple API for XML
  • Simulation Environments
  • Simulation Tools
  • Simulations
  • Simulators
  • Single Sign Ons
  • Site Reliability Engineering
  • Skill Development
  • Skills Development
  • Slides
  • Slideshows
  • Smart Contracts
  • Smart Homes
  • Smartphones
  • Social
  • Social Data
  • Social Media
  • Social Media Management
  • Social Media Marketing
  • Social Networking
  • Social Networks
  • Software
  • Software Applications
  • Software Architectures
  • Software Configuration Management
  • Software Deliveries
  • Software Deployments
  • Software Design
  • Software Development
  • Software Development Best Practices
  • Software Development Kits
  • Software Distributions
  • Software Engineering
  • Software Languages
  • Software Platforms
  • Software Projects
  • Software Quality
  • Software Solutions
  • Software Systems
  • Software Testing
  • Software Testing Methodologies
  • Software Tools
  • Solutions
  • Source Code Management
  • Source Code Management Tools
  • Source Codes
  • Source Control Management
  • Source Controls
  • Source Systems
  • Sourcings
  • Space Explorations
  • Spreadsheets
  • Stakeholder Management
  • Standups
  • Startups
  • State Machines
  • State Management
  • Statefuls
  • Static Analysis
  • Static Application Security Testing
  • Statistical Analysis
  • Statistical Methods
  • Statistical Modeling
  • Statistical Models
  • Statistical Techniques
  • Statistical Tools
  • Statistics
  • Stock Controls
  • Storage
  • Strategic Design
  • Strategic Plannings
  • Strategies
  • Stream Processing
  • Streaming Architectures
  • Streamings
  • Structured Data
  • Subscription Management
  • Subscriptions
  • Supervised Learning
  • Supplier Management
  • Supply Chain Finances
  • Supply Chain Management
  • Supply Chain Securities
  • Supply Chains
  • Support
  • Support Platforms
  • Support Systems
  • Surveillances
  • Sustainability
  • Switches
  • Synthetic Testing
  • System Administration
  • System Analysis
  • System Architectures
  • System Design
  • System Development
  • System Enhancements
  • System Implementations
  • System Integrations
  • System Interfaces
  • System Management
  • System Monitoring
  • System Optimizations
  • System Performances
  • System Requirements
  • System Securities
  • System Services
  • System Software
  • System Stabilities
  • System Testing
  • System Updates
  • Systems
  • Systems Administration
  • Systems Analysis
  • Systems Design
  • Systems Development
  • Systems Engineering
  • Systems Integrations
  • Systems Management
  • Systems Thinkings
  • T1S
  • Tableaux De Bords
  • Tablets
  • Tainas
  • Talent Acquisition
  • Talent Management
  • Task Management
  • Tasks
  • Tax Compliances
  • Tax Laws
  • Tax Plannings
  • Tax Systems
  • Taxes
  • Tcls
  • Team Collaborations
  • Team Communications
  • Team Development
  • Team Management
  • Teaps
  • Technical Debt
  • Technical Support
  • Technical Writings
  • Technologies
  • Technology Enhancements
  • Technology Platforms
  • Technology Services
  • Technology Stacks
  • Technology Strategies
  • Telecommunications
  • Telefonoes
  • Telefons
  • Telefoons
  • Telemetry
  • Telephonies
  • Telewerkens
  • Terminals
  • Test Anything Protocols
  • Test Automation
  • Test Automation Frameworks
  • Test Design
  • Test Engineering
  • Test Environments
  • Test Equipments
  • Test Executions
  • Test Plannings
  • Test Reportings
  • Test Strategies
  • Test Tools
  • Test-and-learns
  • Testing Frameworks
  • Testing Strategies
  • Testing Tools
  • Tests
  • Third Parties
  • Third Party Risks
  • Third Party Services
  • Third-party Data
  • Third-party Libraries
  • Third-party Risk Management
  • Third-party Securities
  • Third-party Systems
  • Threat Analysis
  • Threat Intelligence
  • Threat Management
  • Threat Modeling
  • Ticketing
  • Tickets
  • Time Management
  • Timelines
  • Tokens
  • Tools
  • Total Rewards
  • Tracing
  • Tracking
  • Tracking Software
  • Tracs
  • Trade Compliances
  • Trade Operations
  • Trade Shows
  • Tradings
  • Training Platforms
  • Trainings
  • Transaction Monitoring
  • Transaction Processing
  • Transformations
  • Transformers
  • Translations
  • Transparency
  • Transportation
  • Travels
  • Traversals
  • Treasuries
  • Treasury Operations
  • Troubleshooting
  • Tuning
  • Turkishes
  • Two-factor Authentications
  • UI
  • UI Design
  • UX
  • UX Design
  • Ubixes
  • Unified Communications
  • Unit Testing
  • Unixes
  • Unstructured Data
  • Unsupervised Learning
  • Updates
  • Uptime
  • Usabilities
  • User Acceptance Testing
  • User Engagements
  • User Experiences
  • User Feedback
  • User Generated Contents
  • User Guides
  • User Interface/User Experiences
  • User Interfaces
  • User Researches
  • User Testing
  • Utilities
  • VBA
  • Validation
  • Validation Tools
  • Valuations
  • Value Streams
  • Vector Databases
  • Vendor Management
  • Venture Capital
  • Venue Selections
  • Venues
  • Verifications
  • Version Control Systems
  • Version Controls
  • Versionings
  • Video Chats
  • Video Editings
  • Video Games
  • Video Platforms
  • Video Productions
  • Videogespreks
  • Videos
  • Virtual Environments
  • Virtual Meetings
  • Virtual Trainings
  • Visibility
  • Visual Design
  • Visual Effects
  • Visualizations
  • Voice
  • Votings
  • Vues
  • Vulnerability Assessments
  • Vulnerability Management
  • Wallets
  • Warehouse Automation
  • Warehouse Equipments
  • Warehouse Management
  • Warehouse Technologies
  • Web API
  • Web Application Securities
  • Web Application Technologies
  • Web Applications
  • Web Based
  • Web Browsers
  • Web Design
  • Web Development
  • Web Frameworks
  • Web Hosting
  • Web Performances
  • Web Searches
  • Web Securities
  • Web Servers
  • Web Services
  • Web Sites
  • Web Technologies
  • Web-based Trainings
  • Web3s
  • Webinars
  • Webs
  • Website Builders
  • Wellbeings
  • Whiteboards
  • Wi-Fi
  • Wikis
  • Windows Servers
  • Wins
  • Words
  • Work From Homes
  • Work Life Balances
  • Workflow Automation
  • Workflow Management
  • Workflow Optimizations
  • Workflow Tools
  • Workflows
  • Workforce Development
  • Workforce Management
  • Working Capital
  • Workplace Safety
  • Workshops
  • Workspaces
  • XML Parsers

Services — Total: 361

  • ADP
  • AWS Lambda
  • Adobe
  • Adobe Acrobat
  • Adobe Analytics
  • Adobe Campaign
  • Adobe Captivate
  • Adobe Creative Cloud
  • Adobe Creative Suite
  • Adobe Illustrator
  • Adobe Launch
  • Adobe Photoshop
  • Adobe Premiere Pro
  • Adobe Suite
  • Airtable
  • Alteryx
  • Amazon API Gateway
  • Amazon ECS
  • Amazon Kinesis
  • Amazon Q
  • Amazon Redshift
  • Amazon S3
  • Amazon SNS
  • Amazon SQS
  • Amazon Web Services
  • Ambassador
  • Android
  • Ansible Automation Platform
  • Ansible Tower
  • Anthropic
  • Apache Airflow
  • Apache Software Foundation
  • Apigee
  • Apple
  • Apple Keynote
  • Apple Pay
  • Apple Safari
  • Ariba
  • Aruba
  • Asana
  • Atlassian
  • AutoCAD
  • Autodesk
  • Autodesk Fusion 360
  • Autodesk Maya
  • Avalara
  • Axway
  • Azure Active Directory
  • Azure Automation
  • Azure Data Factory
  • Azure Databricks
  • Azure DevOps
  • Azure Event Hubs
  • Azure Functions
  • Azure Key Vault
  • Azure Kubernetes Service
  • Azure Log Analytics
  • Azure Machine Learning
  • Azure Monitor
  • Azure Service Bus
  • Azure Synapse Analytics
  • Azure Virtual Desktop
  • Backstage
  • Bancontact
  • BigCommerce
  • Bitbucket
  • Bloomberg
  • Bloomberg AIM
  • Bloomberg Economics
  • Bloomberg Enterprise Data
  • Bloomberg Intelligence
  • Bloomberg News
  • Bloomberg Professional Service
  • Bloomberg Query Language (BQL)
  • Bloomberg TV
  • Bloomberg Television and Radio
  • Bloomberg Terminal
  • Bloomberg Tradebook
  • Boomi
  • Box
  • Bruno
  • Canva
  • ChatGPT
  • Choreo
  • Circana
  • Cisco
  • Cisco Expressway
  • Cisco Firepower
  • Cisco Nexus
  • Cisco Voice Portal
  • Citrix NetScaler
  • Claude
  • CloudFormation
  • CloudWatch
  • Cloudflare
  • Concur
  • Conductor
  • Confluence
  • Coupa
  • Crystal Reports
  • Databricks
  • Datadog
  • Dell Servers
  • DocuSign
  • DynamoDB
  • Dynatrace
  • EC2
  • EMC
  • F5 Networks
  • Facebook
  • Facebook Ads
  • FactSet
  • Fern
  • Figma
  • Finch
  • Fortify
  • Fusio
  • G2
  • GCP Cloud Storage
  • Gemini
  • GitHub
  • GitHub Actions
  • GitHub Copilot
  • GitLab
  • Gmail
  • Gong
  • Google
  • Google Ads
  • Google Analytics
  • Google Android
  • Google Apps Script
  • Google Campaign Manager
  • Google Chrome
  • Google Cloud Dataflow
  • Google Cloud Platform
  • Google Data Studio
  • Google Dialogflow
  • 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
  • HubSpot
  • Hugging Face
  • Hunter
  • IBM
  • Indeed
  • Informatica
  • Informática
  • Insomnia
  • Instagram
  • IntelliJ IDEA
  • International Business Machines
  • Intuit
  • Jira
  • Juniper
  • Juniper Networks
  • Kinesis
  • Knit
  • Konfig
  • Kong
  • Kuma
  • Lambda
  • Lightroom
  • LinkedIn
  • Looker
  • Looker Studio
  • Lumos
  • MATLAB
  • MailChimp
  • Make
  • Mastercard
  • Maya
  • Merge
  • Meta
  • Metasploit
  • Microsoft
  • Microsoft .NET
  • Microsoft 365
  • Microsoft Access
  • Microsoft Azure
  • Microsoft Bicep
  • Microsoft Configuration Manager
  • Microsoft Copilot
  • Microsoft Defender
  • Microsoft Dynamics 365
  • Microsoft Edge
  • Microsoft Endpoint Configuration Management
  • Microsoft Endpoint Manager
  • Microsoft Entity Framework
  • Microsoft Entra
  • Microsoft Excel
  • Microsoft Identity Manager
  • Microsoft Office
  • Microsoft Office 365
  • Microsoft Outlook
  • Microsoft Planner
  • Microsoft Power Apps
  • Microsoft Power Automate
  • Microsoft PowerPoint
  • Microsoft Project
  • Microsoft Purview
  • Microsoft Sentinel
  • Microsoft Teams
  • Microsoft Technologies
  • Microsoft Visio
  • Microsoft Windows
  • Microsoft Windows 10
  • Microsoft Windows Mobile
  • Microsoft Windows Server
  • Microsoft Word
  • Microsoft Xbox
  • Mixpanel
  • Montran
  • Moody's
  • MuleSoft
  • NASA
  • Nango
  • Navision
  • NetApp
  • New Relic
  • Notion
  • Ollama
  • OpenAI
  • OpenAI APIs
  • OpenShift
  • Oracle
  • Oracle APEX
  • Oracle Cloud
  • Oracle Database
  • Oracle E-Business Suite
  • Oracle Enterprise Database
  • Oracle Enterprise Manager
  • Oracle Essbase
  • Oracle Exadata
  • Oracle GoldenGate
  • Oracle Integration
  • Oracle R12
  • Oracle WebLogic
  • Orbital
  • Orion
  • Palo Alto Networks
  • Panora
  • Paradox
  • Paragon
  • Paw
  • PeopleSoft
  • Perforce
  • Photoshop
  • Pluralsight
  • Port
  • Power Apps
  • Power BI
  • Power Query
  • Productiv
  • Pulse
  • Qlik
  • Qlik Sense
  • Qlik Sense Enterprise
  • QlikSense
  • QlikView
  • Qube
  • ReadMe
  • Red Hat
  • Red Hat Ansible Automation Platform
  • Red Hat Enterprise Linux
  • Red Hat Satellite
  • Refinitiv Eikon
  • Revert
  • Rutter
  • SAP
  • SAP Ariba
  • SAP BRIM (Billing and Revenue Innovation Management)
  • SAP BW
  • SAP Concur
  • SAP HANA
  • SAP Integration Suite
  • SAP S/4HANA
  • SQL Server
  • SailPoint
  • Salesforce
  • Salesforce Automation
  • Salesforce Einstein
  • Salesforce Lightning
  • Salesforce Marketing Cloud
  • Salesforce Sales Cloud
  • Salesforce Service Cloud
  • Seismic
  • SendGrid
  • Service Cloud
  • ServiceNow
  • SharePoint
  • Shell
  • Shopify
  • SimCorp Dimension
  • Slack
  • Snowflake
  • SolarWinds
  • Solaris
  • Solaris Zones
  • Sparx Enterprise Architect
  • Splunk
  • Spot
  • Square
  • Stainless
  • Stripe
  • Tableau
  • Tableau Desktop
  • Talend
  • Tanium
  • TeamCity
  • Temenos Transact
  • Temporal
  • Teradata
  • Torii
  • Tradeweb
  • Trellix Web Gateway
  • Tropic
  • Truto
  • Tufin
  • Twilio
  • Twitch
  • Twitter
  • Tyk
  • Unity
  • Unix
  • VMware
  • Vantage
  • Vendr
  • Vercel
  • Veritas Cluster
  • Veritas InfoScale
  • Veritas NetBackup
  • Veritas Volume Manager
  • Vessel
  • Visio
  • Visualforce
  • WebLogic
  • WebSphere
  • WhatsApp
  • Windmill
  • Workday
  • Workday Integration
  • Workday Payroll
  • Workday Recruiting
  • Workday Report Writer
  • Youtube
  • Zendesk
  • Zesty
  • Zoom
  • ZoomInfo
  • n8n
  • nOps

Tools — Total: 240

  • 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 Cocoon
  • Apache Commons
  • Apache Cordova
  • Apache CouchDB
  • Apache Curator
  • Apache DB
  • Apache DolphinScheduler
  • Apache Doris
  • Apache Drill
  • Apache Druid
  • Apache Felix
  • Apache Flex
  • Apache Flink
  • Apache Flume
  • Apache Fluo
  • Apache FreeMarker
  • Apache Gora
  • Apache Griffin
  • Apache Groovy
  • Apache HBase
  • Apache Hadoop
  • Apache Hive
  • Apache Hop
  • Apache Ignite
  • Apache Ivy
  • Apache Jackrabbit
  • Apache James
  • Apache Jena
  • Apache Kafka
  • Apache Kibble
  • Apache Knox
  • Apache Kylin
  • Apache Lucene
  • Apache MINA
  • Apache Maven
  • Apache NiFi
  • Apache ORC
  • Apache Olingo
  • Apache OpenJPA
  • Apache OpenOffice
  • Apache OpenWebBeans
  • Apache POI
  • Apache Phoenix
  • Apache Pig
  • Apache Pinot
  • Apache Pivot
  • Apache Portals
  • Apache Pulsar
  • Apache Ranger
  • Apache Ratis
  • Apache Roller
  • Apache Royale
  • Apache Rya
  • Apache SINGA
  • Apache Serf
  • Apache ShenYu
  • Apache Shiro
  • Apache SkyWalking
  • Apache Sling
  • Apache Solr
  • Apache SpamAssassin
  • Apache Spark
  • Apache Spatial
  • Apache Steve
  • Apache Storm
  • Apache Streams
  • Apache Submarine
  • Apache Subversion
  • Apache Synapse
  • Apache Tcl
  • Apache Tez
  • Apache Thrift
  • Apache Tika
  • Apache TinkerPop
  • Apache Traffic Control
  • Apache Traffic Server
  • Apache UIMA
  • Apache VCL
  • Apache Velocity
  • Apache Web Services
  • Apache Whimsy
  • Apache Wicket
  • Apache XML Graphics
  • Apache Xerces
  • Apache Zeppelin
  • Apache ZooKeeper
  • Argo
  • BFE
  • Backstage
  • Blender
  • Buildpacks
  • C#
  • C++
  • CRI-O
  • Capsule
  • Chef
  • ClickHouse
  • Cloud Custodian
  • Consul
  • Contour
  • Copa
  • 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
  • Hibernate
  • Hugging Face Transformers
  • Interlink
  • JUnit
  • Jenkins
  • Jest
  • K3s
  • KAITO
  • KCL
  • KEDA
  • KServe
  • Kafka Connect
  • Keycloak
  • Kibana
  • Koordinator
  • Kotlin
  • Kubeflow
  • Kubeflow Pipelines
  • Kubernetes
  • Kubernetes Operators
  • Kuma
  • Lean
  • Lima
  • Linux
  • Llama
  • Matplotlib
  • Mockito
  • MongoDB
  • MySQL
  • NATS
  • Nexus
  • Nginx
  • Node.js
  • NumPy
  • ORAS
  • Open Policy Agent
  • OpenTelemetry
  • Oxia
  • 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
  • Selenium
  • Semantic Kernel
  • Sonar
  • SonarQube
  • Spring
  • Spring Boot
  • Spring Boot Admin Console
  • Spring Cloud Stream
  • Spring Framework
  • Stacker
  • Strimzi
  • Swift
  • TensorFlow
  • Terraform
  • Thanos
  • Vault
  • Vineyard
  • Vite
  • Vitess
  • Vue.js
  • WebFlux
  • Wireshark
  • WordPress
  • YARN
  • Zot
  • bootc
  • cURL
  • eBPF
  • gRPC
  • jQuery
  • kpt
  • werf

Standards — Total: 212

  • ACID
  • ACKNOWLEDGMENTS.md
  • AIS
  • API-First
  • AUTHORS.md
  • Acceptance Criteria
  • Accessibility Standards
  • Accounting Standards
  • Actor Model
  • Agile
  • Agile Delivery
  • Agile Methodology
  • Architectural Design Patterns
  • Architecture Pattern
  • BDD
  • BLE
  • Banking Regulation
  • Big O Notation
  • CCPA
  • CHANGELOG.md
  • CITATION.cff
  • CODE_OF_CONDUCT.md
  • CONTRIBUTING.md
  • CONTRIBUTORS.md
  • CSS
  • Certificate Enrolment Protocols
  • Component Model
  • Configuration Language
  • Consensus
  • Convention Over Configuration
  • Cybersecurity Standards
  • DHCP
  • DNS
  • DSL
  • Data Flow Diagrams
  • Data Modeling
  • Data Models
  • Data Privacy 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
  • FTP
  • File Format
  • FinOps
  • Financial Regulation
  • Flowcharts
  • Functional Programming
  • GDPR
  • Gantt Charts
  • GitOps
  • Good Manufacturing Practices
  • Graph Query Language (GQL)
  • GraphQL
  • Gremlin
  • HIPAA
  • HTML
  • HTML5
  • HTTP
  • HTTP/2
  • IAM
  • IMAP
  • ISO
  • IT Standards
  • ITIL
  • ITSM
  • Integration Patterns
  • Internal Control Standards
  • Inversion Of Control
  • JCR
  • JDBC
  • JMS
  • JPA
  • JSF
  • JSON
  • Jakarta EE
  • Java EE
  • Kanban
  • LICENSE.md
  • Lean Management
  • Lean Manufacturing
  • Lean Six Sigma
  • MLOps
  • MVC
  • Mandatory Reserves Requirement
  • MapReduce
  • Methodology
  • Mockups
  • Monolithic Architecture
  • NFC
  • NIO
  • NIST
  • Normalization
  • OAuth
  • OCI
  • OData
  • OIDC
  • OSHA
  • OWASP
  • Object-Oriented Programming
  • OpenAPI
  • OpenID Connect
  • PCI Compliance
  • PDF
  • Partitioning
  • Privacy By Design
  • Process Flow Diagrams
  • Product Backlog
  • Product Backlog Items
  • Product Specifications
  • Programming Paradigm
  • Project Management Methodology
  • Protocol Buffers
  • Prototypes
  • Pub/Sub
  • QoS
  • Quality Of Service
  • Quality Standards
  • RACI
  • RBAC
  • RDF
  • RDP
  • README.md
  • REST
  • REST API
  • RESTful
  • RESTful APIs
  • RFID
  • RPC
  • RTSP
  • Raft
  • Reactive Programming
  • Regular Expressions
  • Regulation
  • Regulatory
  • Runbooks
  • SAFe Agile
  • SAML
  • SCADA
  • SDLC
  • SECURITY.md
  • SMTP
  • SOA
  • SOAP
  • SPA
  • SQL
  • SSH
  • SSL/TLS
  • SSO
  • SUPPORT.md
  • Scaled Agile
  • Schema Design
  • Schema Validation
  • Scrum
  • SecOps
  • Secure-by-Design
  • Security By Design
  • Security Protocols
  • Security Standards
  • Security Standards And Procedures
  • Service Oriented Architecture
  • Sharding
  • Six Sigma
  • Sketches
  • Software Design Architectural Patterns
  • Software Design Patterns
  • Software Development Life Cycle
  • Software Development Lifecycle
  • Software-Defined Networking
  • Specification
  • Standard Operating Procedures
  • Standardization
  • Standards
  • Swagger
  • TCP/IP
  • Table Format
  • Technical Specifications
  • Templates
  • Test Cases
  • Test First
  • Test Plans
  • Test Scripts
  • 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

Why do we do this?

  • Understand the state of the market by industry.
  • Meet new and diverse design partners across verticals.
  • Help us prioritize industry-specific business capabilities.

Who is this for?

  • AI, API, integration and platform leadership within the industry.
  • The C-Suite looking to benchmark their enterprise against peers.
  • Analysts and media outlets reporting on industry-level technology trends.

Why become a design partner?

  • Collaboration to define industry-wide capabilities and benchmarks.
  • Obtain more control over the integrations your industry depends on.
  • Help shape the Naftiko roadmap to meet your vertical’s needs.

About This Research

  • Signals aggregate how we rate investments across all companies in the industry.
  • Areas reveal the technology areas being invested in across the vertical.
  • Services show which SaaS platforms appear across industry companies.
  • Tools highlight the open-source investments being made industry-wide.
  • Standards speak to how aligned integrations are with market standards.

About This Guidance

  • Impact Report provides a narrative analysis of the industry’s collective AI investment posture.
  • Impact Pages outlines the layered data behind the industry’s AI response, with company rankings per signal area.
  • Companies lists all organizations tracked in this industry vertical.
  • Radar maps the maturity of technology investments across the industry.
  • Capabilities are Naftiko definitions for how industry-common services and tools can deliver AI-driven business value.
  • Navigation highlights strategic opportunities for this industry vertical.

What This Means For You

See where you stand, decide what to build, control what you build — grounded in public-data signals, not boilerplate best practice.

01

Where you stand

The leads, the gaps, and where AI has shifted the gradient — in numbers from public data, not vendor decks.

See full report →
02

What to build

Capabilities being built across the peer set — tied to the markets you actually serve.

View capabilities →
03

Where to go next

A prioritized roadmap grounded in signal data. Not a generic best-practices deck, not a vendor-shaped pitch.

Get your navigation →
04

Control what you build

Run it on infrastructure you control. Open source — fork it, audit it, run it on your stack. No vendor lock-in.

First capability live in 90 days.

Become a design partner →