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.
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 OutdoorsAcademy Sports + Outdoors is a Fortune 500 sporting goods and outdoor recreation retailer headquartered...
- AdidasA German multinational corporation designing and manufacturing athletic shoes, apparel, and accessories. One of the...
- Advance Auto PartsAdvance Auto Parts is a leading automotive aftermarket parts retailer offering a comprehensive catalog of...
- AmazonThe world's largest e-commerce and cloud computing company operating a vast online marketplace, Amazon Web...
- American Eagle OutfittersAn American retail company operating the American Eagle and Aerie lifestyle brands targeting young adults....
- Barnes & NobleThe largest retail bookseller in the United States operating hundreds of stores nationwide. Also sells...
- Best BuyBest Buy is a multinational consumer electronics retailer offering technology products, services, and solutions through...
- BloomingdalesAn American luxury department store chain owned by Macy's Inc. Known for its upscale fashion,...
- CarvanaCarvana is an e-commerce platform for buying, selling, and financing used cars online, featuring home...
- ChewyThe largest online retailer of pet food and products in the United States. Offers auto-ship...
- CostcoA membership-based warehouse club offering bulk goods, groceries, and services at discount prices. One of...
- CoupangCoupang is a South Korean e-commerce company offering rapid delivery of a wide range of...
- eBayeBay is a multinational e-commerce corporation that operates a website facilitating consumer-to-consumer and business-to-consumer sales...
- ETSYFortune 1000 company ETSY. Public API documentation has not yet been catalogued in the API...
- GapAn American retail company operating clothing and accessories brands including Gap, Old Navy, Banana Republic,...
- H&MA Swedish multinational fast-fashion retailer offering affordable clothing, accessories, and home goods. Operates thousands of...
- Home DepotThe world's largest home improvement retailer operating over 2,300 stores across North America. Serves do-it-yourself...
- IKEAA Swedish multinational furniture and home goods retailer known for its affordable, ready-to-assemble products. Operates...
- InditexA Spanish multinational fashion group and the world's largest apparel retailer operating brands including Zara,...
- LegoA Danish toy company and the world's largest manufacturer of interlocking plastic building bricks. Extends...
- Lowe'sThe second-largest home improvement retailer in the world operating approximately 1,700 stores across North America....
- MacysAn iconic American department store chain offering fashion, home goods, and beauty products. Operates hundreds...
- MattelA global toy and entertainment company behind iconic brands including Barbie, Hot Wheels, Fisher-Price, and...
- NikeThe world's largest athletic footwear and apparel company designing products for sports, fitness, and lifestyle....
- NordstromAn American luxury department store chain known for its high-end fashion, footwear, and customer service....
- Qurate RetailProfile for Qurate Retail in the API Evangelist network. Fortune F500 (rank 342).
- SephoraA French multinational chain of personal care and beauty stores and a subsidiary of LVMH....
- ShopifyA Canadian multinational e-commerce platform enabling businesses of all sizes to create online stores and...
- TargetOne of the largest general merchandise retailers in the United States operating nearly 2,000 stores...
- TJX CompaniesThe leading off-price retailer in the United States and worldwide operating TJ Maxx, Marshalls, HomeGoods,...
- Under ArmourAn American sportswear company manufacturing performance athletic apparel, footwear, and accessories. Founded on moisture-wicking fabric...
- Urban OutfittersAn American lifestyle retail company operating the Urban Outfitters, Anthropologie, and Free People brands. Targets...
- WalmartThe world's largest retailer by revenue operating thousands of supercenters, discount stores, and neighborhood markets....
- WayfairAn American e-commerce company specializing in home goods, furniture, and décor. Operates one of the...
- Williams-SonomaWilliams-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.
When Prometheus alerts on high CPU, scales the Azure Kubernetes Service cluster, creates a Datadog annotation, and posts a status update to Microsoft Teams.
naftiko: '0.5'
info:
label: Infrastructure Scaling Automation
description: When Prometheus alerts on high CPU, scales the Azure Kubernetes Service cluster, creates a Datadog annotation, and posts a status update to Microsoft Teams.
tags:
- infrastructure
- autoscaling
- prometheus
- azure-kubernetes-service
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: infra-scaling
port: 8080
tools:
- name: auto-scale-cluster
description: Given a cluster name and target node count, scale the AKS cluster, annotate Datadog, and notify the team.
inputParameters:
- name: cluster_name
in: body
type: string
description: The AKS cluster name.
- name: target_node_count
in: body
type: string
description: Desired number of nodes.
- name: trigger_metric
in: body
type: string
description: The Prometheus metric that triggered the scaling.
steps:
- name: scale-cluster
type: call
call: aks.scale-nodepool
with:
cluster_name: '{{cluster_name}}'
node_count: '{{target_node_count}}'
- name: annotate-datadog
type: call
call: datadog.create-event
with:
title: 'AKS Auto-Scale: {{cluster_name}}'
text: 'Scaled to {{target_node_count}} nodes. Trigger: {{trigger_metric}}'
alert_type: info
- name: notify-team
type: call
call: msteams.send-message
with:
channel: platform-ops
text: 'Auto-Scale Complete: {{cluster_name}} scaled to {{target_node_count}} nodes. Trigger: {{trigger_metric}}. Datadog event: {{annotate-datadog.id}}'
consumes:
- type: http
namespace: aks
baseUri: https://management.azure.com/subscriptions/$secrets.azure_subscription_id/resourceGroups
authentication:
type: bearer
token: $secrets.azure_token
resources:
- name: nodepools
path: /adidas-rg/providers/Microsoft.ContainerService/managedClusters/{{cluster_name}}/agentPools/default
inputParameters:
- name: cluster_name
in: path
operations:
- name: scale-nodepool
method: PUT
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: bearer
token: $secrets.datadog_api_key
inputParameters:
- name: DD-APPLICATION-KEY
in: header
value: $secrets.datadog_app_key
resources:
- name: events
path: /events
operations:
- name: create-event
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
operations:
- name: send-message
method: POST
Pulls online inventory from BigCommerce and warehouse stock from SAP S/4HANA, reconciles discrepancies, and logs mismatches in ServiceNow and a Google Sheet.
naftiko: '0.5'
info:
label: Omnichannel Inventory Reconciliation
description: Pulls online inventory from BigCommerce and warehouse stock from SAP S/4HANA, reconciles discrepancies, and logs mismatches in ServiceNow and a Google Sheet.
tags:
- supply-chain
- inventory
- bigcommerce
- sap-s4hana
- servicenow
- google-sheets
capability:
exposes:
- type: mcp
namespace: inventory-reconciliation
port: 8080
tools:
- name: reconcile-inventory
description: Given a product SKU, compare online and warehouse inventory and log any discrepancies.
inputParameters:
- name: sku
in: body
type: string
description: The product SKU to reconcile.
- name: warehouse_plant
in: body
type: string
description: The SAP plant code for the warehouse.
steps:
- name: get-online-stock
type: call
call: bigcommerce.get-product-stock
with:
sku: '{{sku}}'
- name: get-warehouse-stock
type: call
call: sap.get-material-stock
with:
material: '{{sku}}'
plant: '{{warehouse_plant}}'
- name: log-discrepancy
type: call
call: servicenow.create-incident
with:
short_description: 'Inventory mismatch: {{sku}} — Online: {{get-online-stock.quantity}} vs WH: {{get-warehouse-stock.quantity}}'
category: inventory
priority: '3'
description: 'SKU {{sku}} at plant {{warehouse_plant}}. BigCommerce: {{get-online-stock.quantity}}, SAP: {{get-warehouse-stock.quantity}}.'
- name: log-to-sheet
type: call
call: gsheets.append-row
with:
spreadsheet_id: $secrets.inventory_reconciliation_sheet
range: Discrepancies!A1
values: '{{sku}},{{warehouse_plant}},{{get-online-stock.quantity}},{{get-warehouse-stock.quantity}},{{log-discrepancy.number}}'
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/adidas/v3
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: products
path: /catalog/products
inputParameters:
- name: sku
in: query
operations:
- name: get-product-stock
method: GET
- type: http
namespace: sap
baseUri: https://adidas-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: stock
path: /A_MatlStkInAcctMod
operations:
- name: get-material-stock
method: GET
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: gsheets
baseUri: https://sheets.googleapis.com/v4/spreadsheets
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: values
path: /{{spreadsheet_id}}/values/{{range}}:append
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: append-row
method: POST
Retrieves Jira issue status for Adidas engineering teams.
naftiko: '0.5'
info:
label: Jira Issue Status
description: Retrieves Jira issue status for Adidas engineering teams.
tags:
- devops
- jira
- project-management
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: get-issue
description: Look up Jira issue at Adidas.
inputParameters:
- name: issue_key
in: body
type: string
description: The issue_key to look up.
call: jira.get-issue_key
with:
issue_key: '{{issue_key}}'
consumes:
- type: http
namespace: jira
baseUri: https://adidas.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: jira_issue_status
method: GET
Retrieves Confluence page content for Adidas knowledge base.
naftiko: '0.5'
info:
label: Confluence Page Retrieval
description: Retrieves Confluence page content for Adidas knowledge base.
tags:
- collaboration
- confluence
- documentation
capability:
exposes:
- type: mcp
namespace: knowledge
port: 8080
tools:
- name: get-page
description: Get page at Adidas.
inputParameters:
- name: page_id
in: body
type: string
description: The page_id to look up.
call: confluence.get-page_id
with:
page_id: '{{page_id}}'
consumes:
- type: http
namespace: confluence
baseUri: https://adidas.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_api_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: confluence_page_retrieval
method: GET
Extracts customer behavior segments from Adobe Analytics, enriches with purchase history from SAP HANA, and pushes personalized recommendations to the BigCommerce storefront.
naftiko: '0.5'
info:
label: Personalization Engine Data Sync
description: Extracts customer behavior segments from Adobe Analytics, enriches with purchase history from SAP HANA, and pushes personalized recommendations to the BigCommerce storefront.
tags:
- personalization
- adobe-analytics
- sap-hana
- bigcommerce
capability:
exposes:
- type: mcp
namespace: personalization
port: 8080
tools:
- name: sync-personalization
description: Given a customer segment ID, pull behavior data and purchase history, then update storefront recommendations.
inputParameters:
- name: segment_id
in: body
type: string
description: The Adobe Analytics segment ID.
- name: report_suite_id
in: body
type: string
description: The Adobe Analytics report suite.
steps:
- name: get-segment-data
type: call
call: adobe-analytics.get-segment-users
with:
segment_id: '{{segment_id}}'
report_suite_id: '{{report_suite_id}}'
- name: get-purchase-history
type: call
call: sap-hana.query-purchase-history
with:
segment_id: '{{segment_id}}'
- name: update-recommendations
type: call
call: bigcommerce.update-customer-group
with:
segment_id: '{{segment_id}}'
recommended_products: '{{get-purchase-history.top_products}}'
behavioral_tags: '{{get-segment-data.interests}}'
consumes:
- type: http
namespace: adobe-analytics
baseUri: https://analytics.adobe.io/api/adidas
authentication:
type: bearer
token: $secrets.adobe_analytics_token
inputParameters:
- name: x-api-key
in: header
value: $secrets.adobe_client_id
resources:
- name: segments
path: /segments/{{segment_id}}/users
inputParameters:
- name: segment_id
in: path
operations:
- name: get-segment-users
method: GET
- type: http
namespace: sap-hana
baseUri: https://adidas-hana.sap.com/sap/hana/xs/api
authentication:
type: basic
username: $secrets.sap_hana_user
password: $secrets.sap_hana_password
resources:
- name: purchase-history
path: /analytics/purchases
operations:
- name: query-purchase-history
method: POST
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/adidas/v3
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: customer-groups
path: /customers/groups
operations:
- name: update-customer-group
method: PUT
Checks ServiceNow incident status for Adidas IT operations.
naftiko: '0.5'
info:
label: ServiceNow Incident Status Check
description: Checks ServiceNow incident status for Adidas IT operations.
tags:
- itsm
- servicenow
- incident-management
capability:
exposes:
- type: mcp
namespace: itsm
port: 8080
tools:
- name: get-incident
description: Look up incident at Adidas.
inputParameters:
- name: incident_id
in: body
type: string
description: The incident_id to look up.
call: servicenow.get-incident_id
with:
incident_id: '{{incident_id}}'
consumes:
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow_incident_status_che
method: GET
Drafts a support article from a resolved Zendesk ticket, publishes it to Notion, and shares the link in a Microsoft Teams support channel.
naftiko: '0.5'
info:
label: Knowledge Base Article Publisher
description: Drafts a support article from a resolved Zendesk ticket, publishes it to Notion, and shares the link in a Microsoft Teams support channel.
tags:
- knowledge-management
- zendesk
- notion
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: knowledge-base
port: 8080
tools:
- name: publish-kb-article
description: Given a resolved Zendesk ticket ID, extract the resolution, publish to Notion, and share in Teams.
inputParameters:
- name: ticket_id
in: body
type: string
description: The Zendesk ticket ID with the resolution to publish.
- name: category
in: body
type: string
description: The knowledge base category (e.g. shipping, returns, product-info).
steps:
- name: get-ticket
type: call
call: zendesk.get-ticket
with:
ticket_id: '{{ticket_id}}'
- name: create-article
type: call
call: notion.create-page
with:
parent_id: $secrets.kb_database_id
title: '{{get-ticket.subject}}'
properties_category: '{{category}}'
content: '{{get-ticket.resolution_notes}}'
- name: share-article
type: call
call: msteams.send-message
with:
channel: customer-support
text: 'New KB Article: {{get-ticket.subject}} | Category: {{category}} | Link: {{create-article.url}} | Source: Ticket #{{ticket_id}}'
consumes:
- type: http
namespace: zendesk
baseUri: https://adidas.zendesk.com/api/v2
authentication:
type: bearer
token: $secrets.zendesk_token
resources:
- name: tickets
path: /tickets/{{ticket_id}}.json
inputParameters:
- name: ticket_id
in: path
operations:
- name: get-ticket
method: GET
- type: http
namespace: notion
baseUri: https://api.notion.com/v1
authentication:
type: bearer
token: $secrets.notion_token
inputParameters:
- name: Notion-Version
in: header
value: '2022-06-28'
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
operations:
- name: send-message
method: POST
When SAP detects a supplier delay, creates a ServiceNow incident, notifies the supply chain team in Microsoft Teams, and logs a risk entry in SAP S/4HANA.
naftiko: '0.5'
info:
label: Supply Chain Disruption Alert
description: When SAP detects a supplier delay, creates a ServiceNow incident, notifies the supply chain team in Microsoft Teams, and logs a risk entry in SAP S/4HANA.
tags:
- supply-chain
- sap-s4hana
- servicenow
- microsoft-teams
- risk-management
capability:
exposes:
- type: mcp
namespace: supply-chain
port: 8080
tools:
- name: handle-disruption
description: Given a supplier ID and delay details, create incident, notify the team, and log a supply chain risk.
inputParameters:
- name: supplier_id
in: body
type: string
description: The SAP supplier business partner ID.
- name: delay_days
in: body
type: string
description: Number of days the shipment is delayed.
- name: affected_materials
in: body
type: string
description: Comma-separated list of affected material numbers.
steps:
- name: get-supplier
type: call
call: sap.get-supplier
with:
supplier_id: '{{supplier_id}}'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Supply chain delay: {{get-supplier.name}} — {{delay_days}} days'
category: supply_chain
priority: '2'
description: 'Supplier {{get-supplier.name}} ({{supplier_id}}) delayed by {{delay_days}} days. Affected materials: {{affected_materials}}.'
- name: notify-team
type: call
call: msteams.send-message
with:
channel: supply-chain-alerts
text: 'Supplier Delay Alert: {{get-supplier.name}} | Delay: {{delay_days}} days | Materials: {{affected_materials}} | Incident: {{create-incident.number}}'
- name: log-risk
type: call
call: sap.create-risk-entry
with:
supplier_id: '{{supplier_id}}'
risk_type: DELIVERY_DELAY
severity: HIGH
description: '{{delay_days}} day delay affecting materials: {{affected_materials}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: suppliers
path: /A_Supplier('{{supplier_id}}')
inputParameters:
- name: supplier_id
in: path
operations:
- name: get-supplier
method: GET
- name: risk-entries
path: /A_SupplierRisk
operations:
- name: create-risk-entry
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
operations:
- name: send-message
method: POST
Analyzes sell-through rates in Snowflake, calculates optimal markdowns, updates pricing in SAP, refreshes dashboards, and notifies merchandising.
naftiko: '0.5'
info:
label: Seasonal Markdown Optimization
description: Analyzes sell-through rates in Snowflake, calculates optimal markdowns, updates pricing in SAP, refreshes dashboards, and notifies merchandising.
tags:
- merchandising
- snowflake
- sap
- powerbi
- slack
capability:
exposes:
- type: mcp
namespace: merchandising
port: 8080
tools:
- name: seasonal_markdown_optimization
description: Orchestrate seasonal markdown optimization workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-snowflake
type: call
call: snowflake.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-sap
type: call
call: sap.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-slack
type: call
call: slack.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-servicenow
type: call
call: servicenow.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
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
Retrieves Datadog monitor status for Adidas infrastructure.
naftiko: '0.5'
info:
label: Datadog Monitor Status
description: Retrieves Datadog monitor status for Adidas infrastructure.
tags:
- monitoring
- datadog
- alerting
capability:
exposes:
- type: mcp
namespace: observability
port: 8080
tools:
- name: get-monitor
description: Check monitor at Adidas.
inputParameters:
- name: monitor_id
in: body
type: string
description: The monitor_id to look up.
call: datadog.get-monitor_id
with:
monitor_id: '{{monitor_id}}'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apiKey
key: $secrets.datadog_api_key
header: DD-API-KEY
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: datadog_monitor_status
method: GET
Retrieves experiment results from Google Optimize and Adobe Analytics, consolidates them, and posts findings to a Notion knowledge base page.
naftiko: '0.5'
info:
label: E-Commerce A/B Test Result Collector
description: Retrieves experiment results from Google Optimize and Adobe Analytics, consolidates them, and posts findings to a Notion knowledge base page.
tags:
- experimentation
- google-optimize
- adobe-analytics
- notion
capability:
exposes:
- type: mcp
namespace: experimentation
port: 8080
tools:
- name: collect-ab-results
description: Given an experiment ID, collect results from Google Optimize and Adobe Analytics and write the summary to Notion.
inputParameters:
- name: experiment_id
in: body
type: string
description: The Google Optimize experiment ID.
- name: report_suite_id
in: body
type: string
description: The Adobe Analytics report suite ID.
- name: notion_page_id
in: body
type: string
description: The Notion page ID where results will be appended.
steps:
- name: get-optimize-results
type: call
call: google-optimize.get-experiment
with:
experiment_id: '{{experiment_id}}'
- name: get-adobe-segment
type: call
call: adobe-analytics.get-segment-report
with:
report_suite_id: '{{report_suite_id}}'
experiment_id: '{{experiment_id}}'
- name: write-to-notion
type: call
call: notion.append-block
with:
page_id: '{{notion_page_id}}'
content: 'Experiment: {{experiment_id}} | Winner: {{get-optimize-results.winner_variant}} | Lift: {{get-optimize-results.improvement_pct}}% | Revenue Impact: {{get-adobe-segment.revenue_delta}} | Confidence: {{get-optimize-results.confidence}}%'
consumes:
- type: http
namespace: google-optimize
baseUri: https://www.googleapis.com/analytics/v3/management
authentication:
type: bearer
token: $secrets.google_optimize_token
resources:
- name: experiments
path: /accounts/adidas/webproperties/UA-XXXXX/profiles/YYYYY/experiments/{{experiment_id}}
inputParameters:
- name: experiment_id
in: path
operations:
- name: get-experiment
method: GET
- type: http
namespace: adobe-analytics
baseUri: https://analytics.adobe.io/api/adidas/reports
authentication:
type: bearer
token: $secrets.adobe_analytics_token
inputParameters:
- name: x-api-key
in: header
value: $secrets.adobe_client_id
resources:
- name: reports
path: /ranked
operations:
- name: get-segment-report
method: POST
- type: http
namespace: notion
baseUri: https://api.notion.com/v1
authentication:
type: bearer
token: $secrets.notion_token
inputParameters:
- name: Notion-Version
in: header
value: '2022-06-28'
resources:
- name: blocks
path: /blocks/{{page_id}}/children
inputParameters:
- name: page_id
in: path
operations:
- name: append-block
method: PATCH
Retrieves QC results from SAP, runs statistical analysis in Snowflake, flags defective batches, creates Jira tasks, and notifies quality team.
naftiko: '0.5'
info:
label: Product Quality Inspection Pipeline
description: Retrieves QC results from SAP, runs statistical analysis in Snowflake, flags defective batches, creates Jira tasks, and notifies quality team.
tags:
- quality
- sap
- snowflake
- jira
- slack
capability:
exposes:
- type: mcp
namespace: quality
port: 8080
tools:
- name: product_quality_inspection_pipeline
description: Orchestrate product quality inspection pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-sap
type: call
call: sap.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-snowflake
type: call
call: snowflake.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-jira
type: call
call: jira.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: jira
baseUri: https://adidas.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Queries Grafana dashboard data for Adidas monitoring.
naftiko: '0.5'
info:
label: Grafana Dashboard Query
description: Queries Grafana dashboard data for Adidas monitoring.
tags:
- monitoring
- grafana
- dashboards
capability:
exposes:
- type: mcp
namespace: monitoring
port: 8080
tools:
- name: get-dashboard
description: Query dashboard at Adidas.
inputParameters:
- name: dashboard_uid
in: body
type: string
description: The dashboard_uid to look up.
call: grafana.get-dashboard_uid
with:
dashboard_uid: '{{dashboard_uid}}'
consumes:
- type: http
namespace: grafana
baseUri: https://adidas-grafana.com/api
authentication:
type: bearer
token: $secrets.grafana_api_key
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: grafana_dashboard_query
method: GET
Validates inventory in SAP, checks marketing assets in Adobe, confirms pricing in Salesforce, updates e-commerce catalog, and notifies launch team.
naftiko: '0.5'
info:
label: Product Launch Readiness Orchestrator
description: Validates inventory in SAP, checks marketing assets in Adobe, confirms pricing in Salesforce, updates e-commerce catalog, and notifies launch team.
tags:
- product-launch
- sap
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: product-launch
port: 8080
tools:
- name: product_launch_readiness_orchestrator
description: Orchestrate product launch readiness orchestrator workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-sap
type: call
call: sap.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-salesforce
type: call
call: salesforce.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-slack
type: call
call: slack.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-servicenow
type: call
call: servicenow.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: salesforce-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
When seasonal markdowns are triggered, updates product prices in BigCommerce, adjusts SAP pricing conditions, and sends a promotional email via Adobe Campaign.
naftiko: '0.5'
info:
label: Seasonal Markdown Execution
description: When seasonal markdowns are triggered, updates product prices in BigCommerce, adjusts SAP pricing conditions, and sends a promotional email via Adobe Campaign.
tags:
- retail
- pricing
- bigcommerce
- sap-s4hana
- adobe-campaign
capability:
exposes:
- type: mcp
namespace: markdown
port: 8080
tools:
- name: execute-markdown
description: Given a product category, discount percentage, and effective date, apply markdowns across all channels.
inputParameters:
- name: category
in: body
type: string
description: Product category to markdown.
- name: discount_pct
in: body
type: string
description: Discount percentage to apply.
- name: effective_date
in: body
type: string
description: Markdown effective date in YYYY-MM-DD format.
steps:
- name: update-ecommerce-prices
type: call
call: bigcommerce.batch-update-prices
with:
category: '{{category}}'
discount_pct: '{{discount_pct}}'
effective_date: '{{effective_date}}'
- name: update-sap-conditions
type: call
call: sap.update-pricing-condition
with:
condition_type: ZK07
category: '{{category}}'
discount_pct: '{{discount_pct}}'
valid_from: '{{effective_date}}'
- name: send-promo-email
type: call
call: adobe-campaign.create-delivery
with:
template: seasonal_markdown_v1
category: '{{category}}'
discount_pct: '{{discount_pct}}'
scheduled_date: '{{effective_date}}'
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/adidas/v3
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: products
path: /catalog/products
operations:
- name: batch-update-prices
method: PUT
- type: http
namespace: sap
baseUri: https://adidas-s4.sap.com/sap/opu/odata/sap/API_SLSPRICINGCONDITIONRECORD_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: conditions
path: /A_SlsPrcgCndnRecdValidity
operations:
- name: update-pricing-condition
method: POST
- type: http
namespace: adobe-campaign
baseUri: https://mc.adobe.io/adidas/campaign
authentication:
type: bearer
token: $secrets.adobe_campaign_token
resources:
- name: deliveries
path: /deliveries
operations:
- name: create-delivery
method: POST
When an order is placed on BigCommerce, checks SAP inventory, creates a shipment in SAP S/4HANA, and notifies the customer via Zendesk with tracking details.
naftiko: '0.5'
info:
label: E-Commerce Order Fulfillment Tracker
description: When an order is placed on BigCommerce, checks SAP inventory, creates a shipment in SAP S/4HANA, and notifies the customer via Zendesk with tracking details.
tags:
- ecommerce
- fulfillment
- bigcommerce
- sap-s4hana
- zendesk
capability:
exposes:
- type: mcp
namespace: order-fulfillment
port: 8080
tools:
- name: fulfill-order
description: Given a BigCommerce order ID and customer email, verify inventory, create a shipment, and send tracking info to the customer.
inputParameters:
- name: order_id
in: body
type: string
description: The BigCommerce order ID.
- name: customer_email
in: body
type: string
description: The customer email address for notification.
steps:
- name: get-order
type: call
call: bigcommerce.get-order
with:
order_id: '{{order_id}}'
- name: check-inventory
type: call
call: sap.check-availability
with:
sku: '{{get-order.line_items[0].sku}}'
quantity: '{{get-order.line_items[0].quantity}}'
- name: create-shipment
type: call
call: sap.create-delivery
with:
order_reference: '{{order_id}}'
sku: '{{get-order.line_items[0].sku}}'
ship_to: '{{get-order.shipping_address}}'
- name: notify-customer
type: call
call: zendesk.create-ticket
with:
requester_email: '{{customer_email}}'
subject: Your Adidas order {{order_id}} has shipped!
body: 'Tracking number: {{create-shipment.tracking_number}}. Estimated delivery: {{create-shipment.estimated_delivery}}.'
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/adidas/v2
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: orders
path: /orders/{{order_id}}
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: sap
baseUri: https://adidas-s4.sap.com/sap/opu/odata/sap/API_OUTBOUND_DELIVERY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: availability
path: /A_MaterialStock
operations:
- name: check-availability
method: GET
- name: deliveries
path: /A_OutbDeliveryHeader
operations:
- name: create-delivery
method: POST
- type: http
namespace: zendesk
baseUri: https://adidas.zendesk.com/api/v2
authentication:
type: bearer
token: $secrets.zendesk_token
resources:
- name: tickets
path: /tickets.json
operations:
- name: create-ticket
method: POST
Queries SAP S/4HANA for real-time stock levels of a given SKU across all regional warehouses. Used by merchandising and store operations teams.
naftiko: '0.5'
info:
label: Product Inventory Lookup
description: Queries SAP S/4HANA for real-time stock levels of a given SKU across all regional warehouses. Used by merchandising and store operations teams.
tags:
- retail
- inventory
- sap-s4hana
capability:
exposes:
- type: mcp
namespace: inventory
port: 8080
tools:
- name: get-sku-inventory
description: Look up current inventory levels for a product SKU across all Adidas distribution centers.
inputParameters:
- name: sku
in: body
type: string
description: The Adidas product SKU identifier.
call: sap.get-inventory
with:
sku: '{{sku}}'
outputParameters:
- name: total_available
type: string
mapping: $.d.AvailableStock
- name: warehouse_breakdown
type: string
mapping: $.d.PlantStockDetails
- name: reserved_quantity
type: string
mapping: $.d.ReservedQuantity
consumes:
- type: http
namespace: sap
baseUri: https://adidas-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
inputParameters:
- name: Accept
in: header
value: application/json
- name: sap-client
in: header
value: '100'
resources:
- name: material-stock
path: /A_MatlStkInAcctMod(Material='{{sku}}')
inputParameters:
- name: sku
in: path
operations:
- name: get-inventory
method: GET
Analyzes trend data in Snowflake, forecasts demand by category, creates collection plans in Jira, updates SAP materials, and notifies design team.
naftiko: '0.5'
info:
label: Collection Planning Pipeline
description: Analyzes trend data in Snowflake, forecasts demand by category, creates collection plans in Jira, updates SAP materials, and notifies design team.
tags:
- design
- snowflake
- jira
- sap
- slack
capability:
exposes:
- type: mcp
namespace: design
port: 8080
tools:
- name: collection_planning_pipeline
description: Orchestrate collection planning pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-snowflake
type: call
call: snowflake.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-jira
type: call
call: jira.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-sap
type: call
call: sap.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: jira
baseUri: https://adidas.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: jira-op
method: POST
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Runs a PromQL instant query against the Adidas Prometheus cluster and returns the current metric value.
naftiko: '0.5'
info:
label: Prometheus Metric Query
description: Runs a PromQL instant query against the Adidas Prometheus cluster and returns the current metric value.
tags:
- observability
- prometheus
- metrics
capability:
exposes:
- type: mcp
namespace: metrics
port: 8080
tools:
- name: query-metric
description: Execute a PromQL instant query and return the current value for the specified metric expression.
inputParameters:
- name: promql
in: body
type: string
description: The PromQL expression to evaluate.
call: prometheus.instant-query
with:
promql: '{{promql}}'
outputParameters:
- name: value
type: string
mapping: $.data.result[0].value[1]
- name: metric
type: string
mapping: $.data.result[0].metric
consumes:
- type: http
namespace: prometheus
baseUri: https://prometheus.adidas.internal/api/v1
authentication:
type: bearer
token: $secrets.prometheus_token
resources:
- name: query
path: /query
inputParameters:
- name: query
in: query
value: '{{promql}}'
operations:
- name: instant-query
method: GET
Collects engagement metrics from social APIs, aggregates in Snowflake, updates HubSpot campaign records, refreshes dashboards, and notifies marketing.
naftiko: '0.5'
info:
label: Social Media Campaign Tracker
description: Collects engagement metrics from social APIs, aggregates in Snowflake, updates HubSpot campaign records, refreshes dashboards, and notifies marketing.
tags:
- marketing
- hubspot
- snowflake
- powerbi
- slack
capability:
exposes:
- type: mcp
namespace: marketing
port: 8080
tools:
- name: social_media_campaign_tracker
description: Orchestrate social media campaign tracker workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-hubspot
type: call
call: hubspot.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-snowflake
type: call
call: snowflake.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-slack
type: call
call: slack.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-servicenow
type: call
call: servicenow.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: hubspot-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
Exports customer segments from Snowflake, syncs to Salesforce Marketing Cloud, validates delivery in Datadog, and notifies marketing.
naftiko: '0.5'
info:
label: Personalization Engine Sync Pipeline
description: Exports customer segments from Snowflake, syncs to Salesforce Marketing Cloud, validates delivery in Datadog, and notifies marketing.
tags:
- marketing
- snowflake
- salesforce
- datadog
- slack
capability:
exposes:
- type: mcp
namespace: marketing
port: 8080
tools:
- name: personalization_engine_sync_pipeline
description: Orchestrate personalization engine sync pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-snowflake
type: call
call: snowflake.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-salesforce
type: call
call: salesforce.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-datadog
type: call
call: datadog.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: salesforce-op
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apiKey
key: $secrets.datadog_api_key
header: DD-API-KEY
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: datadog-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Validates shipment data from SAP against trade regulations, checks denied party lists, creates compliance records, and notifies trade compliance team.
naftiko: '0.5'
info:
label: Cross-Border Trade Compliance
description: Validates shipment data from SAP against trade regulations, checks denied party lists, creates compliance records, and notifies trade compliance team.
tags:
- trade-compliance
- sap
- servicenow
- jira
- slack
capability:
exposes:
- type: mcp
namespace: trade-compliance
port: 8080
tools:
- name: cross_border_trade_compliance
description: Orchestrate cross-border trade compliance workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-sap
type: call
call: sap.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-servicenow
type: call
call: servicenow.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-jira
type: call
call: jira.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
- type: http
namespace: jira
baseUri: https://adidas.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Deploys a trained model from Azure Machine Learning to Azure Kubernetes Service, registers the deployment in Datadog, and notifies the data science team in Teams.
naftiko: '0.5'
info:
label: ML Model Deployment Pipeline
description: Deploys a trained model from Azure Machine Learning to Azure Kubernetes Service, registers the deployment in Datadog, and notifies the data science team in Teams.
tags:
- machine-learning
- azure-machine-learning
- azure-kubernetes-service
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ml-deployment
port: 8080
tools:
- name: deploy-model
description: Given a model name and version, deploy to AKS, register in Datadog, and notify the team.
inputParameters:
- name: model_name
in: body
type: string
description: The Azure ML model name.
- name: model_version
in: body
type: string
description: The model version to deploy.
- name: endpoint_name
in: body
type: string
description: The AKS inference endpoint name.
steps:
- name: create-deployment
type: call
call: azure-ml.create-deployment
with:
model_name: '{{model_name}}'
model_version: '{{model_version}}'
endpoint_name: '{{endpoint_name}}'
- name: register-monitor
type: call
call: datadog.create-monitor
with:
name: 'ML Model: {{model_name}} v{{model_version}}'
type: metric alert
query: avg(last_5m):avg:ml.inference.latency{model:{{model_name}}} > 500
- name: notify-team
type: call
call: msteams.send-message
with:
channel: data-science
text: 'Model Deployed: {{model_name}} v{{model_version}} to {{endpoint_name}} | Status: {{create-deployment.provisioning_state}} | Monitor: {{register-monitor.id}}'
consumes:
- type: http
namespace: azure-ml
baseUri: https://ml.azure.com/api/subscriptions/$secrets.azure_subscription_id/resourceGroups/adidas-ml-rg/providers/Microsoft.MachineLearningServices/workspaces/adidas-ml
authentication:
type: bearer
token: $secrets.azure_token
resources:
- name: deployments
path: /onlineEndpoints/{{endpoint_name}}/deployments
inputParameters:
- name: endpoint_name
in: path
operations:
- name: create-deployment
method: PUT
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: bearer
token: $secrets.datadog_api_key
inputParameters:
- name: DD-APPLICATION-KEY
in: header
value: $secrets.datadog_app_key
resources:
- name: monitors
path: /monitor
operations:
- name: create-monitor
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
operations:
- name: send-message
method: POST
When an Apache Spark job fails, logs the failure in Datadog, opens a ServiceNow incident, and notifies the data engineering team in Microsoft Teams.
naftiko: '0.5'
info:
label: Data Pipeline Failure Handler
description: When an Apache Spark job fails, logs the failure in Datadog, opens a ServiceNow incident, and notifies the data engineering team in Microsoft Teams.
tags:
- data-engineering
- apache-spark
- datadog
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: data-ops
port: 8080
tools:
- name: handle-spark-failure
description: Given a Spark application ID and error details, create observability event, incident, and team alert.
inputParameters:
- name: application_id
in: body
type: string
description: The Spark application ID.
- name: job_name
in: body
type: string
description: The name of the failed Spark job.
- name: error_message
in: body
type: string
description: The error message from the failure.
steps:
- name: log-event
type: call
call: datadog.create-event
with:
title: 'Spark Job Failure: {{job_name}}'
text: 'App: {{application_id}} | Error: {{error_message}}'
alert_type: error
tags: spark,job:{{job_name}}
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: '[Data Pipeline] Spark job failed: {{job_name}}'
category: data_engineering
priority: '2'
description: 'Application: {{application_id}}
Job: {{job_name}}
Error: {{error_message}}'
- name: alert-team
type: call
call: msteams.send-message
with:
channel: data-engineering-alerts
text: 'Spark Failure: {{job_name}} | App: {{application_id}} | Error: {{error_message}} | Incident: {{create-incident.number}}'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: bearer
token: $secrets.datadog_api_key
inputParameters:
- name: DD-APPLICATION-KEY
in: header
value: $secrets.datadog_app_key
resources:
- name: events
path: /events
operations:
- name: create-event
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
operations:
- name: send-message
method: POST
Monitors order fulfillment times from SAP, checks against SLAs in Snowflake, creates escalations in ServiceNow, and notifies operations.
naftiko: '0.5'
info:
label: Order Fulfillment SLA Monitor
description: Monitors order fulfillment times from SAP, checks against SLAs in Snowflake, creates escalations in ServiceNow, and notifies operations.
tags:
- fulfillment
- sap
- snowflake
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: fulfillment
port: 8080
tools:
- name: order_fulfillment_sla_monitor
description: Orchestrate order fulfillment sla monitor workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-sap
type: call
call: sap.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-snowflake
type: call
call: snowflake.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-servicenow
type: call
call: servicenow.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Identifies affected batches in SAP, traces distribution, notifies retailers via Salesforce, creates recall task force in ServiceNow, and alerts legal.
naftiko: '0.5'
info:
label: Product Recall Management Pipeline
description: Identifies affected batches in SAP, traces distribution, notifies retailers via Salesforce, creates recall task force in ServiceNow, and alerts legal.
tags:
- quality
- sap
- salesforce
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: quality
port: 8080
tools:
- name: product_recall_management_pipeline
description: Orchestrate product recall management pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-sap
type: call
call: sap.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-salesforce
type: call
call: salesforce.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-servicenow
type: call
call: servicenow.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: salesforce-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Runs a Terraform plan via GitHub Actions, detects drift, opens a ServiceNow change request, and alerts the infrastructure team in Teams.
naftiko: '0.5'
info:
label: Terraform Drift Detection and Remediation
description: Runs a Terraform plan via GitHub Actions, detects drift, opens a ServiceNow change request, and alerts the infrastructure team in Teams.
tags:
- infrastructure
- terraform
- github-actions
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: iac-drift
port: 8080
tools:
- name: detect-and-remediate-drift
description: Given a Terraform workspace, run a plan, detect drift, and open a change request if drift is found.
inputParameters:
- name: workspace
in: body
type: string
description: The Terraform Cloud workspace name.
- name: repository
in: body
type: string
description: The GitHub repository containing the Terraform code.
steps:
- name: trigger-plan
type: call
call: github-actions.trigger-workflow
with:
repository: '{{repository}}'
workflow_id: terraform-plan.yml
ref: main
inputs_workspace: '{{workspace}}'
- name: open-change-request
type: call
call: servicenow.create-change-request
with:
short_description: 'Terraform drift detected: {{workspace}}'
category: infrastructure
description: 'Drift detected in workspace {{workspace}}. Plan run: {{trigger-plan.run_id}}. Repository: {{repository}}.'
risk: moderate
- name: notify-team
type: call
call: msteams.send-message
with:
channel: infra-ops
text: 'Terraform Drift: {{workspace}} | Change Request: {{open-change-request.number}} | Plan: {{trigger-plan.run_id}} | Repo: {{repository}}'
consumes:
- type: http
namespace: github-actions
baseUri: https://api.github.com/repos
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: workflows
path: /{{repository}}/actions/workflows/{{workflow_id}}/dispatches
inputParameters:
- name: repository
in: path
- name: workflow_id
in: path
operations:
- name: trigger-workflow
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: change-requests
path: /table/change_request
operations:
- name: create-change-request
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
operations:
- name: send-message
method: POST
Receives wholesale orders in Salesforce, validates credit in SAP, creates fulfillment orders, updates Snowflake analytics, and notifies sales.
naftiko: '0.5'
info:
label: Wholesale Order Processing Pipeline
description: Receives wholesale orders in Salesforce, validates credit in SAP, creates fulfillment orders, updates Snowflake analytics, and notifies sales.
tags:
- wholesale
- salesforce
- sap
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: wholesale
port: 8080
tools:
- name: wholesale_order_processing_pipeline
description: Orchestrate wholesale order processing pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-salesforce
type: call
call: salesforce.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-sap
type: call
call: sap.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-snowflake
type: call
call: snowflake.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: salesforce-op
method: POST
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Monitors transactions from Stripe, runs fraud scoring in Snowflake, blocks suspicious orders, creates cases in ServiceNow, and alerts fraud team.
naftiko: '0.5'
info:
label: E-Commerce Fraud Detection Pipeline
description: Monitors transactions from Stripe, runs fraud scoring in Snowflake, blocks suspicious orders, creates cases in ServiceNow, and alerts fraud team.
tags:
- fraud
- stripe
- snowflake
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: fraud
port: 8080
tools:
- name: e_commerce_fraud_detection_pipeline
description: Orchestrate e-commerce fraud detection pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-stripe
type: call
call: stripe.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-snowflake
type: call
call: snowflake.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-servicenow
type: call
call: servicenow.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: stripe
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: stripe-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Searches the Adidas product catalog index in Elasticsearch by keyword and returns matching product names, prices, and availability.
naftiko: '0.5'
info:
label: Elasticsearch Product Search
description: Searches the Adidas product catalog index in Elasticsearch by keyword and returns matching product names, prices, and availability.
tags:
- search
- elasticsearch
- product-catalog
capability:
exposes:
- type: mcp
namespace: product-search
port: 8080
tools:
- name: search-products
description: Search the product catalog by keyword and return matching products with prices and availability.
inputParameters:
- name: query
in: body
type: string
description: Free-text search query for products.
- name: limit
in: body
type: string
description: Maximum number of results to return.
call: elasticsearch.search
with:
query: '{{query}}'
limit: '{{limit}}'
outputParameters:
- name: total_hits
type: string
mapping: $.hits.total.value
- name: products
type: string
mapping: $.hits.hits
consumes:
- type: http
namespace: elasticsearch
baseUri: https://es.adidas.internal:9200
authentication:
type: basic
username: $secrets.es_user
password: $secrets.es_password
resources:
- name: product-index
path: /products/_search
operations:
- name: search
method: POST
When SonarQube detects a critical vulnerability, creates a GitHub issue, opens a ServiceNow security incident, and alerts the security team via Teams.
naftiko: '0.5'
info:
label: Security Vulnerability Response
description: When SonarQube detects a critical vulnerability, creates a GitHub issue, opens a ServiceNow security incident, and alerts the security team via Teams.
tags:
- security
- sonarqube
- github
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: security-response
port: 8080
tools:
- name: handle-vulnerability
description: Given a SonarQube project and vulnerability details, create tracking issue, security incident, and alert the team.
inputParameters:
- name: project_key
in: body
type: string
description: The SonarQube project key.
- name: vulnerability_id
in: body
type: string
description: The SonarQube vulnerability issue key.
- name: severity
in: body
type: string
description: Vulnerability severity (CRITICAL, HIGH, MEDIUM, LOW).
steps:
- name: get-vulnerability
type: call
call: sonarqube.get-issue
with:
issue_key: '{{vulnerability_id}}'
- name: create-gh-issue
type: call
call: github.create-issue
with:
repository: adidas/{{project_key}}
title: '[Security] {{severity}}: {{get-vulnerability.message}}'
body: 'SonarQube: {{vulnerability_id}}
Severity: {{severity}}
Component: {{get-vulnerability.component}}
Line: {{get-vulnerability.line}}'
labels: security,{{severity}}
- name: create-security-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Security vulnerability: {{project_key}} — {{severity}}'
category: security
priority: '1'
description: '{{get-vulnerability.message}}. GitHub: {{create-gh-issue.html_url}}'
- name: alert-security
type: call
call: msteams.send-message
with:
channel: security-alerts
text: 'Security Alert: {{severity}} vulnerability in {{project_key}} | {{get-vulnerability.message}} | GH: {{create-gh-issue.html_url}} | Incident: {{create-security-incident.number}}'
consumes:
- type: http
namespace: sonarqube
baseUri: https://sonarqube.adidas.internal/api
authentication:
type: bearer
token: $secrets.sonarqube_token
resources:
- name: issues
path: /issues/search
inputParameters:
- name: issues
in: query
value: '{{issue_key}}'
operations:
- name: get-issue
method: GET
- type: http
namespace: github
baseUri: https://api.github.com/repos
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: issues
path: /{{repository}}/issues
inputParameters:
- name: repository
in: path
operations:
- name: create-issue
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
operations:
- name: send-message
method: POST
Retrieves PagerDuty incident details for Adidas on-call teams.
naftiko: '0.5'
info:
label: PagerDuty Incident Details
description: Retrieves PagerDuty incident details for Adidas on-call teams.
tags:
- devops
- pagerduty
- on-call
capability:
exposes:
- type: mcp
namespace: incident-mgmt
port: 8080
tools:
- name: get-incident
description: Look up incident at Adidas.
inputParameters:
- name: incident_id
in: body
type: string
description: The incident_id to look up.
call: pagerduty.get-incident_id
with:
incident_id: '{{incident_id}}'
consumes:
- type: http
namespace: pagerduty
baseUri: https://api.pagerduty.com
authentication:
type: bearer
token: $secrets.pagerduty_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: pagerduty_incident_details
method: GET
Calculates loyalty points from Stripe transactions, updates member profile in Salesforce, triggers reward notification, and syncs to analytics.
naftiko: '0.5'
info:
label: Customer Loyalty Rewards Processor
description: Calculates loyalty points from Stripe transactions, updates member profile in Salesforce, triggers reward notification, and syncs to analytics.
tags:
- loyalty
- stripe
- salesforce
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: loyalty
port: 8080
tools:
- name: customer_loyalty_rewards_processor
description: Orchestrate customer loyalty rewards processor workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-stripe
type: call
call: stripe.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-salesforce
type: call
call: salesforce.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-snowflake
type: call
call: snowflake.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: stripe
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: stripe-op
method: POST
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: salesforce-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Tracks sponsorship contracts in SAP, validates deliverables, updates Salesforce, creates renewal tasks in Jira, and notifies partnership team.
naftiko: '0.5'
info:
label: Athlete Sponsorship Contract Pipeline
description: Tracks sponsorship contracts in SAP, validates deliverables, updates Salesforce, creates renewal tasks in Jira, and notifies partnership team.
tags:
- sponsorship
- sap
- salesforce
- jira
- slack
capability:
exposes:
- type: mcp
namespace: sponsorship
port: 8080
tools:
- name: athlete_sponsorship_contract_pipeline
description: Orchestrate athlete sponsorship contract pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-sap
type: call
call: sap.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-salesforce
type: call
call: salesforce.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-jira
type: call
call: jira.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: salesforce-op
method: POST
- type: http
namespace: jira
baseUri: https://adidas.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
When Palo Alto Networks detects a threat, blocks the source IP via Cisco firewall, creates a ServiceNow security incident, and alerts the SOC team in Microsoft Teams.
naftiko: '0.5'
info:
label: Network Incident Auto-Remediation
description: When Palo Alto Networks detects a threat, blocks the source IP via Cisco firewall, creates a ServiceNow security incident, and alerts the SOC team in Microsoft Teams.
tags:
- security
- network
- palo-alto-networks
- cisco
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: network-security
port: 8080
tools:
- name: remediate-threat
description: Given a threat event from Palo Alto, block the source IP, create a security incident, and alert the SOC.
inputParameters:
- name: threat_id
in: body
type: string
description: The Palo Alto threat log ID.
- name: source_ip
in: body
type: string
description: The source IP address of the threat.
- name: threat_type
in: body
type: string
description: The threat classification.
steps:
- name: get-threat-details
type: call
call: paloalto.get-threat-log
with:
threat_id: '{{threat_id}}'
- name: block-ip
type: call
call: cisco.add-acl-entry
with:
source_ip: '{{source_ip}}'
action: deny
description: 'Auto-blocked: {{threat_type}} — {{threat_id}}'
- name: create-security-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Network threat: {{threat_type}} from {{source_ip}}'
category: security
priority: '1'
description: 'Threat: {{get-threat-details.description}} | Source: {{source_ip}} | Auto-blocked via Cisco ACL. Palo Alto log: {{threat_id}}.'
- name: alert-soc
type: call
call: msteams.send-message
with:
channel: soc-alerts
text: 'Network Threat Remediated: {{threat_type}} from {{source_ip}} | Blocked: YES | Incident: {{create-security-incident.number}} | PA Log: {{threat_id}}'
consumes:
- type: http
namespace: paloalto
baseUri: https://panorama.adidas.com/api
authentication:
type: bearer
token: $secrets.paloalto_api_key
resources:
- name: threat-logs
path: /logs/threat/{{threat_id}}
inputParameters:
- name: threat_id
in: path
operations:
- name: get-threat-log
method: GET
- type: http
namespace: cisco
baseUri: https://cisco-fw.adidas.internal/restconf/data
authentication:
type: basic
username: $secrets.cisco_user
password: $secrets.cisco_password
resources:
- name: acl
path: /Cisco-IOS-XE-native:native/ip/access-list
operations:
- name: add-acl-entry
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
operations:
- name: send-message
method: POST
Monitors POS anomalies from SAP, cross-references with video analytics, creates investigation cases in ServiceNow, and alerts loss prevention.
naftiko: '0.5'
info:
label: Retail Theft Prevention Pipeline
description: Monitors POS anomalies from SAP, cross-references with video analytics, creates investigation cases in ServiceNow, and alerts loss prevention.
tags:
- loss-prevention
- sap
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: loss-prevention
port: 8080
tools:
- name: retail_theft_prevention_pipeline
description: Orchestrate retail theft prevention pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-sap
type: call
call: sap.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-servicenow
type: call
call: servicenow.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-slack
type: call
call: slack.create-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Exports a GitLab project's issues and pipelines, creates corresponding work items in Azure DevOps, and logs the migration progress in a Google Sheet.
naftiko: '0.5'
info:
label: GitLab to Azure DevOps Migration Tracker
description: Exports a GitLab project's issues and pipelines, creates corresponding work items in Azure DevOps, and logs the migration progress in a Google Sheet.
tags:
- devops
- migration
- gitlab
- azure-devops
- google-sheets
capability:
exposes:
- type: mcp
namespace: devops-migration
port: 8080
tools:
- name: migrate-project
description: Given a GitLab project ID and Azure DevOps project, migrate issues and pipeline config and track progress.
inputParameters:
- name: gitlab_project_id
in: body
type: string
description: The GitLab project ID.
- name: azdo_project
in: body
type: string
description: The Azure DevOps project name.
- name: tracker_sheet_id
in: body
type: string
description: Google Sheets ID for migration tracking.
steps:
- name: export-issues
type: call
call: gitlab.list-issues
with:
project_id: '{{gitlab_project_id}}'
- name: create-work-items
type: call
call: azdo.create-work-item
with:
project: '{{azdo_project}}'
type: User Story
title: 'Migrated from GitLab: {{export-issues.title}}'
description: '{{export-issues.description}}'
- name: log-progress
type: call
call: gsheets.append-row
with:
spreadsheet_id: '{{tracker_sheet_id}}'
range: Migration!A1
values: '{{gitlab_project_id}},{{azdo_project}},{{export-issues.total_count}},{{create-work-items.count}},completed'
consumes:
- type: http
namespace: gitlab
baseUri: https://gitlab.adidas.com/api/v4
authentication:
type: bearer
token: $secrets.gitlab_token
resources:
- name: issues
path: /projects/{{project_id}}/issues
inputParameters:
- name: project_id
in: path
operations:
- name: list-issues
method: GET
- type: http
namespace: azdo
baseUri: https://dev.azure.com/adidas
authentication:
type: basic
username: ''
password: $secrets.azdo_pat
resources:
- name: work-items
path: /{{project}}/_apis/wit/workitems/$User Story
inputParameters:
- name: project
in: path
operations:
- name: create-work-item
method: POST
- type: http
namespace: gsheets
baseUri: https://sheets.googleapis.com/v4/spreadsheets
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: values
path: /{{spreadsheet_id}}/values/{{range}}:append
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: append-row
method: POST
Collects engagement metrics from Instagram, Facebook, Twitter, and YouTube for a given campaign hashtag and posts a consolidated summary to Microsoft Teams.
naftiko: '0.5'
info:
label: Social Media Engagement Aggregator
description: Collects engagement metrics from Instagram, Facebook, Twitter, and YouTube for a given campaign hashtag and posts a consolidated summary to Microsoft Teams.
tags:
- marketing
- social-media
- instagram
- facebook
- twitter
- youtube
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: social-analytics
port: 8080
tools:
- name: aggregate-engagement
description: Given a campaign hashtag, collect engagement metrics from all social channels and post a summary to Teams.
inputParameters:
- name: hashtag
in: body
type: string
description: 'The campaign hashtag to track (without #).'
- name: date_range
in: body
type: string
description: Date range in YYYY-MM-DD/YYYY-MM-DD format.
steps:
- name: get-instagram-metrics
type: call
call: instagram.get-hashtag-metrics
with:
hashtag: '{{hashtag}}'
date_range: '{{date_range}}'
- name: get-facebook-metrics
type: call
call: facebook.get-page-insights
with:
hashtag: '{{hashtag}}'
date_range: '{{date_range}}'
- name: get-twitter-metrics
type: call
call: twitter.get-tweet-metrics
with:
hashtag: '{{hashtag}}'
date_range: '{{date_range}}'
- name: get-youtube-metrics
type: call
call: youtube.get-video-metrics
with:
hashtag: '{{hashtag}}'
date_range: '{{date_range}}'
- name: post-summary
type: call
call: msteams.send-message
with:
channel: marketing-analytics
text: 'Campaign #{{hashtag}} Engagement Summary | IG: {{get-instagram-metrics.total_engagement}} | FB: {{get-facebook-metrics.total_engagement}} | Twitter: {{get-twitter-metrics.total_engagement}} | YT: {{get-youtube-metrics.total_views}}'
consumes:
- type: http
namespace: instagram
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.instagram_token
resources:
- name: hashtag-search
path: /ig_hashtag_search
operations:
- name: get-hashtag-metrics
method: GET
- type: http
namespace: facebook
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.facebook_page_token
resources:
- name: insights
path: /{{page_id}}/insights
operations:
- name: get-page-insights
method: GET
- type: http
namespace: twitter
baseUri: https://api.twitter.com/2
authentication:
type: bearer
token: $secrets.twitter_bearer_token
resources:
- name: tweets
path: /tweets/search/recent
operations:
- name: get-tweet-metrics
method: GET
- type: http
namespace: youtube
baseUri: https://www.googleapis.com/youtube/v3
authentication:
type: bearer
token: $secrets.youtube_api_key
resources:
- name: search
path: /search
operations:
- name: get-video-metrics
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
operations:
- name: send-message
method: POST
Validates product labels against regulatory databases, checks SAP material master data, creates compliance records, and notifies regulatory team.
naftiko: '0.5'
info:
label: Compliance Labeling Verification
description: Validates product labels against regulatory databases, checks SAP material master data, creates compliance records, and notifies regulatory team.
tags:
- compliance
- sap
- servicenow
- jira
- slack
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: compliance_labeling_verification
description: Orchestrate compliance labeling verification workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-sap
type: call
call: sap.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-servicenow
type: call
call: servicenow.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-jira
type: call
call: jira.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
- type: http
namespace: jira
baseUri: https://adidas.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Fetches open problems from Dynatrace for a given management zone and returns problem titles, severity levels, and impacted entities.
naftiko: '0.5'
info:
label: Dynatrace Problem Query
description: Fetches open problems from Dynatrace for a given management zone and returns problem titles, severity levels, and impacted entities.
tags:
- observability
- dynatrace
- incident-management
capability:
exposes:
- type: mcp
namespace: apm
port: 8080
tools:
- name: get-open-problems
description: Query Dynatrace for open problems in a management zone, returning severity and impacted entities.
inputParameters:
- name: management_zone
in: body
type: string
description: The Dynatrace management zone name.
call: dynatrace.list-problems
with:
management_zone: '{{management_zone}}'
outputParameters:
- name: total_count
type: string
mapping: $.totalCount
- name: problems
type: string
mapping: $.problems
consumes:
- type: http
namespace: dynatrace
baseUri: https://adidas.live.dynatrace.com/api/v2
authentication:
type: bearer
token: $secrets.dynatrace_token
resources:
- name: problems
path: /problems
inputParameters:
- name: problemSelector
in: query
value: managementZoneIds({{management_zone}}),status(OPEN)
operations:
- name: list-problems
method: GET
Runs a top-N sales query against SAP HANA for a given product category and region, returning aggregated revenue and units sold.
naftiko: '0.5'
info:
label: SAP HANA Sales Cube Query
description: Runs a top-N sales query against SAP HANA for a given product category and region, returning aggregated revenue and units sold.
tags:
- analytics
- sap-hana
- sales
capability:
exposes:
- type: mcp
namespace: sales-analytics
port: 8080
tools:
- name: query-sales-cube
description: Query SAP HANA sales analytics cube for revenue and units sold by product category and region.
inputParameters:
- name: category
in: body
type: string
description: Product category (e.g. footwear, apparel, accessories).
- name: region
in: body
type: string
description: Sales region code (e.g. EMEA, NAM, APAC).
call: sap-hana.run-query
with:
category: '{{category}}'
region: '{{region}}'
outputParameters:
- name: total_revenue
type: string
mapping: $.results[0].REVENUE
- name: units_sold
type: string
mapping: $.results[0].UNITS
consumes:
- type: http
namespace: sap-hana
baseUri: https://adidas-hana.sap.com/sap/hana/xs/api
authentication:
type: basic
username: $secrets.sap_hana_user
password: $secrets.sap_hana_password
resources:
- name: sales-cube
path: /analytics/sales
operations:
- name: run-query
method: POST
Retrieves Okta user profile for Adidas identity management.
naftiko: '0.5'
info:
label: Okta User Profile Lookup
description: Retrieves Okta user profile for Adidas identity management.
tags:
- security
- okta
- identity
capability:
exposes:
- type: mcp
namespace: identity
port: 8080
tools:
- name: get-user
description: Look up user at Adidas.
inputParameters:
- name: user_email
in: body
type: string
description: The user_email to look up.
call: okta.get-user_email
with:
user_email: '{{user_email}}'
consumes:
- type: http
namespace: okta
baseUri: https://adidas.okta.com/api/v1
authentication:
type: apiKey
key: $secrets.okta_api_token
header: Authorization
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: okta_user_profile_lookup
method: GET
Collects carbon footprint data from SAP, aggregates in Snowflake, generates ESG reports in Power BI, and publishes to sustainability team.
naftiko: '0.5'
info:
label: Sustainability Metrics Collection Pipeline
description: Collects carbon footprint data from SAP, aggregates in Snowflake, generates ESG reports in Power BI, and publishes to sustainability team.
tags:
- sustainability
- sap
- snowflake
- powerbi
- slack
capability:
exposes:
- type: mcp
namespace: sustainability
port: 8080
tools:
- name: sustainability_metrics_collector
description: Orchestrate sustainability metrics collection pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-sap
type: call
call: sap.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-snowflake
type: call
call: snowflake.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-slack
type: call
call: slack.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-servicenow
type: call
call: servicenow.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
Retrieves a Salesforce lead record and returns scoring details, source channel, and status. Used by sales development reps to prioritize outreach.
naftiko: '0.5'
info:
label: Salesforce Lead Qualification
description: Retrieves a Salesforce lead record and returns scoring details, source channel, and status. Used by sales development reps to prioritize outreach.
tags:
- sales
- salesforce
- lead-management
capability:
exposes:
- type: mcp
namespace: sales
port: 8080
tools:
- name: get-lead-details
description: Look up a Salesforce lead by ID and return qualification score, status, and source.
inputParameters:
- name: lead_id
in: body
type: string
description: The Salesforce lead record ID.
call: salesforce.get-lead
with:
lead_id: '{{lead_id}}'
outputParameters:
- name: lead_score
type: string
mapping: $.Lead_Score__c
- name: status
type: string
mapping: $.Status
- name: source
type: string
mapping: $.LeadSource
consumes:
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: leads
path: /sobjects/Lead/{{lead_id}}
inputParameters:
- name: lead_id
in: path
operations:
- name: get-lead
method: GET
Extracts return data from SAP, analyzes patterns in Snowflake, identifies quality issues, creates Jira tickets, and notifies product team.
naftiko: '0.5'
info:
label: Product Return Analysis Pipeline
description: Extracts return data from SAP, analyzes patterns in Snowflake, identifies quality issues, creates Jira tickets, and notifies product team.
tags:
- returns
- sap
- snowflake
- jira
- slack
capability:
exposes:
- type: mcp
namespace: returns
port: 8080
tools:
- name: product_return_analysis_pipeline
description: Orchestrate product return analysis pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-sap
type: call
call: sap.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-snowflake
type: call
call: snowflake.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-jira
type: call
call: jira.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: jira
baseUri: https://adidas.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Retrieves a BigCommerce order by ID and returns order status, total, shipping address, and line items.
naftiko: '0.5'
info:
label: BigCommerce Order Lookup
description: Retrieves a BigCommerce order by ID and returns order status, total, shipping address, and line items.
tags:
- ecommerce
- bigcommerce
- order-management
capability:
exposes:
- type: mcp
namespace: ecommerce
port: 8080
tools:
- name: get-order
description: Look up a BigCommerce order by ID and return its status, total, and shipping details.
inputParameters:
- name: order_id
in: body
type: string
description: The BigCommerce order ID.
call: bigcommerce.get-order
with:
order_id: '{{order_id}}'
outputParameters:
- name: status
type: string
mapping: $.status
- name: total
type: string
mapping: $.total_inc_tax
- name: shipping_address
type: string
mapping: $.shipping_addresses
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/adidas/v2
authentication:
type: bearer
token: $secrets.bigcommerce_token
inputParameters:
- name: X-Auth-Token
in: header
value: $secrets.bigcommerce_auth_token
resources:
- name: orders
path: /orders/{{order_id}}
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
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
When OpenTelemetry detects high-latency traces, extracts span details, creates a Dynatrace problem annotation, and opens a ServiceNow incident with trace context.
naftiko: '0.5'
info:
label: OpenTelemetry Trace to Incident
description: When OpenTelemetry detects high-latency traces, extracts span details, creates a Dynatrace problem annotation, and opens a ServiceNow incident with trace context.
tags:
- observability
- opentelemetry
- dynatrace
- servicenow
capability:
exposes:
- type: mcp
namespace: trace-incident
port: 8080
tools:
- name: escalate-trace
description: Given an OpenTelemetry trace ID, extract details, annotate in Dynatrace, and create an incident.
inputParameters:
- name: trace_id
in: body
type: string
description: The OpenTelemetry trace ID.
- name: service_name
in: body
type: string
description: The affected service name.
- name: latency_ms
in: body
type: string
description: The observed latency in milliseconds.
steps:
- name: get-trace
type: call
call: otel.get-trace
with:
trace_id: '{{trace_id}}'
- name: annotate-dynatrace
type: call
call: dynatrace.create-event
with:
entity_id: '{{service_name}}'
event_type: CUSTOM_ANNOTATION
description: 'High latency trace: {{trace_id}} — {{latency_ms}}ms'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'High latency: {{service_name}} — {{latency_ms}}ms'
category: performance
priority: '2'
description: 'Trace ID: {{trace_id}} | Service: {{service_name}} | Latency: {{latency_ms}}ms | Root span: {{get-trace.root_span_name}} | Dynatrace event: {{annotate-dynatrace.id}}'
consumes:
- type: http
namespace: otel
baseUri: https://otel-collector.adidas.internal/api/v1
authentication:
type: bearer
token: $secrets.otel_token
resources:
- name: traces
path: /traces/{{trace_id}}
inputParameters:
- name: trace_id
in: path
operations:
- name: get-trace
method: GET
- type: http
namespace: dynatrace
baseUri: https://adidas.live.dynatrace.com/api/v2
authentication:
type: bearer
token: $secrets.dynatrace_token
resources:
- name: events
path: /events/ingest
operations:
- name: create-event
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
Tracks product stages in SAP PLM, syncs to Snowflake for analytics, creates phase-gate tasks in Jira, and notifies product management.
naftiko: '0.5'
info:
label: Product Lifecycle Management Pipeline
description: Tracks product stages in SAP PLM, syncs to Snowflake for analytics, creates phase-gate tasks in Jira, and notifies product management.
tags:
- plm
- sap
- snowflake
- jira
- slack
capability:
exposes:
- type: mcp
namespace: plm
port: 8080
tools:
- name: product_lifecycle_management_pipeline
description: Orchestrate product lifecycle management pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-sap
type: call
call: sap.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-snowflake
type: call
call: snowflake.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-jira
type: call
call: jira.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: jira
baseUri: https://adidas.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Pulls vendor records from Oracle E-Business Suite, cross-references compliance data in SAP, and generates an audit report in SharePoint with findings logged to ServiceNow.
naftiko: '0.5'
info:
label: Vendor Compliance Audit
description: Pulls vendor records from Oracle E-Business Suite, cross-references compliance data in SAP, and generates an audit report in SharePoint with findings logged to ServiceNow.
tags:
- compliance
- oracle-e-business-suite
- sap-s4hana
- sharepoint
- servicenow
capability:
exposes:
- type: mcp
namespace: vendor-compliance
port: 8080
tools:
- name: run-vendor-audit
description: Given a vendor ID, pull records from Oracle and SAP, then generate an audit report and log findings.
inputParameters:
- name: vendor_id
in: body
type: string
description: The vendor identifier.
- name: audit_type
in: body
type: string
description: Type of audit (sustainability, labor, quality).
steps:
- name: get-oracle-vendor
type: call
call: oracle.get-vendor
with:
vendor_id: '{{vendor_id}}'
- name: get-sap-compliance
type: call
call: sap.get-vendor-compliance
with:
vendor_id: '{{vendor_id}}'
audit_type: '{{audit_type}}'
- name: create-report
type: call
call: sharepoint.create-file
with:
site_id: compliance_audits
folder_path: Vendors/{{get-oracle-vendor.vendor_name}}
file_name: audit_{{audit_type}}_report.docx
content: 'Vendor: {{get-oracle-vendor.vendor_name}} | Type: {{audit_type}} | Score: {{get-sap-compliance.score}} | Findings: {{get-sap-compliance.findings_count}}'
- name: log-findings
type: call
call: servicenow.create-incident
with:
short_description: 'Vendor audit: {{get-oracle-vendor.vendor_name}} — {{audit_type}}'
category: compliance
description: 'Score: {{get-sap-compliance.score}}. Findings: {{get-sap-compliance.findings_count}}. Report: {{create-report.url}}'
consumes:
- type: http
namespace: oracle
baseUri: https://oracle-ebs.adidas.com/webservices/rest/v1
authentication:
type: basic
username: $secrets.oracle_user
password: $secrets.oracle_password
resources:
- name: vendors
path: /vendors/{{vendor_id}}
inputParameters:
- name: vendor_id
in: path
operations:
- name: get-vendor
method: GET
- type: http
namespace: sap
baseUri: https://adidas-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: compliance
path: /A_Supplier('{{vendor_id}}')/to_ComplianceData
inputParameters:
- name: vendor_id
in: path
operations:
- name: get-vendor-compliance
method: GET
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: drive-items
path: /{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
- name: file_name
in: path
operations:
- name: create-file
method: PUT
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
Tracks program participation from Workday, calculates engagement in Snowflake, updates Power BI reports, and notifies HR team.
naftiko: '0.5'
info:
label: Employee Wellness Program Pipeline
description: Tracks program participation from Workday, calculates engagement in Snowflake, updates Power BI reports, and notifies HR team.
tags:
- hr
- workday
- snowflake
- powerbi
- slack
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: employee_wellness_program_pipeline
description: Orchestrate employee wellness program pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-workday
type: call
call: workday.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-snowflake
type: call
call: snowflake.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-slack
type: call
call: slack.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-servicenow
type: call
call: servicenow.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: workday
baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/adidas
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: workday-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
Sends a message to a Slack channel for Adidas notifications.
naftiko: '0.5'
info:
label: Slack Channel Post
description: Sends a message to a Slack channel for Adidas notifications.
tags:
- collaboration
- slack
- messaging
capability:
exposes:
- type: mcp
namespace: messaging
port: 8080
tools:
- name: send-message
description: Post to Slack at Adidas.
inputParameters:
- name: channel
in: body
type: string
description: The channel to look up.
call: slack.get-channel
with:
channel: '{{channel}}'
consumes:
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack_channel_post
method: GET
Looks up a ServiceNow incident by number and returns its state, priority, assigned group, and resolution notes.
naftiko: '0.5'
info:
label: ServiceNow Incident Status
description: Looks up a ServiceNow incident by number and returns its state, priority, assigned group, and resolution notes.
tags:
- itsm
- servicenow
- incident-management
capability:
exposes:
- type: mcp
namespace: itsm
port: 8080
tools:
- name: get-incident
description: Retrieve a ServiceNow incident record by number including state, priority, and assignment.
inputParameters:
- name: incident_number
in: body
type: string
description: The ServiceNow incident number (e.g. INC0012345).
call: servicenow.get-incident
with:
incident_number: '{{incident_number}}'
outputParameters:
- name: state
type: string
mapping: $.result[0].state
- name: priority
type: string
mapping: $.result[0].priority
- name: assigned_group
type: string
mapping: $.result[0].assignment_group.display_value
consumes:
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
inputParameters:
- name: sysparm_query
in: query
value: number={{incident_number}}
- name: incident_number
in: path
operations:
- name: get-incident
method: GET
Triggers Power BI dataset refresh for Adidas reporting.
naftiko: '0.5'
info:
label: Power BI Refresh Trigger
description: Triggers Power BI dataset refresh for Adidas reporting.
tags:
- analytics
- power-bi
- reporting
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: trigger-refresh
description: Trigger refresh at Adidas.
inputParameters:
- name: dataset_id
in: body
type: string
description: The dataset_id to look up.
call: powerbi.get-dataset_id
with:
dataset_id: '{{dataset_id}}'
consumes:
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: power_bi_refresh_trigger
method: GET
When a SAP S/4HANA purchase order exceeds a spend threshold, routes for manager approval via PeopleSoft and notifies the requestor in Microsoft Teams with approval status.
naftiko: '0.5'
info:
label: SAP Purchase Order Approval Pipeline
description: When a SAP S/4HANA purchase order exceeds a spend threshold, routes for manager approval via PeopleSoft and notifies the requestor in Microsoft Teams with approval status.
tags:
- procurement
- sap-s4hana
- peoplesoft
- microsoft-teams
- approval
capability:
exposes:
- type: mcp
namespace: po-approval
port: 8080
tools:
- name: route-po-approval
description: Given a PO number and requestor ID, check the amount, route for approval, and notify both parties.
inputParameters:
- name: po_number
in: body
type: string
description: The SAP purchase order number.
- name: requestor_id
in: body
type: string
description: The PeopleSoft employee ID of the requestor.
- name: spend_amount
in: body
type: string
description: The total PO amount.
steps:
- name: get-po
type: call
call: sap.get-purchase-order
with:
po_number: '{{po_number}}'
- name: get-approver
type: call
call: peoplesoft.get-manager
with:
employee_id: '{{requestor_id}}'
- name: notify-approver
type: call
call: msteams.send-message
with:
recipient_upn: '{{get-approver.manager_email}}'
text: 'PO Approval Required: PO {{po_number}} for {{spend_amount}} from {{get-po.vendor_name}}. Please review and approve.'
- name: notify-requestor
type: call
call: msteams.send-message
with:
recipient_upn: '{{get-approver.employee_email}}'
text: Your PO {{po_number}} ({{spend_amount}}) has been routed to {{get-approver.manager_name}} for approval.
consumes:
- type: http
namespace: sap
baseUri: https://adidas-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: purchase-orders
path: /A_PurchaseOrder('{{po_number}}')
inputParameters:
- name: po_number
in: path
operations:
- name: get-purchase-order
method: GET
- type: http
namespace: peoplesoft
baseUri: https://peoplesoft.adidas.com/psftapi/v1
authentication:
type: basic
username: $secrets.peoplesoft_user
password: $secrets.peoplesoft_password
resources:
- name: employees
path: /employees/{{employee_id}}/manager
inputParameters:
- name: employee_id
in: path
operations:
- name: get-manager
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Retrieves a HubSpot CRM contact by email address and returns lifecycle stage, last activity date, and deal associations.
naftiko: '0.5'
info:
label: HubSpot Contact Lookup
description: Retrieves a HubSpot CRM contact by email address and returns lifecycle stage, last activity date, and deal associations.
tags:
- crm
- hubspot
- contacts
capability:
exposes:
- type: mcp
namespace: crm
port: 8080
tools:
- name: get-contact-by-email
description: Look up a HubSpot contact by email and return lifecycle stage, last activity, and associated deals.
inputParameters:
- name: email
in: body
type: string
description: The contact email address.
call: hubspot.get-contact
with:
email: '{{email}}'
outputParameters:
- name: lifecycle_stage
type: string
mapping: $.properties.lifecyclestage
- name: last_activity
type: string
mapping: $.properties.notes_last_updated
- name: deal_count
type: string
mapping: $.properties.num_associated_deals
consumes:
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com/crm/v3
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: contacts
path: /objects/contacts/{{email}}
inputParameters:
- name: email
in: path
- name: idProperty
in: query
value: email
operations:
- name: get-contact
method: GET
Forecasts volume from Snowflake, optimizes shifts in Workday, syncs schedules to SAP, updates Grafana dashboards, and notifies warehouse managers.
naftiko: '0.5'
info:
label: Warehouse Labor Scheduling Pipeline
description: Forecasts volume from Snowflake, optimizes shifts in Workday, syncs schedules to SAP, updates Grafana dashboards, and notifies warehouse managers.
tags:
- logistics
- snowflake
- workday
- sap
- grafana
capability:
exposes:
- type: mcp
namespace: logistics
port: 8080
tools:
- name: warehouse_labor_scheduling_pipeline
description: Orchestrate warehouse labor scheduling pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-snowflake
type: call
call: snowflake.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-workday
type: call
call: workday.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-sap
type: call
call: sap.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-grafana
type: call
call: grafana.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: workday
baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/adidas
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: workday-op
method: POST
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: grafana
baseUri: https://adidas-grafana.com/api
authentication:
type: bearer
token: $secrets.grafana_api_key
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: grafana-op
method: POST
Analyzes market data in Snowflake, evaluates regulatory requirements, creates business case in Confluence-equivalent, and notifies strategy team.
naftiko: '0.5'
info:
label: New Market Entry Assessment
description: Analyzes market data in Snowflake, evaluates regulatory requirements, creates business case in Confluence-equivalent, and notifies strategy team.
tags:
- strategy
- snowflake
- salesforce
- jira
- slack
capability:
exposes:
- type: mcp
namespace: strategy
port: 8080
tools:
- name: new_market_entry_assessment
description: Orchestrate new market entry assessment workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-snowflake
type: call
call: snowflake.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-salesforce
type: call
call: salesforce.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-jira
type: call
call: jira.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: salesforce-op
method: POST
- type: http
namespace: jira
baseUri: https://adidas.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Orchestrates creative asset production by uploading a design brief to Box, triggering an Adobe Creative Cloud workflow, and publishing the final asset to SharePoint and Notion.
naftiko: '0.5'
info:
label: Content Asset Production Pipeline
description: Orchestrates creative asset production by uploading a design brief to Box, triggering an Adobe Creative Cloud workflow, and publishing the final asset to SharePoint and Notion.
tags:
- creative
- content-production
- box
- adobe-creative-cloud
- sharepoint
- notion
capability:
exposes:
- type: mcp
namespace: content-production
port: 8080
tools:
- name: produce-asset
description: Given an asset brief, upload to Box, trigger creative workflow, and publish to SharePoint and Notion.
inputParameters:
- name: brief_title
in: body
type: string
description: Title of the creative brief.
- name: campaign_name
in: body
type: string
description: The marketing campaign name.
- name: asset_type
in: body
type: string
description: Type of asset (banner, video, social, email).
steps:
- name: upload-brief
type: call
call: box.upload-file
with:
folder_id: $secrets.creative_briefs_folder
file_name: '{{brief_title}}_brief.pdf'
campaign: '{{campaign_name}}'
- name: trigger-creative
type: call
call: adobe-cc.start-workflow
with:
workflow_template: '{{asset_type}}_production'
brief_url: '{{upload-brief.shared_link}}'
campaign: '{{campaign_name}}'
- name: publish-sharepoint
type: call
call: sharepoint.upload-file
with:
site_id: marketing_assets
folder_path: Campaigns/{{campaign_name}}/{{asset_type}}
file_url: '{{trigger-creative.output_url}}'
- name: log-in-notion
type: call
call: notion.create-page
with:
parent_id: $secrets.creative_tracker_db
title: '{{brief_title}}'
properties_campaign: '{{campaign_name}}'
properties_type: '{{asset_type}}'
properties_sharepoint_url: '{{publish-sharepoint.url}}'
consumes:
- type: http
namespace: box
baseUri: https://api.box.com/2.0
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: files
path: /files/content
operations:
- name: upload-file
method: POST
- type: http
namespace: adobe-cc
baseUri: https://cc-api.adobe.io/v1
authentication:
type: bearer
token: $secrets.adobe_cc_token
resources:
- name: workflows
path: /workflows
operations:
- name: start-workflow
method: POST
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: drive-items
path: /{{site_id}}/drive/root:/{{folder_path}}
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: upload-file
method: PUT
- type: http
namespace: notion
baseUri: https://api.notion.com/v1
authentication:
type: bearer
token: $secrets.notion_token
inputParameters:
- name: Notion-Version
in: header
value: '2022-06-28'
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Queries Microsoft Power Automate for failed flow runs, creates ServiceNow incidents for each failure, and posts a summary to Microsoft Teams.
naftiko: '0.5'
info:
label: Power Automate Workflow Status Reporter
description: Queries Microsoft Power Automate for failed flow runs, creates ServiceNow incidents for each failure, and posts a summary to Microsoft Teams.
tags:
- automation
- microsoft-power-automate
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: rpa-ops
port: 8080
tools:
- name: report-failed-flows
description: Given a date range, find all failed Power Automate flows, create incidents, and summarize in Teams.
inputParameters:
- name: date_from
in: body
type: string
description: Start date for the search in YYYY-MM-DD format.
- name: date_to
in: body
type: string
description: End date for the search in YYYY-MM-DD format.
steps:
- name: get-failed-runs
type: call
call: power-automate.list-failed-runs
with:
date_from: '{{date_from}}'
date_to: '{{date_to}}'
- name: create-incidents
type: call
call: servicenow.create-incident
with:
short_description: 'Power Automate failure: {{get-failed-runs.flow_name}}'
category: automation
priority: '3'
description: 'Flow: {{get-failed-runs.flow_name}} | Run ID: {{get-failed-runs.run_id}} | Error: {{get-failed-runs.error_message}}'
- name: post-summary
type: call
call: msteams.send-message
with:
channel: automation-ops
text: 'Power Automate Failure Summary ({{date_from}} to {{date_to}}): {{get-failed-runs.total_failures}} failed runs | Incident: {{create-incidents.number}}'
consumes:
- type: http
namespace: power-automate
baseUri: https://api.flow.microsoft.com/providers/Microsoft.ProcessSimple
authentication:
type: bearer
token: $secrets.power_automate_token
resources:
- name: flow-runs
path: /environments/$secrets.pa_environment_id/flows
operations:
- name: list-failed-runs
method: GET
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
operations:
- name: send-message
method: POST
Collects vendor delivery data from SAP, calculates scores in Snowflake, updates Salesforce vendor records, and notifies procurement.
naftiko: '0.5'
info:
label: Vendor Performance Scorecard Pipeline
description: Collects vendor delivery data from SAP, calculates scores in Snowflake, updates Salesforce vendor records, and notifies procurement.
tags:
- procurement
- sap
- snowflake
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: vendor_performance_scorecard_pipeline
description: Orchestrate vendor performance scorecard pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-sap
type: call
call: sap.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-snowflake
type: call
call: snowflake.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-salesforce
type: call
call: salesforce.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: salesforce-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Retrieves a Zendesk support ticket by ID including status, priority, assignee, and customer satisfaction rating. Used by customer service managers.
naftiko: '0.5'
info:
label: Zendesk Ticket Lookup
description: Retrieves a Zendesk support ticket by ID including status, priority, assignee, and customer satisfaction rating. Used by customer service managers.
tags:
- customer-service
- zendesk
- support
capability:
exposes:
- type: mcp
namespace: support
port: 8080
tools:
- name: get-ticket
description: Look up a Zendesk support ticket and return its status, priority, assignee, and satisfaction rating.
inputParameters:
- name: ticket_id
in: body
type: string
description: The Zendesk ticket ID.
call: zendesk.get-ticket
with:
ticket_id: '{{ticket_id}}'
outputParameters:
- name: status
type: string
mapping: $.ticket.status
- name: priority
type: string
mapping: $.ticket.priority
- name: assignee
type: string
mapping: $.ticket.assignee_id
- name: satisfaction_rating
type: string
mapping: $.ticket.satisfaction_rating.score
consumes:
- type: http
namespace: zendesk
baseUri: https://adidas.zendesk.com/api/v2
authentication:
type: bearer
token: $secrets.zendesk_token
resources:
- name: tickets
path: /tickets/{{ticket_id}}.json
inputParameters:
- name: ticket_id
in: path
operations:
- name: get-ticket
method: GET
Retrieves a Stripe payment intent by ID and returns amount, status, currency, and last four digits of the card used. Used by finance operations.
naftiko: '0.5'
info:
label: Stripe Payment Lookup
description: Retrieves a Stripe payment intent by ID and returns amount, status, currency, and last four digits of the card used. Used by finance operations.
tags:
- finance
- stripe
- payments
capability:
exposes:
- type: mcp
namespace: payments
port: 8080
tools:
- name: get-payment
description: Look up a Stripe payment intent by ID and return its amount, status, and payment method details.
inputParameters:
- name: payment_intent_id
in: body
type: string
description: The Stripe payment intent ID (e.g. pi_xxx).
call: stripe.get-payment-intent
with:
payment_intent_id: '{{payment_intent_id}}'
outputParameters:
- name: amount
type: string
mapping: $.amount
- name: currency
type: string
mapping: $.currency
- name: status
type: string
mapping: $.status
- name: card_last4
type: string
mapping: $.payment_method.card.last4
consumes:
- type: http
namespace: stripe
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: payment-intents
path: /payment_intents/{{payment_intent_id}}
inputParameters:
- name: payment_intent_id
in: path
operations:
- name: get-payment-intent
method: GET
Collects influencer metrics from social APIs, calculates ROI in Snowflake, updates HubSpot campaigns, and notifies the brand team.
naftiko: '0.5'
info:
label: Influencer Campaign ROI Calculator
description: Collects influencer metrics from social APIs, calculates ROI in Snowflake, updates HubSpot campaigns, and notifies the brand team.
tags:
- marketing
- hubspot
- snowflake
- powerbi
- slack
capability:
exposes:
- type: mcp
namespace: marketing
port: 8080
tools:
- name: influencer_campaign_roi_calculator
description: Orchestrate influencer campaign roi calculator workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-hubspot
type: call
call: hubspot.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-snowflake
type: call
call: snowflake.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-slack
type: call
call: slack.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-servicenow
type: call
call: servicenow.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: hubspot-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
Retrieves Salesforce account details for Adidas sales teams.
naftiko: '0.5'
info:
label: Salesforce Account Info
description: Retrieves Salesforce account details for Adidas sales teams.
tags:
- crm
- salesforce
- accounts
capability:
exposes:
- type: mcp
namespace: crm
port: 8080
tools:
- name: get-account
description: Look up account at Adidas.
inputParameters:
- name: account_id
in: body
type: string
description: The account_id to look up.
call: salesforce.get-account_id
with:
account_id: '{{account_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: salesforce_account_info
method: GET
Pulls campaign spend from Adobe Campaign, payment data from Stripe, and reconciles against the budget in SAP BW, then updates a Microsoft Excel tracker on SharePoint.
naftiko: '0.5'
info:
label: Marketing Budget Tracker Sync
description: Pulls campaign spend from Adobe Campaign, payment data from Stripe, and reconciles against the budget in SAP BW, then updates a Microsoft Excel tracker on SharePoint.
tags:
- finance
- marketing
- adobe-campaign
- stripe
- sap-bw
- microsoft-excel
- sharepoint
capability:
exposes:
- type: mcp
namespace: budget-tracking
port: 8080
tools:
- name: sync-marketing-budget
description: Given a campaign ID and fiscal period, pull spend data from all channels and reconcile against budget.
inputParameters:
- name: campaign_id
in: body
type: string
description: The marketing campaign identifier.
- name: fiscal_period
in: body
type: string
description: The fiscal period (e.g. 2026-Q1).
steps:
- name: get-campaign-spend
type: call
call: adobe-campaign.get-delivery-stats
with:
campaign_id: '{{campaign_id}}'
- name: get-payment-totals
type: call
call: stripe.get-balance-transactions
with:
campaign_reference: '{{campaign_id}}'
period: '{{fiscal_period}}'
- name: get-budget
type: call
call: sap-bw.get-budget-allocation
with:
cost_center: marketing
period: '{{fiscal_period}}'
- name: update-excel
type: call
call: sharepoint.update-excel-range
with:
site_id: finance_reports
workbook_path: Budgets/Marketing_{{fiscal_period}}.xlsx
range: Summary!A2
values: '{{campaign_id}},{{get-campaign-spend.total_cost}},{{get-payment-totals.net_amount}},{{get-budget.allocated}},{{get-budget.remaining}}'
consumes:
- type: http
namespace: adobe-campaign
baseUri: https://mc.adobe.io/adidas/campaign
authentication:
type: bearer
token: $secrets.adobe_campaign_token
resources:
- name: deliveries
path: /deliveries/{{campaign_id}}/stats
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-delivery-stats
method: GET
- type: http
namespace: stripe
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: balance-transactions
path: /balance_transactions
operations:
- name: get-balance-transactions
method: GET
- type: http
namespace: sap-bw
baseUri: https://adidas-bw.sap.com/sap/bw/odata/v1
authentication:
type: basic
username: $secrets.sap_bw_user
password: $secrets.sap_bw_password
resources:
- name: budgets
path: /ZBUDGET_ALLOCATION
operations:
- name: get-budget-allocation
method: GET
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: excel
path: /{{site_id}}/drive/root:/{{workbook_path}}:/workbook/worksheets/{{range}}
inputParameters:
- name: site_id
in: path
- name: workbook_path
in: path
- name: range
in: path
operations:
- name: update-excel-range
method: PATCH
Retrieves page-level performance metrics from Adobe Analytics for a specified report suite and page path.
naftiko: '0.5'
info:
label: Adobe Analytics Page Performance
description: Retrieves page-level performance metrics from Adobe Analytics for a specified report suite and page path.
tags:
- analytics
- adobe-analytics
- ecommerce
capability:
exposes:
- type: mcp
namespace: digital-analytics
port: 8080
tools:
- name: get-page-performance
description: Query Adobe Analytics for page views, bounce rate, and average time on page for a given URL path.
inputParameters:
- name: report_suite_id
in: body
type: string
description: The Adobe Analytics report suite ID.
- name: page_path
in: body
type: string
description: The URL path to analyze.
call: adobe-analytics.get-report
with:
report_suite_id: '{{report_suite_id}}'
page_path: '{{page_path}}'
outputParameters:
- name: page_views
type: string
mapping: $.rows[0].data[0]
- name: bounce_rate
type: string
mapping: $.rows[0].data[1]
- name: avg_time_on_page
type: string
mapping: $.rows[0].data[2]
consumes:
- type: http
namespace: adobe-analytics
baseUri: https://analytics.adobe.io/api/adidas/reports
authentication:
type: bearer
token: $secrets.adobe_analytics_token
inputParameters:
- name: x-api-key
in: header
value: $secrets.adobe_client_id
resources:
- name: reports
path: /ranked
operations:
- name: get-report
method: POST
On 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
On a GitHub Actions pipeline failure, creates a Datadog event marker, opens a ServiceNow incident, and alerts the engineering team in Microsoft Teams.
naftiko: '0.5'
info:
label: CI/CD Pipeline Failure Handler
description: On a GitHub Actions pipeline failure, creates a Datadog event marker, opens a ServiceNow incident, and alerts the engineering team in Microsoft Teams.
tags:
- devops
- github-actions
- datadog
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: handle-pipeline-failure
description: Given a pipeline run ID, repo, and branch, create observability marker, open incident, and alert the team.
inputParameters:
- name: run_id
in: body
type: string
description: The GitHub Actions workflow run ID.
- name: repository
in: body
type: string
description: The GitHub repository (org/repo format).
- name: branch
in: body
type: string
description: The branch that failed.
- name: failed_job
in: body
type: string
description: Name of the failed job.
steps:
- name: create-dd-event
type: call
call: datadog.create-event
with:
title: 'Pipeline Failure: {{repository}} / {{branch}}'
text: 'Run ID: {{run_id}} | Job: {{failed_job}}'
alert_type: error
tags: repo:{{repository}},branch:{{branch}}
- name: open-incident
type: call
call: servicenow.create-incident
with:
short_description: '[CI Failure] {{repository}} / {{branch}} — {{failed_job}}'
category: software
priority: '3'
description: 'GitHub Actions run {{run_id}} failed on {{branch}} in {{repository}}. Job: {{failed_job}}.'
- name: alert-team
type: call
call: msteams.send-message
with:
channel: engineering-alerts
text: 'Pipeline Failure: {{repository}} | Branch: {{branch}} | Job: {{failed_job}} | Incident: {{open-incident.number}} | Run: https://github.com/{{repository}}/actions/runs/{{run_id}}'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: bearer
token: $secrets.datadog_api_key
inputParameters:
- name: DD-APPLICATION-KEY
in: header
value: $secrets.datadog_app_key
resources:
- name: events
path: /events
operations:
- name: create-event
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
operations:
- name: send-message
method: POST
When SAP S/4HANA detects inventory below safety stock, generates a purchase requisition, notifies the procurement team in Teams, and logs it in a Google Sheet tracker.
naftiko: '0.5'
info:
label: Warehouse Replenishment Orchestrator
description: When SAP S/4HANA detects inventory below safety stock, generates a purchase requisition, notifies the procurement team in Teams, and logs it in a Google Sheet tracker.
tags:
- supply-chain
- replenishment
- sap-s4hana
- microsoft-teams
- google-sheets
capability:
exposes:
- type: mcp
namespace: replenishment
port: 8080
tools:
- name: trigger-replenishment
description: Given a material number and plant, create a purchase requisition, notify procurement, and log the event.
inputParameters:
- name: material_number
in: body
type: string
description: The SAP material number.
- name: plant
in: body
type: string
description: The SAP plant code.
- name: current_stock
in: body
type: string
description: Current on-hand quantity.
- name: reorder_quantity
in: body
type: string
description: Quantity to reorder.
steps:
- name: create-pr
type: call
call: sap.create-purchase-requisition
with:
material: '{{material_number}}'
plant: '{{plant}}'
quantity: '{{reorder_quantity}}'
requisition_type: NB
- name: notify-procurement
type: call
call: msteams.send-message
with:
channel: procurement-alerts
text: 'Replenishment Alert: Material {{material_number}} at plant {{plant}} is below safety stock ({{current_stock}} on hand). PR {{create-pr.requisition_number}} created for {{reorder_quantity}} units.'
- name: log-event
type: call
call: gsheets.append-row
with:
spreadsheet_id: $secrets.replenishment_tracker_sheet
range: Log!A1
values: '{{material_number}},{{plant}},{{current_stock}},{{reorder_quantity}},{{create-pr.requisition_number}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-s4.sap.com/sap/opu/odata/sap/API_PURCHASEREQ_PROCESS_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: requisitions
path: /A_PurchaseReqnHeader
operations:
- name: create-purchase-requisition
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
operations:
- name: send-message
method: POST
- type: http
namespace: gsheets
baseUri: https://sheets.googleapis.com/v4/spreadsheets
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: values
path: /{{spreadsheet_id}}/values/{{range}}:append
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: append-row
method: POST
Retrieves promo plan from Salesforce, validates margins in Snowflake, updates SAP pricing, syncs to e-commerce, and notifies merchandising.
naftiko: '0.5'
info:
label: Promotional Pricing Orchestrator
description: Retrieves promo plan from Salesforce, validates margins in Snowflake, updates SAP pricing, syncs to e-commerce, and notifies merchandising.
tags:
- pricing
- salesforce
- snowflake
- sap
- slack
capability:
exposes:
- type: mcp
namespace: pricing
port: 8080
tools:
- name: promotional_pricing_orchestrator
description: Orchestrate promotional pricing orchestrator workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-salesforce
type: call
call: salesforce.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-snowflake
type: call
call: snowflake.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-sap
type: call
call: sap.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: salesforce-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Monitors checkout funnel in Datadog, analyzes drop-off in Snowflake, runs A/B test analysis, creates Jira improvements, and notifies product team.
naftiko: '0.5'
info:
label: E-Commerce Checkout Optimization
description: Monitors checkout funnel in Datadog, analyzes drop-off in Snowflake, runs A/B test analysis, creates Jira improvements, and notifies product team.
tags:
- e-commerce
- datadog
- snowflake
- jira
- slack
capability:
exposes:
- type: mcp
namespace: e-commerce
port: 8080
tools:
- name: e_commerce_checkout_optimization
description: Orchestrate e-commerce checkout optimization workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-datadog
type: call
call: datadog.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-snowflake
type: call
call: snowflake.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-jira
type: call
call: jira.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apiKey
key: $secrets.datadog_api_key
header: DD-API-KEY
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: datadog-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: jira
baseUri: https://adidas.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Monitors warehouse KPIs from SAP, analyzes bottlenecks in Snowflake, creates improvement tasks in Jira, updates Grafana dashboards, and alerts ops.
naftiko: '0.5'
info:
label: Warehouse Operations Optimization
description: Monitors warehouse KPIs from SAP, analyzes bottlenecks in Snowflake, creates improvement tasks in Jira, updates Grafana dashboards, and alerts ops.
tags:
- logistics
- sap
- snowflake
- jira
- grafana
capability:
exposes:
- type: mcp
namespace: logistics
port: 8080
tools:
- name: warehouse_operations_optimization
description: Orchestrate warehouse operations optimization workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-sap
type: call
call: sap.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-snowflake
type: call
call: snowflake.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-jira
type: call
call: jira.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-grafana
type: call
call: grafana.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: jira
baseUri: https://adidas.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: jira-op
method: POST
- type: http
namespace: grafana
baseUri: https://adidas-grafana.com/api
authentication:
type: bearer
token: $secrets.grafana_api_key
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: grafana-op
method: POST
Searches Splunk indexes for log entries at Adidas.
naftiko: '0.5'
info:
label: Splunk Log Search
description: Searches Splunk indexes for log entries at Adidas.
tags:
- devops
- splunk
- logging
capability:
exposes:
- type: mcp
namespace: logging
port: 8080
tools:
- name: search-logs
description: Search Splunk logs for Adidas.
inputParameters:
- name: query
in: body
type: string
description: The query to look up.
call: splunk.get-query
with:
query: '{{query}}'
consumes:
- type: http
namespace: splunk
baseUri: https://adidas-splunk.com/services
authentication:
type: bearer
token: $secrets.splunk_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: splunk_log_search
method: GET
On a new product launch, creates an Adobe Campaign email blast, posts to Instagram and Facebook, updates the BigCommerce storefront, and sends an internal Teams notification.
naftiko: '0.5'
info:
label: New Product Launch Campaign Orchestrator
description: On a new product launch, creates an Adobe Campaign email blast, posts to Instagram and Facebook, updates the BigCommerce storefront, and sends an internal Teams notification.
tags:
- marketing
- product-launch
- adobe-campaign
- instagram
- facebook
- bigcommerce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: product-launch
port: 8080
tools:
- name: orchestrate-launch
description: Given a product ID, campaign name, and launch date, coordinate the full product launch across marketing channels and the e-commerce storefront.
inputParameters:
- name: product_id
in: body
type: string
description: The Adidas product ID for the new launch.
- name: campaign_name
in: body
type: string
description: The name of the marketing campaign.
- name: launch_date
in: body
type: string
description: The scheduled launch date in YYYY-MM-DD format.
steps:
- name: create-email-campaign
type: call
call: adobe-campaign.create-delivery
with:
campaign_name: '{{campaign_name}}'
template: product_launch_v2
scheduled_date: '{{launch_date}}'
product_id: '{{product_id}}'
- name: post-instagram
type: call
call: instagram.create-media
with:
caption: 'The wait is over. {{campaign_name}} drops {{launch_date}}. Link in bio. #adidas #newdrop'
product_id: '{{product_id}}'
- name: post-facebook
type: call
call: facebook.create-post
with:
message: Introducing {{campaign_name}} - available {{launch_date}} on adidas.com and in stores.
product_id: '{{product_id}}'
- name: update-storefront
type: call
call: bigcommerce.update-product-visibility
with:
product_id: '{{product_id}}'
is_visible: 'true'
availability_date: '{{launch_date}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel: product-launches
text: 'Product launch orchestrated: {{campaign_name}} | Product: {{product_id}} | Email: {{create-email-campaign.delivery_id}} | IG: {{post-instagram.media_id}} | FB: {{post-facebook.post_id}} | Store: live on {{launch_date}}'
consumes:
- type: http
namespace: adobe-campaign
baseUri: https://mc.adobe.io/adidas/campaign
authentication:
type: bearer
token: $secrets.adobe_campaign_token
inputParameters:
- name: x-api-key
in: header
value: $secrets.adobe_client_id
resources:
- name: deliveries
path: /deliveries
operations:
- name: create-delivery
method: POST
- type: http
namespace: instagram
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.instagram_token
resources:
- name: media
path: /{{ig_user_id}}/media
operations:
- name: create-media
method: POST
- type: http
namespace: facebook
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.facebook_page_token
resources:
- name: posts
path: /{{page_id}}/feed
operations:
- name: create-post
method: POST
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/adidas/v3
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: products
path: /catalog/products/{{product_id}}
inputParameters:
- name: product_id
in: path
operations:
- name: update-product-visibility
method: PUT
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
operations:
- name: send-message
method: POST
Provisions store in SAP, creates Salesforce location record, sets up ServiceNow IT support, assigns staff in Workday, and notifies retail operations.
naftiko: '0.5'
info:
label: Store Opening Orchestrator
description: Provisions store in SAP, creates Salesforce location record, sets up ServiceNow IT support, assigns staff in Workday, and notifies retail operations.
tags:
- retail
- sap
- salesforce
- servicenow
- workday
capability:
exposes:
- type: mcp
namespace: retail
port: 8080
tools:
- name: store_opening_orchestrator
description: Orchestrate store opening orchestrator workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-sap
type: call
call: sap.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-salesforce
type: call
call: salesforce.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-servicenow
type: call
call: servicenow.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-workday
type: call
call: workday.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: salesforce-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
- type: http
namespace: workday
baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/adidas
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: workday-op
method: POST
Searches Elasticsearch indexes for Adidas.
naftiko: '0.5'
info:
label: Elasticsearch Log Query
description: Searches Elasticsearch indexes for Adidas.
tags:
- data
- elasticsearch
- search
capability:
exposes:
- type: mcp
namespace: search
port: 8080
tools:
- name: search-logs
description: Search ES logs at Adidas.
inputParameters:
- name: query
in: body
type: string
description: The query to look up.
call: elasticsearch.get-query
with:
query: '{{query}}'
consumes:
- type: http
namespace: elasticsearch
baseUri: https://adidas-es.com:9200
authentication:
type: bearer
token: $secrets.elasticsearch_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: elasticsearch_log_query
method: GET
Detects high-priority Zendesk tickets, enriches with customer data from Salesforce, creates escalation in ServiceNow, and notifies management.
naftiko: '0.5'
info:
label: Customer Service Escalation Pipeline
description: Detects high-priority Zendesk tickets, enriches with customer data from Salesforce, creates escalation in ServiceNow, and notifies management.
tags:
- customer-service
- zendesk
- salesforce
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: customer-service
port: 8080
tools:
- name: customer_service_escalation_pipeline
description: Orchestrate customer service escalation pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-zendesk
type: call
call: zendesk.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-salesforce
type: call
call: salesforce.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-servicenow
type: call
call: servicenow.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: zendesk
baseUri: https://adidas.zendesk.com/api/v2
authentication:
type: bearer
token: $secrets.zendesk_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: zendesk-op
method: POST
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: salesforce-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Collects carbon footprint data from SAP, energy usage from Oracle Cloud, and supply chain metrics from SAP BW, then publishes a sustainability dashboard to Google Sheets and notifies leadership in Teams.
naftiko: '0.5'
info:
label: Sustainability Reporting Pipeline
description: Collects carbon footprint data from SAP, energy usage from Oracle Cloud, and supply chain metrics from SAP BW, then publishes a sustainability dashboard to Google Sheets and notifies leadership in Teams.
tags:
- sustainability
- sap-s4hana
- oracle-cloud
- sap-bw
- google-sheets
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sustainability
port: 8080
tools:
- name: generate-sustainability-report
description: Given a fiscal period, collect sustainability metrics from all sources and publish a consolidated report.
inputParameters:
- name: fiscal_period
in: body
type: string
description: The fiscal period (e.g. 2026-Q1).
- name: spreadsheet_id
in: body
type: string
description: Google Sheets ID for the sustainability dashboard.
steps:
- name: get-carbon-data
type: call
call: sap.get-carbon-footprint
with:
period: '{{fiscal_period}}'
- name: get-energy-usage
type: call
call: oracle-cloud.get-energy-metrics
with:
period: '{{fiscal_period}}'
- name: get-supply-chain-metrics
type: call
call: sap-bw.get-sustainability-kpis
with:
period: '{{fiscal_period}}'
- name: update-dashboard
type: call
call: gsheets.update-range
with:
spreadsheet_id: '{{spreadsheet_id}}'
range: Dashboard!A2
values: '{{fiscal_period}},{{get-carbon-data.total_co2_tons}},{{get-energy-usage.kwh_total}},{{get-supply-chain-metrics.recycled_materials_pct}},{{get-supply-chain-metrics.sustainable_suppliers_pct}}'
- name: notify-leadership
type: call
call: msteams.send-message
with:
channel: sustainability-leadership
text: 'Sustainability Report: {{fiscal_period}} | CO2: {{get-carbon-data.total_co2_tons}} tons | Energy: {{get-energy-usage.kwh_total}} kWh | Recycled Materials: {{get-supply-chain-metrics.recycled_materials_pct}}% | Sustainable Suppliers: {{get-supply-chain-metrics.sustainable_suppliers_pct}}%'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-s4.sap.com/sap/opu/odata/sap/API_SUSTAINABILITY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: carbon
path: /A_CarbonFootprint
operations:
- name: get-carbon-footprint
method: GET
- type: http
namespace: oracle-cloud
baseUri: https://cloud.oracle.com/api/v1
authentication:
type: bearer
token: $secrets.oracle_cloud_token
resources:
- name: energy
path: /sustainability/energy
operations:
- name: get-energy-metrics
method: GET
- type: http
namespace: sap-bw
baseUri: https://adidas-bw.sap.com/sap/bw/odata/v1
authentication:
type: basic
username: $secrets.sap_bw_user
password: $secrets.sap_bw_password
resources:
- name: sustainability
path: /ZSUSTAINABILITY_KPI
operations:
- name: get-sustainability-kpis
method: GET
- type: http
namespace: gsheets
baseUri: https://sheets.googleapis.com/v4/spreadsheets
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: values
path: /{{spreadsheet_id}}/values/{{range}}
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: update-range
method: PUT
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
operations:
- name: send-message
method: POST
When a Salesforce opportunity is marked as Closed Won, creates a sales order in SAP S/4HANA, updates the Salesforce record with the SAP order number, and notifies the fulfillment team in Teams.
naftiko: '0.5'
info:
label: Salesforce to SAP Order Sync
description: When a Salesforce opportunity is marked as Closed Won, creates a sales order in SAP S/4HANA, updates the Salesforce record with the SAP order number, and notifies the fulfillment team in Teams.
tags:
- sales
- salesforce
- sap-s4hana
- microsoft-teams
- order-management
capability:
exposes:
- type: mcp
namespace: order-sync
port: 8080
tools:
- name: sync-won-opportunity
description: Given a Salesforce opportunity ID, create a SAP sales order, update SF with the order number, and notify fulfillment.
inputParameters:
- name: opportunity_id
in: body
type: string
description: The Salesforce opportunity ID.
steps:
- name: get-opportunity
type: call
call: salesforce.get-opportunity
with:
opportunity_id: '{{opportunity_id}}'
- name: create-sales-order
type: call
call: sap.create-sales-order
with:
customer_id: '{{get-opportunity.account_sap_id}}'
amount: '{{get-opportunity.amount}}'
products: '{{get-opportunity.line_items}}'
delivery_date: '{{get-opportunity.close_date}}'
- name: update-salesforce
type: call
call: salesforce.update-opportunity
with:
opportunity_id: '{{opportunity_id}}'
sap_order_number: '{{create-sales-order.order_number}}'
- name: notify-fulfillment
type: call
call: msteams.send-message
with:
channel: fulfillment-ops
text: 'New Sales Order: SAP {{create-sales-order.order_number}} from SF Opportunity {{opportunity_id}} | Customer: {{get-opportunity.account_name}} | Amount: {{get-opportunity.amount}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /sobjects/Opportunity/{{opportunity_id}}
inputParameters:
- name: opportunity_id
in: path
operations:
- name: get-opportunity
method: GET
- name: update-opportunity
method: PATCH
- type: http
namespace: sap
baseUri: https://adidas-s4.sap.com/sap/opu/odata/sap/API_SALES_ORDER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: sales-orders
path: /A_SalesOrder
operations:
- name: create-sales-order
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
operations:
- name: send-message
method: POST
Collects POS data from SAP, aggregates in Snowflake, refreshes Power BI dashboards, identifies underperformers, and notifies retail ops.
naftiko: '0.5'
info:
label: Retail Store Performance Pipeline
description: Collects POS data from SAP, aggregates in Snowflake, refreshes Power BI dashboards, identifies underperformers, and notifies retail ops.
tags:
- retail
- sap
- snowflake
- powerbi
- slack
capability:
exposes:
- type: mcp
namespace: retail
port: 8080
tools:
- name: retail_store_performance_pipeline
description: Orchestrate retail store performance pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-sap
type: call
call: sap.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-snowflake
type: call
call: snowflake.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-slack
type: call
call: slack.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-servicenow
type: call
call: servicenow.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
Executes SQL queries against Adidas Snowflake warehouse.
naftiko: '0.5'
info:
label: Snowflake Query Executor
description: Executes SQL queries against Adidas Snowflake warehouse.
tags:
- data
- snowflake
- analytics
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: run-query
description: Run query at Adidas.
inputParameters:
- name: sql_query
in: body
type: string
description: The sql_query to look up.
call: snowflake.get-sql_query
with:
sql_query: '{{sql_query}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake_query_executor
method: GET
When a new employee joins a department, assigns the relevant Pluralsight learning path, creates a Microsoft Planner task for completion tracking, and notifies the manager in Teams.
naftiko: '0.5'
info:
label: Pluralsight Learning Path Assignment
description: When a new employee joins a department, assigns the relevant Pluralsight learning path, creates a Microsoft Planner task for completion tracking, and notifies the manager in Teams.
tags:
- learning
- pluralsight
- microsoft-planner
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: learning
port: 8080
tools:
- name: assign-learning-path
description: Given an employee email and department, assign the Pluralsight path, create a tracking task, and notify the manager.
inputParameters:
- name: employee_email
in: body
type: string
description: The new employee email.
- name: department
in: body
type: string
description: The department the employee is joining.
- name: manager_email
in: body
type: string
description: The manager email for notification.
steps:
- name: assign-path
type: call
call: pluralsight.assign-channel
with:
user_email: '{{employee_email}}'
channel_name: '{{department}}_onboarding'
- name: create-task
type: call
call: planner.create-task
with:
plan_id: $secrets.learning_plan_id
title: 'Complete Pluralsight path: {{department}}_onboarding'
assigned_to: '{{employee_email}}'
due_date: +30d
- name: notify-manager
type: call
call: msteams.send-message
with:
recipient_upn: '{{manager_email}}'
text: 'Learning path assigned to {{employee_email}}: {{department}}_onboarding | Due in 30 days | Task: {{create-task.id}}'
consumes:
- type: http
namespace: pluralsight
baseUri: https://api.pluralsight.com/api/v1
authentication:
type: bearer
token: $secrets.pluralsight_token
resources:
- name: channels
path: /channels/assign
operations:
- name: assign-channel
method: POST
- type: http
namespace: planner
baseUri: https://graph.microsoft.com/v1.0/planner
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: tasks
path: /tasks
operations:
- name: create-task
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Creates a Salesforce campaign for a sponsored event, uploads the sponsorship agreement to Google Drive, schedules social media posts on Instagram and Twitter, and sets up a Planner task for follow-up.
naftiko: '0.5'
info:
label: Event Sponsorship Tracker
description: Creates a Salesforce campaign for a sponsored event, uploads the sponsorship agreement to Google Drive, schedules social media posts on Instagram and Twitter, and sets up a Planner task for follow-up.
tags:
- marketing
- events
- salesforce
- google-drive
- instagram
- twitter
- microsoft-planner
capability:
exposes:
- type: mcp
namespace: event-sponsorship
port: 8080
tools:
- name: setup-sponsorship
description: Given event details and sponsorship terms, create campaign, store agreement, schedule social posts, and track follow-up.
inputParameters:
- name: event_name
in: body
type: string
description: Name of the sponsored event.
- name: event_date
in: body
type: string
description: Event date in YYYY-MM-DD format.
- name: sponsorship_amount
in: body
type: string
description: Sponsorship investment amount.
- name: sport_category
in: body
type: string
description: Sport category for the event.
steps:
- name: create-campaign
type: call
call: salesforce.create-campaign
with:
name: 'Sponsorship: {{event_name}}'
type: Event
start_date: '{{event_date}}'
budgeted_cost: '{{sponsorship_amount}}'
- name: upload-agreement
type: call
call: gdrive.upload-file
with:
folder_id: $secrets.sponsorships_folder
file_name: '{{event_name}}_agreement.pdf'
- name: schedule-instagram
type: call
call: instagram.create-media
with:
caption: 'We''re proud to sponsor {{event_name}}! See you there. #adidas #{{sport_category}}'
scheduled_date: '{{event_date}}'
- name: schedule-twitter
type: call
call: twitter.create-tweet
with:
text: 'Adidas is the official sponsor of {{event_name}}. Game on. #adidas #{{sport_category}}'
- name: create-followup-task
type: call
call: planner.create-task
with:
plan_id: $secrets.events_plan_id
title: 'Post-event report: {{event_name}}'
due_date: +7d
description: 'Campaign: {{create-campaign.id}} | Agreement: {{upload-agreement.url}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: campaigns
path: /sobjects/Campaign
operations:
- name: create-campaign
method: POST
- type: http
namespace: gdrive
baseUri: https://www.googleapis.com/upload/drive/v3
authentication:
type: bearer
token: $secrets.google_drive_token
resources:
- name: files
path: /files
operations:
- name: upload-file
method: POST
- type: http
namespace: instagram
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.instagram_token
resources:
- name: media
path: /{{ig_user_id}}/media
operations:
- name: create-media
method: POST
- type: http
namespace: twitter
baseUri: https://api.twitter.com/2
authentication:
type: bearer
token: $secrets.twitter_bearer_token
resources:
- name: tweets
path: /tweets
operations:
- name: create-tweet
method: POST
- type: http
namespace: planner
baseUri: https://graph.microsoft.com/v1.0/planner
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: tasks
path: /tasks
operations:
- name: create-task
method: POST
Tracks touchpoints from Salesforce, web analytics from Datadog, purchase data from Stripe, aggregates in Snowflake, and notifies CX team.
naftiko: '0.5'
info:
label: Customer Journey Analytics Pipeline
description: Tracks touchpoints from Salesforce, web analytics from Datadog, purchase data from Stripe, aggregates in Snowflake, and notifies CX team.
tags:
- customer-experience
- salesforce
- datadog
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: customer-experience
port: 8080
tools:
- name: customer_journey_analytics_pipeline
description: Orchestrate customer journey analytics pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-salesforce
type: call
call: salesforce.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-datadog
type: call
call: datadog.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-snowflake
type: call
call: snowflake.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: salesforce-op
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apiKey
key: $secrets.datadog_api_key
header: DD-API-KEY
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: datadog-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Syncs inventory between SAP warehouse, Salesforce Commerce Cloud, and store POS systems, logs discrepancies in ServiceNow, and alerts supply chain.
naftiko: '0.5'
info:
label: Omnichannel Inventory Sync Pipeline
description: Syncs inventory between SAP warehouse, Salesforce Commerce Cloud, and store POS systems, logs discrepancies in ServiceNow, and alerts supply chain.
tags:
- inventory
- sap
- salesforce
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: inventory
port: 8080
tools:
- name: omnichannel_inventory_sync_pipeline
description: Orchestrate omnichannel inventory sync pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-sap
type: call
call: sap.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-salesforce
type: call
call: salesforce.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-servicenow
type: call
call: servicenow.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: salesforce-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Collects social media mentions, runs sentiment analysis in Snowflake, updates HubSpot brand health metrics, and notifies communications team.
naftiko: '0.5'
info:
label: Brand Sentiment Analyzer
description: Collects social media mentions, runs sentiment analysis in Snowflake, updates HubSpot brand health metrics, and notifies communications team.
tags:
- brand
- snowflake
- hubspot
- powerbi
- slack
capability:
exposes:
- type: mcp
namespace: brand
port: 8080
tools:
- name: brand_sentiment_analyzer
description: Orchestrate brand sentiment analyzer workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-snowflake
type: call
call: snowflake.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-hubspot
type: call
call: hubspot.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-slack
type: call
call: slack.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-servicenow
type: call
call: servicenow.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: hubspot-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
Pulls sales data from Snowflake, runs ML models for demand prediction, updates SAP MRP, generates reports in Power BI, and notifies planners.
naftiko: '0.5'
info:
label: Supply Chain Demand Forecasting
description: Pulls sales data from Snowflake, runs ML models for demand prediction, updates SAP MRP, generates reports in Power BI, and notifies planners.
tags:
- supply-chain
- snowflake
- sap
- powerbi
- slack
capability:
exposes:
- type: mcp
namespace: supply-chain
port: 8080
tools:
- name: supply_chain_demand_forecasting
description: Orchestrate supply chain demand forecasting workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-snowflake
type: call
call: snowflake.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-sap
type: call
call: sap.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-slack
type: call
call: slack.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-servicenow
type: call
call: servicenow.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: sap
baseUri: https://adidas-sap.com/api/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: sap-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
Receives a customer inquiry via WhatsApp, looks up the order in BigCommerce, fetches tracking from SAP, and replies with the order status through WhatsApp.
naftiko: '0.5'
info:
label: WhatsApp Customer Order Status Bot
description: Receives a customer inquiry via WhatsApp, looks up the order in BigCommerce, fetches tracking from SAP, and replies with the order status through WhatsApp.
tags:
- customer-service
- whatsapp
- bigcommerce
- sap-s4hana
capability:
exposes:
- type: mcp
namespace: whatsapp-bot
port: 8080
tools:
- name: handle-order-inquiry
description: Given a WhatsApp message with an order number, look up status and reply with tracking info.
inputParameters:
- name: phone_number
in: body
type: string
description: The customer WhatsApp phone number.
- name: order_id
in: body
type: string
description: The order ID from the customer message.
steps:
- name: get-order
type: call
call: bigcommerce.get-order
with:
order_id: '{{order_id}}'
- name: get-tracking
type: call
call: sap.get-delivery-tracking
with:
order_reference: '{{order_id}}'
- name: reply-whatsapp
type: call
call: whatsapp.send-message
with:
to: '{{phone_number}}'
text: 'Hi! Your order #{{order_id}} is {{get-order.status}}. Tracking: {{get-tracking.tracking_number}}. Estimated delivery: {{get-tracking.estimated_delivery}}.'
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/adidas/v2
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: orders
path: /orders/{{order_id}}
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: sap
baseUri: https://adidas-s4.sap.com/sap/opu/odata/sap/API_OUTBOUND_DELIVERY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: deliveries
path: /A_OutbDeliveryHeader
operations:
- name: get-delivery-tracking
method: GET
- type: http
namespace: whatsapp
baseUri: https://graph.facebook.com/v18.0/$secrets.whatsapp_phone_id
authentication:
type: bearer
token: $secrets.whatsapp_token
resources:
- name: messages
path: /messages
operations:
- name: send-message
method: POST
Retrieves GitHub repository metadata for Adidas.
naftiko: '0.5'
info:
label: GitHub Repository Lookup
description: Retrieves GitHub repository metadata for Adidas.
tags:
- devops
- github
- source-control
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: get-repo
description: Look up repo at Adidas.
inputParameters:
- name: repo_name
in: body
type: string
description: The repo_name to look up.
call: github.get-repo_name
with:
repo_name: '{{repo_name}}'
consumes:
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: github_repository_lookup
method: GET
Pulls store sales data from Teradata, KPI metrics from SAP BW, and customer foot traffic from Google Analytics, then consolidates into a Google Sheet for regional managers.
naftiko: '0.5'
info:
label: Retail Store Performance Dashboard Sync
description: Pulls store sales data from Teradata, KPI metrics from SAP BW, and customer foot traffic from Google Analytics, then consolidates into a Google Sheet for regional managers.
tags:
- retail
- analytics
- teradata
- sap-bw
- google-analytics
- google-sheets
capability:
exposes:
- type: mcp
namespace: retail-reporting
port: 8080
tools:
- name: sync-store-dashboard
description: Given a store ID and date range, collect sales, KPIs, and traffic data and write to a Google Sheet.
inputParameters:
- name: store_id
in: body
type: string
description: The Adidas retail store identifier.
- name: date_range
in: body
type: string
description: Date range in YYYY-MM-DD/YYYY-MM-DD format.
- name: spreadsheet_id
in: body
type: string
description: The Google Sheets spreadsheet ID for output.
steps:
- name: get-sales
type: call
call: teradata.query-store-sales
with:
store_id: '{{store_id}}'
date_range: '{{date_range}}'
- name: get-kpis
type: call
call: sap-bw.get-store-kpis
with:
store_id: '{{store_id}}'
date_range: '{{date_range}}'
- name: get-traffic
type: call
call: ga.get-store-traffic
with:
store_id: '{{store_id}}'
date_range: '{{date_range}}'
- name: write-to-sheet
type: call
call: gsheets.update-range
with:
spreadsheet_id: '{{spreadsheet_id}}'
range: Dashboard!A1
values: 'Store: {{store_id}} | Revenue: {{get-sales.total_revenue}} | Transactions: {{get-sales.transactions}} | Conversion: {{get-kpis.conversion_rate}} | Foot Traffic: {{get-traffic.sessions}}'
consumes:
- type: http
namespace: teradata
baseUri: https://teradata.adidas.internal/api/v1
authentication:
type: basic
username: $secrets.teradata_user
password: $secrets.teradata_password
resources:
- name: queries
path: /queries
operations:
- name: query-store-sales
method: POST
- type: http
namespace: sap-bw
baseUri: https://adidas-bw.sap.com/sap/bw/odata/v1
authentication:
type: basic
username: $secrets.sap_bw_user
password: $secrets.sap_bw_password
resources:
- name: store-kpis
path: /ZRETAIL_STORE_KPI
operations:
- name: get-store-kpis
method: GET
- type: http
namespace: ga
baseUri: https://analyticsdata.googleapis.com/v1beta
authentication:
type: bearer
token: $secrets.google_analytics_token
resources:
- name: reports
path: /properties/{{property_id}}:runReport
operations:
- name: get-store-traffic
method: POST
- type: http
namespace: gsheets
baseUri: https://sheets.googleapis.com/v4/spreadsheets
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: values
path: /{{spreadsheet_id}}/values/{{range}}
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: update-range
method: PUT
Creates a Salesforce opportunity for an athlete endorsement, stores the contract in Box, updates the deal in Microsoft Planner, and notifies the brand team in Teams.
naftiko: '0.5'
info:
label: Athlete Endorsement Deal Tracker
description: Creates a Salesforce opportunity for an athlete endorsement, stores the contract in Box, updates the deal in Microsoft Planner, and notifies the brand team in Teams.
tags:
- partnerships
- salesforce
- box
- microsoft-planner
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: endorsements
port: 8080
tools:
- name: create-endorsement-deal
description: Given athlete details and deal terms, create tracking records across Salesforce, Box, Planner, and Teams.
inputParameters:
- name: athlete_name
in: body
type: string
description: Name of the athlete.
- name: deal_value
in: body
type: string
description: Total deal value.
- name: sport_category
in: body
type: string
description: Sport category (e.g. running, football, basketball).
- name: contract_duration
in: body
type: string
description: Contract duration in months.
steps:
- name: create-opportunity
type: call
call: salesforce.create-opportunity
with:
name: 'Endorsement: {{athlete_name}} — {{sport_category}}'
amount: '{{deal_value}}'
stage: Negotiation
description: '{{contract_duration}} month endorsement deal with {{athlete_name}} for {{sport_category}}.'
- name: create-contract-folder
type: call
call: box.create-folder
with:
parent_folder_id: $secrets.endorsements_folder
name: '{{athlete_name}}_{{sport_category}}'
- name: create-planner-task
type: call
call: planner.create-task
with:
plan_id: $secrets.endorsements_plan_id
title: 'Review: {{athlete_name}} endorsement — {{deal_value}}'
due_date: +14d
description: 'SF Opportunity: {{create-opportunity.id}} | Box: {{create-contract-folder.url}}'
- name: notify-brand-team
type: call
call: msteams.send-message
with:
channel: brand-partnerships
text: 'New Endorsement Deal: {{athlete_name}} ({{sport_category}}) | Value: {{deal_value}} | Duration: {{contract_duration}}mo | SF: {{create-opportunity.id}} | Task: {{create-planner-task.id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /sobjects/Opportunity
operations:
- name: create-opportunity
method: POST
- type: http
namespace: box
baseUri: https://api.box.com/2.0
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: folders
path: /folders
operations:
- name: create-folder
method: POST
- type: http
namespace: planner
baseUri: https://graph.microsoft.com/v1.0/planner
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: tasks
path: /tasks
operations:
- name: create-task
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
operations:
- name: send-message
method: POST
When a return request arrives in Zendesk, looks up the order in BigCommerce, initiates a refund via Stripe, updates the SAP inventory, and resolves the Zendesk ticket.
naftiko: '0.5'
info:
label: Customer Return Processing
description: When a return request arrives in Zendesk, looks up the order in BigCommerce, initiates a refund via Stripe, updates the SAP inventory, and resolves the Zendesk ticket.
tags:
- customer-service
- returns
- zendesk
- bigcommerce
- stripe
- sap-s4hana
capability:
exposes:
- type: mcp
namespace: returns
port: 8080
tools:
- name: process-return
description: Given a Zendesk ticket ID and order ID, process the full return including refund and inventory adjustment.
inputParameters:
- name: ticket_id
in: body
type: string
description: The Zendesk ticket ID for the return request.
- name: order_id
in: body
type: string
description: The BigCommerce order ID.
- name: reason
in: body
type: string
description: Return reason code.
steps:
- name: get-order
type: call
call: bigcommerce.get-order
with:
order_id: '{{order_id}}'
- name: process-refund
type: call
call: stripe.create-refund
with:
payment_intent_id: '{{get-order.payment_reference}}'
amount: '{{get-order.total_inc_tax}}'
reason: '{{reason}}'
- name: update-inventory
type: call
call: sap.post-goods-receipt
with:
sku: '{{get-order.line_items[0].sku}}'
quantity: '{{get-order.line_items[0].quantity}}'
movement_type: RETURN
- name: resolve-ticket
type: call
call: zendesk.update-ticket
with:
ticket_id: '{{ticket_id}}'
status: solved
comment: 'Return processed. Refund: {{process-refund.id}} ({{process-refund.amount}}). Inventory updated.'
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/adidas/v2
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: orders
path: /orders/{{order_id}}
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: stripe
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_secret_key
resources:
- name: refunds
path: /refunds
operations:
- name: create-refund
method: POST
- type: http
namespace: sap
baseUri: https://adidas-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_DOCUMENT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: material-documents
path: /A_MaterialDocumentHeader
operations:
- name: post-goods-receipt
method: POST
- type: http
namespace: zendesk
baseUri: https://adidas.zendesk.com/api/v2
authentication:
type: bearer
token: $secrets.zendesk_token
resources:
- name: tickets
path: /tickets/{{ticket_id}}.json
inputParameters:
- name: ticket_id
in: path
operations:
- name: update-ticket
method: PUT
When a Zendesk ticket is resolved, sends a Google Forms satisfaction survey link, collects the response, and updates the Salesforce contact record with the CSAT score.
naftiko: '0.5'
info:
label: Customer Feedback Loop
description: When a Zendesk ticket is resolved, sends a Google Forms satisfaction survey link, collects the response, and updates the Salesforce contact record with the CSAT score.
tags:
- customer-service
- feedback
- zendesk
- google-forms
- salesforce
capability:
exposes:
- type: mcp
namespace: customer-feedback
port: 8080
tools:
- name: trigger-feedback-survey
description: Given a resolved Zendesk ticket, send a satisfaction survey and route the score back to Salesforce.
inputParameters:
- name: ticket_id
in: body
type: string
description: The resolved Zendesk ticket ID.
- name: customer_email
in: body
type: string
description: The customer email address.
- name: salesforce_contact_id
in: body
type: string
description: The Salesforce contact ID.
steps:
- name: get-ticket
type: call
call: zendesk.get-ticket
with:
ticket_id: '{{ticket_id}}'
- name: send-survey
type: call
call: google-forms.send-form
with:
form_id: $secrets.csat_form_id
recipient_email: '{{customer_email}}'
ticket_reference: '{{ticket_id}}'
- name: update-salesforce
type: call
call: salesforce.update-contact
with:
contact_id: '{{salesforce_contact_id}}'
last_survey_sent: '{{ticket_id}}'
survey_type: CSAT
consumes:
- type: http
namespace: zendesk
baseUri: https://adidas.zendesk.com/api/v2
authentication:
type: bearer
token: $secrets.zendesk_token
resources:
- name: tickets
path: /tickets/{{ticket_id}}.json
inputParameters:
- name: ticket_id
in: path
operations:
- name: get-ticket
method: GET
- type: http
namespace: google-forms
baseUri: https://forms.googleapis.com/v1
authentication:
type: bearer
token: $secrets.google_forms_token
resources:
- name: forms
path: /forms/{{form_id}}/responses
inputParameters:
- name: form_id
in: path
operations:
- name: send-form
method: POST
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: contacts
path: /sobjects/Contact/{{contact_id}}
inputParameters:
- name: contact_id
in: path
operations:
- name: update-contact
method: PATCH
Monitors equipment telemetry in Datadog, predicts maintenance needs in Snowflake, creates work orders in ServiceNow, and notifies facility team.
naftiko: '0.5'
info:
label: Warehouse Equipment Maintenance Pipeline
description: Monitors equipment telemetry in Datadog, predicts maintenance needs in Snowflake, creates work orders in ServiceNow, and notifies facility team.
tags:
- maintenance
- datadog
- snowflake
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: maintenance
port: 8080
tools:
- name: warehouse_equipment_maintenance_pipeline
description: Orchestrate warehouse equipment maintenance pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-datadog
type: call
call: datadog.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-snowflake
type: call
call: snowflake.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-servicenow
type: call
call: servicenow.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apiKey
key: $secrets.datadog_api_key
header: DD-API-KEY
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: datadog-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: servicenow
baseUri: https://adidas.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Looks up a potential influencer on LinkedIn and ZoomInfo, creates a Salesforce opportunity, drafts an outreach email in Adobe Campaign, and tracks the engagement in HubSpot.
naftiko: '0.5'
info:
label: Influencer Collaboration Workflow
description: Looks up a potential influencer on LinkedIn and ZoomInfo, creates a Salesforce opportunity, drafts an outreach email in Adobe Campaign, and tracks the engagement in HubSpot.
tags:
- marketing
- influencer
- linkedin
- zoominfo
- salesforce
- adobe-campaign
- hubspot
capability:
exposes:
- type: mcp
namespace: influencer-marketing
port: 8080
tools:
- name: initiate-collaboration
description: Given an influencer name and social handle, research them, create a sales opportunity, and start outreach.
inputParameters:
- name: influencer_name
in: body
type: string
description: Full name of the influencer.
- name: social_handle
in: body
type: string
description: Primary social media handle.
- name: campaign_name
in: body
type: string
description: The marketing campaign for this collaboration.
steps:
- name: lookup-linkedin
type: call
call: linkedin.search-person
with:
name: '{{influencer_name}}'
- name: enrich-contact
type: call
call: zoominfo.enrich-person
with:
name: '{{influencer_name}}'
social_handle: '{{social_handle}}'
- name: create-opportunity
type: call
call: salesforce.create-opportunity
with:
name: 'Influencer Collab: {{influencer_name}} — {{campaign_name}}'
stage: Prospecting
description: 'LinkedIn: {{lookup-linkedin.profile_url}} | Followers: {{enrich-contact.follower_count}} | Engagement Rate: {{enrich-contact.engagement_rate}}'
- name: create-outreach
type: call
call: adobe-campaign.create-delivery
with:
template: influencer_outreach_v1
recipient_email: '{{enrich-contact.email}}'
campaign_name: '{{campaign_name}}'
- name: create-hubspot-contact
type: call
call: hubspot.create-contact
with:
email: '{{enrich-contact.email}}'
firstname: '{{influencer_name}}'
company: Influencer
lifecyclestage: lead
consumes:
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: people
path: /people
operations:
- name: search-person
method: GET
- type: http
namespace: zoominfo
baseUri: https://api.zoominfo.com
authentication:
type: bearer
token: $secrets.zoominfo_token
resources:
- name: enrich
path: /enrich/person
operations:
- name: enrich-person
method: POST
- type: http
namespace: salesforce
baseUri: https://adidas.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /sobjects/Opportunity
operations:
- name: create-opportunity
method: POST
- type: http
namespace: adobe-campaign
baseUri: https://mc.adobe.io/adidas/campaign
authentication:
type: bearer
token: $secrets.adobe_campaign_token
resources:
- name: deliveries
path: /deliveries
operations:
- name: create-delivery
method: POST
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com/crm/v3
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: contacts
path: /objects/contacts
operations:
- name: create-contact
method: POST
Pulls a summary report from Google Analytics for a specified campaign, returning sessions, conversion rate, and revenue attribution.
naftiko: '0.5'
info:
label: Google Analytics Campaign Report
description: Pulls a summary report from Google Analytics for a specified campaign, returning sessions, conversion rate, and revenue attribution.
tags:
- marketing
- google-analytics
- campaign
capability:
exposes:
- type: mcp
namespace: marketing-analytics
port: 8080
tools:
- name: get-campaign-report
description: Retrieve a Google Analytics campaign performance summary including sessions, conversions, and revenue.
inputParameters:
- name: campaign_id
in: body
type: string
description: The Google Analytics campaign ID.
- name: date_range
in: body
type: string
description: Date range in YYYY-MM-DD/YYYY-MM-DD format.
call: ga.get-report
with:
campaign_id: '{{campaign_id}}'
date_range: '{{date_range}}'
outputParameters:
- name: sessions
type: string
mapping: $.rows[0].metricValues[0].value
- name: conversion_rate
type: string
mapping: $.rows[0].metricValues[1].value
- name: revenue
type: string
mapping: $.rows[0].metricValues[2].value
consumes:
- type: http
namespace: ga
baseUri: https://analyticsdata.googleapis.com/v1beta
authentication:
type: bearer
token: $secrets.google_analytics_token
resources:
- name: reports
path: /properties/{{campaign_id}}:runReport
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-report
method: POST
Monitors product listings across e-commerce channels, tracks pricing and availability, logs discrepancies, and alerts the digital commerce team.
naftiko: '0.5'
info:
label: Digital Shelf Monitoring Pipeline
description: Monitors product listings across e-commerce channels, tracks pricing and availability, logs discrepancies, and alerts the digital commerce team.
tags:
- e-commerce
- datadog
- snowflake
- jira
- slack
capability:
exposes:
- type: mcp
namespace: e-commerce
port: 8080
tools:
- name: digital_shelf_monitoring_pipeline
description: Orchestrate digital shelf monitoring pipeline workflow.
inputParameters:
- name: resource_id
in: body
type: string
description: Primary resource identifier.
steps:
- name: get-datadog
type: call
call: datadog.get-resource
with:
resource_id: '{{resource_id}}'
- name: process-snowflake
type: call
call: snowflake.process-resource
with:
resource_id: '{{resource_id}}'
- name: create-jira
type: call
call: jira.create-resource
with:
resource_id: '{{resource_id}}'
- name: notify-slack
type: call
call: slack.notify-resource
with:
resource_id: '{{resource_id}}'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apiKey
key: $secrets.datadog_api_key
header: DD-API-KEY
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: datadog-op
method: POST
- type: http
namespace: snowflake
baseUri: https://adidas.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: snowflake-op
method: POST
- type: http
namespace: jira
baseUri: https://adidas.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: resources
path: /resources/{{resource_id}}
operations:
- name: slack-op
method: POST
Queries the Teradata data warehouse for store-level sales performance by location and date range.
naftiko: '0.5'
info:
label: Teradata Retail Analytics Query
description: Queries the Teradata data warehouse for store-level sales performance by location and date range.
tags:
- analytics
- teradata
- retail
capability:
exposes:
- type: mcp
namespace: retail-analytics
port: 8080
tools:
- name: query-store-sales
description: Run a store-level sales query in Teradata by store ID and date range.
inputParameters:
- name: store_id
in: body
type: string
description: The Adidas retail store identifier.
- name: start_date
in: body
type: string
description: Start date in YYYY-MM-DD format.
- name: end_date
in: body
type: string
description: End date in YYYY-MM-DD format.
call: teradata.run-query
with:
store_id: '{{store_id}}'
start_date: '{{start_date}}'
end_date: '{{end_date}}'
outputParameters:
- name: total_revenue
type: string
mapping: $.results[0].TOTAL_REVENUE
- name: transactions
type: string
mapping: $.results[0].TRANSACTION_COUNT
- name: avg_basket_size
type: string
mapping: $.results[0].AVG_BASKET
consumes:
- type: http
namespace: teradata
baseUri: https://teradata.adidas.internal/api/v1
authentication:
type: basic
username: $secrets.teradata_user
password: $secrets.teradata_password
resources:
- name: queries
path: /queries
operations:
- name: run-query
method: POST
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Triggers SAP period close, generates Power BI reports, archives in Box, and notifies leadership via Microsoft Teams.
naftiko: '0.5'
info:
label: Financial Close Pipeline
description: Triggers SAP period close, generates Power BI reports, archives in Box, and notifies leadership via Microsoft Teams.
tags:
- finance
- sap
- power-bi
- box
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: financial-close-pipeline
port: 8080
tools:
- name: execute
description: Triggers SAP period close, generates Power BI reports, archives in Box, and notifies leadership via Microsoft Teams.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: power-bi.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: box.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: microsoft-teams.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: power-bi
baseUri: https://api.powerbi.com/v1
authentication:
type: bearer
token: $secrets.power_bi_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: box
baseUri: https://api.box.com/v1
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: microsoft-teams
baseUri: https://api.microsoftteams.com/v1
authentication:
type: bearer
token: $secrets.microsoft_teams_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Retrieves a Stripe payment 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
When launching a new LEGO set, creates the product master in SAP, sets up a Salesforce marketing campaign, configures Google Tag Manager tracking, publishes to BigCommerce, and announces to the team via Microsoft Teams.
naftiko: '0.5'
info:
label: New Set Launch Pipeline
description: When launching a new LEGO set, creates the product master in SAP, sets up a Salesforce marketing campaign, configures Google Tag Manager tracking, publishes to BigCommerce, and announces to the team via Microsoft Teams.
tags:
- product-design
- e-commerce
- sap
- salesforce
- google-tag-manager
- bigcommerce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: product-launch
port: 8080
tools:
- name: launch-new-set
description: Given set details, create product master, marketing campaign, e-commerce listing, and notify the team.
inputParameters:
- name: set_name
in: body
type: string
description: The LEGO set name.
- name: material_number
in: body
type: string
description: The SAP material number.
- name: theme
in: body
type: string
description: The product theme (e.g., Star Wars, City, Technic).
- name: launch_date
in: body
type: string
description: The launch date in YYYY-MM-DD format.
- name: retail_price
in: body
type: string
description: The retail price.
steps:
- name: create-master
type: call
call: sap.create-material
with:
material_number: '{{material_number}}'
description: '{{set_name}}'
theme: '{{theme}}'
price: '{{retail_price}}'
- name: create-campaign
type: call
call: salesforce.create-campaign
with:
name: 'Launch: {{set_name}}'
theme: '{{theme}}'
start_date: '{{launch_date}}'
- name: setup-tracking
type: call
call: gtm.create-tag
with:
tag_name: '{{set_name}}_launch'
product_id: '{{material_number}}'
- name: create-listing
type: call
call: bigcommerce.create-product
with:
name: '{{set_name}}'
sku: '{{material_number}}'
price: '{{retail_price}}'
categories: '{{theme}}'
- name: announce
type: call
call: msteams.send-message
with:
channel_id: product-launches
text: 'New set launch: {{set_name}} ({{theme}}) on {{launch_date}}. Price: ${{retail_price}}. SAP: {{material_number}}. E-commerce listing: {{create-listing.product_url}}.'
consumes:
- type: http
namespace: sap
baseUri: https://lego-s4.sap.com/sap/opu/odata/sap/MM_MATERIAL_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: materials
path: /A_Material
operations:
- name: create-material
method: POST
- type: http
namespace: salesforce
baseUri: https://lego.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: campaigns
path: /sobjects/Campaign
operations:
- name: create-campaign
method: POST
- type: http
namespace: gtm
baseUri: https://www.googleapis.com/tagmanager/v2
authentication:
type: bearer
token: $secrets.gtm_token
resources:
- name: tags
path: /accounts/{{account_id}}/containers/{{container_id}}/workspaces/{{workspace_id}}/tags
operations:
- name: create-tag
method: POST
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/{{store_hash}}/v3
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: products
path: /catalog/products
operations:
- name: create-product
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Creates campaign in Facebook, syncs audience from Salesforce, uploads creatives from Box, and tracks in Google Sheets.
naftiko: '0.5'
info:
label: Facebook Ad Campaign Pipeline
description: Creates campaign in Facebook, syncs audience from Salesforce, uploads creatives from Box, and tracks in Google Sheets.
tags:
- advertising
- facebook
- salesforce
- box
- google-sheets
capability:
exposes:
- type: mcp
namespace: facebook-ad-campaign-pipeline
port: 8080
tools:
- name: execute
description: Creates campaign in Facebook, syncs audience from Salesforce, uploads creatives from Box, and tracks in Google Sheets.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: facebook.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: salesforce.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: box.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: google-sheets.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: facebook
baseUri: https://api.facebook.com/v1
authentication:
type: bearer
token: $secrets.facebook_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: salesforce
baseUri: https://api.salesforce.com/v1
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: box
baseUri: https://api.box.com/v1
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: https://api.googlesheets.com/v1
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Gets Figma design, routes Asana approval, archives in Box, and updates SAP metadata.
naftiko: '0.5'
info:
label: Packaging Review Pipeline
description: Gets Figma design, routes Asana approval, archives in Box, and updates SAP metadata.
tags:
- packaging
- figma
- asana
- box
- sap
capability:
exposes:
- type: mcp
namespace: packaging-review-pipeline
port: 8080
tools:
- name: execute
description: Gets Figma design, routes Asana approval, archives in Box, and updates SAP metadata.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: figma.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: asana.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: box.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: sap.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: figma
baseUri: https://api.figma.com/v1
authentication:
type: bearer
token: $secrets.figma_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: asana
baseUri: https://api.asana.com/v1
authentication:
type: bearer
token: $secrets.asana_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: box
baseUri: https://api.box.com/v1
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Gets employee from Workday, provisions Azure AD, creates ServiceNow request, and sends welcome via Microsoft Outlook.
naftiko: '0.5'
info:
label: New Hire Provisioning Pipeline
description: Gets employee from Workday, provisions Azure AD, creates ServiceNow request, and sends welcome via Microsoft Outlook.
tags:
- it
- workday
- azure-active-directory
- servicenow
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: new-hire-provisioning-pipeline
port: 8080
tools:
- name: execute
description: Gets employee from Workday, provisions Azure AD, creates ServiceNow request, and sends welcome via Microsoft Outlook.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: workday.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: azure-active-directory.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: servicenow.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: microsoft-outlook.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: workday
baseUri: https://api.workday.com/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: azure-active-directory
baseUri: https://api.azureactivedirectory.com/v1
authentication:
type: bearer
token: $secrets.azure_active_directory_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: servicenow
baseUri: https://api.servicenow.com/v1
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: microsoft-outlook
baseUri: https://api.microsoftoutlook.com/v1
authentication:
type: bearer
token: $secrets.microsoft_outlook_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Retrieves LEGO.com website engagement metrics from Google Analytics.
naftiko: '0.5'
info:
label: Google Analytics Website Metrics
description: Retrieves LEGO.com website engagement metrics from Google Analytics.
tags:
- analytics
- e-commerce
- google-analytics
capability:
exposes:
- type: mcp
namespace: web-analytics
port: 8080
tools:
- name: get-website-metrics
description: Retrieve website metrics from Google Analytics for a date range.
inputParameters:
- name: start_date
in: body
type: string
description: Start date in YYYY-MM-DD format.
- name: end_date
in: body
type: string
description: End date in YYYY-MM-DD format.
call: google-analytics.get-report
with:
property_id: lego-dotcom
start_date: '{{start_date}}'
end_date: '{{end_date}}'
outputParameters:
- name: sessions
type: string
mapping: $.rows[0].metricValues[0].value
- name: conversion_rate
type: string
mapping: $.rows[0].metricValues[1].value
consumes:
- type: http
namespace: google-analytics
baseUri: https://analyticsdata.googleapis.com/v1beta
authentication:
type: bearer
token: $secrets.google_analytics_token
resources:
- name: reports
path: /properties/{{property_id}}:runReport
inputParameters:
- name: property_id
in: path
operations:
- name: get-report
method: POST
Detects carts in BigCommerce, sends MailChimp recovery emails, logs in Snowflake, and tracks in Google Analytics.
naftiko: '0.5'
info:
label: E-Commerce Cart Recovery Pipeline
description: Detects carts in BigCommerce, sends MailChimp recovery emails, logs in Snowflake, and tracks in Google Analytics.
tags:
- e-commerce
- bigcommerce
- mailchimp
- snowflake
- google-analytics
capability:
exposes:
- type: mcp
namespace: ecommerce-cart-recovery-pipeline
port: 8080
tools:
- name: execute
description: Detects carts in BigCommerce, sends MailChimp recovery emails, logs in Snowflake, and tracks in Google Analytics.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: bigcommerce.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: mailchimp.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: snowflake.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: google-analytics.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/v1
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: mailchimp
baseUri: https://api.mailchimp.com/v1
authentication:
type: bearer
token: $secrets.mailchimp_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: https://api.snowflake.com/v1
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-analytics
baseUri: https://api.googleanalytics.com/v1
authentication:
type: bearer
token: $secrets.google_analytics_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Retrieves LEGO set roadmap entries from Airtable.
naftiko: '0.5'
info:
label: Airtable Set Roadmap Lookup
description: Retrieves LEGO set roadmap entries from Airtable.
tags:
- product
- airtable
capability:
exposes:
- type: mcp
namespace: airtable-roadmap
port: 8080
tools:
- name: get-data
description: Retrieves LEGO set roadmap entries from Airtable.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: airtable-roadmap.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: airtable-roadmap
baseUri: https://api.airtable.com/v0/appLego
authentication:
type: bearer
token: $secrets.airtable_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
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
Creates product in SAP, publishes to BigCommerce, notifies retailers via Salesforce, and promotes on Instagram.
naftiko: '0.5'
info:
label: New Set Retail Distribution Pipeline
description: Creates product in SAP, publishes to BigCommerce, notifies retailers via Salesforce, and promotes on Instagram.
tags:
- product
- sap
- bigcommerce
- salesforce
- instagram
capability:
exposes:
- type: mcp
namespace: new-set-retail-distribution-pipeline
port: 8080
tools:
- name: execute
description: Creates product in SAP, publishes to BigCommerce, notifies retailers via Salesforce, and promotes on Instagram.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: bigcommerce.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: salesforce.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: instagram.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/v1
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: salesforce
baseUri: https://api.salesforce.com/v1
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: instagram
baseUri: https://api.instagram.com/v1
authentication:
type: bearer
token: $secrets.instagram_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Triggers Azure DevOps build, publishes release notes to Confluence, notifies via Slack, and updates BigCommerce.
naftiko: '0.5'
info:
label: Digital Experience Release Pipeline
description: Triggers Azure DevOps build, publishes release notes to Confluence, notifies via Slack, and updates BigCommerce.
tags:
- digital
- azure-devops
- confluence
- slack
- bigcommerce
capability:
exposes:
- type: mcp
namespace: digital-experience-release-pipeline
port: 8080
tools:
- name: execute
description: Triggers Azure DevOps build, publishes release notes to Confluence, notifies via Slack, and updates BigCommerce.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: azure-devops.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: confluence.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: slack.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: bigcommerce.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: azure-devops
baseUri: https://api.azuredevops.com/v1
authentication:
type: bearer
token: $secrets.azure_devops_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: confluence
baseUri: https://api.confluence.com/v1
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: https://api.slack.com/v1
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/v1
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
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
Queries retail partner performance data from Teradata.
naftiko: '0.5'
info:
label: Teradata Retail Data Query
description: Queries retail partner performance data from Teradata.
tags:
- analytics
- teradata
capability:
exposes:
- type: mcp
namespace: teradata-retail
port: 8080
tools:
- name: get-data
description: Queries retail partner performance data from Teradata.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: teradata-retail.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: teradata-retail
baseUri: https://lego.teradata.com/api/v1
authentication:
type: bearer
token: $secrets.teradata_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Creates and sends a VIP insider newsletter via MailChimp to LEGO fans.
naftiko: '0.5'
info:
label: MailChimp VIP Newsletter Campaign
description: Creates and sends a VIP insider newsletter via MailChimp to LEGO fans.
tags:
- marketing
- email
- mailchimp
capability:
exposes:
- type: mcp
namespace: email-marketing
port: 8080
tools:
- name: send-vip-newsletter
description: Create and send a MailChimp VIP newsletter campaign.
inputParameters:
- name: campaign_name
in: body
type: string
description: The campaign name.
- name: subject
in: body
type: string
description: The email subject line.
- name: template_id
in: body
type: string
description: The email template ID.
call: mailchimp.create-campaign
with:
name: '{{campaign_name}}'
list_id: vip-insiders
template_id: '{{template_id}}'
subject: '{{subject}}'
consumes:
- type: http
namespace: mailchimp
baseUri: https://us1.api.mailchimp.com/3.0
authentication:
type: basic
username: anystring
password: $secrets.mailchimp_api_key
resources:
- name: campaigns
path: /campaigns
operations:
- name: create-campaign
method: POST
When a licensing agreement is submitted in Salesforce, validates terms, creates a legal review in ServiceNow, stores the contract in SharePoint, and notifies the licensing team via Microsoft Teams.
naftiko: '0.5'
info:
label: Licensing Agreement Approval Pipeline
description: When a licensing agreement is submitted in Salesforce, validates terms, creates a legal review in ServiceNow, stores the contract in SharePoint, and notifies the licensing team via Microsoft Teams.
tags:
- licensing
- legal
- salesforce
- servicenow
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: licensing-agreements
port: 8080
tools:
- name: process-licensing-agreement
description: Given a licensing agreement ID, validate terms, create legal review, and notify the team.
inputParameters:
- name: agreement_id
in: body
type: string
description: The Salesforce licensing agreement ID.
- name: partner_name
in: body
type: string
description: The licensing partner name.
steps:
- name: get-agreement
type: call
call: salesforce.get-agreement
with:
agreement_id: '{{agreement_id}}'
- name: create-review
type: call
call: servicenow.create-case
with:
short_description: 'Legal review: Licensing agreement with {{partner_name}}'
category: legal_review
description: 'Agreement ID: {{agreement_id}}. Partner: {{partner_name}}. Terms: {{get-agreement.terms_summary}}.'
- name: store-contract
type: call
call: sharepoint.upload-file
with:
site_id: legal-docs
folder_path: LicensingAgreements/{{partner_name}}
file_name: agreement_{{agreement_id}}.pdf
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: licensing
text: 'Licensing agreement {{agreement_id}} with {{partner_name}} submitted for review. Legal case: {{create-review.number}}. Contract stored: {{store-contract.url}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://lego.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: agreements
path: /sobjects/LicensingAgreement__c/{{agreement_id}}
inputParameters:
- name: agreement_id
in: path
operations:
- name: get-agreement
method: GET
- type: http
namespace: servicenow
baseUri: https://lego.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: cases
path: /table/sn_customerservice_case
operations:
- name: create-case
method: POST
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: files
path: /{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
- name: file_name
in: path
operations:
- name: upload-file
method: PUT
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Creates promotion in SAP, publishes to BigCommerce, sends MailChimp campaign, and tracks in Google Sheets.
naftiko: '0.5'
info:
label: Seasonal Promotion Pipeline
description: Creates promotion in SAP, publishes to BigCommerce, sends MailChimp campaign, and tracks in Google Sheets.
tags:
- promotions
- sap
- bigcommerce
- mailchimp
- google-sheets
capability:
exposes:
- type: mcp
namespace: seasonal-promotion-pipeline
port: 8080
tools:
- name: execute
description: Creates promotion in SAP, publishes to BigCommerce, sends MailChimp campaign, and tracks in Google Sheets.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: bigcommerce.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: mailchimp.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: google-sheets.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/v1
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: mailchimp
baseUri: https://api.mailchimp.com/v1
authentication:
type: bearer
token: $secrets.mailchimp_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: https://api.googlesheets.com/v1
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Updates a product listing on BigCommerce with new pricing, description, or availability.
naftiko: '0.5'
info:
label: BigCommerce Product Listing Update
description: Updates a product listing on BigCommerce with new pricing, description, or availability.
tags:
- e-commerce
- bigcommerce
capability:
exposes:
- type: mcp
namespace: ecommerce-management
port: 8080
tools:
- name: update-product-listing
description: Update a BigCommerce product listing.
inputParameters:
- name: product_id
in: body
type: string
description: The BigCommerce product ID.
- name: price
in: body
type: string
description: The new price.
- name: availability
in: body
type: string
description: The availability status.
call: bigcommerce.update-product
with:
product_id: '{{product_id}}'
price: '{{price}}'
availability: '{{availability}}'
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/{{store_hash}}/v3
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: products
path: /catalog/products/{{product_id}}
inputParameters:
- name: product_id
in: path
operations:
- name: update-product
method: PUT
Queries aggregated LEGO set sales data from Snowflake.
naftiko: '0.5'
info:
label: Snowflake Set Sales Query
description: Queries aggregated LEGO set sales data from Snowflake.
tags:
- analytics
- snowflake
capability:
exposes:
- type: mcp
namespace: snowflake-sales
port: 8080
tools:
- name: get-data
description: Queries aggregated LEGO set sales data from Snowflake.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: snowflake-sales.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: snowflake-sales
baseUri: https://lego.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Retrieves a Zendesk support ticket by ID.
naftiko: '0.5'
info:
label: Zendesk Customer Support Ticket Lookup
description: Retrieves a Zendesk support ticket by ID.
tags:
- customer-service
- zendesk
capability:
exposes:
- type: mcp
namespace: customer-support
port: 8080
tools:
- name: get-support-ticket
description: Look up a Zendesk support ticket by ticket ID.
inputParameters:
- name: ticket_id
in: body
type: string
description: The Zendesk ticket ID.
call: zendesk.get-ticket
with:
ticket_id: '{{ticket_id}}'
outputParameters:
- name: subject
type: string
mapping: $.ticket.subject
- name: status
type: string
mapping: $.ticket.status
- name: priority
type: string
mapping: $.ticket.priority
consumes:
- type: http
namespace: zendesk
baseUri: https://lego.zendesk.com/api/v2
authentication:
type: basic
username: $secrets.zendesk_user
password: $secrets.zendesk_token
resources:
- name: tickets
path: /tickets/{{ticket_id}}
inputParameters:
- name: ticket_id
in: path
operations:
- name: get-ticket
method: GET
Archives a legal document to Box in the licensing compliance folder.
naftiko: '0.5'
info:
label: Box Legal Document Archive
description: Archives a legal document to Box in the licensing compliance folder.
tags:
- licensing
- legal
- box
capability:
exposes:
- type: mcp
namespace: legal-archive
port: 8080
tools:
- name: archive-document
description: Upload a legal document to Box.
inputParameters:
- name: file_name
in: body
type: string
description: The document file name.
- name: folder_id
in: body
type: string
description: The Box target folder ID.
call: box.upload-file
with:
folder_id: '{{folder_id}}'
file_name: '{{file_name}}'
consumes:
- type: http
namespace: box
baseUri: https://upload.box.com/api/2.0
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: files
path: /files/content
operations:
- name: upload-file
method: POST
Schedules maintenance in SAP, creates ServiceNow work order, notifies plant team via Slack, and updates Google Sheets.
naftiko: '0.5'
info:
label: Mold Maintenance Scheduling Pipeline
description: Schedules maintenance in SAP, creates ServiceNow work order, notifies plant team via Slack, and updates Google Sheets.
tags:
- manufacturing
- sap
- servicenow
- slack
- google-sheets
capability:
exposes:
- type: mcp
namespace: mold-maintenance-scheduling-pipeline
port: 8080
tools:
- name: execute
description: Schedules maintenance in SAP, creates ServiceNow work order, notifies plant team via Slack, and updates Google Sheets.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: servicenow.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: slack.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: google-sheets.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: servicenow
baseUri: https://api.servicenow.com/v1
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: https://api.slack.com/v1
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: https://api.googlesheets.com/v1
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
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
Retrieves a Tableau dashboard embed URL for retail performance analytics.
naftiko: '0.5'
info:
label: Tableau Retail Performance Dashboard
description: Retrieves a Tableau dashboard embed URL for retail performance analytics.
tags:
- analytics
- retail
- tableau
capability:
exposes:
- type: mcp
namespace: retail-dashboards
port: 8080
tools:
- name: get-retail-dashboard
description: Retrieve the embed URL for a Tableau retail performance dashboard.
inputParameters:
- name: workbook_name
in: body
type: string
description: The Tableau workbook name.
call: tableau.get-workbook
with:
workbook_name: '{{workbook_name}}'
outputParameters:
- name: embed_url
type: string
mapping: $.workbook.contentUrl
consumes:
- type: http
namespace: tableau
baseUri: https://lego-tableau.online/api/3.14
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: workbooks
path: /sites/{{site_id}}/workbooks?filter=name:eq:{{workbook_name}}
inputParameters:
- name: workbook_name
in: query
operations:
- name: get-workbook
method: GET
Enrolls collectors in Salesforce, provisions rewards in Stripe, triggers MailChimp welcome series, and tracks engagement in Snowflake.
naftiko: '0.5'
info:
label: Minifigure Collector Program Pipeline
description: Enrolls collectors in Salesforce, provisions rewards in Stripe, triggers MailChimp welcome series, and tracks engagement in Snowflake.
tags:
- loyalty
- salesforce
- stripe
- mailchimp
- snowflake
capability:
exposes:
- type: mcp
namespace: minifigure-collector
port: 8080
tools:
- name: execute
description: Orchestrate minifigure collector program across Salesforce, Stripe, MailChimp, and Snowflake.
inputParameters:
- name: input_id
in: body
type: string
description: The collector email.
- name: context
in: body
type: string
description: Additional context.
steps:
- name: step-1
type: call
call: salesforce.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: stripe.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: mailchimp.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: snowflake.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://api.salesforce.com/v1
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: stripe
baseUri: https://api.stripe.com/v1
authentication:
type: bearer
token: $secrets.stripe_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: mailchimp
baseUri: https://api.mailchimp.com/v1
authentication:
type: bearer
token: $secrets.mailchimp_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: https://api.snowflake.com/v1
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Analyzes SAP inventory, optimizes in Snowflake, refreshes Power BI, and alerts via Slack.
naftiko: '0.5'
info:
label: Warehouse Optimization Pipeline
description: Analyzes SAP inventory, optimizes in Snowflake, refreshes Power BI, and alerts via Slack.
tags:
- logistics
- sap
- snowflake
- power-bi
- slack
capability:
exposes:
- type: mcp
namespace: warehouse-optimization-pipeline
port: 8080
tools:
- name: execute
description: Analyzes SAP inventory, optimizes in Snowflake, refreshes Power BI, and alerts via Slack.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: snowflake.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: power-bi.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: slack.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: https://api.snowflake.com/v1
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: power-bi
baseUri: https://api.powerbi.com/v1
authentication:
type: bearer
token: $secrets.power_bi_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: https://api.slack.com/v1
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
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
Retrieves design project status from Asana.
naftiko: '0.5'
info:
label: Asana Design Project Lookup
description: Retrieves design project status from Asana.
tags:
- project-management
- asana
capability:
exposes:
- type: mcp
namespace: asana-design
port: 8080
tools:
- name: get-data
description: Retrieves design project status from Asana.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: asana-design.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: asana-design
baseUri: https://app.asana.com/api/1.0
authentication:
type: bearer
token: $secrets.asana_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Retrieves a Figma packaging design file by key.
naftiko: '0.5'
info:
label: Figma Set Packaging Lookup
description: Retrieves a Figma packaging design file by key.
tags:
- design
- figma
capability:
exposes:
- type: mcp
namespace: figma-packaging
port: 8080
tools:
- name: get-data
description: Retrieves a Figma packaging design file by key.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: figma-packaging.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: figma-packaging
baseUri: https://api.figma.com/v1
authentication:
type: bearer
token: $secrets.figma_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
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
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
Creates case in Salesforce, generates documents in SharePoint, assigns Jira review, and notifies via Microsoft Teams.
naftiko: '0.5'
info:
label: Patent Coordination Pipeline
description: Creates case in Salesforce, generates documents in SharePoint, assigns Jira review, and notifies via Microsoft Teams.
tags:
- legal
- salesforce
- sharepoint
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: patent-coordination-pipeline
port: 8080
tools:
- name: execute
description: Creates case in Salesforce, generates documents in SharePoint, assigns Jira review, and notifies via Microsoft Teams.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: salesforce.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: sharepoint.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: jira.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: microsoft-teams.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://api.salesforce.com/v1
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: sharepoint
baseUri: https://api.sharepoint.com/v1
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: jira
baseUri: https://api.jira.com/v1
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: microsoft-teams
baseUri: https://api.microsoftteams.com/v1
authentication:
type: bearer
token: $secrets.microsoft_teams_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Aggregates community content from Snowflake, curates newsletter in MailChimp, tracks engagement in Google Analytics, and reports in Google Sheets.
naftiko: '0.5'
info:
label: Adult Fan Community Newsletter Pipeline
description: Aggregates community content from Snowflake, curates newsletter in MailChimp, tracks engagement in Google Analytics, and reports in Google Sheets.
tags:
- community
- snowflake
- mailchimp
- google-analytics
- google-sheets
capability:
exposes:
- type: mcp
namespace: afol-newsletter
port: 8080
tools:
- name: execute
description: Orchestrate adult fan community newsletter across Snowflake, MailChimp, Google Analytics, and Google Sheets.
inputParameters:
- name: input_id
in: body
type: string
description: The newsletter edition ID.
- name: context
in: body
type: string
description: Additional context.
steps:
- name: step-1
type: call
call: snowflake.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: mailchimp.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: google-analytics.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: google-sheets.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://api.snowflake.com/v1
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: mailchimp
baseUri: https://api.mailchimp.com/v1
authentication:
type: bearer
token: $secrets.mailchimp_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-analytics
baseUri: https://api.googleanalytics.com/v1
authentication:
type: bearer
token: $secrets.google_analytics_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: https://api.googlesheets.com/v1
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
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
Validates batch in SAP quality, creates inspection report in Confluence, updates tracker in Airtable, and notifies via Slack.
naftiko: '0.5'
info:
label: Brick Quality Control Pipeline
description: Validates batch in SAP quality, creates inspection report in Confluence, updates tracker in Airtable, and notifies via Slack.
tags:
- quality
- sap
- confluence
- airtable
- slack
capability:
exposes:
- type: mcp
namespace: brick-quality-control-pipeline
port: 8080
tools:
- name: execute
description: Validates batch in SAP quality, creates inspection report in Confluence, updates tracker in Airtable, and notifies via Slack.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: confluence.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: airtable.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: slack.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: confluence
baseUri: https://api.confluence.com/v1
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: airtable
baseUri: https://api.airtable.com/v1
authentication:
type: bearer
token: $secrets.airtable_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: https://api.slack.com/v1
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Retrieves production order details from SAP for brick manufacturing.
naftiko: '0.5'
info:
label: SAP Production Order Lookup
description: Retrieves production order details from SAP for brick manufacturing.
tags:
- manufacturing
- sap
capability:
exposes:
- type: mcp
namespace: sap-prodorders
port: 8080
tools:
- name: get-data
description: Retrieves production order details from SAP for brick manufacturing.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: sap-prodorders.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: sap-prodorders
baseUri: https://lego-s4.sap.com/sap/opu/odata/sap/ZPRODORDER_SRV
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Searches Google Drive for product design assets and creative files.
naftiko: '0.5'
info:
label: Google Drive Design Asset Search
description: Searches Google Drive for product design assets and creative files.
tags:
- product-design
- google-drive
capability:
exposes:
- type: mcp
namespace: design-assets
port: 8080
tools:
- name: search-design-assets
description: Search Google Drive for design assets.
inputParameters:
- name: keyword
in: body
type: string
description: The search keyword.
call: google-drive.search-files
with:
query: name contains '{{keyword}}'
outputParameters:
- name: files
type: string
mapping: $.files
consumes:
- type: http
namespace: google-drive
baseUri: https://www.googleapis.com/drive/v3
authentication:
type: bearer
token: $secrets.google_drive_token
resources:
- name: files
path: /files?q={{query}}
inputParameters:
- name: query
in: query
operations:
- name: search-files
method: GET
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
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
When a LEGO.com order is placed, creates a delivery in SAP, updates BigCommerce order status, and sends a shipping confirmation via MailChimp.
naftiko: '0.5'
info:
label: E-Commerce Fulfillment Pipeline
description: When a LEGO.com order is placed, creates a delivery in SAP, updates BigCommerce order status, and sends a shipping confirmation via MailChimp.
tags:
- e-commerce
- fulfillment
- sap
- bigcommerce
- mailchimp
capability:
exposes:
- type: mcp
namespace: order-fulfillment
port: 8080
tools:
- name: fulfill-order
description: Given an order, create delivery, update status, and send confirmation.
inputParameters:
- name: order_id
in: body
type: string
description: The BigCommerce order ID.
- name: customer_email
in: body
type: string
description: The customer email.
steps:
- name: get-order
type: call
call: bigcommerce.get-order
with:
order_id: '{{order_id}}'
- name: create-delivery
type: call
call: sap.create-delivery
with:
order_id: '{{order_id}}'
items: '{{get-order.products}}'
- name: update-status
type: call
call: bigcommerce.update-order
with:
order_id: '{{order_id}}'
status: shipped
tracking: '{{create-delivery.tracking_number}}'
- name: send-confirmation
type: call
call: mailchimp.send-transactional
with:
template: shipping-confirmation
recipient: '{{customer_email}}'
tracking: '{{create-delivery.tracking_number}}'
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/{{store_hash}}/v2
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: orders
path: /orders/{{order_id}}
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- name: update-order
method: PUT
- type: http
namespace: sap
baseUri: https://lego-s4.sap.com/sap/opu/odata/sap/SD_DELIVERY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: deliveries
path: /Deliveries
operations:
- name: create-delivery
method: POST
- type: http
namespace: mailchimp
baseUri: https://us1.api.mailchimp.com/3.0
authentication:
type: basic
username: anystring
password: $secrets.mailchimp_api_key
resources:
- name: transactional
path: /messages/send-template
operations:
- name: send-transactional
method: POST
Collects consumer feedback from Zendesk, analyzes sentiment in Azure Databricks, creates product improvement tasks in Jira, and shares insights with the design team via Microsoft Teams.
naftiko: '0.5'
info:
label: Consumer Feedback Pipeline
description: Collects consumer feedback from Zendesk, analyzes sentiment in Azure Databricks, creates product improvement tasks in Jira, and shares insights with the design team via Microsoft Teams.
tags:
- product-design
- customer-feedback
- zendesk
- azure-databricks
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: consumer-feedback
port: 8080
tools:
- name: analyze-feedback
description: Given a product theme and date range, analyze consumer feedback and create improvement tasks.
inputParameters:
- name: theme
in: body
type: string
description: The LEGO theme to analyze.
- name: start_date
in: body
type: string
description: Start date.
- name: end_date
in: body
type: string
description: End date.
steps:
- name: get-tickets
type: call
call: zendesk.search-tickets
with:
query: type:ticket tags:{{theme}} created>{{start_date}} created<{{end_date}}
- name: analyze-sentiment
type: call
call: databricks.run-query
with:
query: SELECT * FROM feedback_sentiment WHERE theme = '{{theme}}' AND date BETWEEN '{{start_date}}' AND '{{end_date}}'
- name: create-improvement-task
type: call
call: jira.create-issue
with:
project: DESIGN
summary: 'Consumer feedback insights: {{theme}} ({{start_date}} to {{end_date}})'
description: 'Sentiment score: {{analyze-sentiment.avg_score}}. Top themes: {{analyze-sentiment.top_themes}}. Ticket count: {{get-tickets.count}}.'
- name: notify-design
type: call
call: msteams.send-message
with:
channel_id: product-design
text: 'Consumer feedback for {{theme}}: Avg sentiment: {{analyze-sentiment.avg_score}}. {{get-tickets.count}} tickets analyzed. Improvement task: {{create-improvement-task.key}}.'
consumes:
- type: http
namespace: zendesk
baseUri: https://lego.zendesk.com/api/v2
authentication:
type: basic
username: $secrets.zendesk_user
password: $secrets.zendesk_token
resources:
- name: search
path: /search.json?query={{query}}
inputParameters:
- name: query
in: query
operations:
- name: search-tickets
method: GET
- type: http
namespace: databricks
baseUri: https://lego-analytics.azuredatabricks.net/api/2.0
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: sql-queries
path: /sql/statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira
baseUri: https://lego.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves a Jira issue by key from the product design project.
naftiko: '0.5'
info:
label: Jira Design Task Lookup
description: Retrieves a Jira issue by key from the product design project.
tags:
- product-design
- jira
capability:
exposes:
- type: mcp
namespace: design-tasks
port: 8080
tools:
- name: get-jira-issue
description: Look up a Jira issue by key.
inputParameters:
- name: issue_key
in: body
type: string
description: The Jira issue key.
call: jira.get-issue
with:
issue_key: '{{issue_key}}'
outputParameters:
- name: summary
type: string
mapping: $.fields.summary
- name: status
type: string
mapping: $.fields.status.name
- name: assignee
type: string
mapping: $.fields.assignee.displayName
consumes:
- type: http
namespace: jira
baseUri: https://lego.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue/{{issue_key}}
inputParameters:
- name: issue_key
in: path
operations:
- name: get-issue
method: GET
Retrieves Qlik Sense inventory analytics dashboard status.
naftiko: '0.5'
info:
label: Qlik Sense Inventory Analytics
description: Retrieves Qlik Sense inventory analytics dashboard status.
tags:
- analytics
- qlik-sense
capability:
exposes:
- type: mcp
namespace: qlik-inventory
port: 8080
tools:
- name: get-data
description: Retrieves Qlik Sense inventory analytics dashboard status.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: qlik-inventory.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: qlik-inventory
baseUri: https://lego.qlikcloud.com/api/v1
authentication:
type: bearer
token: $secrets.qlik_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Syncs merchandise from SAP, updates ticketing in Salesforce, promotes on Instagram, and tracks in Google Analytics.
naftiko: '0.5'
info:
label: Theme Park Integration Pipeline
description: Syncs merchandise from SAP, updates ticketing in Salesforce, promotes on Instagram, and tracks in Google Analytics.
tags:
- entertainment
- sap
- salesforce
- instagram
- google-analytics
capability:
exposes:
- type: mcp
namespace: theme-park-integration-pipeline
port: 8080
tools:
- name: execute
description: Syncs merchandise from SAP, updates ticketing in Salesforce, promotes on Instagram, and tracks in Google Analytics.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: salesforce.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: instagram.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: google-analytics.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: salesforce
baseUri: https://api.salesforce.com/v1
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: instagram
baseUri: https://api.instagram.com/v1
authentication:
type: bearer
token: $secrets.instagram_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-analytics
baseUri: https://api.googleanalytics.com/v1
authentication:
type: bearer
token: $secrets.google_analytics_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Retrieves DocuSign licensing agreement envelope status.
naftiko: '0.5'
info:
label: DocuSign Licensing Agreement Lookup
description: Retrieves DocuSign licensing agreement envelope status.
tags:
- legal
- docusign
capability:
exposes:
- type: mcp
namespace: docusign-licenses
port: 8080
tools:
- name: get-data
description: Retrieves DocuSign licensing agreement envelope status.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: docusign-licenses.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: docusign-licenses
baseUri: https://na4.docusign.net/restapi/v2.1/accounts/lego
authentication:
type: bearer
token: $secrets.docusign_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Creates partner in Salesforce, generates contract via DocuSign, sets up folder in Box, and sends welcome via Microsoft Outlook.
naftiko: '0.5'
info:
label: Licensing Partner Onboarding Pipeline
description: Creates partner in Salesforce, generates contract via DocuSign, sets up folder in Box, and sends welcome via Microsoft Outlook.
tags:
- licensing
- salesforce
- docusign
- box
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: licensing-partner-onboarding-pipeline
port: 8080
tools:
- name: execute
description: Creates partner in Salesforce, generates contract via DocuSign, sets up folder in Box, and sends welcome via Microsoft Outlook.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: salesforce.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: docusign.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: box.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: microsoft-outlook.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://api.salesforce.com/v1
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: docusign
baseUri: https://api.docusign.com/v1
authentication:
type: bearer
token: $secrets.docusign_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: box
baseUri: https://api.box.com/v1
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: microsoft-outlook
baseUri: https://api.microsoftoutlook.com/v1
authentication:
type: bearer
token: $secrets.microsoft_outlook_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Collects production data from SAP, analyzes in Snowflake, updates Power BI dashboards, and alerts plant managers via Slack.
naftiko: '0.5'
info:
label: Manufacturing Efficiency Pipeline
description: Collects production data from SAP, analyzes in Snowflake, updates Power BI dashboards, and alerts plant managers via Slack.
tags:
- manufacturing
- sap
- snowflake
- power-bi
- slack
capability:
exposes:
- type: mcp
namespace: manufacturing-efficiency-pipeline
port: 8080
tools:
- name: execute
description: Collects production data from SAP, analyzes in Snowflake, updates Power BI dashboards, and alerts plant managers via Slack.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: snowflake.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: power-bi.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: slack.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: snowflake
baseUri: https://api.snowflake.com/v1
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: power-bi
baseUri: https://api.powerbi.com/v1
authentication:
type: bearer
token: $secrets.power_bi_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: https://api.slack.com/v1
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Identifies VIPs in Snowflake, creates segments in Salesforce, triggers MailChimp campaigns, and tracks in Google Sheets.
naftiko: '0.5'
info:
label: VIP Collector Engagement Pipeline
description: Identifies VIPs in Snowflake, creates segments in Salesforce, triggers MailChimp campaigns, and tracks in Google Sheets.
tags:
- loyalty
- snowflake
- salesforce
- mailchimp
- google-sheets
capability:
exposes:
- type: mcp
namespace: vip-collector-engagement-pipeline
port: 8080
tools:
- name: execute
description: Identifies VIPs in Snowflake, creates segments in Salesforce, triggers MailChimp campaigns, and tracks in Google Sheets.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: snowflake.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: salesforce.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: mailchimp.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: google-sheets.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://api.snowflake.com/v1
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: salesforce
baseUri: https://api.salesforce.com/v1
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: mailchimp
baseUri: https://api.mailchimp.com/v1
authentication:
type: bearer
token: $secrets.mailchimp_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: https://api.googlesheets.com/v1
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
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
Creates HubSpot campaign, sets up Facebook ads, tracks in Google Analytics, and reports in Google Sheets.
naftiko: '0.5'
info:
label: Digital Marketing Pipeline
description: Creates HubSpot campaign, sets up Facebook ads, tracks in Google Analytics, and reports in Google Sheets.
tags:
- marketing
- hubspot
- facebook
- google-analytics
- google-sheets
capability:
exposes:
- type: mcp
namespace: digital-marketing-pipeline
port: 8080
tools:
- name: execute
description: Creates HubSpot campaign, sets up Facebook ads, tracks in Google Analytics, and reports in Google Sheets.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: hubspot.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: facebook.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: google-analytics.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: google-sheets.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: hubspot
baseUri: https://api.hubspot.com/v1
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: facebook
baseUri: https://api.facebook.com/v1
authentication:
type: bearer
token: $secrets.facebook_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-analytics
baseUri: https://api.googleanalytics.com/v1
authentication:
type: bearer
token: $secrets.google_analytics_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: https://api.googlesheets.com/v1
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Retrieves Power BI sales KPI dashboard refresh status.
naftiko: '0.5'
info:
label: Power BI Sales KPI Report
description: Retrieves Power BI sales KPI dashboard refresh status.
tags:
- analytics
- power-bi
capability:
exposes:
- type: mcp
namespace: powerbi-sales
port: 8080
tools:
- name: get-data
description: Retrieves Power BI sales KPI dashboard refresh status.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: powerbi-sales.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: powerbi-sales
baseUri: https://api.powerbi.com/v1.0/myorg
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Generates instructions from design data, uploads to Amazon S3, publishes to BigCommerce, and notifies via Slack.
naftiko: '0.5'
info:
label: Building Instruction Publishing Pipeline
description: Generates instructions from design data, uploads to Amazon S3, publishes to BigCommerce, and notifies via Slack.
tags:
- content
- amazon-s3
- bigcommerce
- slack
capability:
exposes:
- type: mcp
namespace: building-instruction-publishing-pipeline
port: 8080
tools:
- name: execute
description: Generates instructions from design data, uploads to Amazon S3, publishes to BigCommerce, and notifies via Slack.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: amazon-s3.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: bigcommerce.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: slack.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: slack.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: amazon-s3
baseUri: https://api.amazons3.com/v1
authentication:
type: bearer
token: $secrets.amazon_s3_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/v1
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: slack
baseUri: https://api.slack.com/v1
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Publishes a LEGO product video to YouTube, creates a social post linking to it on Instagram, and tracks engagement in Google Analytics.
naftiko: '0.5'
info:
label: YouTube Brand Content Publishing Pipeline
description: Publishes a LEGO product video to YouTube, creates a social post linking to it on Instagram, and tracks engagement in Google Analytics.
tags:
- marketing
- youtube
- instagram
- google-analytics
capability:
exposes:
- type: mcp
namespace: video-marketing
port: 8080
tools:
- name: publish-video-campaign
description: Given video details, publish to YouTube, cross-promote on Instagram, and set up tracking.
inputParameters:
- name: video_title
in: body
type: string
description: The video title.
- name: description
in: body
type: string
description: The video description.
- name: theme
in: body
type: string
description: The LEGO theme.
steps:
- name: upload-video
type: call
call: youtube.upload-video
with:
title: '{{video_title}}'
description: '{{description}}'
tags: LEGO,{{theme}}
- name: cross-promote
type: call
call: instagram.create-post
with:
caption: 'New video: {{video_title}}! Watch now on our YouTube channel. #LEGO #{{theme}}'
- name: setup-tracking
type: call
call: google-analytics.create-event
with:
event_name: video_launch_{{theme}}
video_id: '{{upload-video.video_id}}'
consumes:
- type: http
namespace: youtube
baseUri: https://www.googleapis.com/youtube/v3
authentication:
type: bearer
token: $secrets.youtube_token
resources:
- name: videos
path: /videos?part=snippet,status
operations:
- name: upload-video
method: POST
- type: http
namespace: instagram
baseUri: https://graph.facebook.com/v17.0
authentication:
type: bearer
token: $secrets.meta_token
resources:
- name: posts
path: /{{ig_user_id}}/media
operations:
- name: create-post
method: POST
- type: http
namespace: google-analytics
baseUri: https://www.google-analytics.com
authentication:
type: apikey
key: $secrets.ga_measurement_id
resources:
- name: events
path: /mp/collect
operations:
- name: create-event
method: POST
Collects feedback from Zendesk, analyzes via Azure ML, shares insights in Confluence, and posts updates to Instagram.
naftiko: '0.5'
info:
label: Fan Community Engagement Pipeline
description: Collects feedback from Zendesk, analyzes via Azure ML, shares insights in Confluence, and posts updates to Instagram.
tags:
- community
- zendesk
- azure-machine-learning
- confluence
- instagram
capability:
exposes:
- type: mcp
namespace: fan-community-engagement-pipeline
port: 8080
tools:
- name: execute
description: Collects feedback from Zendesk, analyzes via Azure ML, shares insights in Confluence, and posts updates to Instagram.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: zendesk.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: azure-machine-learning.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: confluence.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: instagram.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: zendesk
baseUri: https://api.zendesk.com/v1
authentication:
type: bearer
token: $secrets.zendesk_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: azure-machine-learning
baseUri: https://api.azuremachinelearning.com/v1
authentication:
type: bearer
token: $secrets.azure_machine_learning_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: confluence
baseUri: https://api.confluence.com/v1
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: instagram
baseUri: https://api.instagram.com/v1
authentication:
type: bearer
token: $secrets.instagram_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Retrieves a LEGO.com order from Salesforce Commerce by order ID, returning status, total, and shipping details.
naftiko: '0.5'
info:
label: E-Commerce Order Status Lookup
description: Retrieves a LEGO.com order from Salesforce Commerce by order ID, returning status, total, and shipping details.
tags:
- e-commerce
- salesforce
capability:
exposes:
- type: mcp
namespace: ecommerce
port: 8080
tools:
- name: get-order-status
description: Look up a LEGO.com order by order ID.
inputParameters:
- name: order_id
in: body
type: string
description: The order ID.
call: salesforce.get-order
with:
order_id: '{{order_id}}'
outputParameters:
- name: status
type: string
mapping: $.Status
- name: total
type: string
mapping: $.TotalAmount
- name: shipping_status
type: string
mapping: $.ShippingStatus__c
consumes:
- type: http
namespace: salesforce
baseUri: https://lego.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: orders
path: /sobjects/Order/{{order_id}}
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
Retrieves Salesforce retailer account details by ID.
naftiko: '0.5'
info:
label: Salesforce Retailer Account Lookup
description: Retrieves Salesforce retailer account details by ID.
tags:
- sales
- salesforce
capability:
exposes:
- type: mcp
namespace: sf-retailers
port: 8080
tools:
- name: get-data
description: Retrieves Salesforce retailer account details by ID.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: sf-retailers.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: sf-retailers
baseUri: https://lego.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Creates a corporate content post on LinkedIn and logs it in Salesforce.
naftiko: '0.5'
info:
label: LinkedIn Corporate Content Post
description: Creates a corporate content post on LinkedIn and logs it in Salesforce.
tags:
- marketing
- linkedin
- salesforce
capability:
exposes:
- type: mcp
namespace: corporate-social
port: 8080
tools:
- name: post-corporate-content
description: Create a LinkedIn post and log it in Salesforce.
inputParameters:
- name: content_text
in: body
type: string
description: The post content text.
- name: campaign_id
in: body
type: string
description: The Salesforce campaign ID.
steps:
- name: create-post
type: call
call: linkedin.create-post
with:
text: '{{content_text}}'
- name: log-post
type: call
call: salesforce.create-activity
with:
campaign_id: '{{campaign_id}}'
platform: linkedin
post_id: '{{create-post.post_id}}'
consumes:
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: posts
path: /ugcPosts
operations:
- name: create-post
method: POST
- type: http
namespace: salesforce
baseUri: https://lego.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: activities
path: /sobjects/CampaignActivity__c
operations:
- name: create-activity
method: POST
Pulls licensing revenue data from SAP, enriches with partner performance from Salesforce, generates a report in Google Sheets, and shares with the licensing team via Microsoft Teams.
naftiko: '0.5'
info:
label: Licensing Partner Revenue Pipeline
description: Pulls licensing revenue data from SAP, enriches with partner performance from Salesforce, generates a report in Google Sheets, and shares with the licensing team via Microsoft Teams.
tags:
- licensing
- revenue
- sap
- salesforce
- google-sheets
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: licensing-revenue
port: 8080
tools:
- name: generate-licensing-report
description: Given a partner and period, generate a licensing revenue report.
inputParameters:
- name: partner_id
in: body
type: string
description: The licensing partner ID.
- name: period
in: body
type: string
description: The reporting period.
steps:
- name: get-revenue
type: call
call: sap.get-licensing-revenue
with:
partner_id: '{{partner_id}}'
period: '{{period}}'
- name: get-partner-data
type: call
call: salesforce.get-partner-account
with:
partner_id: '{{partner_id}}'
- name: create-report
type: call
call: google-sheets.create-spreadsheet
with:
title: Licensing Revenue - {{get-partner-data.partner_name}} - {{period}}
data: '{{get-revenue.results}}'
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: licensing
text: 'Licensing revenue report for {{get-partner-data.partner_name}} ({{period}}): Total royalties: ${{get-revenue.total_royalties}}. Report: {{create-report.spreadsheet_url}}.'
consumes:
- type: http
namespace: sap
baseUri: https://lego-s4.sap.com/sap/opu/odata/sap/FI_REVENUE_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: licensing-revenue
path: /LicensingRevenue?$filter=PartnerId eq '{{partner_id}}' and Period eq '{{period}}'
inputParameters:
- name: partner_id
in: query
- name: period
in: query
operations:
- name: get-licensing-revenue
method: GET
- type: http
namespace: salesforce
baseUri: https://lego.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: partners
path: /sobjects/Account/{{partner_id}}
inputParameters:
- name: partner_id
in: path
operations:
- name: get-partner-account
method: GET
- type: http
namespace: google-sheets
baseUri: https://sheets.googleapis.com/v4
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: spreadsheets
path: /spreadsheets
operations:
- name: create-spreadsheet
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Matches SAP invoices, validates Salesforce contracts, processes payments, and logs in Google Sheets.
naftiko: '0.5'
info:
label: Vendor Invoice Pipeline
description: Matches SAP invoices, validates Salesforce contracts, processes payments, and logs in Google Sheets.
tags:
- finance
- sap
- salesforce
- google-sheets
capability:
exposes:
- type: mcp
namespace: vendor-invoice-pipeline
port: 8080
tools:
- name: execute
description: Matches SAP invoices, validates Salesforce contracts, processes payments, and logs in Google Sheets.
inputParameters:
- name: input_id
in: body
type: string
description: The primary input identifier.
- name: context
in: body
type: string
description: Additional context parameter.
steps:
- name: step-1
type: call
call: sap.execute-step-1
with:
input: '{{input_id}}'
context: '{{context}}'
- name: step-2
type: call
call: salesforce.execute-step-2
with:
data: '{{step-1.result}}'
- name: step-3
type: call
call: google-sheets.execute-step-3
with:
data: '{{step-2.result}}'
- name: step-4
type: call
call: google-sheets.execute-step-4
with:
data: '{{step-3.result}}'
id: '{{input_id}}'
consumes:
- type: http
namespace: sap
baseUri: https://api.sap.com/v1
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: salesforce
baseUri: https://api.salesforce.com/v1
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
- type: http
namespace: google-sheets
baseUri: https://api.googlesheets.com/v1
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: resources
path: /{{id}}
operations:
- name: execute
method: POST
Retrieves Tableau retail analytics dashboard view.
naftiko: '0.5'
info:
label: Tableau Retail Analytics Lookup
description: Retrieves Tableau retail analytics dashboard view.
tags:
- analytics
- tableau
capability:
exposes:
- type: mcp
namespace: tableau-retail
port: 8080
tools:
- name: get-data
description: Retrieves Tableau retail analytics dashboard view.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: tableau-retail.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: tableau-retail
baseUri: https://tableau.lego.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
Retrieves brick inventory levels from SAP by material number.
naftiko: '0.5'
info:
label: SAP Material Inventory Lookup
description: Retrieves brick inventory levels from SAP by material number.
tags:
- inventory
- sap
capability:
exposes:
- type: mcp
namespace: sap-inventory
port: 8080
tools:
- name: get-data
description: Retrieves brick inventory levels from SAP by material number.
inputParameters:
- name: query_id
in: body
type: string
description: The lookup identifier.
call: sap-inventory.get-data
with:
id: '{{query_id}}'
outputParameters:
- name: result
type: string
mapping: $.data
consumes:
- type: http
namespace: sap-inventory
baseUri: https://lego-s4.sap.com/sap/opu/odata/sap/ZINVENTORY_SRV
authentication:
type: bearer
token: $secrets.sap_token
resources:
- name: data
path: /{{id}}
inputParameters:
- name: id
in: path
operations:
- name: get-data
method: GET
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Uses Google Maps API to calculate shipping distances and transit times from Mattel distribution centers to retail partner locations.
naftiko: '0.5'
info:
label: Google Maps Distribution Center Locator
description: Uses Google Maps API to calculate shipping distances and transit times from Mattel distribution centers to retail partner locations.
tags:
- logistics
- google-maps
- distribution
capability:
exposes:
- type: mcp
namespace: distribution-routing
port: 8080
tools:
- name: calculate-shipping-distance
description: Calculate distance and transit time from a distribution center to a retailer.
inputParameters:
- name: dc_address
in: body
type: string
description: Distribution center address.
- name: retailer_address
in: body
type: string
description: Retailer location address.
call: google-maps.get-distance
with:
origin: '{{dc_address}}'
destination: '{{retailer_address}}'
consumes:
- type: http
namespace: google-maps
baseUri: https://maps.googleapis.com/maps/api
authentication:
type: apiKey
key: $secrets.google_maps_key
resources:
- name: distance
path: /distancematrix/json
inputParameters:
- name: origin
in: query
- name: destination
in: query
operations:
- name: get-distance
method: GET
Pulls content performance metrics from Adobe Analytics for Mattel brand websites, identifying top products and conversion paths.
naftiko: '0.5'
info:
label: Adobe Analytics Brand Website Performance
description: Pulls content performance metrics from Adobe Analytics for Mattel brand websites, identifying top products and conversion paths.
tags:
- analytics
- adobe-analytics
- e-commerce
capability:
exposes:
- type: mcp
namespace: brand-analytics
port: 8080
tools:
- name: get-brand-performance
description: Retrieve brand website performance from Adobe Analytics.
inputParameters:
- name: report_suite_id
in: body
type: string
description: Adobe Analytics report suite ID.
- name: date_range
in: body
type: string
description: Date range.
call: adobe-analytics.get-report
with:
rsid: '{{report_suite_id}}'
date_range: '{{date_range}}'
consumes:
- type: http
namespace: adobe-analytics
baseUri: https://analytics.adobe.io/api
authentication:
type: bearer
token: $secrets.adobe_analytics_token
resources:
- name: reports
path: /{{company_id}}/reports
operations:
- name: get-report
method: POST
Posts daily retail sales summaries to Slack channels, aggregating sell-through data by brand and top retailers.
naftiko: '0.5'
info:
label: Slack Daily Retail Sales Alert
description: Posts daily retail sales summaries to Slack channels, aggregating sell-through data by brand and top retailers.
tags:
- retail
- slack
- daily-reporting
- sales
capability:
exposes:
- type: mcp
namespace: daily-sales
port: 8080
tools:
- name: post-daily-sales
description: Post daily retail sales summary to Slack.
inputParameters:
- name: date
in: body
type: string
description: Reporting date in YYYY-MM-DD format.
steps:
- name: get-sales-data
type: call
call: salesforce.get-daily-sales
with:
date: '{{date}}'
- name: post-summary
type: call
call: slack.post-message
with:
channel: retail-sales-daily
text: 'Daily Sales ({{date}}): Total revenue: {{get-sales-data.total_revenue}}. Top brand: {{get-sales-data.top_brand}}. Top retailer: {{get-sales-data.top_retailer}}. Units: {{get-sales-data.total_units}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://mattel.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: sales
path: /sobjects/Daily_Sales__c
operations:
- name: get-daily-sales
method: GET
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Pulls toy market share and competitive data from Circana, storing insights in SharePoint for brand management analysis.
naftiko: '0.5'
info:
label: Circana Market Share Intelligence
description: Pulls toy market share and competitive data from Circana, storing insights in SharePoint for brand management analysis.
tags:
- market-intelligence
- circana
- sharepoint
- competitive-analysis
capability:
exposes:
- type: mcp
namespace: market-intel
port: 8080
tools:
- name: get-market-share
description: Fetch toy market share data from Circana and store in SharePoint.
inputParameters:
- name: brand
in: body
type: string
description: Mattel brand name.
- name: category
in: body
type: string
description: Toy category (dolls, vehicles, games, preschool).
- name: region
in: body
type: string
description: Geographic region.
steps:
- name: get-data
type: call
call: circana.get-market-share
with:
brand: '{{brand}}'
category: '{{category}}'
region: '{{region}}'
- name: store-report
type: call
call: sharepoint.upload-file
with:
site_id: market_intelligence
folder_path: MarketShare/{{brand}}/{{region}}
content: '{{get-data.report}}'
consumes:
- type: http
namespace: circana
baseUri: https://api.circana.com/v1
authentication:
type: bearer
token: $secrets.circana_token
resources:
- name: market-share
path: /market-share
inputParameters:
- name: brand
in: query
- name: category
in: query
- name: region
in: query
operations:
- name: get-market-share
method: GET
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: drive-items
path: /{{site_id}}/drive/root:/{{folder_path}}
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: upload-file
method: PUT
Checks F5 Networks load balancer health for Mattel e-commerce and web application pools.
naftiko: '0.5'
info:
label: F5 Load Balancer Health Check
description: Checks F5 Networks load balancer health for Mattel e-commerce and web application pools.
tags:
- infrastructure
- f5-networks
- load-balancing
capability:
exposes:
- type: mcp
namespace: lb-health
port: 8080
tools:
- name: check-pool-health
description: Check F5 load balancer pool health.
inputParameters:
- name: pool_name
in: body
type: string
description: F5 pool name.
call: f5.get-pool-status
with:
pool: '{{pool_name}}'
consumes:
- type: http
namespace: f5
baseUri: https://mattel-f5.com/mgmt/tm
authentication:
type: basic
username: $secrets.f5_user
password: $secrets.f5_password
resources:
- name: pools
path: /ltm/pool/{{pool}}/members
inputParameters:
- name: pool
in: path
operations:
- name: get-pool-status
method: GET
Retrieves operational data for Mattel toys workflows.
naftiko: '0.5'
info:
label: Mattel Data Lookup 10
description: Retrieves operational data for Mattel toys workflows.
tags:
- toys
- operations
capability:
exposes:
- type: mcp
namespace: mattel-data
port: 8080
tools:
- name: get-data-10
description: Retrieves operational data for Mattel toys workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mattel-data.get-data-10
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mattel-data
baseUri: https://api.mattel.com/data/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: data-10
path: /data-10/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-10
method: GET
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 3
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- slack
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-3
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-3
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: slack.post-message
with:
channel: '#toys'
text: 'Completed workflow 3: {{process.summary}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-3
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /messages
operations:
- name: post-message
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 16
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- confluence
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-16
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-16
with:
identifier: '{{identifier}}'
- name: publish
type: call
call: confluence.create-page
with:
space: TOYS
title: Report 16
content: '{{process.report}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-16
method: POST
- type: http
namespace: confluence
baseUri: https://mattel.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
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
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 17
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- powerbi
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-17
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-17
with:
identifier: '{{identifier}}'
- name: refresh
type: call
call: powerbi.refresh-dataset
with:
dataset_id: workflow_17
data: '{{process.metrics}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-17
method: POST
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /datasets
operations:
- name: refresh-dataset
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 2
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- servicenow
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-2
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-2
with:
identifier: '{{identifier}}'
- name: create
type: call
call: servicenow.create-incident
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-2
method: POST
- type: http
namespace: servicenow
baseUri: https://mattel.service-now.com/api/now/v1
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
Synchronizes e-commerce orders from BigCommerce to SAP for fulfillment, ensuring inventory allocation and shipping scheduling.
naftiko: '0.5'
info:
label: E-Commerce Order Fulfillment Sync
description: Synchronizes e-commerce orders from BigCommerce to SAP for fulfillment, ensuring inventory allocation and shipping scheduling.
tags:
- e-commerce
- bigcommerce
- sap
- order-fulfillment
capability:
exposes:
- type: mcp
namespace: ecommerce-sync
port: 8080
tools:
- name: sync-ecommerce-orders
description: Pull BigCommerce orders and create SAP sales orders for fulfillment.
inputParameters:
- name: date_from
in: body
type: string
description: Start date for order retrieval.
- name: date_to
in: body
type: string
description: End date for order retrieval.
steps:
- name: get-orders
type: call
call: bigcommerce.get-orders
with:
min_date: '{{date_from}}'
max_date: '{{date_to}}'
- name: create-sap-orders
type: call
call: sap.create-sales-orders
with:
orders: '{{get-orders.orders}}'
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/{{store_hash}}/v2
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: orders
path: /orders
operations:
- name: get-orders
method: GET
- type: http
namespace: sap
baseUri: https://mattel-s4.sap.com/sap/opu/odata/sap/SD_SALES_ORDER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: sales-orders
path: /A_SalesOrder
operations:
- name: create-sales-orders
method: POST
Manages a toy product recall by updating SAP inventory status, creating a ServiceNow crisis case, notifying retailers via Salesforce, and alerting the crisis team via Microsoft Teams.
naftiko: '0.5'
info:
label: Product Safety Recall Manager
description: Manages a toy product recall by updating SAP inventory status, creating a ServiceNow crisis case, notifying retailers via Salesforce, and alerting the crisis team via Microsoft Teams.
tags:
- product-safety
- recall
- sap
- servicenow
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: product-recall
port: 8080
tools:
- name: initiate-recall
description: Initiate a product recall across all systems and notify stakeholders.
inputParameters:
- name: product_id
in: body
type: string
description: SAP material/product ID.
- name: product_name
in: body
type: string
description: Product name.
- name: reason
in: body
type: string
description: Recall reason.
- name: batch_numbers
in: body
type: string
description: Comma-separated batch numbers affected.
steps:
- name: block-inventory
type: call
call: sap.block-material
with:
material_id: '{{product_id}}'
batches: '{{batch_numbers}}'
status: blocked
- name: create-case
type: call
call: servicenow.create-incident
with:
short_description: 'Product recall: {{product_name}}'
category: recall
priority: '1'
description: 'Product: {{product_name}} ({{product_id}}). Batches: {{batch_numbers}}. Reason: {{reason}}.'
- name: notify-retailers
type: call
call: salesforce.create-mass-notification
with:
subject: 'Recall: {{product_name}}'
message: 'Please remove {{product_name}} (batches: {{batch_numbers}}) from shelves. Reason: {{reason}}.'
- name: alert-crisis-team
type: call
call: msteams.send-message
with:
channel_id: crisis-management
text: 'RECALL INITIATED: {{product_name}} ({{product_id}}). Batches: {{batch_numbers}}. Reason: {{reason}}. ServiceNow: {{create-case.number}}.'
consumes:
- type: http
namespace: sap
baseUri: https://mattel-s4.sap.com/sap/opu/odata/sap/MM_MATERIAL_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: materials
path: /A_Material
operations:
- name: block-material
method: PATCH
- type: http
namespace: servicenow
baseUri: https://mattel.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: salesforce
baseUri: https://mattel.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: notifications
path: /sobjects/Mass_Notification__c
operations:
- name: create-mass-notification
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{channel_id}}/channels/General/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves operational data for Mattel toys workflows.
naftiko: '0.5'
info:
label: Mattel Data Lookup 11
description: Retrieves operational data for Mattel toys workflows.
tags:
- toys
- operations
capability:
exposes:
- type: mcp
namespace: mattel-data
port: 8080
tools:
- name: get-data-11
description: Retrieves operational data for Mattel toys workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mattel-data.get-data-11
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mattel-data
baseUri: https://api.mattel.com/data/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: data-11
path: /data-11/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-11
method: GET
Manages toy safety compliance documents by storing test reports in SharePoint, logging certifications in ServiceNow, and archiving to Box.
naftiko: '0.5'
info:
label: Toy Safety Compliance Document Manager
description: Manages toy safety compliance documents by storing test reports in SharePoint, logging certifications in ServiceNow, and archiving to Box.
tags:
- compliance
- toy-safety
- sharepoint
- servicenow
- box
capability:
exposes:
- type: mcp
namespace: safety-compliance
port: 8080
tools:
- name: file-safety-report
description: File a toy safety test report across SharePoint, ServiceNow, and Box.
inputParameters:
- name: product_name
in: body
type: string
description: Product name.
- name: test_standard
in: body
type: string
description: Safety standard (ASTM-F963, EN-71, CPSIA).
- name: test_result
in: body
type: string
description: Test result (pass, fail, conditional).
- name: report_content
in: body
type: string
description: Test report content summary.
steps:
- name: store-report
type: call
call: sharepoint.upload-file
with:
site_id: product_safety
folder_path: TestReports/{{product_name}}/{{test_standard}}
content: '{{report_content}}'
- name: log-certification
type: call
call: servicenow.create-incident
with:
short_description: 'Safety cert: {{product_name}} - {{test_standard}}'
category: product_safety
description: 'Standard: {{test_standard}}. Result: {{test_result}}. Report: {{store-report.url}}.'
- name: archive-to-box
type: call
call: box.upload-file
with:
folder_id: safety_archive
file_name: '{{product_name}}_{{test_standard}}_report'
metadata: standard:{{test_standard}},result:{{test_result}},retention:10years
consumes:
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: drive-items
path: /{{site_id}}/drive/root:/{{folder_path}}
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: upload-file
method: PUT
- type: http
namespace: servicenow
baseUri: https://mattel.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: box
baseUri: https://upload.box.com/api/2.0
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: files
path: /files/content
operations:
- name: upload-file
method: POST
Pulls website traffic metrics from Google Analytics for Mattel brand websites including Barbie, Hot Wheels, and Fisher-Price.
naftiko: '0.5'
info:
label: Google Analytics Brand Website Tracker
description: Pulls website traffic metrics from Google Analytics for Mattel brand websites including Barbie, Hot Wheels, and Fisher-Price.
tags:
- marketing
- google-analytics
- web-analytics
capability:
exposes:
- type: mcp
namespace: web-analytics
port: 8080
tools:
- name: get-brand-traffic
description: Retrieve web traffic from Google Analytics for a Mattel brand website.
inputParameters:
- name: start_date
in: body
type: string
description: Start date in YYYY-MM-DD format.
- name: end_date
in: body
type: string
description: End date in YYYY-MM-DD format.
call: ga.get-report
with:
start_date: '{{start_date}}'
end_date: '{{end_date}}'
consumes:
- type: http
namespace: ga
baseUri: https://analyticsdata.googleapis.com/v1beta
authentication:
type: bearer
token: $secrets.google_analytics_token
resources:
- name: reports
path: /properties/{{property_id}}:runReport
operations:
- name: get-report
method: POST
Retrieves operational data for Mattel toys workflows.
naftiko: '0.5'
info:
label: Mattel Data Lookup 13
description: Retrieves operational data for Mattel toys workflows.
tags:
- toys
- operations
capability:
exposes:
- type: mcp
namespace: mattel-data
port: 8080
tools:
- name: get-data-13
description: Retrieves operational data for Mattel toys workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mattel-data.get-data-13
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mattel-data
baseUri: https://api.mattel.com/data/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: data-13
path: /data-13/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-13
method: GET
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
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
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 15
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- slack
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-15
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-15
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: slack.post-message
with:
channel: '#toys'
text: 'Completed workflow 15: {{process.summary}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-15
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /messages
operations:
- name: post-message
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 29
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- powerbi
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-29
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-29
with:
identifier: '{{identifier}}'
- name: refresh
type: call
call: powerbi.refresh-dataset
with:
dataset_id: workflow_29
data: '{{process.metrics}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-29
method: POST
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /datasets
operations:
- name: refresh-dataset
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 28
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- confluence
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-28
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-28
with:
identifier: '{{identifier}}'
- name: publish
type: call
call: confluence.create-page
with:
space: TOYS
title: Report 28
content: '{{process.report}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-28
method: POST
- type: http
namespace: confluence
baseUri: https://mattel.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 14
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- servicenow
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-14
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-14
with:
identifier: '{{identifier}}'
- name: create
type: call
call: servicenow.create-incident
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-14
method: POST
- type: http
namespace: servicenow
baseUri: https://mattel.service-now.com/api/now/v1
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 1
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- salesforce
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-1
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-1
with:
identifier: '{{identifier}}'
- name: create
type: call
call: salesforce.create-account
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-1
method: POST
- type: http
namespace: salesforce
baseUri: https://mattel.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /accounts
operations:
- name: create-account
method: POST
Retrieves operational data for Mattel toys workflows.
naftiko: '0.5'
info:
label: Mattel Data Lookup 12
description: Retrieves operational data for Mattel toys workflows.
tags:
- toys
- operations
capability:
exposes:
- type: mcp
namespace: mattel-data
port: 8080
tools:
- name: get-data-12
description: Retrieves operational data for Mattel toys workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mattel-data.get-data-12
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mattel-data
baseUri: https://api.mattel.com/data/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: data-12
path: /data-12/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-12
method: GET
Retrieves operational data for Mattel toys workflows.
naftiko: '0.5'
info:
label: Mattel Data Lookup 9
description: Retrieves operational data for Mattel toys workflows.
tags:
- toys
- operations
capability:
exposes:
- type: mcp
namespace: mattel-data
port: 8080
tools:
- name: get-data-9
description: Retrieves operational data for Mattel toys workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mattel-data.get-data-9
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mattel-data
baseUri: https://api.mattel.com/data/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: data-9
path: /data-9/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-9
method: GET
Manages virtual toy fair events and retailer presentations via Zoom, creating meetings and sending invitations through Microsoft Outlook.
naftiko: '0.5'
info:
label: Zoom Toy Fair Virtual Event Manager
description: Manages virtual toy fair events and retailer presentations via Zoom, creating meetings and sending invitations through Microsoft Outlook.
tags:
- events
- zoom
- microsoft-outlook
- retail
capability:
exposes:
- type: mcp
namespace: virtual-events
port: 8080
tools:
- name: create-toy-fair-event
description: Create a Zoom meeting for a virtual toy fair event and send invitations.
inputParameters:
- name: event_name
in: body
type: string
description: Event name.
- name: date_time
in: body
type: string
description: Event date/time in ISO 8601 format.
- name: duration_minutes
in: body
type: integer
description: Event duration in minutes.
- name: invitee_emails
in: body
type: string
description: Comma-separated invitee emails.
steps:
- name: create-meeting
type: call
call: zoom.create-meeting
with:
topic: '{{event_name}}'
start_time: '{{date_time}}'
duration: '{{duration_minutes}}'
- name: send-invitations
type: call
call: outlook.send-email
with:
to: '{{invitee_emails}}'
subject: 'Invitation: {{event_name}}'
body: 'You are invited to {{event_name}} on {{date_time}}. Join via Zoom: {{create-meeting.join_url}}.'
consumes:
- type: http
namespace: zoom
baseUri: https://api.zoom.us/v2
authentication:
type: bearer
token: $secrets.zoom_token
resources:
- name: meetings
path: /users/me/meetings
operations:
- name: create-meeting
method: POST
- type: http
namespace: outlook
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: send-mail
path: /me/sendMail
operations:
- name: send-email
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 5
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- powerbi
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-5
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-5
with:
identifier: '{{identifier}}'
- name: refresh
type: call
call: powerbi.refresh-dataset
with:
dataset_id: workflow_5
data: '{{process.metrics}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-5
method: POST
- type: http
namespace: powerbi
baseUri: https://api.powerbi.com/v1.0
authentication:
type: bearer
token: $secrets.powerbi_token
resources:
- name: datasets
path: /datasets
operations:
- name: refresh-dataset
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 10
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- sharepoint
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-10
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-10
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: sharepoint.upload-document
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-10
method: POST
- type: http
namespace: sharepoint
baseUri: https://mattel.sharepoint.com/_api/v2.0
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: documents
path: /documents
operations:
- name: upload-document
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 11
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- hubspot
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-11
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-11
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: hubspot.send-email
with:
to: '{{process.email}}'
subject: Workflow 11 Complete
body: '{{process.summary}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-11
method: POST
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com/crm/v3
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: contacts
path: /contacts
operations:
- name: send-email
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 4
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- confluence
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-4
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-4
with:
identifier: '{{identifier}}'
- name: publish
type: call
call: confluence.create-page
with:
space: TOYS
title: Report 4
content: '{{process.report}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-4
method: POST
- type: http
namespace: confluence
baseUri: https://mattel.atlassian.net/wiki/rest/api
authentication:
type: bearer
token: $secrets.confluence_token
resources:
- name: pages
path: /pages
operations:
- name: create-page
method: POST
Retrieves operational data for Mattel toys workflows.
naftiko: '0.5'
info:
label: Mattel Data Lookup 8
description: Retrieves operational data for Mattel toys workflows.
tags:
- toys
- operations
capability:
exposes:
- type: mcp
namespace: mattel-data
port: 8080
tools:
- name: get-data-8
description: Retrieves operational data for Mattel toys workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mattel-data.get-data-8
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mattel-data
baseUri: https://api.mattel.com/data/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: data-8
path: /data-8/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-8
method: GET
Retrieves operational data for Mattel toys workflows.
naftiko: '0.5'
info:
label: Mattel Data Lookup 15
description: Retrieves operational data for Mattel toys workflows.
tags:
- toys
- operations
capability:
exposes:
- type: mcp
namespace: mattel-data
port: 8080
tools:
- name: get-data-15
description: Retrieves operational data for Mattel toys workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mattel-data.get-data-15
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mattel-data
baseUri: https://api.mattel.com/data/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: data-15
path: /data-15/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-15
method: GET
Manages intellectual property licensing deals in Salesforce, tracking deal stages, royalty terms, and partner activations with Microsoft Teams notifications.
naftiko: '0.5'
info:
label: Licensing Deal Tracker
description: Manages intellectual property licensing deals in Salesforce, tracking deal stages, royalty terms, and partner activations with Microsoft Teams notifications.
tags:
- licensing
- intellectual-property
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: licensing-deals
port: 8080
tools:
- name: update-licensing-deal
description: Update a licensing deal stage in Salesforce and notify the IP team.
inputParameters:
- name: deal_id
in: body
type: string
description: Salesforce opportunity ID for the licensing deal.
- name: new_stage
in: body
type: string
description: New deal stage.
- name: royalty_rate
in: body
type: string
description: Agreed royalty rate percentage.
- name: notes
in: body
type: string
description: Deal notes.
steps:
- name: update-deal
type: call
call: salesforce.update-opportunity
with:
opportunity_id: '{{deal_id}}'
stage: '{{new_stage}}'
description: 'Royalty: {{royalty_rate}}%. {{notes}}'
- name: notify-ip-team
type: call
call: msteams.send-message
with:
channel_id: ip-licensing
text: 'Licensing deal {{deal_id}} moved to {{new_stage}}. Royalty rate: {{royalty_rate}}%. Notes: {{notes}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://mattel.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /sobjects/Opportunity/{{opportunity_id}}
inputParameters:
- name: opportunity_id
in: path
operations:
- name: update-opportunity
method: PATCH
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{channel_id}}/channels/General/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 6
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- jira
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-6
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-6
with:
identifier: '{{identifier}}'
- name: create-ticket
type: call
call: jira.create-issue
with:
project: TOYS
summary: Task from workflow 6
description: '{{process.details}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-6
method: POST
- type: http
namespace: jira
baseUri: https://mattel.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issues
operations:
- name: create-issue
method: POST
Sends brand newsletters via MailChimp to consumer segments from Salesforce for Mattel product updates and promotions.
naftiko: '0.5'
info:
label: MailChimp Brand Newsletter Manager
description: Sends brand newsletters via MailChimp to consumer segments from Salesforce for Mattel product updates and promotions.
tags:
- marketing
- mailchimp
- salesforce
- newsletters
capability:
exposes:
- type: mcp
namespace: brand-newsletters
port: 8080
tools:
- name: send-brand-newsletter
description: Send a brand newsletter using Salesforce segments and MailChimp.
inputParameters:
- name: brand
in: body
type: string
description: Mattel brand.
- name: segment_name
in: body
type: string
description: Salesforce consumer segment.
- name: subject_line
in: body
type: string
description: Email subject line.
steps:
- name: get-segment
type: call
call: salesforce.get-segment
with:
segment: '{{segment_name}}'
- name: send-campaign
type: call
call: mailchimp.send-campaign
with:
campaign_name: '{{brand}}_newsletter'
subject: '{{subject_line}}'
recipients: '{{get-segment.emails}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://mattel.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: contacts
path: /sobjects/Contact
operations:
- name: get-segment
method: GET
- type: http
namespace: mailchimp
baseUri: https://us1.api.mailchimp.com/3.0
authentication:
type: basic
username: anystring
password: $secrets.mailchimp_api_key
resources:
- name: campaigns
path: /campaigns
operations:
- name: send-campaign
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 13
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- salesforce
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-13
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-13
with:
identifier: '{{identifier}}'
- name: create
type: call
call: salesforce.create-account
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-13
method: POST
- type: http
namespace: salesforce
baseUri: https://mattel.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /accounts
operations:
- name: create-account
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 12
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- datadog
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-12
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-12
with:
identifier: '{{identifier}}'
- name: push
type: call
call: datadog.submit-metrics
with:
metric_name: toys.workflow_12
data: '{{process.metrics}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-12
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: bearer
token: $secrets.datadog_token
resources:
- name: metrics
path: /metrics
operations:
- name: submit-metrics
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 7
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- teams
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-7
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-7
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: teams.send-message
with:
channel_id: toys
message: 'Workflow 7 complete: {{process.summary}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-7
method: POST
- type: http
namespace: teams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.teams_token
resources:
- name: messages
path: /messages
operations:
- name: send-message
method: POST
Creates and manages product development tasks in Microsoft Planner for toy design, prototyping, and production milestones.
naftiko: '0.5'
info:
label: Microsoft Planner Product Development Tracker
description: Creates and manages product development tasks in Microsoft Planner for toy design, prototyping, and production milestones.
tags:
- product-development
- microsoft-planner
- task-management
capability:
exposes:
- type: mcp
namespace: product-dev-tasks
port: 8080
tools:
- name: create-development-task
description: Create a product development task in Microsoft Planner.
inputParameters:
- name: task_title
in: body
type: string
description: Task title.
- name: plan_id
in: body
type: string
description: Planner plan ID.
- name: due_date
in: body
type: string
description: Due date.
- name: brand
in: body
type: string
description: Mattel brand.
call: planner.create-task
with:
plan_id: '{{plan_id}}'
title: '[{{brand}}] {{task_title}}'
due_date: '{{due_date}}'
consumes:
- type: http
namespace: planner
baseUri: https://graph.microsoft.com/v1.0/planner
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: tasks
path: /tasks
operations:
- name: create-task
method: POST
Monitors Mattel application performance via Datadog, tracking API latency, error rates, and resource utilization.
naftiko: '0.5'
info:
label: Datadog Application Performance Monitor
description: Monitors Mattel application performance via Datadog, tracking API latency, error rates, and resource utilization.
tags:
- monitoring
- datadog
- application-performance
capability:
exposes:
- type: mcp
namespace: app-monitoring
port: 8080
tools:
- name: get-app-metrics
description: Retrieve application metrics from Datadog.
inputParameters:
- name: service_name
in: body
type: string
description: Service name to monitor.
- name: timeframe
in: body
type: string
description: Time range.
call: datadog.get-metrics
with:
service: '{{service_name}}'
from: '{{timeframe}}'
consumes:
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apiKey
key: $secrets.datadog_api_key
resources:
- name: metrics
path: /query
operations:
- name: get-metrics
method: GET
Retrieves a SAP sales order by order number for Mattel retail fulfillment, returning customer, products, quantities, and delivery status.
naftiko: '0.5'
info:
label: SAP Sales Order Lookup
description: Retrieves a SAP sales order by order number for Mattel retail fulfillment, returning customer, products, quantities, and delivery status.
tags:
- retail
- erp
- sap
- order-management
capability:
exposes:
- type: mcp
namespace: sales-orders
port: 8080
tools:
- name: get-sales-order
description: Look up a SAP sales order by order number.
inputParameters:
- name: order_number
in: body
type: string
description: The SAP sales order number.
call: sap.get-sales-order
with:
order_number: '{{order_number}}'
consumes:
- type: http
namespace: sap
baseUri: https://mattel-s4.sap.com/sap/opu/odata/sap/SD_SALES_ORDER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: sales-orders
path: /A_SalesOrder('{{order_number}}')
inputParameters:
- name: order_number
in: path
operations:
- name: get-sales-order
method: GET
Runs demand forecasting for Mattel products using Azure Databricks, pulling sales history from SAP BW and publishing to Tableau.
naftiko: '0.5'
info:
label: Inventory Demand Forecast Pipeline
description: Runs demand forecasting for Mattel products using Azure Databricks, pulling sales history from SAP BW and publishing to Tableau.
tags:
- supply-chain
- forecasting
- azure-databricks
- sap-bw
- tableau
capability:
exposes:
- type: mcp
namespace: demand-forecast
port: 8080
tools:
- name: run-demand-forecast
description: Execute a demand forecast for a product category.
inputParameters:
- name: brand
in: body
type: string
description: Mattel brand.
- name: category
in: body
type: string
description: Product category.
- name: horizon
in: body
type: string
description: Forecast horizon (e.g., 12-weeks).
steps:
- name: get-history
type: call
call: sap-bw.get-sales-history
with:
brand: '{{brand}}'
category: '{{category}}'
- name: run-model
type: call
call: databricks.run-job
with:
job_name: demand_forecast
parameters: brand={{brand}}&category={{category}}&horizon={{horizon}}
- name: publish-results
type: call
call: tableau.publish-datasource
with:
project_id: demand_planning
datasource_name: Forecast_{{brand}}_{{category}}
data: '{{run-model.output}}'
consumes:
- type: http
namespace: sap-bw
baseUri: https://mattel-bw.sap.com/sap/opu/odata/sap
authentication:
type: basic
username: $secrets.sap_bw_user
password: $secrets.sap_bw_password
resources:
- name: sales-history
path: /SALES_HISTORY_SRV/SalesData
operations:
- name: get-sales-history
method: GET
- type: http
namespace: databricks
baseUri: https://adb-mattel.azuredatabricks.net/api/2.1
authentication:
type: bearer
token: $secrets.databricks_token
resources:
- name: jobs
path: /jobs/run-now
operations:
- name: run-job
method: POST
- type: http
namespace: tableau
baseUri: https://mattel-tableau.online.tableau.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: datasources
path: /sites/{{site_id}}/datasources
operations:
- name: publish-datasource
method: POST
Retrieves operational data for Mattel toys workflows.
naftiko: '0.5'
info:
label: Mattel Data Lookup 14
description: Retrieves operational data for Mattel toys workflows.
tags:
- toys
- operations
capability:
exposes:
- type: mcp
namespace: mattel-data
port: 8080
tools:
- name: get-data-14
description: Retrieves operational data for Mattel toys workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mattel-data.get-data-14
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mattel-data
baseUri: https://api.mattel.com/data/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: data-14
path: /data-14/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-14
method: GET
Monitors Cloudflare CDN performance for Mattel e-commerce and brand websites, checking cache hit ratios and page load metrics.
naftiko: '0.5'
info:
label: Cloudflare E-Commerce CDN Monitor
description: Monitors Cloudflare CDN performance for Mattel e-commerce and brand websites, checking cache hit ratios and page load metrics.
tags:
- infrastructure
- cloudflare
- e-commerce
- cdn
capability:
exposes:
- type: mcp
namespace: cdn-monitor
port: 8080
tools:
- name: get-cdn-performance
description: Retrieve CDN performance metrics from Cloudflare.
inputParameters:
- name: zone_id
in: body
type: string
description: Cloudflare zone ID.
call: cloudflare.get-analytics
with:
zone_id: '{{zone_id}}'
consumes:
- type: http
namespace: cloudflare
baseUri: https://api.cloudflare.com/client/v4
authentication:
type: bearer
token: $secrets.cloudflare_token
resources:
- name: analytics
path: /zones/{{zone_id}}/analytics/dashboard
inputParameters:
- name: zone_id
in: path
operations:
- name: get-analytics
method: GET
Retrieves operational data for Mattel toys workflows.
naftiko: '0.5'
info:
label: Mattel Data Lookup 6
description: Retrieves operational data for Mattel toys workflows.
tags:
- toys
- operations
capability:
exposes:
- type: mcp
namespace: mattel-data
port: 8080
tools:
- name: get-data-6
description: Retrieves operational data for Mattel toys workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mattel-data.get-data-6
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mattel-data
baseUri: https://api.mattel.com/data/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: data-6
path: /data-6/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-6
method: GET
Manages Mattel brand marketing campaign tasks in Asana, tracking creative development, retail activations, and media placements.
naftiko: '0.5'
info:
label: Asana Brand Marketing Tracker
description: Manages Mattel brand marketing campaign tasks in Asana, tracking creative development, retail activations, and media placements.
tags:
- marketing
- asana
- project-management
capability:
exposes:
- type: mcp
namespace: marketing-tasks
port: 8080
tools:
- name: create-marketing-task
description: Create a marketing task in Asana.
inputParameters:
- name: project_id
in: body
type: string
description: Asana project ID.
- name: task_name
in: body
type: string
description: Task name.
- name: due_date
in: body
type: string
description: Due date.
call: asana.create-task
with:
project_id: '{{project_id}}'
name: '{{task_name}}'
due_on: '{{due_date}}'
consumes:
- type: http
namespace: asana
baseUri: https://app.asana.com/api/1.0
authentication:
type: bearer
token: $secrets.asana_token
resources:
- name: tasks
path: /tasks
operations:
- name: create-task
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 23
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- hubspot
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-23
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-23
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: hubspot.send-email
with:
to: '{{process.email}}'
subject: Workflow 23 Complete
body: '{{process.summary}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-23
method: POST
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com/crm/v3
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: contacts
path: /contacts
operations:
- name: send-email
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 22
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- sharepoint
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-22
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-22
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: sharepoint.upload-document
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-22
method: POST
- type: http
namespace: sharepoint
baseUri: https://mattel.sharepoint.com/_api/v2.0
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: documents
path: /documents
operations:
- name: upload-document
method: POST
Generates Microsoft Excel financial reports for Mattel brand performance, pulling data from SAP and distributing via Microsoft Outlook.
naftiko: '0.5'
info:
label: Microsoft Excel Financial Report Builder
description: Generates Microsoft Excel financial reports for Mattel brand performance, pulling data from SAP and distributing via Microsoft Outlook.
tags:
- finance
- microsoft-excel
- sap
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: financial-reports
port: 8080
tools:
- name: generate-financial-report
description: Generate a brand financial report and email to stakeholders.
inputParameters:
- name: brand
in: body
type: string
description: Mattel brand.
- name: period
in: body
type: string
description: Reporting period.
- name: recipient_email
in: body
type: string
description: Recipient email.
steps:
- name: get-data
type: call
call: sap.get-financial-data
with:
brand: '{{brand}}'
period: '{{period}}'
- name: send-report
type: call
call: outlook.send-email
with:
to: '{{recipient_email}}'
subject: 'Financial Report: {{brand}} - {{period}}'
body: '{{brand}} financial summary for {{period}}. Revenue: {{get-data.revenue}}. Gross margin: {{get-data.margin}}%. Units sold: {{get-data.units}}.'
consumes:
- type: http
namespace: sap
baseUri: https://mattel-s4.sap.com/sap/opu/odata/sap/FIN_REPORTING_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: financial
path: /BrandPerformance
inputParameters:
- name: brand
in: query
- name: period
in: query
operations:
- name: get-financial-data
method: GET
- type: http
namespace: outlook
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: send-mail
path: /me/sendMail
operations:
- name: send-email
method: POST
Retrieves operational data for Mattel toys workflows.
naftiko: '0.5'
info:
label: Mattel Data Lookup 7
description: Retrieves operational data for Mattel toys workflows.
tags:
- toys
- operations
capability:
exposes:
- type: mcp
namespace: mattel-data
port: 8080
tools:
- name: get-data-7
description: Retrieves operational data for Mattel toys workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mattel-data.get-data-7
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mattel-data
baseUri: https://api.mattel.com/data/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: data-7
path: /data-7/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-7
method: GET
Retrieves approved brand design assets from Canva for Mattel marketing teams to use in campaigns and retail materials.
naftiko: '0.5'
info:
label: Canva Brand Design Asset Manager
description: Retrieves approved brand design assets from Canva for Mattel marketing teams to use in campaigns and retail materials.
tags:
- brand-management
- canva
- design
capability:
exposes:
- type: mcp
namespace: brand-assets
port: 8080
tools:
- name: get-design-asset
description: Retrieve an approved design asset from Canva.
inputParameters:
- name: design_id
in: body
type: string
description: Canva design ID.
call: canva.get-design
with:
design_id: '{{design_id}}'
consumes:
- type: http
namespace: canva
baseUri: https://api.canva.com/rest/v1
authentication:
type: bearer
token: $secrets.canva_token
resources:
- name: designs
path: /designs/{{design_id}}
inputParameters:
- name: design_id
in: path
operations:
- name: get-design
method: GET
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
Retrieves operational data for Mattel toys workflows.
naftiko: '0.5'
info:
label: Mattel Data Lookup 5
description: Retrieves operational data for Mattel toys workflows.
tags:
- toys
- operations
capability:
exposes:
- type: mcp
namespace: mattel-data
port: 8080
tools:
- name: get-data-5
description: Retrieves operational data for Mattel toys workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mattel-data.get-data-5
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mattel-data
baseUri: https://api.mattel.com/data/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: data-5
path: /data-5/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-5
method: GET
Retrieves Google Tag Manager configurations for Mattel brand e-commerce sites to validate analytics and marketing tag implementations.
naftiko: '0.5'
info:
label: Google Tag Manager Tracking Validator
description: Retrieves Google Tag Manager configurations for Mattel brand e-commerce sites to validate analytics and marketing tag implementations.
tags:
- marketing
- google-tag-manager
- analytics
capability:
exposes:
- type: mcp
namespace: gtm-validation
port: 8080
tools:
- name: validate-tags
description: Retrieve GTM container tags for validation.
inputParameters:
- name: container_id
in: body
type: string
description: GTM container ID.
call: gtm.get-tags
with:
container_id: '{{container_id}}'
consumes:
- type: http
namespace: gtm
baseUri: https://www.googleapis.com/tagmanager/v2
authentication:
type: bearer
token: $secrets.google_gtm_token
resources:
- name: tags
path: /accounts/{{account_id}}/containers/{{container_id}}/workspaces/default/tags
inputParameters:
- name: container_id
in: path
operations:
- name: get-tags
method: GET
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 9
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- box
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-9
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-9
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: box.upload-file
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-9
method: POST
- type: http
namespace: box
baseUri: https://api.box.com/2.0
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: files
path: /files
operations:
- name: upload-file
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 34
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- sharepoint
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-34
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-34
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: sharepoint.upload-document
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-34
method: POST
- type: http
namespace: sharepoint
baseUri: https://mattel.sharepoint.com/_api/v2.0
authentication:
type: bearer
token: $secrets.sharepoint_token
resources:
- name: documents
path: /documents
operations:
- name: upload-document
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 20
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- tableau
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-20
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-20
with:
identifier: '{{identifier}}'
- name: refresh
type: call
call: tableau.publish-datasource
with:
dataset_id: workflow_20
data: '{{process.metrics}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-20
method: POST
- type: http
namespace: tableau
baseUri: https://mattel-tableau.online.tableau.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: datasources
path: /datasources
operations:
- name: publish-datasource
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 21
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- box
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-21
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-21
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: box.upload-file
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-21
method: POST
- type: http
namespace: box
baseUri: https://api.box.com/2.0
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: files
path: /files
operations:
- name: upload-file
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 35
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- hubspot
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-35
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-35
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: hubspot.send-email
with:
to: '{{process.email}}'
subject: Workflow 35 Complete
body: '{{process.summary}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-35
method: POST
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com/crm/v3
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: contacts
path: /contacts
operations:
- name: send-email
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 8
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- tableau
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-8
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-8
with:
identifier: '{{identifier}}'
- name: refresh
type: call
call: tableau.publish-datasource
with:
dataset_id: workflow_8
data: '{{process.metrics}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-8
method: POST
- type: http
namespace: tableau
baseUri: https://mattel-tableau.online.tableau.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: datasources
path: /datasources
operations:
- name: publish-datasource
method: POST
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
Manages 3D design asset versioning in Perforce for Mattel toy designers, tracking iterations and approvals.
naftiko: '0.5'
info:
label: Perforce Design Asset Version Control
description: Manages 3D design asset versioning in Perforce for Mattel toy designers, tracking iterations and approvals.
tags:
- product-design
- perforce
- version-control
- 3d-design
capability:
exposes:
- type: mcp
namespace: design-versioning
port: 8080
tools:
- name: get-asset-history
description: Retrieve version history for a design asset in Perforce.
inputParameters:
- name: depot_path
in: body
type: string
description: Perforce depot path of the design asset.
call: perforce.get-filelog
with:
path: '{{depot_path}}'
consumes:
- type: http
namespace: perforce
baseUri: https://mattel-perforce.com/api/v1
authentication:
type: bearer
token: $secrets.perforce_token
resources:
- name: files
path: /files/{{path}}/history
inputParameters:
- name: path
in: path
operations:
- name: get-filelog
method: GET
Retrieves operational data for Mattel toys workflows.
naftiko: '0.5'
info:
label: Mattel Data Lookup 4
description: Retrieves operational data for Mattel toys workflows.
tags:
- toys
- operations
capability:
exposes:
- type: mcp
namespace: mattel-data
port: 8080
tools:
- name: get-data-4
description: Retrieves operational data for Mattel toys workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mattel-data.get-data-4
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mattel-data
baseUri: https://api.mattel.com/data/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: data-4
path: /data-4/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-4
method: GET
Tracks vendor quality audits by creating ServiceNow audit records, uploading inspection reports to SharePoint, and notifying procurement via Slack.
naftiko: '0.5'
info:
label: Vendor Quality Audit Pipeline
description: Tracks vendor quality audits by creating ServiceNow audit records, uploading inspection reports to SharePoint, and notifying procurement via Slack.
tags:
- manufacturing
- vendor-management
- servicenow
- sharepoint
- slack
capability:
exposes:
- type: mcp
namespace: vendor-audits
port: 8080
tools:
- name: log-vendor-audit
description: Log a vendor quality audit across ServiceNow, SharePoint, and Slack.
inputParameters:
- name: vendor_name
in: body
type: string
description: Vendor name.
- name: audit_type
in: body
type: string
description: Audit type (safety, quality, environmental, social-compliance).
- name: score
in: body
type: string
description: Audit score.
- name: findings
in: body
type: string
description: Audit findings summary.
steps:
- name: create-record
type: call
call: servicenow.create-incident
with:
short_description: 'Vendor audit: {{vendor_name}} - {{audit_type}}'
category: vendor_audit
description: 'Score: {{score}}. Findings: {{findings}}.'
- name: store-report
type: call
call: sharepoint.upload-file
with:
site_id: vendor_management
folder_path: Audits/{{vendor_name}}/{{audit_type}}
content: 'Vendor: {{vendor_name}}. Type: {{audit_type}}. Score: {{score}}. Findings: {{findings}}.'
- name: notify-procurement
type: call
call: slack.post-message
with:
channel: vendor-audits
text: 'Vendor audit completed: {{vendor_name}} ({{audit_type}}). Score: {{score}}. ServiceNow: {{create-record.number}}.'
consumes:
- type: http
namespace: servicenow
baseUri: https://mattel.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: drive-items
path: /{{site_id}}/drive/root:/{{folder_path}}
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: upload-file
method: PUT
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Creates and manages product knowledge articles in Confluence for Mattel retail partners, documenting product features, assembly instructions, and FAQs.
naftiko: '0.5'
info:
label: Confluence Product Knowledge Base
description: Creates and manages product knowledge articles in Confluence for Mattel retail partners, documenting product features, assembly instructions, and FAQs.
tags:
- knowledge-management
- confluence
- retail-enablement
capability:
exposes:
- type: mcp
namespace: product-knowledge
port: 8080
tools:
- name: create-product-article
description: Create a product knowledge article in Confluence.
inputParameters:
- name: product_name
in: body
type: string
description: Product name.
- name: brand
in: body
type: string
description: Mattel brand.
- name: content
in: body
type: string
description: Article content.
call: confluence.create-page
with:
space_key: PRODUCTS
title: '{{brand}} - {{product_name}}'
content: '{{content}}'
consumes:
- type: http
namespace: confluence
baseUri: https://mattel.atlassian.net/wiki/rest/api
authentication:
type: basic
username: $secrets.confluence_user
password: $secrets.confluence_token
resources:
- name: pages
path: /content
operations:
- name: create-page
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 19
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- teams
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-19
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-19
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: teams.send-message
with:
channel_id: toys
message: 'Workflow 19 complete: {{process.summary}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-19
method: POST
- type: http
namespace: teams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.teams_token
resources:
- name: messages
path: /messages
operations:
- name: send-message
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 31
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- teams
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-31
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-31
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: teams.send-message
with:
channel_id: toys
message: 'Workflow 31 complete: {{process.summary}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-31
method: POST
- type: http
namespace: teams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.teams_token
resources:
- name: messages
path: /messages
operations:
- name: send-message
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 25
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- salesforce
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-25
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-25
with:
identifier: '{{identifier}}'
- name: create
type: call
call: salesforce.create-account
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-25
method: POST
- type: http
namespace: salesforce
baseUri: https://mattel.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /accounts
operations:
- name: create-account
method: POST
Manages product design reviews by uploading 3D models and concepts to SharePoint, creating Jira review tickets, and notifying the design team via Slack.
naftiko: '0.5'
info:
label: Product Design Review Pipeline
description: Manages product design reviews by uploading 3D models and concepts to SharePoint, creating Jira review tickets, and notifying the design team via Slack.
tags:
- product-design
- design-review
- sharepoint
- jira
- slack
capability:
exposes:
- type: mcp
namespace: design-review
port: 8080
tools:
- name: submit-design-review
description: Submit a toy design for team review across SharePoint, Jira, and Slack.
inputParameters:
- name: product_name
in: body
type: string
description: Product name.
- name: brand
in: body
type: string
description: Mattel brand.
- name: designer_name
in: body
type: string
description: Designer name.
- name: design_description
in: body
type: string
description: Design description and key features.
steps:
- name: upload-design
type: call
call: sharepoint.upload-file
with:
site_id: product_design
folder_path: Designs/{{brand}}/{{product_name}}
content: '{{design_description}}'
- name: create-review-ticket
type: call
call: jira.create-issue
with:
project: DESIGN
summary: 'Design review: {{product_name}} ({{brand}})'
description: 'Designer: {{designer_name}}. {{design_description}}. Files: {{upload-design.url}}'
issue_type: Task
- name: notify-team
type: call
call: slack.post-message
with:
channel: design-reviews-{{brand}}
text: 'New design review: {{product_name}} by {{designer_name}}. Jira: {{create-review-ticket.key}}. Files: {{upload-design.url}}.'
consumes:
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: drive-items
path: /{{site_id}}/drive/root:/{{folder_path}}
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: upload-file
method: PUT
- type: http
namespace: jira
baseUri: https://mattel.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 24
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- datadog
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-24
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-24
with:
identifier: '{{identifier}}'
- name: push
type: call
call: datadog.submit-metrics
with:
metric_name: toys.workflow_24
data: '{{process.metrics}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-24
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v2
authentication:
type: bearer
token: $secrets.datadog_token
resources:
- name: metrics
path: /metrics
operations:
- name: submit-metrics
method: POST
Retrieves a SAP Concur expense report for Mattel associates by report ID, returning line items, approvals, and reimbursement status.
naftiko: '0.5'
info:
label: SAP Concur Expense Report Lookup
description: Retrieves a SAP Concur expense report for Mattel associates by report ID, returning line items, approvals, and reimbursement status.
tags:
- travel
- expenses
- sap-concur
capability:
exposes:
- type: mcp
namespace: expense-reports
port: 8080
tools:
- name: get-expense-report
description: Retrieve a Concur expense report by ID.
inputParameters:
- name: report_id
in: body
type: string
description: Concur expense report ID.
call: concur.get-report
with:
report_id: '{{report_id}}'
consumes:
- type: http
namespace: concur
baseUri: https://us.api.concursolutions.com/api/v3.0
authentication:
type: bearer
token: $secrets.concur_token
resources:
- name: expense-reports
path: /expense/reports/{{report_id}}
inputParameters:
- name: report_id
in: path
operations:
- name: get-report
method: GET
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 30
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- jira
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-30
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-30
with:
identifier: '{{identifier}}'
- name: create-ticket
type: call
call: jira.create-issue
with:
project: TOYS
summary: Task from workflow 30
description: '{{process.details}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-30
method: POST
- type: http
namespace: jira
baseUri: https://mattel.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issues
operations:
- name: create-issue
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 18
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- jira
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-18
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-18
with:
identifier: '{{identifier}}'
- name: create-ticket
type: call
call: jira.create-issue
with:
project: TOYS
summary: Task from workflow 18
description: '{{process.details}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-18
method: POST
- type: http
namespace: jira
baseUri: https://mattel.atlassian.net/rest/api/3
authentication:
type: bearer
token: $secrets.jira_token
resources:
- name: issues
path: /issues
operations:
- name: create-issue
method: POST
Retrieves operational data for Mattel toys workflows.
naftiko: '0.5'
info:
label: Mattel Data Lookup 1
description: Retrieves operational data for Mattel toys workflows.
tags:
- toys
- operations
capability:
exposes:
- type: mcp
namespace: mattel-data
port: 8080
tools:
- name: get-data-1
description: Retrieves operational data for Mattel toys workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mattel-data.get-data-1
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mattel-data
baseUri: https://api.mattel.com/data/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: data-1
path: /data-1/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-1
method: GET
Monitors Azure DevOps build pipelines for Mattel digital platforms and e-commerce applications.
naftiko: '0.5'
info:
label: Azure DevOps CI Pipeline Monitor
description: Monitors Azure DevOps build pipelines for Mattel digital platforms and e-commerce applications.
tags:
- devops
- azure-devops
- ci-cd
capability:
exposes:
- type: mcp
namespace: devops-builds
port: 8080
tools:
- name: get-build-status
description: Check latest build status for an Azure DevOps pipeline.
inputParameters:
- name: project_name
in: body
type: string
description: Azure DevOps project name.
- name: pipeline_id
in: body
type: string
description: Pipeline definition ID.
call: azuredevops.get-latest-build
with:
project: '{{project_name}}'
definition_id: '{{pipeline_id}}'
consumes:
- type: http
namespace: azuredevops
baseUri: https://dev.azure.com/mattel
authentication:
type: basic
username: ''
password: $secrets.azuredevops_pat
resources:
- name: builds
path: /{{project}}/_apis/build/builds?definitions={{definition_id}}&$top=1&api-version=7.0
inputParameters:
- name: project
in: path
- name: definition_id
in: query
operations:
- name: get-latest-build
method: GET
Retrieves operational data for Mattel toys workflows.
naftiko: '0.5'
info:
label: Mattel Data Lookup 3
description: Retrieves operational data for Mattel toys workflows.
tags:
- toys
- operations
capability:
exposes:
- type: mcp
namespace: mattel-data
port: 8080
tools:
- name: get-data-3
description: Retrieves operational data for Mattel toys workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mattel-data.get-data-3
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mattel-data
baseUri: https://api.mattel.com/data/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: data-3
path: /data-3/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-3
method: GET
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 26
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- servicenow
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-26
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-26
with:
identifier: '{{identifier}}'
- name: create
type: call
call: servicenow.create-incident
with:
data: '{{process.result}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-26
method: POST
- type: http
namespace: servicenow
baseUri: https://mattel.service-now.com/api/now/v1
authentication:
type: bearer
token: $secrets.servicenow_token
resources:
- name: incidents
path: /incidents
operations:
- name: create-incident
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 32
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- tableau
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-32
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-32
with:
identifier: '{{identifier}}'
- name: refresh
type: call
call: tableau.publish-datasource
with:
dataset_id: workflow_32
data: '{{process.metrics}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-32
method: POST
- type: http
namespace: tableau
baseUri: https://mattel-tableau.online.tableau.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: datasources
path: /datasources
operations:
- name: publish-datasource
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 33
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- box
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-33
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-33
with:
identifier: '{{identifier}}'
- name: upload
type: call
call: box.upload-file
with:
content: '{{process.document}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-33
method: POST
- type: http
namespace: box
baseUri: https://api.box.com/2.0
authentication:
type: bearer
token: $secrets.box_token
resources:
- name: files
path: /files
operations:
- name: upload-file
method: POST
Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
naftiko: '0.5'
info:
label: Mattel Workflow 27
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
tags:
- toys
- operations
- slack
capability:
exposes:
- type: mcp
namespace: toys
port: 8080
tools:
- name: mattel-workflow-27
description: Orchestrates toys operations including data retrieval, processing, and automated notification for Mattel.
inputParameters:
- name: identifier
in: body
type: string
description: Primary identifier for this workflow
steps:
- name: process
type: call
call: mattel-ops.run-workflow-27
with:
identifier: '{{identifier}}'
- name: notify
type: call
call: slack.post-message
with:
channel: '#toys'
text: 'Completed workflow 27: {{process.summary}}'
consumes:
- type: http
namespace: mattel-ops
baseUri: https://api.mattel.com/operations/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: operations
path: /operations
operations:
- name: run-workflow-27
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /messages
operations:
- name: post-message
method: POST
Monitors GitHub Actions CI workflows for Mattel digital repositories, alerting developers via Slack on build failures.
naftiko: '0.5'
info:
label: GitHub Actions CI Pipeline Monitor
description: Monitors GitHub Actions CI workflows for Mattel digital repositories, alerting developers via Slack on build failures.
tags:
- devops
- github-actions
- slack
- ci-cd
capability:
exposes:
- type: mcp
namespace: ci-monitor
port: 8080
tools:
- name: monitor-ci
description: Check GitHub Actions workflow status and alert on failures.
inputParameters:
- name: repo_name
in: body
type: string
description: GitHub repository (org/repo).
- name: workflow_name
in: body
type: string
description: Workflow file name.
steps:
- name: get-runs
type: call
call: github.get-workflow-runs
with:
repo: '{{repo_name}}'
workflow: '{{workflow_name}}'
- name: notify-failure
type: call
call: slack.post-message
with:
channel: ci-alerts
text: CI {{get-runs.latest_run.conclusion}} for {{repo_name}}/{{workflow_name}}.
consumes:
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: workflow-runs
path: /repos/{{repo}}/actions/workflows/{{workflow}}/runs
inputParameters:
- name: repo
in: path
- name: workflow
in: path
operations:
- name: get-workflow-runs
method: GET
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Manages consumer marketing campaigns in HubSpot for Mattel brands, tracking engagement and conversion metrics.
naftiko: '0.5'
info:
label: HubSpot Consumer Marketing Campaign
description: Manages consumer marketing campaigns in HubSpot for Mattel brands, tracking engagement and conversion metrics.
tags:
- marketing
- hubspot
- campaigns
capability:
exposes:
- type: mcp
namespace: marketing-campaigns
port: 8080
tools:
- name: get-campaign-metrics
description: Retrieve HubSpot campaign performance metrics.
inputParameters:
- name: campaign_id
in: body
type: string
description: HubSpot campaign ID.
call: hubspot.get-campaign
with:
campaign_id: '{{campaign_id}}'
consumes:
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: campaigns
path: /marketing/v3/campaigns/{{campaign_id}}
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-campaign
method: GET
Retrieves operational data for Mattel toys workflows.
naftiko: '0.5'
info:
label: Mattel Data Lookup 2
description: Retrieves operational data for Mattel toys workflows.
tags:
- toys
- operations
capability:
exposes:
- type: mcp
namespace: mattel-data
port: 8080
tools:
- name: get-data-2
description: Retrieves operational data for Mattel toys workflows.
inputParameters:
- name: identifier
in: body
type: string
description: Resource identifier
call: mattel-data.get-data-2
with:
identifier: '{{identifier}}'
consumes:
- type: http
namespace: mattel-data
baseUri: https://api.mattel.com/data/v1
authentication:
type: bearer
token: $secrets.mattel_api_token
resources:
- name: data-2
path: /data-2/{{identifier}}
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-2
method: GET
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
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
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
Runs Informatica data quality jobs on Mattel product master data to ensure consistency across global retail and e-commerce channels.
naftiko: '0.5'
info:
label: Informatica Product Master Data Pipeline
description: Runs Informatica data quality jobs on Mattel product master data to ensure consistency across global retail and e-commerce channels.
tags:
- data-quality
- informatica
- master-data
capability:
exposes:
- type: mcp
namespace: data-quality
port: 8080
tools:
- name: run-mdm-pipeline
description: Execute Informatica master data management pipeline.
inputParameters:
- name: job_name
in: body
type: string
description: Informatica job name.
- name: data_domain
in: body
type: string
description: Data domain (product, vendor, customer).
call: informatica.run-job
with:
job_name: '{{job_name}}'
domain: '{{data_domain}}'
consumes:
- type: http
namespace: informatica
baseUri: https://mattel-iics.informatica.com/saas/api/v2
authentication:
type: bearer
token: $secrets.informatica_token
resources:
- name: jobs
path: /job
operations:
- name: run-job
method: POST
Uploads Mattel brand video content to YouTube channels for Barbie, Hot Wheels, and other brands with metadata and scheduling.
naftiko: '0.5'
info:
label: YouTube Brand Content Uploader
description: Uploads Mattel brand video content to YouTube channels for Barbie, Hot Wheels, and other brands with metadata and scheduling.
tags:
- marketing
- youtube
- video
- brand-content
capability:
exposes:
- type: mcp
namespace: youtube-content
port: 8080
tools:
- name: upload-brand-video
description: Upload a video to a Mattel brand YouTube channel.
inputParameters:
- name: video_url
in: body
type: string
description: URL of the video file.
- name: title
in: body
type: string
description: Video title.
- name: description
in: body
type: string
description: Video description.
- name: brand
in: body
type: string
description: Mattel brand name.
call: youtube.upload-video
with:
video_url: '{{video_url}}'
title: '{{title}}'
description: '{{description}}'
channel: '{{brand}}'
consumes:
- type: http
namespace: youtube
baseUri: https://www.googleapis.com/upload/youtube/v3
authentication:
type: bearer
token: $secrets.youtube_token
resources:
- name: videos
path: /videos?part=snippet,status
operations:
- name: upload-video
method: POST
Triggers Microsoft Power Automate flows for automated order routing based on retailer priority, product availability, and warehouse proximity.
naftiko: '0.5'
info:
label: Microsoft Power Automate Order Routing
description: Triggers Microsoft Power Automate flows for automated order routing based on retailer priority, product availability, and warehouse proximity.
tags:
- automation
- microsoft-power-automate
- order-management
capability:
exposes:
- type: mcp
namespace: order-routing
port: 8080
tools:
- name: trigger-order-routing
description: Trigger a Power Automate flow for order routing.
inputParameters:
- name: order_id
in: body
type: string
description: Order ID.
- name: retailer_id
in: body
type: string
description: Retailer identifier.
call: powerautomate.trigger-flow
with:
order_id: '{{order_id}}'
retailer: '{{retailer_id}}'
consumes:
- type: http
namespace: powerautomate
baseUri: https://prod-123.westus.logic.azure.com/workflows
authentication:
type: apiKey
key: $secrets.power_automate_key
resources:
- name: flows
path: /order-routing/triggers/manual/paths/invoke
operations:
- name: trigger-flow
method: POST
Coordinates a new toy product launch by creating Salesforce opportunities for retail partners, uploading product assets to SharePoint, publishing social media teasers, and notifying the brand team via Slack.
naftiko: '0.5'
info:
label: New Toy Launch Orchestrator
description: Coordinates a new toy product launch by creating Salesforce opportunities for retail partners, uploading product assets to SharePoint, publishing social media teasers, and notifying the brand team via Slack.
tags:
- product-launch
- marketing
- salesforce
- sharepoint
- slack
- social-media
capability:
exposes:
- type: mcp
namespace: toy-launch
port: 8080
tools:
- name: launch-toy-product
description: Orchestrate a new toy product launch across CRM, content, and notification channels.
inputParameters:
- name: product_name
in: body
type: string
description: Name of the new toy product.
- name: brand
in: body
type: string
description: Mattel brand (Barbie, Hot Wheels, Fisher-Price, American Girl, UNO).
- name: launch_date
in: body
type: string
description: Launch date in YYYY-MM-DD format.
- name: target_age_group
in: body
type: string
description: Target age group.
steps:
- name: create-opportunity
type: call
call: salesforce.create-opportunity
with:
name: 'Launch: {{product_name}} ({{brand}})'
stage: Launch Preparation
close_date: '{{launch_date}}'
- name: create-asset-folder
type: call
call: sharepoint.create-folder
with:
site_id: product_assets
folder_path: Launches/{{brand}}/{{product_name}}
- name: notify-brand-team
type: call
call: slack.post-message
with:
channel: brand-{{brand}}-launches
text: 'New product launch: {{product_name}} ({{brand}}). Target age: {{target_age_group}}. Launch date: {{launch_date}}. SFDC: {{create-opportunity.id}}. Assets: {{create-asset-folder.url}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://mattel.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /sobjects/Opportunity
operations:
- name: create-opportunity
method: POST
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: drive-items
path: /{{site_id}}/drive/root:/{{folder_path}}
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: create-folder
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Posts open Mattel positions to LinkedIn from Workday requisitions for creative, engineering, and manufacturing roles.
naftiko: '0.5'
info:
label: Workday Recruiting Pipeline
description: Posts open Mattel positions to LinkedIn from Workday requisitions for creative, engineering, and manufacturing roles.
tags:
- recruiting
- workday
- linkedin
capability:
exposes:
- type: mcp
namespace: recruiting
port: 8080
tools:
- name: publish-job
description: Pull a Workday requisition and publish to LinkedIn.
inputParameters:
- name: requisition_id
in: body
type: string
description: Workday job requisition ID.
steps:
- name: get-req
type: call
call: workday.get-requisition
with:
req_id: '{{requisition_id}}'
- name: post-job
type: call
call: linkedin.create-job-post
with:
title: '{{get-req.title}}'
description: '{{get-req.description}}'
location: '{{get-req.location}}'
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: requisitions
path: /recruiting/requisitions/{{req_id}}
inputParameters:
- name: req_id
in: path
operations:
- name: get-requisition
method: GET
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: job-posts
path: /jobPosts
operations:
- name: create-job-post
method: POST
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
Launches a new Marketo email campaign for a product line, updates the associated Salesforce campaign record with launch details, and posts confirmation to the marketing Teams channel.
naftiko: '0.5'
info:
label: Marketo Campaign Launch Orchestrator
description: Launches a new Marketo email campaign for a product line, updates the associated Salesforce campaign record with launch details, and posts confirmation to the marketing Teams channel.
tags:
- marketing
- marketo
- salesforce
- campaign-management
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: campaign-ops
port: 8080
tools:
- name: launch-marketo-campaign
description: Given a Marketo program ID, Salesforce campaign ID, and launch datetime, activate the Marketo program, update the Salesforce campaign to Active, and notify the marketing team in Teams. Use for product launch and promotional email campaigns.
inputParameters:
- name: marketo_program_id
in: body
type: string
description: The Marketo program ID to activate.
- name: salesforce_campaign_id
in: body
type: string
description: The Salesforce campaign ID to sync launch status.
- name: launch_datetime
in: body
type: string
description: The scheduled launch datetime in ISO 8601 format.
steps:
- name: activate-program
type: call
call: marketo.activate-program
with:
program_id: '{{marketo_program_id}}'
- name: update-sf-campaign
type: call
call: salesforce-camp.update-campaign
with:
campaign_id: '{{salesforce_campaign_id}}'
status: Active
start_date: '{{launch_datetime}}'
- name: notify-marketing
type: call
call: msteams-camp.post-message
with:
channel_id: $secrets.marketing_channel_id
text: 'Campaign launched: Marketo program {{marketo_program_id}} activated for {{launch_datetime}}. Salesforce campaign {{salesforce_campaign_id}} updated.'
consumes:
- type: http
namespace: marketo
baseUri: https://nike.mktorest.com/rest/v1
authentication:
type: bearer
token: $secrets.marketo_token
resources:
- name: programs
path: /programs/{{program_id}}/approve.json
inputParameters:
- name: program_id
in: path
operations:
- name: activate-program
method: POST
- type: http
namespace: salesforce-camp
baseUri: https://nike.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: campaigns
path: /sobjects/Campaign/{{campaign_id}}
inputParameters:
- name: campaign_id
in: path
operations:
- name: update-campaign
method: PATCH
- type: http
namespace: msteams-camp
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Monitors Axway API gateway traffic patterns in Snowflake, flags anomalies, creates ServiceNow incidents, and alerts the API platform team via Microsoft Teams.
naftiko: '0.5'
info:
label: Axway API Gateway Traffic Monitor
description: Monitors Axway API gateway traffic patterns in Snowflake, flags anomalies, creates ServiceNow incidents, and alerts the API platform team via Microsoft Teams.
tags:
- api-management
- axway
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: axway_api_gateway_tr
port: 8080
tools:
- name: axway-api
description: Given an execution date, run the axway api gateway traffic monitor process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.AXWAY_API_GATEWAY_TRAFFIC_MONITOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.AXWAY_API_GATEWAY_TRAFFIC_MONI_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: api-management
short_description: Axway API Gateway Traffic Monitor processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_axway_api_gateway_tr_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://nike.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors Ollama-powered internal AI assistant usage and performance in Snowflake, tracks adoption trends, and distributes reports to IT leadership via Microsoft Teams.
naftiko: '0.5'
info:
label: Ollama Internal AI Assistant Monitor
description: Monitors Ollama-powered internal AI assistant usage and performance in Snowflake, tracks adoption trends, and distributes reports to IT leadership via Microsoft Teams.
tags:
- ai
- ollama
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ollama_internal_ai_a
port: 8080
tools:
- name: ollama-internal
description: Given an execution date, run the ollama internal ai assistant monitor process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.OLLAMA_INTERNAL_AI_ASSISTANT_MONITOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.OLLAMA_INTERNAL_AI_ASSISTANT_M_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_ollama_internal_ai_a_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors Nike Direct inventory levels in Snowflake, triggers replenishment orders in SAP when below thresholds, and notifies the planning team via Microsoft Teams.
naftiko: '0.5'
info:
label: Nike Direct Inventory Replenishment Trigger
description: Monitors Nike Direct inventory levels in Snowflake, triggers replenishment orders in SAP when below thresholds, and notifies the planning team via Microsoft Teams.
tags:
- supply-chain
- sap
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: nike_direct_inventor
port: 8080
tools:
- name: nike-direct
description: Given an execution date, run the nike direct inventory replenishment trigger process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.NIKE_DIRECT_INVENTORY_REPLENISHMENT_TRIG LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.NIKE_DIRECT_INVENTORY_REPLENIS_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_nike_direct_inventor_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves a user session from DynamoDB for the Nike digital platform.
naftiko: '0.5'
info:
label: DynamoDB Session Lookup
description: Retrieves a user session from DynamoDB for the Nike digital platform.
tags:
- data
- dynamodb
- e-commerce
capability:
exposes:
- type: mcp
namespace: session-mgmt
port: 8080
tools:
- name: get-session
description: Given a session ID, retrieve session data from DynamoDB. Use for customer experience investigations.
inputParameters:
- name: session_id
in: body
type: string
description: The session ID.
call: dynamodb.get-item
with:
session_id: '{{session_id}}'
outputParameters:
- name: user_id
type: string
mapping: $.Item.user_id.S
- name: platform
type: string
mapping: $.Item.platform.S
consumes:
- type: http
namespace: dynamodb
baseUri: https://dynamodb.us-east-1.amazonaws.com
authentication:
type: apikey
key: X-Amz-Security-Token
value: $secrets.aws_session_token
placement: header
resources:
- name: items
path: /
operations:
- name: get-item
method: POST
Validates Figma design files against Nike brand guidelines in Snowflake, flags non-compliant assets, creates Jira remediation tasks, and notifies the brand team via Microsoft Teams.
naftiko: '0.5'
info:
label: Figma Brand Asset Compliance Checker
description: Validates Figma design files against Nike brand guidelines in Snowflake, flags non-compliant assets, creates Jira remediation tasks, and notifies the brand team via Microsoft Teams.
tags:
- design
- figma
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: figma_brand_asset_co
port: 8080
tools:
- name: figma-brand
description: Given an execution date, run the figma brand asset compliance checker process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.FIGMA_BRAND_ASSET_COMPLIANCE_CHECKER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.FIGMA_BRAND_ASSET_COMPLIANCE_C_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: Figma Brand Asset Compliance Checker - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_figma_brand_asset_co_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Initiates SailPoint access review campaigns, logs certification status in Snowflake, creates ServiceNow follow-up tasks, and notifies the IAM team via Microsoft Teams.
naftiko: '0.5'
info:
label: SailPoint Access Review Campaign
description: Initiates SailPoint access review campaigns, logs certification status in Snowflake, creates ServiceNow follow-up tasks, and notifies the IAM team via Microsoft Teams.
tags:
- security
- sailpoint
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sailpoint_access_rev
port: 8080
tools:
- name: sailpoint-access
description: Given an execution date, run the sailpoint access review campaign process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAILPOINT_ACCESS_REVIEW_CAMPAIGN LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAILPOINT_ACCESS_REVIEW_CAMPAI_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: security
short_description: SailPoint Access Review Campaign processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sailpoint_access_rev_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://nike.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Reviews SAP Concur travel expenses for athlete-related travel compliance, logs in Snowflake, creates ServiceNow exceptions, and notifies the finance team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Concur Athlete Travel Compliance
description: Reviews SAP Concur travel expenses for athlete-related travel compliance, logs in Snowflake, creates ServiceNow exceptions, and notifies the finance team via Microsoft Teams.
tags:
- finance
- sap
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_concur_athlete_t
port: 8080
tools:
- name: sap-concur
description: Given an execution date, run the sap concur athlete travel compliance process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_CONCUR_ATHLETE_TRAVEL_COMPLIANCE LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_CONCUR_ATHLETE_TRAVEL_COMP_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: finance
short_description: SAP Concur Athlete Travel Compliance processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_concur_athlete_t_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://nike.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a new hire is created in Workday, opens a ServiceNow onboarding ticket, provisions a Microsoft 365 account, assigns Okta application groups, and sends a Teams welcome message.
naftiko: '0.5'
info:
label: Workday New Hire Onboarding Orchestrator
description: When a new hire is created in Workday, opens a ServiceNow onboarding ticket, provisions a Microsoft 365 account, assigns Okta application groups, and sends a Teams welcome message.
tags:
- hr
- onboarding
- workday
- servicenow
- microsoft-365
- okta
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-onboarding
port: 8080
tools:
- name: trigger-onboarding
description: 'Given a Workday employee ID and start date, orchestrate the full onboarding sequence: open a ServiceNow ticket, provision Microsoft 365, assign Okta groups, and send a Teams welcome. Invoke when a new hire is created in Workday.'
inputParameters:
- name: employee_id
in: body
type: string
description: The Workday worker ID for the new hire.
- name: start_date
in: body
type: string
description: The employee's first day in YYYY-MM-DD format.
- name: job_family
in: body
type: string
description: The job family or function (e.g., Engineering, Retail, Marketing) to determine Okta group assignment.
steps:
- name: get-employee
type: call
call: workday.get-worker
with:
worker_id: '{{employee_id}}'
- name: open-snow-ticket
type: call
call: servicenow.create-incident
with:
short_description: 'New hire onboarding: {{get-employee.full_name}}'
category: hr_onboarding
assigned_to: IT_Onboarding
- name: provision-m365
type: call
call: msgraph.create-user
with:
display_name: '{{get-employee.full_name}}'
mail_nickname: '{{get-employee.user_principal_name}}'
department: '{{get-employee.department}}'
- name: assign-okta-groups
type: call
call: okta.assign-user-to-group
with:
login: '{{get-employee.work_email}}'
job_family: '{{job_family}}'
- name: send-welcome
type: call
call: msteams.send-message
with:
recipient_upn: '{{get-employee.work_email}}'
text: 'Welcome to Nike, {{get-employee.first_name}}! Your onboarding ticket: {{open-snow-ticket.number}}'
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers
path: /nike/workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: servicenow
baseUri: https://nike.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msgraph
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: users
path: /users
operations:
- name: create-user
method: POST
- type: http
namespace: okta
baseUri: https://nike.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: user-groups
path: /users
operations:
- name: assign-user-to-group
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: chats
path: /chats
operations:
- name: send-message
method: POST
Lists all active Okta users assigned to a specified application group and cross-references with Workday to identify stale or orphaned accounts for quarterly access reviews.
naftiko: '0.5'
info:
label: Okta Access Review and Compliance Audit
description: Lists all active Okta users assigned to a specified application group and cross-references with Workday to identify stale or orphaned accounts for quarterly access reviews.
tags:
- identity
- security
- okta
- workday
- access-review
- compliance
capability:
exposes:
- type: mcp
namespace: identity-review
port: 8080
tools:
- name: run-access-review
description: Given an Okta group ID and app name, list all group members and compare against active Workday workers to identify orphaned accounts. Generates a compliance report for quarterly reviews.
inputParameters:
- name: group_id
in: body
type: string
description: The Okta group ID to audit.
- name: app_name
in: body
type: string
description: Application name for audit context.
steps:
- name: get-group-members
type: call
call: okta-audit.get-group-members
with:
group_id: '{{group_id}}'
- name: get-active-workers
type: call
call: workday-audit.list-workers
consumes:
- type: http
namespace: okta-audit
baseUri: https://nike.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: group-members
path: /groups/{{group_id}}/users
inputParameters:
- name: group_id
in: path
operations:
- name: get-group-members
method: GET
- type: http
namespace: workday-audit
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: active-workers
path: /nike/workers
operations:
- name: list-workers
method: GET
Monitors AWS Lambda function errors in Snowflake, creates ServiceNow incidents for recurring failures, and alerts the cloud engineering team via Microsoft Teams.
naftiko: '0.5'
info:
label: AWS Lambda Function Error Handler
description: Monitors AWS Lambda function errors in Snowflake, creates ServiceNow incidents for recurring failures, and alerts the cloud engineering team via Microsoft Teams.
tags:
- cloud
- amazon-web-services
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: aws_lambda_function_
port: 8080
tools:
- name: aws-lambda
description: Given an execution date, run the aws lambda function error handler process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.AWS_LAMBDA_FUNCTION_ERROR_HANDLER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.AWS_LAMBDA_FUNCTION_ERROR_HAND_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: cloud
short_description: AWS Lambda Function Error Handler processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_aws_lambda_function__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://nike.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Processes Microsoft Sentinel security alerts, logs in Snowflake, creates ServiceNow incidents, and alerts the SOC team via Microsoft Teams.
naftiko: '0.5'
info:
label: Microsoft Sentinel Security Alert Handler
description: Processes Microsoft Sentinel security alerts, logs in Snowflake, creates ServiceNow incidents, and alerts the SOC team via Microsoft Teams.
tags:
- security
- microsoft-sentinel
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: microsoft_sentinel_s
port: 8080
tools:
- name: microsoft-sentinel
description: Given an execution date, run the microsoft sentinel security alert handler process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.MICROSOFT_SENTINEL_SECURITY_ALERT_HANDLE LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.MICROSOFT_SENTINEL_SECURITY_AL_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: security
short_description: Microsoft Sentinel Security Alert Handler processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_microsoft_sentinel_s_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://nike.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Fetches the active sprint from Jira for a given project, summarizes open, in-progress, and done issues, and posts the report to the engineering team's Microsoft Teams channel.
naftiko: '0.5'
info:
label: Jira Sprint Status Report
description: Fetches the active sprint from Jira for a given project, summarizes open, in-progress, and done issues, and posts the report to the engineering team's Microsoft Teams channel.
tags:
- devops
- agile
- jira
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sprint-reporting
port: 8080
tools:
- name: get-sprint-status
description: Given a Jira project key, fetch the active sprint and summarize issues by status, then post to the engineering Teams channel. Use for daily standups or weekly sprint reviews.
inputParameters:
- name: project_key
in: body
type: string
description: The Jira project key (e.g., TECH, PLATFORM).
steps:
- name: get-active-sprint
type: call
call: jira-sprint.get-active-sprint
with:
project_key: '{{project_key}}'
- name: search-sprint-issues
type: call
call: jira-sprint.search-issues
with:
sprint_id: '{{get-active-sprint.sprint_id}}'
- name: post-report
type: call
call: msteams-sprint.post-message
with:
channel_id: $secrets.engineering_channel_id
text: 'Sprint {{get-active-sprint.sprint_name}}: {{search-sprint-issues.todo_count}} To Do, {{search-sprint-issues.inprogress_count}} In Progress, {{search-sprint-issues.done_count}} Done.'
consumes:
- type: http
namespace: jira-sprint
baseUri: https://nike.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: sprints
path: /project/{{project_key}}/sprints
inputParameters:
- name: project_key
in: path
operations:
- name: get-active-sprint
method: GET
- name: issues
path: /search
operations:
- name: search-issues
method: POST
- type: http
namespace: msteams-sprint
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Returns active Nike headcount grouped by cost center and department from Workday for workforce planning and finance allocation reviews.
naftiko: '0.5'
info:
label: Workday Headcount by Cost Center
description: Returns active Nike headcount grouped by cost center and department from Workday for workforce planning and finance allocation reviews.
tags:
- hr
- workforce-planning
- reporting
- workday
capability:
exposes:
- type: mcp
namespace: hr-reporting
port: 8080
tools:
- name: get-headcount-snapshot
description: Returns all active Nike employees grouped by cost center and department from Workday. Use for headcount planning, budget allocation, and executive workforce reviews.
call: workday-hc.list-workers
outputParameters:
- name: workers
type: array
mapping: $.data[*]
consumes:
- type: http
namespace: workday-hc
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers
path: /nike/workers
operations:
- name: list-workers
method: GET
Compares Workday headcount against plan in Snowflake, flags variances, refreshes Power BI dashboards, and notifies HR leadership via Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Headcount vs Plan Tracker
description: Compares Workday headcount against plan in Snowflake, flags variances, refreshes Power BI dashboards, and notifies HR leadership via Microsoft Teams.
tags:
- hr
- workforce-planning
- workday
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_headcount_vs
port: 8080
tools:
- name: workday-headcount
description: Given an execution date, run the workday headcount vs plan tracker process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.WORKDAY_HEADCOUNT_VS_PLAN_TRACKER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.WORKDAY_HEADCOUNT_VS_PLAN_TRAC_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_workday_headcount_vs_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When an Apache Airflow DAG fails, logs error details in Snowflake, creates a ServiceNow incident, and alerts the data engineering team via Microsoft Teams.
naftiko: '0.5'
info:
label: Apache Airflow DAG Failure Handler
description: When an Apache Airflow DAG fails, logs error details in Snowflake, creates a ServiceNow incident, and alerts the data engineering team via Microsoft Teams.
tags:
- data-engineering
- apache-airflow
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: apache_airflow_dag_f
port: 8080
tools:
- name: apache-airflow
description: Given an execution date, run the apache airflow dag failure handler process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.APACHE_AIRFLOW_DAG_FAILURE_HANDLER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.APACHE_AIRFLOW_DAG_FAILURE_HAN_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: data-engineering
short_description: Apache Airflow DAG Failure Handler processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_apache_airflow_dag_f_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://nike.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Audits Google Tag Manager tags on Nike.com for compliance, logs in Snowflake, and notifies the web analytics team via Microsoft Teams.
naftiko: '0.5'
info:
label: Google Tag Manager Nike.com Audit
description: Audits Google Tag Manager tags on Nike.com for compliance, logs in Snowflake, and notifies the web analytics team via Microsoft Teams.
tags:
- analytics
- google-tag-manager
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: google_tag_manager_n
port: 8080
tools:
- name: google-tag
description: Given an execution date, run the google tag manager nike.com audit process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.GOOGLE_TAG_MANAGER_NIKE_COM_AUDIT LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.GOOGLE_TAG_MANAGER_NIKE_COM_AU_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_google_tag_manager_n_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Analyzes Zendesk ticket sentiment in Snowflake, escalates high-negativity patterns, creates ServiceNow cases, and alerts the customer experience team via Microsoft Teams.
naftiko: '0.5'
info:
label: Zendesk Customer Sentiment Escalation
description: Analyzes Zendesk ticket sentiment in Snowflake, escalates high-negativity patterns, creates ServiceNow cases, and alerts the customer experience team via Microsoft Teams.
tags:
- support
- zendesk
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: zendesk_customer_sen
port: 8080
tools:
- name: zendesk-customer
description: Given an execution date, run the zendesk customer sentiment escalation process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.ZENDESK_CUSTOMER_SENTIMENT_ESCALATION LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.ZENDESK_CUSTOMER_SENTIMENT_ESC_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: support
short_description: Zendesk Customer Sentiment Escalation processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_zendesk_customer_sen_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://nike.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
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
At the start of a performance review cycle, fetches eligible employees from Workday and creates individual performance review tasks in ServiceNow for each manager.
naftiko: '0.5'
info:
label: Workday Performance Review Campaign Launch
description: At the start of a performance review cycle, fetches eligible employees from Workday and creates individual performance review tasks in ServiceNow for each manager.
tags:
- hr
- performance-management
- workday
- servicenow
capability:
exposes:
- type: mcp
namespace: hr-performance
port: 8080
tools:
- name: launch-performance-reviews
description: Given a review cycle name and department, fetch eligible employees from Workday and create review tasks in ServiceNow for each manager. Use to kick off annual or mid-year performance cycles.
inputParameters:
- name: review_cycle
in: body
type: string
description: Performance review cycle name (e.g., 2026-Annual).
- name: department
in: body
type: string
description: Department to scope the review launch.
steps:
- name: get-eligible-employees
type: call
call: workday-perf.get-workers-by-department
with:
department: '{{department}}'
- name: create-review-tasks
type: call
call: servicenow-perf.create-task
with:
short_description: 'Performance reviews {{review_cycle}}: {{department}}'
category: hr_performance_review
consumes:
- type: http
namespace: workday-perf
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers-by-department
path: /nike/workers
inputParameters:
- name: department
in: query
operations:
- name: get-workers-by-department
method: GET
- type: http
namespace: servicenow-perf
baseUri: https://nike.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: tasks
path: /table/sc_task
operations:
- name: create-task
method: POST
Analyzes Paradox recruiting chatbot engagement metrics in Snowflake, identifies conversion bottlenecks, and notifies the talent acquisition team via Microsoft Teams.
naftiko: '0.5'
info:
label: Paradox Recruiting Chatbot Analytics
description: Analyzes Paradox recruiting chatbot engagement metrics in Snowflake, identifies conversion bottlenecks, and notifies the talent acquisition team via Microsoft Teams.
tags:
- hr
- recruiting
- paradox
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: paradox_recruiting_c
port: 8080
tools:
- name: paradox-recruiting
description: Given an execution date, run the paradox recruiting chatbot analytics process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.PARADOX_RECRUITING_CHATBOT_ANALYTICS LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.PARADOX_RECRUITING_CHATBOT_ANA_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_paradox_recruiting_c_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors athlete endorsement contract milestones in Snowflake, flags upcoming renewals, creates Jira tasks, and notifies the sports marketing team via Microsoft Teams.
naftiko: '0.5'
info:
label: Athlete Endorsement Contract Tracker
description: Monitors athlete endorsement contract milestones in Snowflake, flags upcoming renewals, creates Jira tasks, and notifies the sports marketing team via Microsoft Teams.
tags:
- marketing
- contracts
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: athlete_endorsement_
port: 8080
tools:
- name: athlete-endorsement
description: Given an execution date, run the athlete endorsement contract tracker process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.ATHLETE_ENDORSEMENT_CONTRACT_TRACKER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.ATHLETE_ENDORSEMENT_CONTRACT_T_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: Athlete Endorsement Contract Tracker - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_athlete_endorsement__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a high-value expense report is submitted in SAP Concur, validates the claim against SAP cost center budgets and routes to the finance manager via Teams for approval.
naftiko: '0.5'
info:
label: SAP Concur Expense Approval Escalation
description: When a high-value expense report is submitted in SAP Concur, validates the claim against SAP cost center budgets and routes to the finance manager via Teams for approval.
tags:
- finance
- expense-management
- sap-concur
- sap
- microsoft-teams
- approval
capability:
exposes:
- type: mcp
namespace: finance-expenses
port: 8080
tools:
- name: escalate-expense-report
description: Given a Concur expense report ID and total, validate remaining budget in SAP and notify the finance manager in Teams with the report details and approval link. Use when expense reports exceed policy thresholds.
inputParameters:
- name: report_id
in: body
type: string
description: The SAP Concur expense report ID.
- name: total_amount
in: body
type: number
description: The total expense amount in USD.
- name: cost_center
in: body
type: string
description: The SAP cost center to validate budget against.
steps:
- name: get-report
type: call
call: concur.get-expense-report
with:
report_id: '{{report_id}}'
- name: check-budget
type: call
call: sap-exp.get-cost-center-balance
with:
cost_center: '{{cost_center}}'
- name: notify-manager
type: call
call: msteams-exp.send-message
with:
recipient_upn: '{{get-report.manager_email}}'
text: 'Expense report {{report_id}} for ${{total_amount}} requires approval. Budget remaining: {{check-budget.available}}.'
consumes:
- type: http
namespace: concur
baseUri: https://www.concursolutions.com/api/v3.0
authentication:
type: bearer
token: $secrets.concur_token
resources:
- name: expense-reports
path: /expense/reports/{{report_id}}
inputParameters:
- name: report_id
in: path
operations:
- name: get-expense-report
method: GET
- type: http
namespace: sap-exp
baseUri: https://nike-s4.sap.com/sap/opu/odata/sap/API_COSTCENTER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: cost-centers
path: /A_CostCenter('{{cost_center}}')
inputParameters:
- name: cost_center
in: path
operations:
- name: get-cost-center-balance
method: GET
- type: http
namespace: msteams-exp
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: chats
path: /chats
operations:
- name: send-message
method: POST
Routes Coupa procurement requests based on category rules in Snowflake, creates Jira approval tasks, and notifies the procurement team via Microsoft Teams.
naftiko: '0.5'
info:
label: Coupa Procurement Request Router
description: Routes Coupa procurement requests based on category rules in Snowflake, creates Jira approval tasks, and notifies the procurement team via Microsoft Teams.
tags:
- procurement
- coupa
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: coupa_procurement_re
port: 8080
tools:
- name: coupa-procurement
description: Given an execution date, run the coupa procurement request router process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.COUPA_PROCUREMENT_REQUEST_ROUTER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.COUPA_PROCUREMENT_REQUEST_ROUT_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: Coupa Procurement Request Router - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_coupa_procurement_re_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Pulls weekly product campaign performance metrics from Adobe Analytics and posts a digest to the digital marketing team's Microsoft Teams channel.
naftiko: '0.5'
info:
label: Adobe Analytics Product Campaign Digest
description: Pulls weekly product campaign performance metrics from Adobe Analytics and posts a digest to the digital marketing team's Microsoft Teams channel.
tags:
- marketing
- analytics
- adobe-analytics
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: marketing-analytics
port: 8080
tools:
- name: digest-campaign-analytics
description: Given an Adobe Analytics report suite ID and date range, fetch product campaign performance metrics and post a summary to the digital marketing Teams channel. Use for weekly campaign reviews.
inputParameters:
- name: report_suite_id
in: body
type: string
description: The Adobe Analytics report suite ID.
- name: date_from
in: body
type: string
description: Report start date in YYYY-MM-DD format.
- name: date_to
in: body
type: string
description: Report end date in YYYY-MM-DD format.
steps:
- name: get-metrics
type: call
call: adobe-analytics.get-report
with:
report_suite_id: '{{report_suite_id}}'
date_from: '{{date_from}}'
date_to: '{{date_to}}'
- name: post-digest
type: call
call: msteams-mkt.post-message
with:
channel_id: $secrets.digital_mkt_channel_id
text: 'Campaign Analytics ({{date_from}}–{{date_to}}): Visits={{get-metrics.visits}}, Conversions={{get-metrics.conversions}}, Revenue={{get-metrics.revenue}}'
consumes:
- type: http
namespace: adobe-analytics
baseUri: https://analytics.adobe.io/api/{{report_suite_id}}
authentication:
type: bearer
token: $secrets.adobe_analytics_token
resources:
- name: reports
path: /reports
inputParameters:
- name: report_suite_id
in: path
- name: date_from
in: query
- name: date_to
in: query
operations:
- name: get-report
method: POST
- type: http
namespace: msteams-mkt
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Syncs product roadmap items from Notion to Jira epics, logs in Snowflake, and notifies the product management team via Microsoft Teams.
naftiko: '0.5'
info:
label: Notion Product Roadmap Sync
description: Syncs product roadmap items from Notion to Jira epics, logs in Snowflake, and notifies the product management team via Microsoft Teams.
tags:
- product-management
- notion
- jira
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: notion_product_roadm
port: 8080
tools:
- name: notion-product
description: Given an execution date, run the notion product roadmap sync process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.NOTION_PRODUCT_ROADMAP_SYNC LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.NOTION_PRODUCT_ROADMAP_SYNC_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: Notion Product Roadmap Sync - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_notion_product_roadm_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a P1 incident is created in ServiceNow, triggers PagerDuty on-call escalation, creates a Datadog event, and posts a war-room notification to the IT ops Teams channel.
naftiko: '0.5'
info:
label: ServiceNow IT Incident P1 Escalation
description: When a P1 incident is created in ServiceNow, triggers PagerDuty on-call escalation, creates a Datadog event, and posts a war-room notification to the IT ops Teams channel.
tags:
- itsm
- incident-response
- servicenow
- pagerduty
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: itsm-ops
port: 8080
tools:
- name: escalate-p1-incident
description: Given a ServiceNow incident number and description, trigger PagerDuty, create a Datadog event marker, and notify the IT ops Teams channel. Invoke immediately on P1 incident creation.
inputParameters:
- name: incident_number
in: body
type: string
description: The ServiceNow incident number (e.g., INC0012345).
- name: short_description
in: body
type: string
description: Brief description of the incident.
steps:
- name: page-oncall
type: call
call: pagerduty.trigger-incident
with:
title: 'P1: {{short_description}}'
severity: critical
incident_key: '{{incident_number}}'
- name: create-dd-event
type: call
call: datadog.create-event
with:
title: 'P1 Incident: {{incident_number}}'
alert_type: error
text: '{{short_description}}'
- name: notify-ops
type: call
call: msteams-ops.post-message
with:
channel_id: $secrets.it_ops_channel_id
text: 'P1 Incident {{incident_number}}: {{short_description}} | PagerDuty: {{page-oncall.incident_url}}'
consumes:
- type: http
namespace: pagerduty
baseUri: https://api.pagerduty.com
authentication:
type: apikey
key: Authorization
value: $secrets.pagerduty_token
placement: header
resources:
- name: incidents
path: /incidents
operations:
- name: trigger-incident
method: POST
- type: http
namespace: datadog
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: events
path: /events
operations:
- name: create-event
method: POST
- type: http
namespace: msteams-ops
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Enriches Salesforce leads with ZoomInfo data, stores enriched profiles in Snowflake, and notifies the sales team via Microsoft Teams.
naftiko: '0.5'
info:
label: Salesforce ZoomInfo Lead Enrichment
description: Enriches Salesforce leads with ZoomInfo data, stores enriched profiles in Snowflake, and notifies the sales team via Microsoft Teams.
tags:
- sales
- salesforce
- zoominfo
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: salesforce_zoominfo_
port: 8080
tools:
- name: salesforce-zoominfo
description: Given an execution date, run the salesforce zoominfo lead enrichment process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SALESFORCE_ZOOMINFO_LEAD_ENRICHMENT LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SALESFORCE_ZOOMINFO_LEAD_ENRIC_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_salesforce_zoominfo__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Validates SAP period-close readiness in Snowflake, flags open items, creates ServiceNow tasks, and notifies the accounting team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Period Close Checklist Automation
description: Validates SAP period-close readiness in Snowflake, flags open items, creates ServiceNow tasks, and notifies the accounting team via Microsoft Teams.
tags:
- finance
- sap
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_period_close_che
port: 8080
tools:
- name: sap-period
description: Given an execution date, run the sap period close checklist automation process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_PERIOD_CLOSE_CHECKLIST_AUTOMATION LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_PERIOD_CLOSE_CHECKLIST_AUT_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: finance
short_description: SAP Period Close Checklist Automation processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_period_close_che_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://nike.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Tracks DocuSign contract execution status, logs in Snowflake, creates Jira follow-up tasks for unsigned contracts, and notifies the legal team via Microsoft Teams.
naftiko: '0.5'
info:
label: DocuSign Contract Execution Tracker
description: Tracks DocuSign contract execution status, logs in Snowflake, creates Jira follow-up tasks for unsigned contracts, and notifies the legal team via Microsoft Teams.
tags:
- legal
- docusign
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: docusign_contract_ex
port: 8080
tools:
- name: docusign-contract
description: Given an execution date, run the docusign contract execution tracker process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.DOCUSIGN_CONTRACT_EXECUTION_TRACKER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.DOCUSIGN_CONTRACT_EXECUTION_TR_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: DocuSign Contract Execution Tracker - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_docusign_contract_ex_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Analyzes Nike app user engagement metrics in Snowflake, identifies churn risks, and distributes insights to the digital team via Microsoft Teams.
naftiko: '0.5'
info:
label: Nike App User Engagement Analyzer
description: Analyzes Nike app user engagement metrics in Snowflake, identifies churn risks, and distributes insights to the digital team via Microsoft Teams.
tags:
- analytics
- mobile
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: nike_app_user_engage
port: 8080
tools:
- name: nike-app
description: Given an execution date, run the nike app user engagement analyzer process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.NIKE_APP_USER_ENGAGEMENT_ANALYZER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.NIKE_APP_USER_ENGAGEMENT_ANALY_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_nike_app_user_engage_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Fetches SLO compliance metrics from Datadog and posts a weekly service health report to the technology leadership Microsoft Teams channel.
naftiko: '0.5'
info:
label: Datadog SLO Compliance Weekly Report
description: Fetches SLO compliance metrics from Datadog and posts a weekly service health report to the technology leadership Microsoft Teams channel.
tags:
- observability
- slo
- datadog
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: slo-reporting
port: 8080
tools:
- name: publish-slo-report
description: Query Datadog for all SLO statuses and post a weekly compliance report to the technology leadership Teams channel. Use for weekly engineering reviews and executive technology briefings.
steps:
- name: get-slos
type: call
call: datadog-slo.list-slos
- name: post-report
type: call
call: msteams-slo.post-message
with:
channel_id: $secrets.tech_leadership_channel_id
text: 'Weekly SLO Report: {{get-slos.count}} SLOs monitored. See Datadog for full compliance details.'
consumes:
- type: http
namespace: datadog-slo
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: slos
path: /slo
operations:
- name: list-slos
method: GET
- type: http
namespace: msteams-slo
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Processes GitHub Dependabot alerts, logs in Snowflake, creates Jira remediation tickets, and notifies the security engineering team via Microsoft Teams.
naftiko: '0.5'
info:
label: GitHub Dependabot Alert Triage
description: Processes GitHub Dependabot alerts, logs in Snowflake, creates Jira remediation tickets, and notifies the security engineering team via Microsoft Teams.
tags:
- security
- github
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: github_dependabot_al
port: 8080
tools:
- name: github-dependabot
description: Given an execution date, run the github dependabot alert triage process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.GITHUB_DEPENDABOT_ALERT_TRIAGE LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.GITHUB_DEPENDABOT_ALERT_TRIAGE_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: GitHub Dependabot Alert Triage - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_github_dependabot_al_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a new procurement request is submitted in SAP Ariba, validates the budget in SAP S/4HANA, routes to the appropriate approver, and notifies them via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Ariba Procurement Request Routing
description: When a new procurement request is submitted in SAP Ariba, validates the budget in SAP S/4HANA, routes to the appropriate approver, and notifies them via Microsoft Teams.
tags:
- procurement
- finance
- sap-ariba
- sap
- approval
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: procurement-ops
port: 8080
tools:
- name: route-procurement-request
description: Given an Ariba requisition ID and cost center, validate available budget in SAP S/4HANA and route the request to the cost center manager for approval via Teams. Use for automated procurement approval routing.
inputParameters:
- name: requisition_id
in: body
type: string
description: The SAP Ariba purchase requisition ID.
- name: cost_center
in: body
type: string
description: The SAP cost center code for budget validation.
- name: amount
in: body
type: number
description: The requisition total amount in USD.
steps:
- name: get-requisition
type: call
call: ariba.get-requisition
with:
req_id: '{{requisition_id}}'
- name: check-budget
type: call
call: sap-budget.get-cost-center-budget
with:
cost_center: '{{cost_center}}'
- name: notify-approver
type: call
call: msteams-proc.send-message
with:
recipient_upn: '{{get-requisition.requester_email}}'
text: 'Procurement request {{requisition_id}} for ${{amount}} submitted. Budget available: {{check-budget.available}}. Pending approval.'
consumes:
- type: http
namespace: ariba
baseUri: https://openapi.ariba.com/api/purchase-requisitions/v1
authentication:
type: bearer
token: $secrets.ariba_token
resources:
- name: requisitions
path: /requisitions/{{req_id}}
inputParameters:
- name: req_id
in: path
operations:
- name: get-requisition
method: GET
- type: http
namespace: sap-budget
baseUri: https://nike-s4.sap.com/sap/opu/odata/sap/API_COSTCENTER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: cost-centers
path: /A_CostCenter('{{cost_center}}')
inputParameters:
- name: cost_center
in: path
operations:
- name: get-cost-center-budget
method: GET
- type: http
namespace: msteams-proc
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: chats
path: /chats
operations:
- name: send-message
method: POST
Retrieves cost center details from SAP.
naftiko: '0.5'
info:
label: SAP Cost Center Lookup
description: Retrieves cost center details from SAP.
tags:
- finance
- sap
- cost-management
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: get-cost-center
description: Given a SAP cost center ID, retrieve details. Use for financial reporting.
inputParameters:
- name: cost_center
in: body
type: string
description: The SAP cost center ID.
call: sap.get-cost-center
with:
cost_center: '{{cost_center}}'
outputParameters:
- name: description
type: string
mapping: $.d.CostCenterDescription
consumes:
- type: http
namespace: sap
baseUri: https://nike-s4.sap.com/sap/opu/odata/sap/API_COSTCENTER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: cost-centers
path: /A_CostCenter('{{cost_center}}')
inputParameters:
- name: cost_center
in: path
operations:
- name: get-cost-center
method: GET
Collects product feedback from Slack channels, creates Jira feature requests, logs in Snowflake, and notifies the product management team via Microsoft Teams.
naftiko: '0.5'
info:
label: Slack to Jira Product Feedback Pipeline
description: Collects product feedback from Slack channels, creates Jira feature requests, logs in Snowflake, and notifies the product management team via Microsoft Teams.
tags:
- product-management
- slack
- jira
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: slack_to_jira_produc
port: 8080
tools:
- name: slack-to
description: Given an execution date, run the slack to jira product feedback pipeline process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SLACK_TO_JIRA_PRODUCT_FEEDBACK_PIPELINE LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SLACK_TO_JIRA_PRODUCT_FEEDBACK_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: Slack to Jira Product Feedback Pipeline - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_slack_to_jira_produc_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Sends a message to a specified Microsoft Teams channel.
naftiko: '0.5'
info:
label: Microsoft Teams Channel Message Sender
description: Sends a message to a specified Microsoft Teams channel.
tags:
- collaboration
- microsoft-teams
- messaging
capability:
exposes:
- type: mcp
namespace: collaboration
port: 8080
tools:
- name: send-channel-message
description: Given team ID, channel ID, and message, post to the channel. Use for notifications.
inputParameters:
- name: team_id
in: body
type: string
description: The Teams team ID.
- name: channel_id
in: body
type: string
description: The channel ID.
- name: message_text
in: body
type: string
description: The message body.
call: msteams.send-channel-message
with:
team_id: '{{team_id}}'
channel_id: '{{channel_id}}'
text: '{{message_text}}'
outputParameters:
- name: message_id
type: string
mapping: $.id
consumes:
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Scans Docker container images for vulnerabilities via Snowflake data, creates Jira remediation tickets, and alerts the security team via Microsoft Teams.
naftiko: '0.5'
info:
label: Docker Container Vulnerability Scanner
description: Scans Docker container images for vulnerabilities via Snowflake data, creates Jira remediation tickets, and alerts the security team via Microsoft Teams.
tags:
- security
- docker
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: docker_container_vul
port: 8080
tools:
- name: docker-container
description: Given an execution date, run the docker container vulnerability scanner process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.DOCKER_CONTAINER_VULNERABILITY_SCANNER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.DOCKER_CONTAINER_VULNERABILITY_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: Docker Container Vulnerability Scanner - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_docker_container_vul_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Tracks product sample status from Airtable, logs updates in Snowflake, creates Jira tasks for overdue samples, and notifies the product development team via Microsoft Teams.
naftiko: '0.5'
info:
label: Airtable Sample Tracking Workflow
description: Tracks product sample status from Airtable, logs updates in Snowflake, creates Jira tasks for overdue samples, and notifies the product development team via Microsoft Teams.
tags:
- product-development
- airtable
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: airtable_sample_trac
port: 8080
tools:
- name: airtable-sample
description: Given an execution date, run the airtable sample tracking workflow process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.AIRTABLE_SAMPLE_TRACKING_WORKFLOW LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.AIRTABLE_SAMPLE_TRACKING_WORKF_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: Airtable Sample Tracking Workflow - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_airtable_sample_trac_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Calculates import duty estimates from SAP trade data in Snowflake, flags discrepancies, creates ServiceNow cases, and alerts the trade compliance team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Customs Import Duty Calculator
description: Calculates import duty estimates from SAP trade data in Snowflake, flags discrepancies, creates ServiceNow cases, and alerts the trade compliance team via Microsoft Teams.
tags:
- compliance
- sap
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_customs_import_d
port: 8080
tools:
- name: sap-customs
description: Given an execution date, run the sap customs import duty calculator process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_CUSTOMS_IMPORT_DUTY_CALCULATOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_CUSTOMS_IMPORT_DUTY_CALCUL_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: compliance
short_description: SAP Customs Import Duty Calculator processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_customs_import_d_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://nike.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
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
Tracks GitHub Copilot usage and adoption metrics in Snowflake, computes productivity gains, and distributes reports to engineering leadership via Microsoft Teams.
naftiko: '0.5'
info:
label: GitHub Copilot Adoption Tracker
description: Tracks GitHub Copilot usage and adoption metrics in Snowflake, computes productivity gains, and distributes reports to engineering leadership via Microsoft Teams.
tags:
- devops
- github-copilot
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: github_copilot_adopt
port: 8080
tools:
- name: github-copilot
description: Given an execution date, run the github copilot adoption tracker process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.GITHUB_COPILOT_ADOPTION_TRACKER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.GITHUB_COPILOT_ADOPTION_TRACKE_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_github_copilot_adopt_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a Workday integration fails, logs the error in Snowflake, creates a ServiceNow incident, and alerts the HRIS team via Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Integration Failure Handler
description: When a Workday integration fails, logs the error in Snowflake, creates a ServiceNow incident, and alerts the HRIS team via Microsoft Teams.
tags:
- hr
- workday
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_integration_
port: 8080
tools:
- name: workday-integration
description: Given an execution date, run the workday integration failure handler process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.WORKDAY_INTEGRATION_FAILURE_HANDLER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.WORKDAY_INTEGRATION_FAILURE_HA_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: hr
short_description: Workday Integration Failure Handler processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_workday_integration__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://nike.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a Salesforce opportunity is marked Closed-Won, creates a SAP sales order, provisions a customer account in ServiceNow, and sends a welcome email from Salesforce Marketing Cloud.
naftiko: '0.5'
info:
label: Salesforce Customer Onboarding Orchestrator
description: When a Salesforce opportunity is marked Closed-Won, creates a SAP sales order, provisions a customer account in ServiceNow, and sends a welcome email from Salesforce Marketing Cloud.
tags:
- sales
- crm
- customer-onboarding
- salesforce
- sap
- servicenow
capability:
exposes:
- type: mcp
namespace: customer-onboarding
port: 8080
tools:
- name: onboard-new-customer
description: Given a Salesforce opportunity ID, create a SAP sales order, open a ServiceNow customer account record, and trigger a welcome email via Salesforce Marketing Cloud. Invoke when a B2B opportunity moves to Closed-Won.
inputParameters:
- name: opportunity_id
in: body
type: string
description: The Salesforce opportunity ID (18-character).
steps:
- name: get-opportunity
type: call
call: salesforce.get-opportunity
with:
opportunity_id: '{{opportunity_id}}'
- name: create-sap-order
type: call
call: sap-sales.create-sales-order
with:
customer_id: '{{get-opportunity.account_sap_id}}'
amount: '{{get-opportunity.amount}}'
- name: create-snow-account
type: call
call: servicenow-acct.create-record
with:
account_name: '{{get-opportunity.account_name}}'
sap_order_id: '{{create-sap-order.order_id}}'
- name: send-welcome-email
type: call
call: sfmc.trigger-email
with:
email: '{{get-opportunity.contact_email}}'
template_id: welcome_customer
account_name: '{{get-opportunity.account_name}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://nike.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /sobjects/Opportunity/{{opportunity_id}}
inputParameters:
- name: opportunity_id
in: path
operations:
- name: get-opportunity
method: GET
- type: http
namespace: sap-sales
baseUri: https://nike-s4.sap.com/sap/opu/odata/sap/API_SALES_ORDER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: sales-orders
path: /A_SalesOrder
operations:
- name: create-sales-order
method: POST
- type: http
namespace: servicenow-acct
baseUri: https://nike.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: accounts
path: /table/customer_account
operations:
- name: create-record
method: POST
- type: http
namespace: sfmc
baseUri: https://api.salesforce.com/marketing/v1
authentication:
type: bearer
token: $secrets.sfmc_token
resources:
- name: email-triggers
path: /messaging/v1/email/messages
operations:
- name: trigger-email
method: POST
Retrieves a 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
When AWS Cost Explorer detects a spending anomaly, creates a Jira FinOps review ticket and posts an alert to the cloud cost Microsoft Teams channel.
naftiko: '0.5'
info:
label: AWS Cloud Cost Anomaly Alert
description: When AWS Cost Explorer detects a spending anomaly, creates a Jira FinOps review ticket and posts an alert to the cloud cost Microsoft Teams channel.
tags:
- cloud
- finops
- aws
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: cloud-finops
port: 8080
tools:
- name: handle-cost-anomaly
description: Given an AWS service name, anomaly ID, and estimated excess cost, create a Jira cost-review task and notify the FinOps Teams channel. Invoke when AWS Cost Anomaly Detection fires.
inputParameters:
- name: anomaly_id
in: body
type: string
description: The AWS Cost Explorer anomaly detection ID.
- name: service_name
in: body
type: string
description: The AWS service name experiencing the anomaly.
- name: excess_cost_usd
in: body
type: number
description: The estimated excess spend in USD.
steps:
- name: create-review-ticket
type: call
call: jira-finops.create-issue
with:
project_key: FINOPS
issuetype: Task
summary: 'AWS cost anomaly: {{service_name}} — ${{excess_cost_usd}}'
description: 'Anomaly ID: {{anomaly_id}}
Estimated excess: ${{excess_cost_usd}}'
- name: alert-finops
type: call
call: msteams-finops.post-message
with:
channel_id: $secrets.finops_channel_id
text: 'Cost Anomaly: {{service_name}} | ${{excess_cost_usd}} excess | Jira: {{create-review-ticket.key}}'
consumes:
- type: http
namespace: jira-finops
baseUri: https://nike.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams-finops
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Identifies employees who haven't completed benefits enrollment, logs in Snowflake, and sends reminders via Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Benefits Open Enrollment Reminder
description: Identifies employees who haven't completed benefits enrollment, logs in Snowflake, and sends reminders via Microsoft Teams.
tags:
- hr
- benefits
- workday
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_benefits_ope
port: 8080
tools:
- name: workday-benefits
description: Given an execution date, run the workday benefits open enrollment reminder process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.WORKDAY_BENEFITS_OPEN_ENROLLMENT_REMINDE LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.WORKDAY_BENEFITS_OPEN_ENROLLME_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_workday_benefits_ope_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Reconciles Workday payroll data against financial records in Snowflake, flags discrepancies, creates ServiceNow cases, and notifies the payroll team via Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Payroll Reconciliation Workflow
description: Reconciles Workday payroll data against financial records in Snowflake, flags discrepancies, creates ServiceNow cases, and notifies the payroll team via Microsoft Teams.
tags:
- hr
- payroll
- workday
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_payroll_reco
port: 8080
tools:
- name: workday-payroll
description: Given an execution date, run the workday payroll reconciliation workflow process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.WORKDAY_PAYROLL_RECONCILIATION_WORKFLOW LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.WORKDAY_PAYROLL_RECONCILIATION_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: hr
short_description: Workday Payroll Reconciliation Workflow processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_workday_payroll_reco_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://nike.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
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
Looks up an Okta user by login email.
naftiko: '0.5'
info:
label: Okta User Lookup
description: Looks up an Okta user by login email.
tags:
- identity
- okta
- access-management
capability:
exposes:
- type: mcp
namespace: identity
port: 8080
tools:
- name: get-user
description: Given an Okta user login, retrieve profile details. Use for identity verification.
inputParameters:
- name: user_login
in: body
type: string
description: The Okta user login email.
call: okta.get-user
with:
user_login: '{{user_login}}'
outputParameters:
- name: status
type: string
mapping: $.status
consumes:
- type: http
namespace: okta
baseUri: https://nike.okta.com/api/v1
authentication:
type: apikey
key: Authorization
value: $secrets.okta_api_token
placement: header
resources:
- name: users
path: /users/{{user_login}}
inputParameters:
- name: user_login
in: path
operations:
- name: get-user
method: GET
Generates seasonal product allocation plans from SAP data in Snowflake, creates Jira distribution tasks, and notifies the merchandising team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Seasonal Allocation Planner
description: Generates seasonal product allocation plans from SAP data in Snowflake, creates Jira distribution tasks, and notifies the merchandising team via Microsoft Teams.
tags:
- supply-chain
- sap
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_seasonal_allocat
port: 8080
tools:
- name: sap-seasonal
description: Given an execution date, run the sap seasonal allocation planner process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_SEASONAL_ALLOCATION_PLANNER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_SEASONAL_ALLOCATION_PLANNE_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: SAP Seasonal Allocation Planner - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_seasonal_allocat_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a new lead is created in Salesforce, enriches it with company firmographics from ZoomInfo and updates the lead record with employee count, revenue, and industry data.
naftiko: '0.5'
info:
label: Salesforce Lead Enrichment via ZoomInfo
description: When a new lead is created in Salesforce, enriches it with company firmographics from ZoomInfo and updates the lead record with employee count, revenue, and industry data.
tags:
- sales
- crm
- lead-management
- salesforce
- zoominfo
capability:
exposes:
- type: mcp
namespace: crm-enrichment
port: 8080
tools:
- name: enrich-salesforce-lead
description: Given a Salesforce lead ID, fetch firmographic data from ZoomInfo and update the lead with company size, industry, and revenue. Use when a new lead is created or when lead data is incomplete.
inputParameters:
- name: lead_id
in: body
type: string
description: The Salesforce lead ID to enrich.
steps:
- name: get-lead
type: call
call: salesforce-lead.get-lead
with:
lead_id: '{{lead_id}}'
- name: enrich-data
type: call
call: zoominfo.search-company
with:
company_name: '{{get-lead.company}}'
email: '{{get-lead.email}}'
- name: update-lead
type: call
call: salesforce-lead-update.update-lead
with:
lead_id: '{{lead_id}}'
employees: '{{enrich-data.employee_count}}'
annual_revenue: '{{enrich-data.revenue}}'
industry: '{{enrich-data.industry}}'
consumes:
- type: http
namespace: salesforce-lead
baseUri: https://nike.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: leads
path: /sobjects/Lead/{{lead_id}}
inputParameters:
- name: lead_id
in: path
operations:
- name: get-lead
method: GET
- type: http
namespace: zoominfo
baseUri: https://api.zoominfo.com/search
authentication:
type: bearer
token: $secrets.zoominfo_token
resources:
- name: company-search
path: /company
operations:
- name: search-company
method: POST
- type: http
namespace: salesforce-lead-update
baseUri: https://nike.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: leads
path: /sobjects/Lead/{{lead_id}}
inputParameters:
- name: lead_id
in: path
operations:
- name: update-lead
method: PATCH
Computes Kubernetes cluster cost allocation from Snowflake metrics, generates chargeback reports, creates Jira budget tasks, and notifies the platform team via Microsoft Teams.
naftiko: '0.5'
info:
label: Kubernetes Cluster Cost Allocation Reporter
description: Computes Kubernetes cluster cost allocation from Snowflake metrics, generates chargeback reports, creates Jira budget tasks, and notifies the platform team via Microsoft Teams.
tags:
- infrastructure
- kubernetes
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: kubernetes_cluster_c
port: 8080
tools:
- name: kubernetes-cluster
description: Given an execution date, run the kubernetes cluster cost allocation reporter process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.KUBERNETES_CLUSTER_COST_ALLOCATION_REPOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.KUBERNETES_CLUSTER_COST_ALLOCA_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: Kubernetes Cluster Cost Allocation Reporter - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_kubernetes_cluster_c_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Processes RMA requests in SAP, validates return eligibility in Snowflake, creates ServiceNow cases, and notifies the returns team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Return Merchandise Authorization Processor
description: Processes RMA requests in SAP, validates return eligibility in Snowflake, creates ServiceNow cases, and notifies the returns team via Microsoft Teams.
tags:
- logistics
- sap
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_return_merchandi
port: 8080
tools:
- name: sap-return
description: Given an execution date, run the sap return merchandise authorization processor process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_RETURN_MERCHANDISE_AUTHORIZATION_PRO LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_RETURN_MERCHANDISE_AUTHORI_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: logistics
short_description: SAP Return Merchandise Authorization Processor processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_return_merchandi_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://nike.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Onboards new footwear suppliers in SAP Ariba, creates ServiceNow vendor setup requests, logs in Snowflake, and notifies the procurement team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Ariba Footwear Supplier Onboarding
description: Onboards new footwear suppliers in SAP Ariba, creates ServiceNow vendor setup requests, logs in Snowflake, and notifies the procurement team via Microsoft Teams.
tags:
- procurement
- sap
- servicenow
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_ariba_footwear_s
port: 8080
tools:
- name: sap-ariba
description: Given an execution date, run the sap ariba footwear supplier onboarding process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_ARIBA_FOOTWEAR_SUPPLIER_ONBOARDING LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_ARIBA_FOOTWEAR_SUPPLIER_ON_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: procurement
short_description: SAP Ariba Footwear Supplier Onboarding processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_ariba_footwear_s_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://nike.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Syncs Marketo campaign performance metrics to Snowflake, computes engagement scores, and distributes insights to the marketing team via Microsoft Teams.
naftiko: '0.5'
info:
label: Marketo Campaign Performance Sync
description: Syncs Marketo campaign performance metrics to Snowflake, computes engagement scores, and distributes insights to the marketing team via Microsoft Teams.
tags:
- marketing
- marketo
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: marketo_campaign_per
port: 8080
tools:
- name: marketo-campaign
description: Given an execution date, run the marketo campaign performance sync process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.MARKETO_CAMPAIGN_PERFORMANCE_SYNC LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.MARKETO_CAMPAIGN_PERFORMANCE_S_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_marketo_campaign_per_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Generates retail store staffing forecasts from Workday data in Snowflake, compares to demand projections, and notifies store operations via Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Retail Staffing Forecast
description: Generates retail store staffing forecasts from Workday data in Snowflake, compares to demand projections, and notifies store operations via Microsoft Teams.
tags:
- hr
- retail
- workday
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_retail_staff
port: 8080
tools:
- name: workday-retail
description: Given an execution date, run the workday retail staffing forecast process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.WORKDAY_RETAIL_STAFFING_FORECAST LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.WORKDAY_RETAIL_STAFFING_FORECA_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_workday_retail_staff_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors inventory aging data from SAP in Snowflake, flags slow-moving SKUs, creates Jira markdown action items, and notifies the merchandise planning team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Inventory Aging Alert
description: Monitors inventory aging data from SAP in Snowflake, flags slow-moving SKUs, creates Jira markdown action items, and notifies the merchandise planning team via Microsoft Teams.
tags:
- supply-chain
- sap
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_inventory_aging_
port: 8080
tools:
- name: sap-inventory
description: Given an execution date, run the sap inventory aging alert process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_INVENTORY_AGING_ALERT LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_INVENTORY_AGING_ALERT_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: SAP Inventory Aging Alert - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_inventory_aging__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
On a GitHub Actions workflow failure on a protected branch, opens a Jira bug, creates a Datadog deployment event, and alerts the engineering team in Microsoft Teams.
naftiko: '0.5'
info:
label: GitHub CI/CD Pipeline Failure Response
description: On a GitHub Actions workflow failure on a protected branch, opens a Jira bug, creates a Datadog deployment event, and alerts the engineering team in Microsoft Teams.
tags:
- devops
- ci-cd
- github
- jira
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: devops-ci
port: 8080
tools:
- name: handle-pipeline-failure
description: Given a GitHub Actions run ID, repository, branch, failing job, and commit SHA, open a Jira bug, create a Datadog deployment event, and alert the engineering Teams channel. Invoke on any protected-branch workflow failure.
inputParameters:
- name: run_id
in: body
type: string
description: The GitHub Actions workflow run ID.
- name: repository
in: body
type: string
description: The GitHub repository in owner/repo format.
- name: branch
in: body
type: string
description: The branch that failed.
- name: job_name
in: body
type: string
description: The failed job name.
- name: commit_sha
in: body
type: string
description: The commit SHA that triggered the run.
steps:
- name: create-bug
type: call
call: jira.create-issue
with:
project_key: TECH
issuetype: Bug
summary: '[CI Failure] {{repository}} / {{branch}} — {{job_name}}'
- name: create-dd-event
type: call
call: datadog-ci.create-event
with:
title: 'CI Failure: {{repository}} {{branch}}'
alert_type: error
tags: repo:{{repository}},branch:{{branch}}
- name: alert-engineering
type: call
call: msteams-ci.post-message
with:
channel_id: $secrets.engineering_channel_id
text: 'Build Failure: {{repository}} | Branch: {{branch}} | Job: {{job_name}} | Jira: {{create-bug.key}}'
consumes:
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: datadog-ci
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: events
path: /events
operations:
- name: create-event
method: POST
- type: http
namespace: msteams-ci
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Tracks sustainable material sourcing metrics in Snowflake, computes Move to Zero progress, creates Jira tasks, and notifies the sustainability team via Microsoft Teams.
naftiko: '0.5'
info:
label: Sustainable Materials Sourcing Tracker
description: Tracks sustainable material sourcing metrics in Snowflake, computes Move to Zero progress, creates Jira tasks, and notifies the sustainability team via Microsoft Teams.
tags:
- sustainability
- sourcing
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sustainable_material
port: 8080
tools:
- name: sustainable-materials
description: Given an execution date, run the sustainable materials sourcing tracker process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SUSTAINABLE_MATERIALS_SOURCING_TRACKER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SUSTAINABLE_MATERIALS_SOURCING_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: Sustainable Materials Sourcing Tracker - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sustainable_material_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Analyzes warehouse pick-pack-ship metrics in Snowflake, identifies bottlenecks, creates ServiceNow optimization requests, and notifies the logistics team via Microsoft Teams.
naftiko: '0.5'
info:
label: Warehouse Pick Pack Ship Optimizer
description: Analyzes warehouse pick-pack-ship metrics in Snowflake, identifies bottlenecks, creates ServiceNow optimization requests, and notifies the logistics team via Microsoft Teams.
tags:
- logistics
- warehouse
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: warehouse_pick_pack_
port: 8080
tools:
- name: warehouse-pick
description: Given an execution date, run the warehouse pick pack ship optimizer process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.WAREHOUSE_PICK_PACK_SHIP_OPTIMIZER LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.WAREHOUSE_PICK_PACK_SHIP_OPTIM_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: logistics
short_description: Warehouse Pick Pack Ship Optimizer processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_warehouse_pick_pack__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://nike.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Polls Snowflake task history for failed or stalled e-commerce data pipeline tasks and opens a Jira incident if failures are detected, notifying the data engineering team in Teams.
naftiko: '0.5'
info:
label: Snowflake E-Commerce Data Pipeline Monitor
description: Polls Snowflake task history for failed or stalled e-commerce data pipeline tasks and opens a Jira incident if failures are detected, notifying the data engineering team in Teams.
tags:
- data
- e-commerce
- snowflake
- jira
- monitoring
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: data-pipeline-ops
port: 8080
tools:
- name: monitor-ecommerce-pipelines
description: Query Snowflake task history for e-commerce pipeline failures and open a Jira incident if failures are found. Post a health summary to the data engineering Teams channel. Use for automated e-commerce data platform monitoring.
inputParameters:
- name: lookback_hours
in: body
type: integer
description: Number of hours to look back for failed pipeline tasks.
steps:
- name: query-failures
type: call
call: snowflake.execute-statement
with:
statement: SELECT COUNT(*) as count FROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY()) WHERE state='FAILED' AND scheduled_time > DATEADD(hour, -{{lookback_hours}}, CURRENT_TIMESTAMP())
- name: create-incident
type: call
call: jira-data.create-issue
with:
project_key: DATA
issuetype: Bug
summary: E-commerce pipeline failures in last {{lookback_hours}}h
- name: notify-data-team
type: call
call: msteams-data.post-message
with:
channel_id: $secrets.data_eng_channel_id
text: 'Pipeline Monitor: {{query-failures.count}} failures in last {{lookback_hours}}h. Jira: {{create-incident.key}}'
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira-data
baseUri: https://nike.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams-data
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Launches Workday performance review cycles, tracks completion in Snowflake, creates Jira tasks for lagging teams, and notifies HR via Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Performance Review Cycle Launcher
description: Launches Workday performance review cycles, tracks completion in Snowflake, creates Jira tasks for lagging teams, and notifies HR via Microsoft Teams.
tags:
- hr
- performance
- workday
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_performance_
port: 8080
tools:
- name: workday-performance
description: Given an execution date, run the workday performance review cycle launcher process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.WORKDAY_PERFORMANCE_REVIEW_CYCLE_LAUNCHE LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.WORKDAY_PERFORMANCE_REVIEW_CYC_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: Workday Performance Review Cycle Launcher - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_workday_performance__channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a job requisition is approved in Workday, automatically publishes the role to LinkedIn and sends a notification to the talent acquisition team in Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Job Requisition to LinkedIn Posting
description: When a job requisition is approved in Workday, automatically publishes the role to LinkedIn and sends a notification to the talent acquisition team in Microsoft Teams.
tags:
- hr
- recruiting
- workday
- linkedin
- microsoft-teams
- talent-acquisition
capability:
exposes:
- type: mcp
namespace: talent-acquisition
port: 8080
tools:
- name: publish-job-posting
description: Given a Workday requisition ID, fetch job details and publish the position to LinkedIn, then notify the TA team in Teams. Use when a new job requisition is approved in Workday.
inputParameters:
- name: requisition_id
in: body
type: string
description: The Workday job requisition ID.
steps:
- name: get-requisition
type: call
call: workday-rec.get-job-requisition
with:
req_id: '{{requisition_id}}'
- name: post-linkedin
type: call
call: linkedin.create-job-posting
with:
title: '{{get-requisition.job_title}}'
description: '{{get-requisition.description}}'
location: '{{get-requisition.location}}'
company_urn: $secrets.nike_linkedin_org_urn
- name: notify-ta
type: call
call: msteams-ta.post-message
with:
channel_id: $secrets.ta_channel_id
text: 'Job posted: {{get-requisition.job_title}} | LinkedIn: {{post-linkedin.job_url}}'
consumes:
- type: http
namespace: workday-rec
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: job-requisitions
path: /nike/jobRequisitions/{{req_id}}
inputParameters:
- name: req_id
in: path
operations:
- name: get-job-requisition
method: GET
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: job-postings
path: /jobPostings
operations:
- name: create-job-posting
method: POST
- type: http
namespace: msteams-ta
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Monitors nike.com checkout conversion rates in Snowflake, flags drops below threshold, creates ServiceNow incidents, and alerts the digital commerce team via Microsoft Teams.
naftiko: '0.5'
info:
label: E-Commerce Checkout Conversion Monitor
description: Monitors nike.com checkout conversion rates in Snowflake, flags drops below threshold, creates ServiceNow incidents, and alerts the digital commerce team via Microsoft Teams.
tags:
- e-commerce
- analytics
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ecommerce_checkout_c
port: 8080
tools:
- name: ecommerce-checkout
description: Given an execution date, run the e-commerce checkout conversion monitor process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.ECOMMERCE_CHECKOUT_CONVERSION_MONITOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.ECOMMERCE_CHECKOUT_CONVERSION__RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: e-commerce
short_description: E-Commerce Checkout Conversion Monitor processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_ecommerce_checkout_c_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://nike.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors SNKRS app launch metrics in Snowflake during product drops, flags performance issues, creates ServiceNow incidents, and alerts the digital platform team via Microsoft Teams.
naftiko: '0.5'
info:
label: SNKRS App Release Monitoring Chain
description: Monitors SNKRS app launch metrics in Snowflake during product drops, flags performance issues, creates ServiceNow incidents, and alerts the digital platform team via Microsoft Teams.
tags:
- e-commerce
- mobile
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: snkrs_app_release_mo
port: 8080
tools:
- name: snkrs-app
description: Given an execution date, run the snkrs app release monitoring chain process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SNKRS_APP_RELEASE_MONITORING_CHAIN LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SNKRS_APP_RELEASE_MONITORING_C_RESULTS SELECT * FROM staging
- name: create-incident
type: call
call: servicenow.create-incident
with:
category: e-commerce
short_description: SNKRS App Release Monitoring Chain processing complete
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_snkrs_app_release_mo_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: servicenow
baseUri: https://nike.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Generates product descriptions using the Anthropic API, stores in Snowflake, creates Jira review tasks, and notifies the content team via Microsoft Teams.
naftiko: '0.5'
info:
label: Anthropic Product Content Generator
description: Generates product descriptions using the Anthropic API, stores in Snowflake, creates Jira review tasks, and notifies the content team via Microsoft Teams.
tags:
- ai
- anthropic
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: anthropic_product_co
port: 8080
tools:
- name: anthropic-product
description: Given an execution date, run the anthropic product content generator process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.ANTHROPIC_PRODUCT_CONTENT_GENERATOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.ANTHROPIC_PRODUCT_CONTENT_GENE_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: Anthropic Product Content Generator - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_anthropic_product_co_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
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
Pulls Nike.com traffic metrics from Adobe Analytics into Snowflake, refreshes Power BI dashboards, and distributes daily digests via Microsoft Teams.
naftiko: '0.5'
info:
label: Adobe Analytics Nike.com Traffic Digest
description: Pulls Nike.com traffic metrics from Adobe Analytics into Snowflake, refreshes Power BI dashboards, and distributes daily digests via Microsoft Teams.
tags:
- analytics
- adobe-analytics
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: adobe_analytics_nike
port: 8080
tools:
- name: adobe-analytics
description: Given an execution date, run the adobe analytics nike.com traffic digest process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.ADOBE_ANALYTICS_NIKE_COM_TRAFFIC_DIGEST LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.ADOBE_ANALYTICS_NIKE_COM_TRAFF_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_adobe_analytics_nike_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves product catalog entries from Airtable.
naftiko: '0.5'
info:
label: Airtable Product Catalog Lookup
description: Retrieves product catalog entries from Airtable.
tags:
- product-management
- airtable
- catalog
capability:
exposes:
- type: mcp
namespace: product-catalog
port: 8080
tools:
- name: get-record
description: Given an Airtable base and record ID, retrieve catalog entry. Use for product lookups.
inputParameters:
- name: base_id
in: body
type: string
description: The Airtable base ID.
- name: record_id
in: body
type: string
description: The record ID.
call: airtable.get-record
with:
base_id: '{{base_id}}'
record_id: '{{record_id}}'
outputParameters:
- name: product_name
type: string
mapping: $.fields.Name
- name: sku
type: string
mapping: $.fields.SKU
consumes:
- type: http
namespace: airtable
baseUri: https://api.airtable.com/v0
authentication:
type: bearer
token: $secrets.airtable_token
resources:
- name: records
path: /{{base_id}}/Products/{{record_id}}
inputParameters:
- name: base_id
in: path
- name: record_id
in: path
operations:
- name: get-record
method: GET
At the end of each financial period, queries SAP S/4HANA for open journal entries and unposted items, then creates a ServiceNow period-close task for the accounting team.
naftiko: '0.5'
info:
label: SAP Period-End Close Checklist
description: At the end of each financial period, queries SAP S/4HANA for open journal entries and unposted items, then creates a ServiceNow period-close task for the accounting team.
tags:
- finance
- period-close
- sap
- servicenow
capability:
exposes:
- type: mcp
namespace: finance-close
port: 8080
tools:
- name: run-period-close-checklist
description: Given a fiscal period and year, query SAP for open items and unposted journals, then create a ServiceNow checklist task. Use at month-end or quarter-end to support the accounting close process.
inputParameters:
- name: fiscal_period
in: body
type: string
description: The fiscal period number (e.g., '006' for June).
- name: fiscal_year
in: body
type: string
description: The fiscal year (e.g., '2026').
steps:
- name: get-open-items
type: call
call: sap-close.get-open-journal-entries
with:
period: '{{fiscal_period}}'
year: '{{fiscal_year}}'
- name: create-checklist
type: call
call: servicenow-close.create-task
with:
short_description: Period close checklist FY{{fiscal_year}}/P{{fiscal_period}}
description: 'Open items: {{get-open-items.count}}. Please resolve before period close.'
consumes:
- type: http
namespace: sap-close
baseUri: https://nike-s4.sap.com/sap/opu/odata/sap/API_JOURNALENTRYITEMBASIC_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: journal-entries
path: /A_JournalEntryItem
inputParameters:
- name: period
in: query
- name: year
in: query
operations:
- name: get-open-journal-entries
method: GET
- type: http
namespace: servicenow-close
baseUri: https://nike.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: tasks
path: /table/sc_task
operations:
- name: create-task
method: POST
Retrieves metadata for a GitHub repository.
naftiko: '0.5'
info:
label: GitHub Repository Info Lookup
description: Retrieves metadata for a GitHub repository.
tags:
- devops
- github
- source-control
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: get-repo-info
description: Given org and repo name, retrieve metadata. Use for developer onboarding.
inputParameters:
- name: org
in: body
type: string
description: The GitHub organization.
- name: repo
in: body
type: string
description: The repository name.
call: github.get-repo
with:
org: '{{org}}'
repo: '{{repo}}'
outputParameters:
- name: full_name
type: string
mapping: $.full_name
consumes:
- type: http
namespace: github
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: repos
path: /repos/{{org}}/{{repo}}
inputParameters:
- name: org
in: path
- name: repo
in: path
operations:
- name: get-repo
method: GET
Aggregates pre-launch demand signals from Nike.com and SNKRS app in Snowflake, adjusts inventory allocation, and notifies the merchandising team via Microsoft Teams.
naftiko: '0.5'
info:
label: Sneaker Launch Demand Signal Processor
description: Aggregates pre-launch demand signals from Nike.com and SNKRS app in Snowflake, adjusts inventory allocation, and notifies the merchandising team via Microsoft Teams.
tags:
- retail
- e-commerce
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sneaker_launch_deman
port: 8080
tools:
- name: sneaker-launch
description: Given an execution date, run the sneaker launch demand signal processor process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SNEAKER_LAUNCH_DEMAND_SIGNAL_PROCESSOR LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SNEAKER_LAUNCH_DEMAND_SIGNAL_P_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sneaker_launch_deman_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Aggregates Salesforce wholesale pipeline data in Snowflake, refreshes Power BI dashboards, and distributes weekly digests to sales leadership via Microsoft Teams.
naftiko: '0.5'
info:
label: Salesforce Wholesale Pipeline Digest
description: Aggregates Salesforce wholesale pipeline data in Snowflake, refreshes Power BI dashboards, and distributes weekly digests to sales leadership via Microsoft Teams.
tags:
- sales
- salesforce
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: salesforce_wholesale
port: 8080
tools:
- name: salesforce-wholesale
description: Given an execution date, run the salesforce wholesale pipeline digest process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SALESFORCE_WHOLESALE_PIPELINE_DIGEST LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SALESFORCE_WHOLESALE_PIPELINE__RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_salesforce_wholesale_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Analyzes retail store traffic data in Snowflake, computes conversion rates, and distributes insights to store operations via Microsoft Teams.
naftiko: '0.5'
info:
label: Retail Store Traffic Analytics Pipeline
description: Analyzes retail store traffic data in Snowflake, computes conversion rates, and distributes insights to store operations via Microsoft Teams.
tags:
- retail
- analytics
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: retail_store_traffic
port: 8080
tools:
- name: retail-store
description: Given an execution date, run the retail store traffic analytics pipeline process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.RETAIL_STORE_TRAFFIC_ANALYTICS_PIPELINE LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.RETAIL_STORE_TRAFFIC_ANALYTICS_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_retail_store_traffic_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
During open enrollment, pulls active employees from Workday and syncs benefit elections to ADP, then confirms enrollment via a Teams notification to each employee.
naftiko: '0.5'
info:
label: Open Enrollment Benefits Sync
description: During open enrollment, pulls active employees from Workday and syncs benefit elections to ADP, then confirms enrollment via a Teams notification to each employee.
tags:
- hr
- benefits
- open-enrollment
- workday
- adp
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-benefits
port: 8080
tools:
- name: sync-benefit-elections
description: Given an employee ID and benefit plan selection, sync the election from Workday to ADP and send a Teams confirmation. Use during open enrollment or qualifying life events.
inputParameters:
- name: employee_id
in: body
type: string
description: The Workday worker ID of the enrolling employee.
- name: benefit_plan_id
in: body
type: string
description: The ADP benefit plan ID the employee selected.
steps:
- name: get-employee
type: call
call: workday-ben.get-worker
with:
worker_id: '{{employee_id}}'
- name: submit-election
type: call
call: adp.update-benefit-election
with:
associate_oid: '{{get-employee.adp_oid}}'
plan_id: '{{benefit_plan_id}}'
- name: confirm-enrollment
type: call
call: msteams-ben.send-message
with:
recipient_upn: '{{get-employee.work_email}}'
text: Your benefit election for plan {{benefit_plan_id}} has been successfully submitted.
consumes:
- type: http
namespace: workday-ben
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers
path: /nike/workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: adp
baseUri: https://api.adp.com
authentication:
type: bearer
token: $secrets.adp_token
resources:
- name: benefit-elections
path: /benefits/v2/workers/{{associate_oid}}/benefit-elections
inputParameters:
- name: associate_oid
in: path
operations:
- name: update-benefit-election
method: POST
- type: http
namespace: msteams-ben
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: chats
path: /chats
operations:
- name: send-message
method: POST
Submits product attributes to Anthropic Claude to generate SEO-optimized product descriptions, then updates the product record in Salesforce with the generated content.
naftiko: '0.5'
info:
label: Anthropic Product Description Generator
description: Submits product attributes to Anthropic Claude to generate SEO-optimized product descriptions, then updates the product record in Salesforce with the generated content.
tags:
- ai
- content
- anthropic
- salesforce
- e-commerce
capability:
exposes:
- type: mcp
namespace: ai-content
port: 8080
tools:
- name: generate-product-description
description: Given a product ID, category, and key attributes, generate an SEO-optimized product description using Anthropic Claude and update the Salesforce product record. Use for bulk product catalog updates or new product launches.
inputParameters:
- name: product_id
in: body
type: string
description: The Salesforce product ID to update.
- name: product_name
in: body
type: string
description: The product name.
- name: attributes
in: body
type: string
description: Comma-separated product attributes (e.g., color, material, technology).
- name: category
in: body
type: string
description: Product category (e.g., Running Shoes, Training Apparel).
steps:
- name: generate-description
type: call
call: anthropic.create-message
with:
model: claude-3-5-sonnet-20241022
content: 'Write a compelling 2-3 sentence SEO-optimized product description for a {{category}} named {{product_name}} with these attributes: {{attributes}}.'
- name: update-product
type: call
call: salesforce-product.update-product
with:
product_id: '{{product_id}}'
description: '{{generate-description.text}}'
consumes:
- type: http
namespace: anthropic
baseUri: https://api.anthropic.com/v1
authentication:
type: apikey
key: x-api-key
value: $secrets.anthropic_api_key
placement: header
resources:
- name: messages
path: /messages
operations:
- name: create-message
method: POST
- type: http
namespace: salesforce-product
baseUri: https://nike.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: products
path: /sobjects/Product2/{{product_id}}
inputParameters:
- name: product_id
in: path
operations:
- name: update-product
method: PATCH
Retrieves a 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
Retrieves a Canva design by ID, returning title, status, and last edit time.
naftiko: '0.5'
info:
label: Canva Design Asset Lookup
description: Retrieves a Canva design by ID, returning title, status, and last edit time.
tags:
- design
- canva
- creative
capability:
exposes:
- type: mcp
namespace: creative
port: 8080
tools:
- name: get-design
description: Given a Canva design ID, retrieve details. Use for creative asset management.
inputParameters:
- name: design_id
in: body
type: string
description: The Canva design ID.
call: canva.get-design
with:
design_id: '{{design_id}}'
outputParameters:
- name: title
type: string
mapping: $.design.title
- name: status
type: string
mapping: $.design.status
consumes:
- type: http
namespace: canva
baseUri: https://api.canva.com/rest/v1
authentication:
type: bearer
token: $secrets.canva_token
resources:
- name: designs
path: /designs/{{design_id}}
inputParameters:
- name: design_id
in: path
operations:
- name: get-design
method: GET
When a Figma design is approved, creates Jira development stories, links design assets, and notifies the engineering team via Microsoft Teams.
naftiko: '0.5'
info:
label: Product Design to Development Handoff
description: When a Figma design is approved, creates Jira development stories, links design assets, and notifies the engineering team via Microsoft Teams.
tags:
- design
- figma
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: product_design_to_de
port: 8080
tools:
- name: product-design
description: Given an execution date, run the product design to development handoff process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.PRODUCT_DESIGN_TO_DEVELOPMENT_HANDOFF LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.PRODUCT_DESIGN_TO_DEVELOPMENT__RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: Product Design to Development Handoff - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_product_design_to_de_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Routes new Workday job requisitions through approval chains in Snowflake, creates Jira tracking tasks, and notifies approvers via Microsoft Teams.
naftiko: '0.5'
info:
label: Workday Job Requisition Approval Chain
description: Routes new Workday job requisitions through approval chains in Snowflake, creates Jira tracking tasks, and notifies approvers via Microsoft Teams.
tags:
- hr
- recruiting
- workday
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: workday_job_requisit
port: 8080
tools:
- name: workday-job
description: Given an execution date, run the workday job requisition approval chain process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.WORKDAY_JOB_REQUISITION_APPROVAL_CHAIN LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.WORKDAY_JOB_REQUISITION_APPROV_RESULTS SELECT * FROM staging
- name: create-task
type: call
call: jira.create-issue
with:
project: NKOPS
issue_type: Task
summary: Workday Job Requisition Approval Chain - review required
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_workday_job_requisit_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: jira
baseUri: https://nike.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
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
Runs product recommendation models in Databricks, stores predictions in Snowflake, and notifies the data science team via Microsoft Teams.
naftiko: '0.5'
info:
label: Databricks Product Recommendation Pipeline
description: Runs product recommendation models in Databricks, stores predictions in Snowflake, and notifies the data science team via Microsoft Teams.
tags:
- data-science
- databricks
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: databricks_product_r
port: 8080
tools:
- name: databricks-product
description: Given an execution date, run the databricks product recommendation pipeline process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.DATABRICKS_PRODUCT_RECOMMENDATION_PIPELI LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.DATABRICKS_PRODUCT_RECOMMENDAT_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_databricks_product_r_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Looks up a Workday worker profile by employee ID.
naftiko: '0.5'
info:
label: Workday Worker Profile Lookup
description: Looks up a Workday worker profile by employee ID.
tags:
- hr
- workday
- employee-data
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: get-worker-profile
description: Given a Workday employee ID, retrieve the worker profile. Use for HR inquiries.
inputParameters:
- name: worker_id
in: body
type: string
description: The Workday worker ID.
call: workday.get-worker
with:
worker_id: '{{worker_id}}'
outputParameters:
- name: full_name
type: string
mapping: $.worker.fullName
- name: job_title
type: string
mapping: $.worker.jobTitle
consumes:
- type: http
namespace: workday
baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers
path: /nike/workers/{{worker_id}}
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
Aggregates sustainability metrics from SAP in Snowflake, refreshes Power BI ESG dashboards, and distributes to the sustainability team via Microsoft Teams.
naftiko: '0.5'
info:
label: SAP Sustainability Reporting Pipeline
description: Aggregates sustainability metrics from SAP in Snowflake, refreshes Power BI ESG dashboards, and distributes to the sustainability team via Microsoft Teams.
tags:
- sustainability
- sap
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sap_sustainability_r
port: 8080
tools:
- name: sap-sustainability
description: Given an execution date, run the sap sustainability reporting pipeline process. Use for scheduled operations.
inputParameters:
- name: execution_date
in: body
type: string
description: The execution date in YYYY-MM-DD format.
steps:
- name: get-data
type: call
call: snowflake.execute-statement
with:
statement: SELECT * FROM ANALYTICS.SAP_SUSTAINABILITY_REPORTING_PIPELINE LIMIT 100
- name: process-results
type: call
call: snowflake.execute-statement
with:
statement: INSERT INTO ANALYTICS.SAP_SUSTAINABILITY_REPORTING_P_RESULTS SELECT * FROM staging
- name: notify-team
type: call
call: msteams.send-message
with:
channel_id: $secrets.teams_sap_sustainability_r_channel
text: Process complete. Results logged.
consumes:
- type: http
namespace: snowflake
baseUri: https://nike.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: execute-statement
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/$secrets.teams_team_id/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Retrieves Facebook advertising spend and ROAS metrics for a specified ad account and date range.
naftiko: '0.5'
info:
label: Facebook Ads Spend Reporter
description: Retrieves Facebook advertising spend and ROAS metrics for a specified ad account and date range.
tags:
- marketing
- advertising
- facebook
capability:
exposes:
- type: mcp
namespace: paid-media
port: 8080
tools:
- name: get-fb-ad-spend
description: Fetch Facebook ad account spend and ROAS for a date range.
inputParameters:
- name: ad_account_id
in: body
type: string
description: Facebook ad account ID.
- name: start_date
in: body
type: string
description: Start date YYYY-MM-DD.
- name: end_date
in: body
type: string
description: End date YYYY-MM-DD.
call: meta.get-account-insights
with:
ad_account_id: '{{ad_account_id}}'
start_date: '{{start_date}}'
end_date: '{{end_date}}'
outputParameters:
- name: spend
type: string
mapping: $.data[0].spend
- name: roas
type: string
mapping: $.data[0].purchase_roas[0].value
consumes:
- type: http
namespace: meta
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.meta_ads_token
resources:
- name: account-insights
path: /act_{{ad_account_id}}/insights
inputParameters:
- name: ad_account_id
in: path
operations:
- name: get-account-insights
method: GET
Checks order status for a wholesale account.
naftiko: '0.5'
info:
label: Wholesale Account Order Status
description: Checks order status for a wholesale account.
tags:
- sales
- logistics
capability:
exposes:
- type: mcp
namespace: sales
port: 8080
tools:
- name: get-wholesale
description: Checks order status for a wholesale account.
inputParameters:
- name: entity_id
in: body
type: string
description: The wholesale account order status identifier.
call: sales-api.get-data
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: sales-api
baseUri: https://api.under-armour.com/sales/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: wholesale
path: /wholesale/account/order/status/{{entity_id}}
inputParameters:
- name: entity_id
in: path
operations:
- name: get-wholesale
method: GET
Retrieves Instagram ad campaign metrics including impressions, reach, and engagement rate for a specified campaign ID and date range.
naftiko: '0.5'
info:
label: Instagram Campaign Performance Lookup
description: Retrieves Instagram ad campaign metrics including impressions, reach, and engagement rate for a specified campaign ID and date range.
tags:
- marketing
- social-media
- instagram
capability:
exposes:
- type: mcp
namespace: social-analytics
port: 8080
tools:
- name: get-instagram-campaign
description: Fetch performance metrics for a given Instagram campaign.
inputParameters:
- name: campaign_id
in: body
type: string
description: The Instagram/Meta campaign ID.
- name: date_range
in: body
type: string
description: Date range as start,end in YYYY-MM-DD format.
call: meta.get-campaign-insights
with:
campaign_id: '{{campaign_id}}'
date_range: '{{date_range}}'
outputParameters:
- name: impressions
type: number
mapping: $.data[0].impressions
- name: reach
type: number
mapping: $.data[0].reach
- name: engagement_rate
type: string
mapping: $.data[0].engagement_rate
consumes:
- type: http
namespace: meta
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.meta_ads_token
resources:
- name: campaign-insights
path: /{{campaign_id}}/insights
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-campaign-insights
method: GET
Searches for files in Google Drive by name and returns file ID, type, modified date, and sharing status.
naftiko: '0.5'
info:
label: Google Drive File Lookup
description: Searches for files in Google Drive by name and returns file ID, type, modified date, and sharing status.
tags:
- documents
- google-drive
capability:
exposes:
- type: mcp
namespace: drive-search
port: 8080
tools:
- name: search-drive-files
description: Search Google Drive for files by name.
inputParameters:
- name: query
in: body
type: string
description: File name search query.
call: gdrive.search-files
with:
q: name contains '{{query}}'
outputParameters:
- name: files
type: array
mapping: $.files
consumes:
- type: http
namespace: gdrive
baseUri: https://www.googleapis.com/drive/v3
authentication:
type: bearer
token: $secrets.google_drive_token
resources:
- name: files
path: /files
operations:
- name: search-files
method: GET
Retrieves a Salesforce service case by case number, returning status, priority, subject, and contact information.
naftiko: '0.5'
info:
label: Salesforce Case Lookup
description: Retrieves a Salesforce service case by case number, returning status, priority, subject, and contact information.
tags:
- customer-service
- salesforce
capability:
exposes:
- type: mcp
namespace: customer-support
port: 8080
tools:
- name: get-case
description: Look up a Salesforce case by case number.
inputParameters:
- name: case_number
in: body
type: string
description: Salesforce case number.
call: salesforce.get-case
with:
case_number: '{{case_number}}'
outputParameters:
- name: status
type: string
mapping: $.Status
- name: priority
type: string
mapping: $.Priority
- name: subject
type: string
mapping: $.Subject
consumes:
- type: http
namespace: salesforce
baseUri: https://ua.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: cases
path: /sobjects/Case/{{case_number}}
inputParameters:
- name: case_number
in: path
operations:
- name: get-case
method: GET
When a new athlete endorsement is approved in Salesforce, generates the contract in SharePoint, creates a finance line item in SAP, and notifies legal and marketing via Microsoft Teams.
naftiko: '0.5'
info:
label: Athlete Endorsement Contract Workflow
description: When a new athlete endorsement is approved in Salesforce, generates the contract in SharePoint, creates a finance line item in SAP, and notifies legal and marketing via Microsoft Teams.
tags:
- endorsements
- legal
- salesforce
- sharepoint
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: endorsement-ops
port: 8080
tools:
- name: process-endorsement
description: Orchestrate contract generation, finance entry, and team notification for a new athlete endorsement.
inputParameters:
- name: opportunity_id
in: body
type: string
description: Salesforce opportunity ID for the endorsement deal.
steps:
- name: get-deal
type: call
call: salesforce.get-opportunity
with:
opportunity_id: '{{opportunity_id}}'
- name: generate-contract
type: call
call: sharepoint.create-document
with:
site_id: legal_contracts
template: athlete_endorsement
fields:
athlete_name: '{{get-deal.Contact_Name__c}}'
deal_value: '{{get-deal.Amount}}'
term: '{{get-deal.Contract_Term__c}}'
- name: create-cost-center
type: call
call: sap.create-cost-element
with:
cost_center: marketing_endorsements
amount: '{{get-deal.Amount}}'
description: 'Endorsement: {{get-deal.Contact_Name__c}}'
- name: notify-teams
type: call
call: msteams.send-message
with:
channel_id: endorsement-deals
text: 'New endorsement approved: {{get-deal.Contact_Name__c}} for ${{get-deal.Amount}}. Contract: {{generate-contract.url}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://ua.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /sobjects/Opportunity/{{opportunity_id}}
inputParameters:
- name: opportunity_id
in: path
operations:
- name: get-opportunity
method: GET
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: documents
path: /{{site_id}}/drive/root:/{{template}}
inputParameters:
- name: site_id
in: path
- name: template
in: path
operations:
- name: create-document
method: POST
- type: http
namespace: sap
baseUri: https://ua-sap.under-armour.com/sap/opu/odata/sap/API_COSTCENTERACTIVITYTYPE_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: cost-elements
path: /A_CostCenterActivityType
operations:
- name: create-cost-element
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves metadata for a Tableau workbook view including view name, last refresh time, and content URL.
naftiko: '0.5'
info:
label: Tableau Dashboard Lookup
description: Retrieves metadata for a Tableau workbook view including view name, last refresh time, and content URL.
tags:
- analytics
- reporting
- tableau
capability:
exposes:
- type: mcp
namespace: bi-dashboards
port: 8080
tools:
- name: get-tableau-view
description: Fetch Tableau view metadata.
inputParameters:
- name: site_id
in: body
type: string
description: Tableau site ID.
- name: view_id
in: body
type: string
description: Tableau view ID.
call: tableau.get-view
with:
site_id: '{{site_id}}'
view_id: '{{view_id}}'
outputParameters:
- name: name
type: string
mapping: $.view.name
- name: content_url
type: string
mapping: $.view.contentUrl
consumes:
- type: http
namespace: tableau
baseUri: https://ua-tableau.under-armour.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: views
path: /sites/{{site_id}}/views/{{view_id}}
inputParameters:
- name: site_id
in: path
- name: view_id
in: path
operations:
- name: get-view
method: GET
Retrieves on-hand inventory quantities from Oracle E-Business Suite for a given item and organization.
naftiko: '0.5'
info:
label: Oracle EBS Inventory Snapshot
description: Retrieves on-hand inventory quantities from Oracle E-Business Suite for a given item and organization.
tags:
- supply-chain
- inventory
- oracle-e-business-suite
capability:
exposes:
- type: mcp
namespace: inventory-lookup
port: 8080
tools:
- name: get-inventory-onhand
description: Fetch on-hand inventory from Oracle EBS.
inputParameters:
- name: item_number
in: body
type: string
description: Oracle item number.
- name: org_id
in: body
type: string
description: Organization ID.
call: oracle-ebs.get-onhand
with:
item: '{{item_number}}'
org: '{{org_id}}'
outputParameters:
- name: quantity_on_hand
type: number
mapping: $.onhand_quantity
- name: reserved
type: number
mapping: $.reserved_quantity
- name: available
type: number
mapping: $.available_to_promise
consumes:
- type: http
namespace: oracle-ebs
baseUri: https://ua-ebs.under-armour.com/webservices/rest/inventory
authentication:
type: basic
username: $secrets.oracle_ebs_user
password: $secrets.oracle_ebs_password
resources:
- name: onhand
path: /on-hand?item={{item}}&org={{org}}
inputParameters:
- name: item
in: query
- name: org
in: query
operations:
- name: get-onhand
method: GET
Retrieves Salesforce Marketing Cloud email send metrics including delivery rate, open rate, and click-through rate for a given send job.
naftiko: '0.5'
info:
label: Salesforce Marketing Cloud Email Performance
description: Retrieves Salesforce Marketing Cloud email send metrics including delivery rate, open rate, and click-through rate for a given send job.
tags:
- marketing
- email
- salesforce-marketing-cloud
capability:
exposes:
- type: mcp
namespace: sfmc-analytics
port: 8080
tools:
- name: get-email-send-metrics
description: Fetch SFMC email send performance metrics.
inputParameters:
- name: send_id
in: body
type: string
description: SFMC send job ID.
call: sfmc.get-send-summary
with:
send_id: '{{send_id}}'
outputParameters:
- name: delivery_rate
type: string
mapping: $.deliveryRate
- name: open_rate
type: string
mapping: $.uniqueOpenRate
- name: click_rate
type: string
mapping: $.uniqueClickRate
consumes:
- type: http
namespace: sfmc
baseUri: https://ua.rest.marketingcloudapis.com/v1
authentication:
type: bearer
token: $secrets.sfmc_token
resources:
- name: sends
path: /sends/{{send_id}}
inputParameters:
- name: send_id
in: path
operations:
- name: get-send-summary
method: GET
Exports subscriber details from a MailChimp audience list, returning total count, open rate, and click rate.
naftiko: '0.5'
info:
label: MailChimp Subscriber List Export
description: Exports subscriber details from a MailChimp audience list, returning total count, open rate, and click rate.
tags:
- marketing
- email
- mailchimp
capability:
exposes:
- type: mcp
namespace: email-marketing
port: 8080
tools:
- name: get-audience-stats
description: Retrieve MailChimp audience list statistics.
inputParameters:
- name: list_id
in: body
type: string
description: MailChimp audience list ID.
call: mailchimp.get-list
with:
list_id: '{{list_id}}'
outputParameters:
- name: member_count
type: number
mapping: $.stats.member_count
- name: open_rate
type: number
mapping: $.stats.open_rate
- name: click_rate
type: number
mapping: $.stats.click_rate
consumes:
- type: http
namespace: mailchimp
baseUri: https://us1.api.mailchimp.com/3.0
authentication:
type: basic
username: anystring
password: $secrets.mailchimp_api_key
resources:
- name: lists
path: /lists/{{list_id}}
inputParameters:
- name: list_id
in: path
operations:
- name: get-list
method: GET
Retrieves Mastercard settlement data for a date range and reconciles against SAP payment records, logging discrepancies to Google Sheets.
naftiko: '0.5'
info:
label: Mastercard Transaction Reconciliation
description: Retrieves Mastercard settlement data for a date range and reconciles against SAP payment records, logging discrepancies to Google Sheets.
tags:
- finance
- payments
- mastercard
- sap
- google-sheets
capability:
exposes:
- type: mcp
namespace: payment-reconciliation
port: 8080
tools:
- name: reconcile-settlements
description: Compare Mastercard settlements against SAP payments and log discrepancies.
inputParameters:
- name: settlement_date
in: body
type: string
description: Settlement date YYYY-MM-DD.
steps:
- name: get-settlements
type: call
call: mastercard.get-settlements
with:
date: '{{settlement_date}}'
- name: get-sap-payments
type: call
call: sap.get-payment-docs
with:
date: '{{settlement_date}}'
- name: log-discrepancies
type: call
call: gsheets.append-row
with:
spreadsheet_id: ua_reconciliation_log
row:
date: '{{settlement_date}}'
mc_total: '{{get-settlements.total}}'
sap_total: '{{get-sap-payments.total}}'
consumes:
- type: http
namespace: mastercard
baseUri: https://api.mastercard.com/settlement/v1
authentication:
type: bearer
token: $secrets.mastercard_token
resources:
- name: settlements
path: /settlements
operations:
- name: get-settlements
method: GET
- type: http
namespace: sap
baseUri: https://ua-sap.under-armour.com/sap/opu/odata/sap/API_PAYMENT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: payments
path: /A_PaymentDocument
operations:
- name: get-payment-docs
method: GET
- type: http
namespace: gsheets
baseUri: https://sheets.googleapis.com/v4
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: rows
path: /spreadsheets/{{spreadsheet_id}}/values/Sheet1:append
inputParameters:
- name: spreadsheet_id
in: path
operations:
- name: append-row
method: POST
When a SAP inbound delivery is delayed beyond threshold, creates a ServiceNow incident, updates the Salesforce wholesale account with delay notice, and alerts the supply chain team in Microsoft Teams.
naftiko: '0.5'
info:
label: Supply Chain Delay Alert Orchestrator
description: When a SAP inbound delivery is delayed beyond threshold, creates a ServiceNow incident, updates the Salesforce wholesale account with delay notice, and alerts the supply chain team in Microsoft Teams.
tags:
- supply-chain
- alerts
- sap
- servicenow
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: supply-chain-alerts
port: 8080
tools:
- name: handle-delivery-delay
description: Orchestrate delay notifications across ServiceNow, Salesforce, and Teams.
inputParameters:
- name: delivery_id
in: body
type: string
description: SAP inbound delivery document number.
- name: delay_days
in: body
type: number
description: Number of days the delivery is delayed.
steps:
- name: get-delivery
type: call
call: sap.get-inbound-delivery
with:
delivery_id: '{{delivery_id}}'
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: 'Supply chain delay: {{delivery_id}} - {{delay_days}} days'
category: supply_chain
priority: '2'
- name: update-account
type: call
call: salesforce.update-account
with:
account_id: '{{get-delivery.vendor_account_id}}'
delay_notice: Delivery {{delivery_id}} delayed by {{delay_days}} days
- name: alert-team
type: call
call: msteams.send-message
with:
channel_id: supply-chain-ops
text: 'DELAY ALERT: Delivery {{delivery_id}} from {{get-delivery.vendor_name}} is {{delay_days}} days late. Incident: {{create-incident.number}}'
consumes:
- type: http
namespace: sap
baseUri: https://ua-sap.under-armour.com/sap/opu/odata/sap/API_INBOUND_DELIVERY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: deliveries
path: /A_InbDeliveryHeader('{{delivery_id}}')
inputParameters:
- name: delivery_id
in: path
operations:
- name: get-inbound-delivery
method: GET
- type: http
namespace: servicenow
baseUri: https://underarmour.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: incidents
path: /table/incident
operations:
- name: create-incident
method: POST
- type: http
namespace: salesforce
baseUri: https://ua.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: accounts
path: /sobjects/Account/{{account_id}}
inputParameters:
- name: account_id
in: path
operations:
- name: update-account
method: PATCH
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Orchestrates athletic apparel workflow 2 by coordinating across systems, validating data, and sending notifications.
naftiko: '0.5'
info:
label: Athletic Apparel Workflow 2
description: Orchestrates athletic apparel workflow 2 by coordinating across systems, validating data, and sending notifications.
tags:
- athletic
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: athletic
port: 8080
tools:
- name: run-athletic-apparel-workflow-002
description: Orchestrates athletic apparel workflow 2 by coordinating across systems, validating data, and sending notifications.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Athletic Apparel Workflow 2 for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
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
When a customer initiates a return on BigCommerce, validates the order, creates a return authorization in SAP, triggers a refund via Square, and sends a return label email through MailChimp.
naftiko: '0.5'
info:
label: Return Processing Orchestrator
description: When a customer initiates a return on BigCommerce, validates the order, creates a return authorization in SAP, triggers a refund via Square, and sends a return label email through MailChimp.
tags:
- e-commerce
- returns
- bigcommerce
- sap
- square
- mailchimp
capability:
exposes:
- type: mcp
namespace: returns-processing
port: 8080
tools:
- name: process-return
description: Orchestrate return authorization, refund, and customer communication.
inputParameters:
- name: order_id
in: body
type: string
description: BigCommerce order ID.
- name: reason
in: body
type: string
description: Return reason code.
steps:
- name: get-order
type: call
call: bigcommerce.get-order
with:
order_id: '{{order_id}}'
- name: create-return
type: call
call: sap.create-return-order
with:
order_ref: '{{get-order.id}}'
reason: '{{reason}}'
items: '{{get-order.line_items}}'
- name: issue-refund
type: call
call: square.create-refund
with:
payment_id: '{{get-order.payment_id}}'
amount: '{{get-order.total}}'
- name: send-label
type: call
call: mailchimp.send-transactional
with:
email: '{{get-order.customer_email}}'
template: return_label
merge_vars:
return_auth: '{{create-return.return_number}}'
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/ua-store/v2
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: orders
path: /orders/{{order_id}}
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: sap
baseUri: https://ua-sap.under-armour.com/sap/opu/odata/sap/API_RETURNS_DELIVERY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: returns
path: /A_ReturnsDeliveryHeader
operations:
- name: create-return-order
method: POST
- type: http
namespace: square
baseUri: https://connect.squareup.com/v2
authentication:
type: bearer
token: $secrets.square_token
resources:
- name: refunds
path: /refunds
operations:
- name: create-refund
method: POST
- type: http
namespace: mailchimp
baseUri: https://mandrillapp.com/api/1.0
authentication:
type: bearer
token: $secrets.mailchimp_transactional_key
resources:
- name: messages
path: /messages/send-template
operations:
- name: send-transactional
method: POST
When a new wholesale lead is created in Salesforce, enriches it with ZoomInfo firmographic data and creates an opportunity with projected revenue, then notifies the sales team via Microsoft Teams.
naftiko: '0.5'
info:
label: Salesforce Lead to Wholesale Opportunity
description: When a new wholesale lead is created in Salesforce, enriches it with ZoomInfo firmographic data and creates an opportunity with projected revenue, then notifies the sales team via Microsoft Teams.
tags:
- sales
- wholesale
- salesforce
- zoominfo
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: wholesale-pipeline
port: 8080
tools:
- name: qualify-wholesale-lead
description: Enrich a Salesforce lead with ZoomInfo data, create an opportunity, and notify the sales team.
inputParameters:
- name: lead_id
in: body
type: string
description: The Salesforce lead ID.
steps:
- name: get-lead
type: call
call: salesforce.get-lead
with:
lead_id: '{{lead_id}}'
- name: enrich-lead
type: call
call: zoominfo.enrich-company
with:
company_name: '{{get-lead.Company}}'
domain: '{{get-lead.Website}}'
- name: create-opportunity
type: call
call: salesforce.create-opportunity
with:
name: Wholesale - {{get-lead.Company}}
account_id: '{{get-lead.ConvertedAccountId}}'
amount: '{{enrich-lead.estimated_revenue}}'
stage: Qualification
- name: notify-sales
type: call
call: msteams.send-message
with:
channel_id: wholesale-leads
text: 'New wholesale opportunity: {{get-lead.Company}} (est. ${{enrich-lead.estimated_revenue}}). Opp ID: {{create-opportunity.id}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://ua.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: leads
path: /sobjects/Lead/{{lead_id}}
inputParameters:
- name: lead_id
in: path
operations:
- name: get-lead
method: GET
- name: opportunities
path: /sobjects/Opportunity
operations:
- name: create-opportunity
method: POST
- type: http
namespace: zoominfo
baseUri: https://api.zoominfo.com
authentication:
type: bearer
token: $secrets.zoominfo_token
resources:
- name: enrich
path: /enrich/company
operations:
- name: enrich-company
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves athletic apparel operational data for workflow 3.
naftiko: '0.5'
info:
label: Athletic Apparel Data Query 3
description: Retrieves athletic apparel operational data for workflow 3.
tags:
- athletic
- operations
capability:
exposes:
- type: mcp
namespace: athletic
port: 8080
tools:
- name: get-data-3
description: Query athletic apparel data for workflow 3.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
call: athletic-api.get-data
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: athletic-api
baseUri: https://api.under-armour.com/athletic-apparel/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: data
path: /data/{{entity_id}}
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-3
method: GET
Retrieves athletic apparel operational data for workflow 15.
naftiko: '0.5'
info:
label: Athletic Apparel Data Query 15
description: Retrieves athletic apparel operational data for workflow 15.
tags:
- athletic
- operations
capability:
exposes:
- type: mcp
namespace: athletic
port: 8080
tools:
- name: get-data-15
description: Query athletic apparel data for workflow 15.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
call: athletic-api.get-data
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: athletic-api
baseUri: https://api.under-armour.com/athletic-apparel/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: data
path: /data/{{entity_id}}
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-15
method: GET
Orchestrates athletic apparel workflow 1 by coordinating across systems, validating data, and sending notifications.
naftiko: '0.5'
info:
label: Athletic Apparel Workflow 1
description: Orchestrates athletic apparel workflow 1 by coordinating across systems, validating data, and sending notifications.
tags:
- athletic
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: athletic
port: 8080
tools:
- name: run-athletic-apparel-workflow-001
description: Orchestrates athletic apparel workflow 1 by coordinating across systems, validating data, and sending notifications.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Athletic Apparel Workflow 1 for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
Synchronizes athlete activity data from the Under Armour connected fitness platform into Salesforce for personalized marketing, updates user segments in HubSpot, and triggers targeted MailChimp campaigns.
naftiko: '0.5'
info:
label: Connected Fitness Data Sync Orchestrator
description: Synchronizes athlete activity data from the Under Armour connected fitness platform into Salesforce for personalized marketing, updates user segments in HubSpot, and triggers targeted MailChimp campaigns.
tags:
- dtc
- connected-fitness
- salesforce
- hubspot
- mailchimp
capability:
exposes:
- type: mcp
namespace: fitness-marketing
port: 8080
tools:
- name: sync-fitness-segments
description: Sync connected fitness activity data to Salesforce and HubSpot, and trigger targeted email.
inputParameters:
- name: segment_type
in: body
type: string
description: Activity segment (e.g., 'high_activity_runners').
- name: period_days
in: body
type: number
description: Lookback period in days.
steps:
- name: get-segment-users
type: call
call: salesforce.query-contacts
with:
query: SELECT Id, Email FROM Contact WHERE Fitness_Segment__c = '{{segment_type}}'
- name: update-hubspot-list
type: call
call: hubspot.update-list
with:
list_id: fitness_{{segment_type}}
emails: '{{get-segment-users.records}}'
- name: trigger-campaign
type: call
call: mailchimp.send-campaign
with:
list_id: fitness_segments
segment_id: '{{segment_type}}'
template: fitness_engagement_{{segment_type}}
consumes:
- type: http
namespace: salesforce
baseUri: https://ua.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: query
path: /query
operations:
- name: query-contacts
method: GET
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com/contacts/v1
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: lists
path: /lists/{{list_id}}/add
inputParameters:
- name: list_id
in: path
operations:
- name: update-list
method: POST
- type: http
namespace: mailchimp
baseUri: https://us1.api.mailchimp.com/3.0
authentication:
type: basic
username: anystring
password: $secrets.mailchimp_api_key
resources:
- name: campaigns
path: /campaigns
operations:
- name: send-campaign
method: POST
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
Fetches recent Twitter mentions of the Under Armour brand, runs sentiment analysis, and logs results to Google Sheets for social media team review.
naftiko: '0.5'
info:
label: Twitter Mention Sentiment Tracker
description: Fetches recent Twitter mentions of the Under Armour brand, runs sentiment analysis, and logs results to Google Sheets for social media team review.
tags:
- marketing
- social-media
- twitter
- google-sheets
capability:
exposes:
- type: mcp
namespace: social-listening
port: 8080
tools:
- name: track-brand-mentions
description: Pull Twitter mentions and log sentiment analysis results to Google Sheets.
inputParameters:
- name: query
in: body
type: string
description: Search query (e.g., '@UnderArmour').
- name: since_date
in: body
type: string
description: Start date in YYYY-MM-DD format.
steps:
- name: search-tweets
type: call
call: twitter.search-recent
with:
query: '{{query}}'
start_time: '{{since_date}}T00:00:00Z'
- name: log-results
type: call
call: gsheets.append-row
with:
spreadsheet_id: ua_social_mentions
row:
query: '{{query}}'
tweet_count: '{{search-tweets.meta.result_count}}'
date: '{{since_date}}'
consumes:
- type: http
namespace: twitter
baseUri: https://api.twitter.com/2
authentication:
type: bearer
token: $secrets.twitter_bearer_token
resources:
- name: tweets-search
path: /tweets/search/recent
operations:
- name: search-recent
method: GET
- type: http
namespace: gsheets
baseUri: https://sheets.googleapis.com/v4
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: rows
path: /spreadsheets/{{spreadsheet_id}}/values/Sheet1:append
inputParameters:
- name: spreadsheet_id
in: path
operations:
- name: append-row
method: POST
Orchestrates athletic apparel workflow 14 by coordinating across systems, validating data, and sending notifications.
naftiko: '0.5'
info:
label: Athletic Apparel Workflow 14
description: Orchestrates athletic apparel workflow 14 by coordinating across systems, validating data, and sending notifications.
tags:
- athletic
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: athletic
port: 8080
tools:
- name: run-athletic-apparel-workflow-014
description: Orchestrates athletic apparel workflow 14 by coordinating across systems, validating data, and sending notifications.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Athletic Apparel Workflow 14 for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
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
When a wholesale order is confirmed in Salesforce, creates a sales order in SAP, generates an invoice, and emails it to the buyer via Microsoft Outlook.
naftiko: '0.5'
info:
label: Wholesale Order to Invoice Orchestrator
description: When a wholesale order is confirmed in Salesforce, creates a sales order in SAP, generates an invoice, and emails it to the buyer via Microsoft Outlook.
tags:
- wholesale
- finance
- salesforce
- sap
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: wholesale-billing
port: 8080
tools:
- name: process-wholesale-invoice
description: Create SAP sales order and invoice from a confirmed Salesforce wholesale order.
inputParameters:
- name: opportunity_id
in: body
type: string
description: Salesforce opportunity ID.
steps:
- name: get-opportunity
type: call
call: salesforce.get-opportunity
with:
opportunity_id: '{{opportunity_id}}'
- name: create-sales-order
type: call
call: sap.create-sales-order
with:
customer: '{{get-opportunity.Account.Name}}'
items: '{{get-opportunity.OpportunityLineItems}}'
total: '{{get-opportunity.Amount}}'
- name: create-invoice
type: call
call: sap.create-invoice
with:
sales_order: '{{create-sales-order.order_number}}'
- name: email-invoice
type: call
call: outlook.send-mail
with:
to: '{{get-opportunity.Contact_Email__c}}'
subject: Under Armour Invoice {{create-invoice.invoice_number}}
body: Please find your invoice for order {{create-sales-order.order_number}}.
attachment_url: '{{create-invoice.pdf_url}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://ua.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: opportunities
path: /sobjects/Opportunity/{{opportunity_id}}
inputParameters:
- name: opportunity_id
in: path
operations:
- name: get-opportunity
method: GET
- type: http
namespace: sap
baseUri: https://ua-sap.under-armour.com/sap/opu/odata/sap/API_SALES_ORDER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: sales-orders
path: /A_SalesOrder
operations:
- name: create-sales-order
method: POST
- name: invoices
path: /A_BillingDocument
operations:
- name: create-invoice
method: POST
- type: http
namespace: outlook
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: mail
path: /me/sendMail
operations:
- name: send-mail
method: POST
Orchestrates end-of-season closeout by pulling aging inventory from SAP, creating clearance promotions on BigCommerce, updating Shopify sale prices, and reporting results to the merchandising team in Google Sheets.
naftiko: '0.5'
info:
label: End of Season Closeout Orchestrator
description: Orchestrates end-of-season closeout by pulling aging inventory from SAP, creating clearance promotions on BigCommerce, updating Shopify sale prices, and reporting results to the merchandising team in Google Sheets.
tags:
- merchandising
- e-commerce
- sap
- bigcommerce
- shopify
- google-sheets
capability:
exposes:
- type: mcp
namespace: closeout-ops
port: 8080
tools:
- name: execute-closeout
description: Run end-of-season closeout across DTC channels and report.
inputParameters:
- name: season_code
in: body
type: string
description: SAP season code (e.g., 'FW24').
- name: clearance_pct
in: body
type: number
description: Clearance discount percentage.
steps:
- name: get-aging-inventory
type: call
call: sap.get-aging-stock
with:
season: '{{season_code}}'
- name: create-bc-promotions
type: call
call: bigcommerce.create-promotion
with:
name: '{{season_code}} Closeout'
discount_pct: '{{clearance_pct}}'
product_ids: '{{get-aging-inventory.product_ids}}'
- name: update-shopify-prices
type: call
call: shopify.bulk-price-update
with:
items: '{{get-aging-inventory.items}}'
discount_pct: '{{clearance_pct}}'
- name: log-report
type: call
call: gsheets.append-row
with:
spreadsheet_id: ua_closeout_tracker
row:
season: '{{season_code}}'
items_count: '{{get-aging-inventory.total_items}}'
clearance_pct: '{{clearance_pct}}'
consumes:
- type: http
namespace: sap
baseUri: https://ua-sap.under-armour.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: aging-stock
path: /A_MatlStkInAcctMod
operations:
- name: get-aging-stock
method: GET
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/ua-store/v3
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: promotions
path: /promotions
operations:
- name: create-promotion
method: POST
- type: http
namespace: shopify
baseUri: https://under-armour.myshopify.com/admin/api/2024-01
authentication:
type: bearer
token: $secrets.shopify_token
resources:
- name: products
path: /products.json
operations:
- name: bulk-price-update
method: PUT
- type: http
namespace: gsheets
baseUri: https://sheets.googleapis.com/v4
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: rows
path: /spreadsheets/{{spreadsheet_id}}/values/Sheet1:append
inputParameters:
- name: spreadsheet_id
in: path
operations:
- name: append-row
method: POST
Orchestrates athletic apparel workflow 10 by coordinating across systems, validating data, and sending notifications.
naftiko: '0.5'
info:
label: Athletic Apparel Workflow 10
description: Orchestrates athletic apparel workflow 10 by coordinating across systems, validating data, and sending notifications.
tags:
- athletic
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: athletic
port: 8080
tools:
- name: run-athletic-apparel-workflow-010
description: Orchestrates athletic apparel workflow 10 by coordinating across systems, validating data, and sending notifications.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Athletic Apparel Workflow 10 for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
Orchestrates athletic apparel workflow 4 by coordinating across systems, validating data, and sending notifications.
naftiko: '0.5'
info:
label: Athletic Apparel Workflow 4
description: Orchestrates athletic apparel workflow 4 by coordinating across systems, validating data, and sending notifications.
tags:
- athletic
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: athletic
port: 8080
tools:
- name: run-athletic-apparel-workflow-004
description: Orchestrates athletic apparel workflow 4 by coordinating across systems, validating data, and sending notifications.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Athletic Apparel Workflow 4 for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
Retrieves search performance data from Google Search Console for the UA.com property including clicks, impressions, and average position.
naftiko: '0.5'
info:
label: Google Search Console Performance Lookup
description: Retrieves search performance data from Google Search Console for the UA.com property including clicks, impressions, and average position.
tags:
- seo
- analytics
- google-search-console
capability:
exposes:
- type: mcp
namespace: seo-analytics
port: 8080
tools:
- name: get-search-performance
description: Fetch Google Search Console performance data.
inputParameters:
- name: site_url
in: body
type: string
description: The site URL property in GSC.
- name: start_date
in: body
type: string
description: Start date YYYY-MM-DD.
- name: end_date
in: body
type: string
description: End date YYYY-MM-DD.
call: gsc.query-analytics
with:
site_url: '{{site_url}}'
start_date: '{{start_date}}'
end_date: '{{end_date}}'
outputParameters:
- name: clicks
type: number
mapping: $.rows[0].clicks
- name: impressions
type: number
mapping: $.rows[0].impressions
- name: avg_position
type: number
mapping: $.rows[0].position
consumes:
- type: http
namespace: gsc
baseUri: https://www.googleapis.com/webmasters/v3
authentication:
type: bearer
token: $secrets.google_search_console_token
resources:
- name: analytics
path: /sites/{{site_url}}/searchAnalytics/query
inputParameters:
- name: site_url
in: path
operations:
- name: query-analytics
method: POST
Retrieves status of an athlete endorsement deal.
naftiko: '0.5'
info:
label: Athlete Endorsement Status
description: Retrieves status of an athlete endorsement deal.
tags:
- marketing
- legal
capability:
exposes:
- type: mcp
namespace: marketing
port: 8080
tools:
- name: get-athlete
description: Retrieves status of an athlete endorsement deal.
inputParameters:
- name: entity_id
in: body
type: string
description: The athlete endorsement status identifier.
call: marketing-api.get-data
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: marketing-api
baseUri: https://api.under-armour.com/marketing/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: athlete
path: /athlete/endorsement/status/{{entity_id}}
inputParameters:
- name: entity_id
in: path
operations:
- name: get-athlete
method: GET
Retrieves 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
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
Orchestrates athletic apparel workflow 5 by coordinating across systems, validating data, and sending notifications.
naftiko: '0.5'
info:
label: Athletic Apparel Workflow 5
description: Orchestrates athletic apparel workflow 5 by coordinating across systems, validating data, and sending notifications.
tags:
- athletic
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: athletic
port: 8080
tools:
- name: run-athletic-apparel-workflow-005
description: Orchestrates athletic apparel workflow 5 by coordinating across systems, validating data, and sending notifications.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Athletic Apparel Workflow 5 for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
Orchestrates athletic apparel workflow 11 by coordinating across systems, validating data, and sending notifications.
naftiko: '0.5'
info:
label: Athletic Apparel Workflow 11
description: Orchestrates athletic apparel workflow 11 by coordinating across systems, validating data, and sending notifications.
tags:
- athletic
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: athletic
port: 8080
tools:
- name: run-athletic-apparel-workflow-011
description: Orchestrates athletic apparel workflow 11 by coordinating across systems, validating data, and sending notifications.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Athletic Apparel Workflow 11 for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
Orchestrates athletic apparel workflow 7 by coordinating across systems, validating data, and sending notifications.
naftiko: '0.5'
info:
label: Athletic Apparel Workflow 7
description: Orchestrates athletic apparel workflow 7 by coordinating across systems, validating data, and sending notifications.
tags:
- athletic
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: athletic
port: 8080
tools:
- name: run-athletic-apparel-workflow-007
description: Orchestrates athletic apparel workflow 7 by coordinating across systems, validating data, and sending notifications.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Athletic Apparel Workflow 7 for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
Orchestrates athletic apparel workflow 13 by coordinating across systems, validating data, and sending notifications.
naftiko: '0.5'
info:
label: Athletic Apparel Workflow 13
description: Orchestrates athletic apparel workflow 13 by coordinating across systems, validating data, and sending notifications.
tags:
- athletic
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: athletic
port: 8080
tools:
- name: run-athletic-apparel-workflow-013
description: Orchestrates athletic apparel workflow 13 by coordinating across systems, validating data, and sending notifications.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Athletic Apparel Workflow 13 for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
When a customer reaches a spending threshold in Salesforce, upgrades their loyalty tier, sends a congratulations email via MailChimp, and creates a personalized discount code in Shopify.
naftiko: '0.5'
info:
label: Customer Loyalty Tier Upgrade Orchestrator
description: When a customer reaches a spending threshold in Salesforce, upgrades their loyalty tier, sends a congratulations email via MailChimp, and creates a personalized discount code in Shopify.
tags:
- dtc
- loyalty
- salesforce
- mailchimp
- shopify
capability:
exposes:
- type: mcp
namespace: loyalty-ops
port: 8080
tools:
- name: upgrade-loyalty-tier
description: Upgrade customer loyalty tier and trigger rewards.
inputParameters:
- name: contact_id
in: body
type: string
description: Salesforce contact ID.
- name: new_tier
in: body
type: string
description: New loyalty tier name.
steps:
- name: get-contact
type: call
call: salesforce.get-contact
with:
contact_id: '{{contact_id}}'
- name: update-tier
type: call
call: salesforce.update-contact
with:
contact_id: '{{contact_id}}'
loyalty_tier: '{{new_tier}}'
- name: create-discount
type: call
call: shopify.create-price-rule
with:
title: LOYALTY_{{new_tier}}_{{contact_id}}
value: '-15'
target_type: line_item
- name: send-congrats
type: call
call: mailchimp.send-transactional
with:
email: '{{get-contact.Email}}'
template: loyalty_upgrade
merge_vars:
first_name: '{{get-contact.FirstName}}'
new_tier: '{{new_tier}}'
discount_code: '{{create-discount.code}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://ua.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: contacts
path: /sobjects/Contact/{{contact_id}}
inputParameters:
- name: contact_id
in: path
operations:
- name: get-contact
method: GET
- name: update-contact
method: PATCH
- type: http
namespace: shopify
baseUri: https://under-armour.myshopify.com/admin/api/2024-01
authentication:
type: bearer
token: $secrets.shopify_token
resources:
- name: price-rules
path: /price_rules.json
operations:
- name: create-price-rule
method: POST
- type: http
namespace: mailchimp
baseUri: https://mandrillapp.com/api/1.0
authentication:
type: bearer
token: $secrets.mailchimp_transactional_key
resources:
- name: messages
path: /messages/send-template
operations:
- name: send-transactional
method: POST
Applies seasonal markdowns by reading pricing rules from SAP, updating prices on BigCommerce and Shopify storefronts, and logging the change in Microsoft Excel via SharePoint.
naftiko: '0.5'
info:
label: Seasonal Markdown Orchestrator
description: Applies seasonal markdowns by reading pricing rules from SAP, updating prices on BigCommerce and Shopify storefronts, and logging the change in Microsoft Excel via SharePoint.
tags:
- pricing
- e-commerce
- sap
- bigcommerce
- shopify
- sharepoint
capability:
exposes:
- type: mcp
namespace: pricing-ops
port: 8080
tools:
- name: apply-seasonal-markdown
description: Apply a markdown across DTC channels for a given product category.
inputParameters:
- name: category_id
in: body
type: string
description: SAP product category identifier.
- name: markdown_pct
in: body
type: number
description: Markdown percentage to apply.
steps:
- name: get-pricing-rules
type: call
call: sap.get-pricing-conditions
with:
category: '{{category_id}}'
- name: update-bigcommerce
type: call
call: bigcommerce.bulk-price-update
with:
items: '{{get-pricing-rules.items}}'
discount_pct: '{{markdown_pct}}'
- name: update-shopify
type: call
call: shopify.bulk-price-update
with:
items: '{{get-pricing-rules.items}}'
discount_pct: '{{markdown_pct}}'
- name: log-change
type: call
call: sharepoint.append-row
with:
site_id: pricing_ops
workbook: MarkdownLog.xlsx
row:
category: '{{category_id}}'
markdown: '{{markdown_pct}}'
items_count: '{{get-pricing-rules.total_items}}'
consumes:
- type: http
namespace: sap
baseUri: https://ua-sap.under-armour.com/sap/opu/odata/sap/API_SLSPRICINGCONDITIONRECORD_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: conditions
path: /A_SlsPrcgCndnRecdValidity
operations:
- name: get-pricing-conditions
method: GET
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/ua-store/v3
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: pricing
path: /catalog/products
operations:
- name: bulk-price-update
method: PUT
- type: http
namespace: shopify
baseUri: https://under-armour.myshopify.com/admin/api/2024-01
authentication:
type: bearer
token: $secrets.shopify_token
resources:
- name: products
path: /products.json
operations:
- name: bulk-price-update
method: PUT
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: workbook-rows
path: /{{site_id}}/drive/root:/{{workbook}}:/workbook/tables/Table1/rows
inputParameters:
- name: site_id
in: path
- name: workbook
in: path
operations:
- name: append-row
method: POST
Retrieves athletic apparel operational data for workflow 12.
naftiko: '0.5'
info:
label: Athletic Apparel Data Query 12
description: Retrieves athletic apparel operational data for workflow 12.
tags:
- athletic
- operations
capability:
exposes:
- type: mcp
namespace: athletic
port: 8080
tools:
- name: get-data-12
description: Query athletic apparel data for workflow 12.
inputParameters:
- name: entity_id
in: body
type: string
description: The entity identifier.
call: athletic-api.get-data
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: athletic-api
baseUri: https://api.under-armour.com/athletic-apparel/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: data
path: /data/{{entity_id}}
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-12
method: GET
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
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
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
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
Orchestrates athletic apparel workflow 8 by coordinating across systems, validating data, and sending notifications.
naftiko: '0.5'
info:
label: Athletic Apparel Workflow 8
description: Orchestrates athletic apparel workflow 8 by coordinating across systems, validating data, and sending notifications.
tags:
- athletic
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: athletic
port: 8080
tools:
- name: run-athletic-apparel-workflow-008
description: Orchestrates athletic apparel workflow 8 by coordinating across systems, validating data, and sending notifications.
inputParameters:
- name: request_id
in: body
type: string
description: The unique request identifier.
steps:
- name: step-1
type: call
call: primary-api.initiate
with:
request_id: '{{request_id}}'
- name: step-2
type: call
call: secondary-api.process
with:
request_id: '{{request_id}}'
data: '{{step-1.result}}'
- name: notify
type: call
call: notification-api.send
with:
channel: operations
message: Completed Athletic Apparel Workflow 8 for request {{request_id}}.
consumes:
- type: http
namespace: primary-api
baseUri: https://api.under-armour.com/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: primary
path: /process
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: https://api.under-armour.com/v2
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: secondary
path: /execute
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /teams/notifications
operations:
- name: send
method: POST
Retrieves active problems from Dynatrace for the Under Armour e-commerce environment, returning problem ID, title, impact, and root cause.
naftiko: '0.5'
info:
label: Dynatrace Problem Detection Lookup
description: Retrieves active problems from Dynatrace for the Under Armour e-commerce environment, returning problem ID, title, impact, and root cause.
tags:
- monitoring
- e-commerce
- dynatrace
capability:
exposes:
- type: mcp
namespace: observability
port: 8080
tools:
- name: get-active-problems
description: Fetch active Dynatrace problems.
inputParameters:
- name: time_range
in: body
type: string
description: Time range (e.g., 'last2hours').
call: dynatrace.get-problems
with:
relativeTime: '{{time_range}}'
outputParameters:
- name: total_count
type: number
mapping: $.totalCount
- name: problems
type: array
mapping: $.problems
consumes:
- type: http
namespace: dynatrace
baseUri: https://ua.live.dynatrace.com/api/v2
authentication:
type: bearer
token: $secrets.dynatrace_token
resources:
- name: problems
path: /problems
operations:
- name: get-problems
method: GET
Checks SAP inventory levels against reorder points, creates purchase requisitions for low-stock items, and notifies procurement via Microsoft Teams.
naftiko: '0.5'
info:
label: Inventory Reorder Point Orchestrator
description: Checks SAP inventory levels against reorder points, creates purchase requisitions for low-stock items, and notifies procurement via Microsoft Teams.
tags:
- supply-chain
- inventory
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: inventory-replenishment
port: 8080
tools:
- name: check-and-reorder
description: Check inventory levels and create purchase requisitions for items below reorder point.
inputParameters:
- name: plant_id
in: body
type: string
description: SAP plant ID.
- name: material_group
in: body
type: string
description: Material group to check.
steps:
- name: check-levels
type: call
call: sap.get-inventory-levels
with:
plant: '{{plant_id}}'
material_group: '{{material_group}}'
- name: create-requisition
type: call
call: sap.create-purchase-requisition
with:
items: '{{check-levels.below_reorder_items}}'
plant: '{{plant_id}}'
- name: notify-procurement
type: call
call: msteams.send-message
with:
channel_id: procurement-alerts
text: 'Reorder triggered for {{check-levels.below_reorder_count}} items in plant {{plant_id}}. PR: {{create-requisition.pr_number}}'
consumes:
- type: http
namespace: sap
baseUri: https://ua-sap.under-armour.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: stock
path: /A_MatlStkInAcctMod
operations:
- name: get-inventory-levels
method: GET
- name: requisitions
path: /A_PurchaseRequisition
operations:
- name: create-purchase-requisition
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
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
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
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
Checks size availability for a product across channels.
naftiko: '0.5'
info:
label: Product Size Availability
description: Checks size availability for a product across channels.
tags:
- inventory
- product-management
capability:
exposes:
- type: mcp
namespace: inventory
port: 8080
tools:
- name: get-product
description: Checks size availability for a product across channels.
inputParameters:
- name: entity_id
in: body
type: string
description: The product size availability identifier.
call: inventory-api.get-data
with:
entity_id: '{{entity_id}}'
consumes:
- type: http
namespace: inventory-api
baseUri: https://api.under-armour.com/inventory/v1
authentication:
type: bearer
token: $secrets.under_armour_api_token
resources:
- name: product
path: /product/size/availability/{{entity_id}}
inputParameters:
- name: entity_id
in: path
operations:
- name: get-product
method: GET
Retrieves YouTube channel analytics for Under Armour's brand channel, including views, subscribers gained, and watch time.
naftiko: '0.5'
info:
label: YouTube Channel Analytics Lookup
description: Retrieves YouTube channel analytics for Under Armour's brand channel, including views, subscribers gained, and watch time.
tags:
- marketing
- video
- youtube
capability:
exposes:
- type: mcp
namespace: video-analytics
port: 8080
tools:
- name: get-channel-analytics
description: Fetch YouTube channel analytics for a given date range.
inputParameters:
- name: channel_id
in: body
type: string
description: YouTube channel ID.
- name: start_date
in: body
type: string
description: Start date YYYY-MM-DD.
- name: end_date
in: body
type: string
description: End date YYYY-MM-DD.
call: youtube.get-analytics
with:
channel_id: '{{channel_id}}'
start_date: '{{start_date}}'
end_date: '{{end_date}}'
outputParameters:
- name: views
type: number
mapping: $.rows[0][0]
- name: subscribers_gained
type: number
mapping: $.rows[0][1]
consumes:
- type: http
namespace: youtube
baseUri: https://youtubeanalytics.googleapis.com/v2
authentication:
type: bearer
token: $secrets.youtube_token
resources:
- name: reports
path: /reports
operations:
- name: get-analytics
method: GET
Initiates a stock transfer between Under Armour warehouses by creating a transfer order in SAP, updating Oracle EBS inventory at both locations, and notifying logistics via Microsoft Teams.
naftiko: '0.5'
info:
label: Warehouse Transfer Orchestrator
description: Initiates a stock transfer between Under Armour warehouses by creating a transfer order in SAP, updating Oracle EBS inventory at both locations, and notifying logistics via Microsoft Teams.
tags:
- supply-chain
- logistics
- sap
- oracle-e-business-suite
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: warehouse-ops
port: 8080
tools:
- name: initiate-transfer
description: Create an inter-warehouse stock transfer with notifications.
inputParameters:
- name: material_id
in: body
type: string
description: SAP material number.
- name: from_plant
in: body
type: string
description: Source warehouse/plant ID.
- name: to_plant
in: body
type: string
description: Destination warehouse/plant ID.
- name: quantity
in: body
type: number
description: Quantity to transfer.
steps:
- name: create-transfer
type: call
call: sap.create-stock-transfer
with:
material: '{{material_id}}'
from_plant: '{{from_plant}}'
to_plant: '{{to_plant}}'
quantity: '{{quantity}}'
- name: update-source
type: call
call: oracle-ebs.adjust-inventory
with:
item: '{{material_id}}'
org: '{{from_plant}}'
adjustment: -{{quantity}}
- name: update-destination
type: call
call: oracle-ebs.adjust-inventory
with:
item: '{{material_id}}'
org: '{{to_plant}}'
adjustment: +{{quantity}}
- name: notify-logistics
type: call
call: msteams.send-message
with:
channel_id: logistics-ops
text: 'Stock transfer {{create-transfer.transfer_number}}: {{quantity}} units of {{material_id}} from {{from_plant}} to {{to_plant}}.'
consumes:
- type: http
namespace: sap
baseUri: https://ua-sap.under-armour.com/sap/opu/odata/sap/API_STOCK_TRANSFER_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: transfers
path: /A_StockTransfer
operations:
- name: create-stock-transfer
method: POST
- type: http
namespace: oracle-ebs
baseUri: https://ua-ebs.under-armour.com/webservices/rest/inventory
authentication:
type: basic
username: $secrets.oracle_ebs_user
password: $secrets.oracle_ebs_password
resources:
- name: adjustments
path: /adjustments
operations:
- name: adjust-inventory
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/{{team_id}}/channels/{{channel_id}}/messages
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves Google Analytics session and conversion data for a given date range and campaign, returning pageviews, bounce rate, and goal completions for DTC performance reviews.
naftiko: '0.5'
info:
label: Google Analytics Session Lookup
description: Retrieves Google Analytics session and conversion data for a given date range and campaign, returning pageviews, bounce rate, and goal completions for DTC performance reviews.
tags:
- analytics
- dtc
- google-analytics
capability:
exposes:
- type: mcp
namespace: analytics-reporting
port: 8080
tools:
- name: get-campaign-metrics
description: Retrieve GA session data for a specific campaign and date range.
inputParameters:
- name: campaign_name
in: body
type: string
description: The UTM campaign name to filter on.
- name: start_date
in: body
type: string
description: Start date in YYYY-MM-DD format.
- name: end_date
in: body
type: string
description: End date in YYYY-MM-DD format.
call: ga.get-report
with:
campaign: '{{campaign_name}}'
start_date: '{{start_date}}'
end_date: '{{end_date}}'
outputParameters:
- name: sessions
type: number
mapping: $.rows[0].sessions
- name: bounce_rate
type: string
mapping: $.rows[0].bounceRate
- name: conversions
type: number
mapping: $.rows[0].goalCompletionsAll
consumes:
- type: http
namespace: ga
baseUri: https://analyticsdata.googleapis.com/v1beta
authentication:
type: bearer
token: $secrets.google_analytics_token
resources:
- name: reports
path: /properties/{{property_id}}:runReport
inputParameters:
- name: property_id
in: path
operations:
- name: get-report
method: POST
When a new order is placed on BigCommerce, creates a fulfillment record in SAP, updates inventory in Oracle E-Business Suite, and sends a shipping confirmation via MailChimp to the customer.
naftiko: '0.5'
info:
label: DTC Order Fulfillment Orchestrator
description: When a new order is placed on BigCommerce, creates a fulfillment record in SAP, updates inventory in Oracle E-Business Suite, and sends a shipping confirmation via MailChimp to the customer.
tags:
- e-commerce
- fulfillment
- bigcommerce
- sap
- oracle-e-business-suite
- mailchimp
capability:
exposes:
- type: mcp
namespace: dtc-fulfillment
port: 8080
tools:
- name: process-dtc-order
description: Given a BigCommerce order ID, orchestrate fulfillment across SAP, Oracle EBS, and MailChimp shipping notification.
inputParameters:
- name: order_id
in: body
type: string
description: The BigCommerce order identifier.
steps:
- name: get-order
type: call
call: bigcommerce.get-order
with:
order_id: '{{order_id}}'
- name: create-delivery
type: call
call: sap.create-delivery
with:
order_ref: '{{get-order.id}}'
ship_to: '{{get-order.shipping_address}}'
items: '{{get-order.line_items}}'
- name: decrement-inventory
type: call
call: oracle-ebs.update-inventory
with:
items: '{{get-order.line_items}}'
warehouse: '{{create-delivery.warehouse_id}}'
- name: send-confirmation
type: call
call: mailchimp.send-transactional
with:
email: '{{get-order.customer_email}}'
template: shipping_confirmation
merge_vars:
tracking_number: '{{create-delivery.tracking_number}}'
order_id: '{{order_id}}'
consumes:
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/ua-store/v2
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: orders
path: /orders/{{order_id}}
inputParameters:
- name: order_id
in: path
operations:
- name: get-order
method: GET
- type: http
namespace: sap
baseUri: https://ua-sap.under-armour.com/sap/opu/odata/sap/API_OUTBOUND_DELIVERY_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: deliveries
path: /A_OutbDeliveryHeader
operations:
- name: create-delivery
method: POST
- type: http
namespace: oracle-ebs
baseUri: https://ua-ebs.under-armour.com/webservices/rest/inventory
authentication:
type: basic
username: $secrets.oracle_ebs_user
password: $secrets.oracle_ebs_password
resources:
- name: inventory
path: /on-hand
operations:
- name: update-inventory
method: PUT
- type: http
namespace: mailchimp
baseUri: https://mandrillapp.com/api/1.0
authentication:
type: bearer
token: $secrets.mailchimp_transactional_key
resources:
- name: messages
path: /messages/send-template
operations:
- name: send-transactional
method: POST
Coordinates a new product launch by creating SKUs in SAP, publishing to BigCommerce and Shopify, scheduling a MailChimp email campaign, and posting teaser content to Instagram.
naftiko: '0.5'
info:
label: Product Launch Coordination Orchestrator
description: Coordinates a new product launch by creating SKUs in SAP, publishing to BigCommerce and Shopify, scheduling a MailChimp email campaign, and posting teaser content to Instagram.
tags:
- product-management
- e-commerce
- sap
- bigcommerce
- shopify
- mailchimp
- instagram
capability:
exposes:
- type: mcp
namespace: product-launch
port: 8080
tools:
- name: coordinate-launch
description: Orchestrate cross-platform product launch activities.
inputParameters:
- name: material_id
in: body
type: string
description: SAP material number for the new product.
- name: launch_date
in: body
type: string
description: Planned launch date YYYY-MM-DD.
steps:
- name: get-product
type: call
call: sap.get-material
with:
material_id: '{{material_id}}'
- name: publish-bigcommerce
type: call
call: bigcommerce.create-product
with:
name: '{{get-product.description}}'
price: '{{get-product.list_price}}'
sku: '{{material_id}}'
- name: publish-shopify
type: call
call: shopify.create-product
with:
title: '{{get-product.description}}'
variants_price: '{{get-product.list_price}}'
sku: '{{material_id}}'
- name: schedule-email
type: call
call: mailchimp.schedule-campaign
with:
list_id: ua_subscribers
subject: 'New Arrival: {{get-product.description}}'
send_time: '{{launch_date}}T10:00:00Z'
- name: post-teaser
type: call
call: instagram.create-media
with:
caption: 'Coming {{launch_date}}: {{get-product.description}} #UnderArmour #NewArrival'
image_url: '{{get-product.image_url}}'
consumes:
- type: http
namespace: sap
baseUri: https://ua-sap.under-armour.com/sap/opu/odata/sap/API_PRODUCT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: materials
path: /A_Product('{{material_id}}')
inputParameters:
- name: material_id
in: path
operations:
- name: get-material
method: GET
- type: http
namespace: bigcommerce
baseUri: https://api.bigcommerce.com/stores/ua-store/v3
authentication:
type: bearer
token: $secrets.bigcommerce_token
resources:
- name: products
path: /catalog/products
operations:
- name: create-product
method: POST
- type: http
namespace: shopify
baseUri: https://under-armour.myshopify.com/admin/api/2024-01
authentication:
type: bearer
token: $secrets.shopify_token
resources:
- name: products
path: /products.json
operations:
- name: create-product
method: POST
- type: http
namespace: mailchimp
baseUri: https://us1.api.mailchimp.com/3.0
authentication:
type: basic
username: anystring
password: $secrets.mailchimp_api_key
resources:
- name: campaigns
path: /campaigns
operations:
- name: schedule-campaign
method: POST
- type: http
namespace: instagram
baseUri: https://graph.facebook.com/v18.0
authentication:
type: bearer
token: $secrets.instagram_token
resources:
- name: media
path: /{{ig_user_id}}/media
inputParameters:
- name: ig_user_id
in: path
operations:
- name: create-media
method: POST
Creates a LinkedIn sponsored content campaign by pulling audience segments from Salesforce Marketing Cloud, publishing ad creative, and reporting initial performance back to Google Sheets.
naftiko: '0.5'
info:
label: LinkedIn Sponsored Content Orchestrator
description: Creates a LinkedIn sponsored content campaign by pulling audience segments from Salesforce Marketing Cloud, publishing ad creative, and reporting initial performance back to Google Sheets.
tags:
- marketing
- social-media
- linkedin
- salesforce
- google-sheets
capability:
exposes:
- type: mcp
namespace: social-campaigns
port: 8080
tools:
- name: launch-linkedin-campaign
description: Create and launch a LinkedIn sponsored campaign with audience from SFMC and reporting in Google Sheets.
inputParameters:
- name: campaign_name
in: body
type: string
description: Name for the new campaign.
- name: audience_segment_id
in: body
type: string
description: Salesforce Marketing Cloud segment ID.
- name: creative_url
in: body
type: string
description: URL of the ad creative asset.
steps:
- name: get-audience
type: call
call: sfmc.get-segment
with:
segment_id: '{{audience_segment_id}}'
- name: create-campaign
type: call
call: linkedin.create-campaign
with:
name: '{{campaign_name}}'
targeting: '{{get-audience.targeting_criteria}}'
creative_url: '{{creative_url}}'
- name: log-campaign
type: call
call: gsheets.append-row
with:
spreadsheet_id: ua_campaign_tracker
row:
campaign_name: '{{campaign_name}}'
platform: LinkedIn
campaign_id: '{{create-campaign.id}}'
status: Launched
consumes:
- type: http
namespace: sfmc
baseUri: https://ua.rest.marketingcloudapis.com/v1
authentication:
type: bearer
token: $secrets.sfmc_token
resources:
- name: segments
path: /segments/{{segment_id}}
inputParameters:
- name: segment_id
in: path
operations:
- name: get-segment
method: GET
- type: http
namespace: linkedin
baseUri: https://api.linkedin.com/v2
authentication:
type: bearer
token: $secrets.linkedin_token
resources:
- name: campaigns
path: /adCampaignsV2
operations:
- name: create-campaign
method: POST
- type: http
namespace: gsheets
baseUri: https://sheets.googleapis.com/v4
authentication:
type: bearer
token: $secrets.google_sheets_token
resources:
- name: rows
path: /spreadsheets/{{spreadsheet_id}}/values/Sheet1:append
inputParameters:
- name: spreadsheet_id
in: path
operations:
- name: append-row
method: POST
When a product is updated in SAP, synchronizes the product title, description, price, and inventory count to the Shopify DTC storefront.
naftiko: '0.5'
info:
label: Shopify Product Catalog Sync
description: When a product is updated in SAP, synchronizes the product title, description, price, and inventory count to the Shopify DTC storefront.
tags:
- e-commerce
- product-management
- sap
- shopify
capability:
exposes:
- type: mcp
namespace: product-sync
port: 8080
tools:
- name: sync-product-to-shopify
description: Push a SAP product update to the Shopify storefront.
inputParameters:
- name: sap_material_id
in: body
type: string
description: The SAP material number.
steps:
- name: get-material
type: call
call: sap.get-material
with:
material_id: '{{sap_material_id}}'
- name: update-shopify
type: call
call: shopify.update-product
with:
title: '{{get-material.description}}'
body_html: '{{get-material.long_text}}'
variants_price: '{{get-material.list_price}}'
inventory_quantity: '{{get-material.available_stock}}'
consumes:
- type: http
namespace: sap
baseUri: https://ua-sap.under-armour.com/sap/opu/odata/sap/API_PRODUCT_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: materials
path: /A_Product('{{material_id}}')
inputParameters:
- name: material_id
in: path
operations:
- name: get-material
method: GET
- type: http
namespace: shopify
baseUri: https://under-armour.myshopify.com/admin/api/2024-01
authentication:
type: bearer
token: $secrets.shopify_token
resources:
- name: products
path: /products/{{product_id}}.json
inputParameters:
- name: product_id
in: path
operations:
- name: update-product
method: PUT
Retrieves 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Score Breakdown — Total: 19224
Each row links to its full definition on the Naftiko Signal Groups page.
222 29 93 658 716 323 667 380 228 1264 373 563 933 178 461 472 186 212 81 476 765 514 80 369 1311 3198 570 362 84 206 150 4 165 326 670 162 183 61 136 257 290Areas — 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 Ads
- FactSet
- Fern
- Figma
- Finch
- Fortify
- Fusio
- G2
- GCP Cloud Storage
- Gemini
- GitHub
- GitHub Actions
- GitHub Copilot
- GitLab
- Gmail
- Gong
- Google Ads
- Google Analytics
- Google Android
- Google Apps Script
- Google Campaign Manager
- Google Chrome
- Google Cloud Dataflow
- Google Cloud Platform
- Google Data Studio
- Google 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
- IntelliJ IDEA
- International Business Machines
- Intuit
- Jira
- Juniper
- Juniper Networks
- Kinesis
- Knit
- Konfig
- Kong
- Kuma
- Lambda
- Lightroom
- 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
- Tyk
- Unity
- Unix
- VMware
- Vantage
- Vendr
- Vercel
- Veritas Cluster
- Veritas InfoScale
- Veritas NetBackup
- Veritas Volume Manager
- Vessel
- Visio
- Visualforce
- WebLogic
- WebSphere
- Windmill
- Workday
- Workday Integration
- Workday Payroll
- Workday 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
- 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.
Where you stand
See your signals
The leads, the gaps, and where AI has shifted the gradient — in numbers from public data, not vendor decks.
See full report →What to build
Translate to capabilities
Capabilities being built across the peer set — tied to the markets you actually serve.
View capabilities →Where to go next
Navigate the next move
A prioritized roadmap grounded in signal data. Not a generic best-practices deck, not a vendor-shaped pitch.
Get your navigation →Control what you build
Integrate with AI
Run it on infrastructure you control. Open source — fork it, audit it, run it on your stack. No vendor lock-in.
First capability live in 90 days.
Become a design partner →